Root/plplot/Makefile

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

Archive Download this file



interactive