Root/plplot/Makefile

1#
2# Copyright (C) 2011 David Kuehling <dvdkhlng TA gmx TOD de>
3#
4# License GPLv2 or later. NO WARRANTY.
5#
6# OpenWRT package for the Plplot
7
8include $(TOPDIR)/rules.mk
9
10PKG_NAME:=plplot
11PKG_VERSION:=5.9.7
12PKG_RELEASE:=4
13PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
14PKG_SOURCE_URL:=@SF/$(PKG_NAME)/$(PKG_VERSION)%20Source
15PKG_MD5SUM:=c53c484ed93ce8446513c31707551b5b
16PKG_INSTALL:=1
17
18PKG_BUILD_PARALLEL:=1
19
20PKG_FIXUP:=libtool
21PKG_REMOVE_FILES:=
22
23PKG_BUILD_DEPENDS:= plplot/host libltdl swig/host
24#@INSTALL_GFORTRAN
25
26include $(INCLUDE_DIR)/host-build.mk
27include $(INCLUDE_DIR)/package.mk
28
29CMAKE_HOST_FLAGS=-DCMAKE_INSTALL_PREFIX=/usr \
30             -DDEFAULT_NO_DEVICES=ON \
31        -DPKG_CONFIG_EXECUTABLE=Not-Found -DDEFAULT_NO_BINDINGS=ON \
32        -DCMAKE_EXE_LINKER_FLAGS=-lm
33
34## Need host-compiled plplot build dir for cmake to work for the target
35define Host/Configure
36    mkdir -p $(HOST_BUILD_DIR)/build_dir
37    cd $(HOST_BUILD_DIR)/build_dir && \
38      cmake $(CMAKE_HOST_FLAGS) \
39            $(HOST_BUILD_DIR)
40endef
41
42define Host/Compile/Octave
43    $(MAKE) -C $(HOST_BUILD_DIR)/bindings/octave massage
44endef
45
46define Host/Compile
47    $(if $(CONFIG_PACKAGE_plplot-octave),$(Host/Compile/Octave),)
48    $(MAKE) -C $(HOST_BUILD_DIR)/build_dir VERBOSE=1 -j4
49endef
50
51define Host/Install/Octave
52    $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
53    $(CP) $(HOST_BUILD_DIR)/bindings/octave/massage \
54        $(STAGING_DIR_HOST)/bin/plplot-massage
55endef
56
57define Host/Install
58    $(INSTALL_DIR) $(STAGING_DIR_HOST)/lib/$(PKG_NAME)-$(PKG_VERSION)
59    $(CP) $(HOST_BUILD_DIR)/build_dir \
60        $(STAGING_DIR_HOST)/lib/$(PKG_NAME)-$(PKG_VERSION)
61    $(if $(CONFIG_PACKAGE_plplot-octave),$(Host/Install/Octave),)
62endef
63
64define Package/plplot/Default
65  SECTION:=libs
66  CATEGORY:=Libraries
67
68  TITLE:=PLplot plotting library
69  URL:=http://plplot.sourceforge.net/
70  SUBMENU:=PLplot
71endef
72
73define Package/plplot/Default/description
74PLplot is a cross-platform software package for creating scientific plots. It
75comes with language bindings for many interpreter languages like Lua, Tcl,
76Python. Also it can be used as plooting backend for GNU Octave.
77endef
78
79define Package/plplot
80$(call Package/plplot/Default)
81  DEPENDS:=+libltdl +zlib +libfreetype
82  TITLE+=
83endef
84
85define Package/plplot/description
86$(call Package/plplot/Default/description)
87 This package contains the Plplot library with a few file output devices.
88endef
89
90define Package/plplot-demo
91$(call Package/plplot/Default)
92  DEPENDS:= +plplot
93  TITLE+= (Example Programs)
94endef
95
96define Package/plplot-demo/description
97$(call Package/plplot/Default/description)
98 This package contains the Plplot example programs.
99endef
100
101define Package/plplot-cxx
102$(call Package/plplot/Default)
103  DEPENDS:= +plplot +libstdcpp
104  TITLE+= (C++ bindings)
105endef
106
107define Package/plplot-cxx/description
108$(call Package/plplot/Default/description)
109 This package contains the Plplot C++ bindings.
110endef
111
112define Package/plplot-qt
113$(call Package/plplot/Default)
114  DEPENDS:= +plplot +qt4 +qt4-gui
115  TITLE+= (Qt bindings&device)
116endef
117
118define Package/plplot-qt/description
119$(call Package/plplot/Default/description)
120 This package contains the Plplot Qt visualization driver and Qt bindings.
121endef
122
123define Package/plplot-linuxvga
124$(call Package/plplot/Default)
125  DEPENDS:= +plplot +svgalib
126  TITLE+= (svgalib driver)
127endef
128
129define Package/plplot-linuxvga/description
130$(call Package/plplot/Default/description)
131 This package contains the SVGAlib based visualization driver for PLplot.
132endef
133
134define Package/plplot-tcl
135$(call Package/plplot/Default)
136  DEPENDS:= +plplot +tcl
137  TITLE+= (Tcl bindings)
138$(eval $(call RequireCommand,tclsh,Please install tcl.))
139endef
140
141define Package/plplot-tcl/description
142$(call Package/plplot/Default/description)
143 This package contains the Plplot bindings for Tcl
144endef
145
146define Package/plplot-lua
147$(call Package/plplot/Default)
148  DEPENDS:= +plplot +liblua
149  TITLE+= (Lua bindings)
150endef
151
152define Package/plplot-lua/description
153$(call Package/plplot/Default/description)
154 This package contains the Plplot bindings for Lua
155endef
156
157# note: plplot-python needs some numeric support library for python ('numpy'?)
158# not currently present on openwrt.
159define Package/plplot-python
160$(call Package/plplot/Default)
161  DEPENDS:= +plplot +python @BROKEN
162  TITLE+= (Python bindings)
163endef
164
165define Package/plplot-python/description
166$(call Package/plplot/Default/description)
167 This package contains the Plplot bindings for Python.
168 Note that this needs either the Pythnon-Numpy or Python-Numeric library
169 to work. Both haven\'t been ported yet, so plplot-python is
170 disfunctional!
171endef
172
173define Package/plplot-octave
174$(call Package/plplot/Default)
175  DEPENDS:= +plplot +octave
176  TITLE+= (Octave bindings)
177endef
178
179define Package/plplot-octave/description
180$(call Package/plplot/Default/description)
181 This package contains the Plplot bindings for GNU Octave
182endef
183
184TARGET_CFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib
185
186CMAKE_FLAGS := \
187    -Wdev \
188    -DCMAKE_INSTALL_PREFIX=/usr \
189    -DCMAKE_TOOLCHAIN_FILE=$(PKG_BUILD_DIR)/toolchain.cmake \
190    -DPKG_CONFIG_EXECUTABLE=$(STAGING_DIR_HOST)/bin/pkg-config \
191    -DSWIG_EXECUTABLE=$(STAGING_DIR_HOST)/bin/swig \
192    -DDEFAULT_NO_DEVICES=ON \
193    -DUSE_RPATH=OFF \
194    -DPLD_ps=ON \
195    -DPLD_svg=ON \
196    -DPLD_mem=ON \
197    -DPLD_null=ON \
198    -DDEFAULT_NO_BINDINGS=ON \
199    -DNaNAwareCCompiler=ON \
200    -DCMAKE_USE_NAMESPACE=ON \
201    -DCMAKE_NATIVE_BINARY_DIR=$(STAGING_DIR_HOST)/lib/$(PKG_NAME)-$(PKG_VERSION)/build_dir
202
203# everything done under unstall target!
204ifdef CONFIG_PACKAGE_plplot-demo
205endif
206
207ifdef CONFIG_PACKAGE_plplot-cxx
208    CMAKE_FLAGS += -DENABLE_cxx=ON
209endif
210
211ifdef CONFIG_PACKAGE_plplot-qt
212    CMAKE_FLAGS += \
213        -DPLD_qtwidget=ON \
214        -DPLD_extqt=ON \
215        -DENABLE_qt=ON \
216        -DQT_QMAKE_EXECUTABLE=$(STAGING_DIR_HOST)/bin/qmake \
217        -DQT_MOC_EXECUTABLE=$(STAGING_DIR_HOST)/bin/moc \
218        -DQT_UIC_EXECUTABLE=$(STAGING_DIR_HOST)/bin/uic \
219        -DQT_RCC_EXECUTABLE=$(STAGING_DIR_HOST)/bin/rcc
220endif
221
222ifdef CONFIG_PACKAGE_plplot-linuxvga
223    CMAKE_FLAGS += \
224        -DPLD_linuxvga=ON
225endif
226
227ifdef CONFIG_PACKAGE_plplot-lua
228    CMAKE_FLAGS += -DENABLE_lua=ON
229endif
230
231ifdef CONFIG_PACKAGE_plplot-python
232    CMAKE_FLAGS += -DENABLE_python=ON
233endif
234
235ifdef CONFIG_PACKAGE_plplot-tcl
236    CMAKE_FLAGS += -DENABLE_tcl=ON
237endif
238
239ifdef CONFIG_PACKAGE_plplot-octave
240    CMAKE_FLAGS += \
241        -DENABLE_octave=ON \
242        -DMKOCTFILE=$(STAGING_DIR)/usr/bin/mkoctfile \
243        -DOCTAVE_OCT_DIR=/usr/lib/octave/site/oct/$(OPTIMIZE_FOR_CPU)-openwrt-linux-gnu \
244        -Dmassage_LOCATION=$(STAGING_DIR_HOST)/lib/$(PKG_NAME)-$(PKG_VERSION)/build_dir/bindings/octave/massage
245endif
246
247# $(if $(CONFIG_PACKAGE_libX11),FEATURE_XLOCK=y,FEATURE_XLOCK=n) \
248
249define Build/Configure
250    echo "SET(CMAKE_SYSTEM_NAME Linux)" > $(PKG_BUILD_DIR)/toolchain.cmake
251    echo "SET(CMAKE_SYSTEM_VERSION 1)" >> $(PKG_BUILD_DIR)/toolchain.cmake
252    echo "SET(CMAKE_BUILD_TYPE None)" >> $(PKG_BUILD_DIR)/toolchain.cmake
253    echo "SET(CMAKE_C_COMPILER $(TARGET_CC:ccache=))" >> $(PKG_BUILD_DIR)/toolchain.cmake
254    echo "SET(CMAKE_CXX_COMPILER $(TARGET_CC:ccache=))" >> $(PKG_BUILD_DIR)/toolchain.cmake
255    echo "SET(CMAKE_C_FLAGS \"$(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS) $(TARGET_CFLAGS) $(EXTRA_CFLAGS)\" CACHE STRING \"\" FORCE)" >> $(PKG_BUILD_DIR)/toolchain.cmake
256    echo "SET(CMAKE_CXX_FLAGS \"$(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS) $(TARGET_CFLAGS) $(EXTRA_CFLAGS)\" CACHE STRING \"\" FORCE)" >> $(PKG_BUILD_DIR)/toolchain.cmake
257    echo "SET(CMAKE_VERBOSE_MAKEFILE ON)" >> $(PKG_BUILD_DIR)/toolchain.cmake
258
259        # where is the target environment
260    echo "SET(CMAKE_FIND_ROOT_PATH $(STAGING_DIR))" >> $(PKG_BUILD_DIR)/toolchain.cmake
261# echo "SET(CMAKE_PREFIX_PATH /usr)" >> $(PKG_BUILD_DIR)/toolchain.cmake
262    echo "SET(CMAKE_LIBRARY_PATH $(STAGING_DIR)/usr/lib $(STAGING_DIR)/lib $(STAGING_DIR_ROOT)/lib)" >> $(PKG_BUILD_DIR)/toolchain.cmake
263    echo "SET(CMAKE_SKIP_BUILD_RPATH ON)" >> $(PKG_BUILD_DIR)/toolchain.cmake
264# echo "SET(CMAKE_INSTALL_RPATH /usr/lib;/lib)" >> $(PKG_BUILD_DIR)/toolchain.cmake
265
266    echo "SET(CMAKE_INCLUDE_PATH /usr/include)" >> $(PKG_BUILD_DIR)/toolchain.cmake
267    echo "SET(CMAKE_SYSTEM_INCLUDE_PATH /include)" >> $(PKG_BUILD_DIR)/toolchain.cmake
268        # search for programs in the build host directories
269    echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> $(PKG_BUILD_DIR)/toolchain.cmake
270    echo "SET(CMAKE_PROGRAM_PATH $(STAGING_DIR_HOST)/bin $(STAGING_DIR)/usr/bin)" >> $(PKG_BUILD_DIR)/toolchain.cmake
271
272        # for libraries and headers in the target directories
273    echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> $(PKG_BUILD_DIR)/toolchain.cmake
274    echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> $(PKG_BUILD_DIR)/toolchain.cmake
275    echo "SET(PL_USE_NAMESPACE 1)" >> $(PKG_BUILD_DIR)/toolchain.cmake
276
277    cd $(PKG_BUILD_DIR) && cmake $(CMAKE_FLAGS)
278endef
279
280define Build/Compile
281    $(call Build/Compile/Default, VERBOSE=1 -j4)
282endef
283
284
285define Build/Install
286    $(call Build/Install/Default)
287# $(INSTALL_DATA) ./files/... $(PKG_INSTALL_DIR)/usr/share/plplot/
288endef
289
290define Build/InstallDev
291    $(INSTALL_DIR) $(1)/usr/include/plplot
292    $(CP) $(PKG_INSTALL_DIR)/usr/include/plplot/*.h \
293        $(1)/usr/include/plplot/
294
295    $(INSTALL_DIR) $(1)/usr/lib
296    $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
297    $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* \
298        $(1)/usr/lib/
299    $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
300        $(1)/usr/lib/pkgconfig/
301# $(SED) 's,-I$$$${includedir},,g' $(1)/usr/lib/pkgconfig/plplotd.pc
302# $(SED) 's,-L$$$${libdir},,g' $(1)/usr/lib/pkgconfig/plplotd.pc
303endef
304
305define Package/plplot/install
306    $(INSTALL_DIR) $(1)/usr/lib
307    $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{plplotd,csirocsa,qsastime}.so* \
308        $(1)/usr/lib/
309    $(INSTALL_DIR) $(1)/usr/lib/plplot$(PKG_VERSION)/driversd
310    $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/plplot$(PKG_VERSION)/driversd/{mem,null,ps,svg}.{so,rc} \
311         $(1)/usr/lib/plplot$(PKG_VERSION)/driversd/
312    $(INSTALL_DIR) $(1)/usr/share/plplot$(PKG_VERSION)
313    $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/plplot$(PKG_VERSION)/*.{map,pal,fnt} \
314        $(1)/usr/share/plplot$(PKG_VERSION)/
315endef
316
317# ugly, but necessary: compiling demo-programs on install, using the just
318# installed libs.
319define Package/plplot-demo/install
320    $(SED) 's;/usr/lib/pkgconfig;$(STAGING_DIR)/usr/lib/pkgconfig;g' \
321        $(PKG_INSTALL_DIR)/usr/share/plplot$(PKG_VERSION)/examples/c/Makefile
322    $(MAKE) -C $(PKG_INSTALL_DIR)/usr/share/plplot$(PKG_VERSION)/examples/c/ \
323         C_INCLUDE_PATH=$(STAGING_DIR)/usr/include/plplot \
324         CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CFLAGS) $(TARGET_LDFLAGS)"\
325        RPATHCMD=
326
327    $(INSTALL_DIR) $(1)/usr/bin
328    $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/plplot$(PKG_VERSION)/examples/c/x??c \
329        $(1)/usr/bin/
330endef
331
332define Package/plplot-cxx/install
333    $(INSTALL_DIR) $(1)/usr/lib
334    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplplotcxxd.so* \
335        $(1)/usr/lib/
336endef
337
338define Package/plplot-qt/install
339    $(INSTALL_DIR) $(1)/usr/lib
340    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplplotqtd.so* \
341        $(1)/usr/lib/
342    $(INSTALL_DIR) $(1)/usr/lib/plplot$(PKG_VERSION)/driversd
343    $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/plplot$(PKG_VERSION)/driversd/qt.{so,rc} \
344         $(1)/usr/lib/plplot$(PKG_VERSION)/driversd/
345endef
346
347define Package/plplot-linuxvga/install
348    $(INSTALL_DIR) $(1)/usr/lib
349    $(INSTALL_DIR) $(1)/usr/lib/plplot$(PKG_VERSION)/driversd
350    $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/plplot$(PKG_VERSION)/driversd/linuxvga.{so,rc} \
351         $(1)/usr/lib/plplot$(PKG_VERSION)/driversd/
352endef
353
354define Package/plplot-tcl/install
355    $(INSTALL_DIR) $(1)/usr/lib
356    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplplottcltkd.so* \
357        $(1)/usr/lib/
358    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtclmatrixd.so* \
359        $(1)/usr/lib/
360    $(INSTALL_DIR) $(1)/usr/share/plplot$(PKG_VERSION)/tcl
361    $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/plplot$(PKG_VERSION)/pkgIndex.tcl \
362        $(1)/usr/share/plplot$(PKG_VERSION)/
363    $(CP) $(PKG_INSTALL_DIR)/usr/share/plplot$(PKG_VERSION)/tcl/*\
364        $(1)/usr/share/plplot$(PKG_VERSION)/tcl/
365endef
366
367define Package/plplot-lua/install
368    $(INSTALL_DIR) $(1)/usr/lib/lua
369    $(CP) $(PKG_INSTALL_DIR)/usr/lib/lua/*/plplot/plplotluac.so $(1)/usr/lib/lua/
370endef
371
372define Package/plplot-python/install
373    $(INSTALL_DIR) $(1)/usr/lib/python
374    $(CP) $(PKG_INSTALL_DIR)/usr/lib/python/*/plplot/*.so* $(1)/usr/lib/python/
375endef
376
377define Package/plplot-octave/install
378    $(INSTALL_DIR) $(1)/usr/lib
379    $(CP) $(PKG_INSTALL_DIR)/usr/lib/octave \
380        $(1)/usr/lib/
381    $(INSTALL_DIR) $(1)/usr/share
382    $(CP) $(PKG_INSTALL_DIR)/usr/share/{octave,plplot_octave} \
383        $(1)/usr/share/
384endef
385
386# define Package/plplot-data/install
387# $(INSTALL_DIR) $(1)/
388# (cd $(PKG_INSTALL_DIR)/ && tar -cf - usr/share) \
389# | (cd $(1)/ && tar -xvf -)
390# endef
391
392$(eval $(call HostBuild))
393$(eval $(call BuildPackage,plplot))
394$(eval $(call BuildPackage,plplot-demo))
395$(eval $(call BuildPackage,plplot-cxx))
396$(eval $(call BuildPackage,plplot-qt))
397$(eval $(call BuildPackage,plplot-linuxvga))
398$(eval $(call BuildPackage,plplot-tcl))
399$(eval $(call BuildPackage,plplot-lua))
400$(eval $(call BuildPackage,plplot-python))
401$(eval $(call BuildPackage,plplot-octave))
402
403
404# The following comments configure the Emacs editor. Just ignore them.
405# Local Variables:
406# compile-command: "make -C ~/h/src/qi/openwrt-xburst package/plplot/compile -j2 V=99"
407# End:
408

Archive Download this file



interactive