Root/liballegro/Makefile

1#
2# Copyright (C) David Kuehling <dvdkhlng TA gmx TOD de>
3#
4# License GPLv2 or later. NO WARRANTY.
5#
6# OpenWRT package for the Allegro game and multimedia library
7
8# todo:
9#
10# * both shooter and skater try to load a demo.dat from /usr/bin. hack them to
11# use usr/share subdirs?
12#
13# * similar problem with setup?
14#
15# * setup and shoot seem to need 8bpp video modes. can we hack them for
16# 32bpp? Would it help to use a differnt video driver than just 'fbcon'?
17#
18include $(TOPDIR)/rules.mk
19
20PKG_NAME:=liballegro
21PKG_VERSION:=4.4.2
22PKG_RELEASE:=3
23PKG_SOURCE:=allegro-$(PKG_VERSION).tar.gz
24PKG_SOURCE_URL:=@SF/alleg/allegro/$(PKG_VERSION)
25PKG_BUILD_DIR = $(BUILD_DIR)/allegro-$(PKG_VERSION)
26HOST_BUILD_DIR = $(BUILD_DIR_HOST)/allegro-$(PKG_VERSION)
27
28PKG_MD5SUM:=4db71b0460fc99926ae91d223199c2e6
29PKG_INSTALL:=1
30
31PKG_FIXUP:=libtool
32PKG_REMOVE_FILES:=
33
34# PKG_BUILD_DEPENDS:=liballegro/host
35
36include $(INCLUDE_DIR)/host-build.mk
37include $(INCLUDE_DIR)/package.mk
38include $(INCLUDE_DIR)/cmake.mk
39
40define Package/liballegro/Default
41  SUBMENU:=Liballegro
42  SECTION:=libs
43  CATEGORY:=Libraries
44  TITLE:=The Allegro Game Programming Library
45  URL:=alleg.sf.net
46# SUBMENU:=Editors
47endef
48
49define Package/liballegro/Default/description
50Allegro is a cross-platform library for computer games and multimedia
51programming.
52endef
53
54define Package/liballegro
55$(call Package/liballegro/Default)
56  DEPENDS:=+alsa-lib
57  TITLE+= (library)
58endef
59
60define Package/liballegro/description
61$(call Package/liballegro/Default/description)
62 This package contains the Allegro library
63endef
64
65define Package/liballegro-data
66$(call Package/liballegro/Default)
67  TITLE+= (data)
68endef
69
70define Package/liballegro-data/description
71$(call Package/liballegro/Default/description)
72 This package contains various data files that are used by the Allegro library.
73endef
74
75define Package/liballegro-png
76$(call Package/liballegro/Default)
77  TITLE+= (PNG image support)
78  DEPENDS:=+liballegro +zlib +libpng
79endef
80
81define Package/liballegro-png/description
82$(call Package/liballegro/Default/description)
83 This package contains the libloadpng addon that allows interfacing allegro
84 Bitmaps with PNG files. Although the name of the library suggests otherwise
85 saving to PNG is supported as well as loading PNG files.
86endef
87
88# note: jpgalleg contains its own jpeg implementation; libjpeg not needed!
89define Package/liballegro-jpeg
90$(call Package/liballegro/Default)
91  TITLE+= (JPEG image support)
92  DEPENDS:=+liballegro
93endef
94
95define Package/liballegro-jpeg/description
96$(call Package/liballegro/Default/description)
97 This package contains the libjpgalleg addon that allows interfacing allegro
98 Bitmaps with JPEG files. Saving to JPEG files is supported as well as loading.
99endef
100
101define Package/liballegro-ogg
102$(call Package/liballegro/Default)
103  TITLE+= (Ogg/Vorbis audio support)
104  DEPENDS:=+liballegro +libvorbisidec +libogg
105endef
106
107define Package/liballegro-ogg/description
108$(call Package/liballegro/Default/description)
109 This package contains the liblogg addon that allows play-back and mixing of
110 background music from Ogg Vorbis audio files.
111endef
112
113define Package/liballegro-demo
114$(call Package/liballegro/Default)
115  TITLE+= (demo)
116  DEPENDS:=+liballegro
117endef
118
119define Package/liballegro-demo/description
120$(call Package/liballegro/Default/description)
121 This package contains the Allegro demo game.
122endef
123
124define Package/liballegro-setup
125$(call Package/liballegro/Default)
126  TITLE+= (setup)
127  DEPENDS:=+liballegro
128endef
129
130define Package/liballegro-setup/description
131$(call Package/liballegro/Default/description)
132 This package contains the Allegro setup program
133endef
134
135define Package/liballegro-examples
136$(call Package/liballegro/Default)
137  TITLE+= (examples)
138  DEPENDS:=+liballegro
139endef
140
141define Package/liballegro-examples/description
142$(call Package/liballegro/Default/description)
143 This package contains the Allegro example programs named "ex*"
144endef
145
146define Package/liballegro-utils
147$(call Package/liballegro/Default)
148  TITLE+= (utils)
149  DEPENDS:=+liballegro +PACKAGE_liballegro-jpeg:liballegro-jpeg
150endef
151
152define Package/liballegro-utils/description
153$(call Package/liballegro/Default/description)
154 This package contains the setup and test tool that ship with Allegro.
155endef
156
157HOST_CONFIGURE_ARGS +=
158CONFIGURE_ARGS +=
159
160TARGET_CPPFLAGS +=
161
162define Build/Prepare
163    $(call Build/Prepare/Default)
164endef
165
166HOST_CMAKE_FLAGS= \
167    -DCMAKE_INSTALL_PREFIX=$(STAGING_DIR_HOST) \
168    -DRT_LIBRARY= \
169    -DDL_LIBRARY= \
170    -DWANT_TOOLS=on \
171    -DWANT_TESTS=off \
172    -DWANT_MODULES=off \
173    -DWANT_EXAMPLES=off \
174    -DWANT_ALLEGROGL=off \
175    -DWANT_LOADPNG=off \
176    -DWANT_LOGG=off \
177    -DWANT_JPGALLEG=off \
178    -DWANT_X11=off \
179    -DWANT_LINUX_CONSOLE=on \
180    -DWANT_LINUX_FBCON=off \
181    -DWANT_LINUX_VGA=off \
182    -DWANT_LINUX_SVGALIB=off \
183    -DWANT_ALSA=off \
184    -DWANT_OSS=off \
185    -DWANT_JACK=off \
186    -DWANT_SGIAUDIO=off
187
188define Host/Configure
189    cd $(HOST_BUILD_DIR) && cmake $(HOST_CMAKE_FLAGS) .
190endef
191
192## On the host, we only need to compile the allegro develpment tools:
193## dat&friends
194define Host/Compile
195    $(call Host/Compile/Default, VERBOSE=1 -j4)
196endef
197
198define Host/Install
199    $(call Host/Install/Default)
200# $(INSTALL_BIN) $(HOST_BUILD_DIR)/lib-src/make-docfile $(STAGING_DIR_HOST)/bin/liballegro-make-docfile
201# $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/prefix-args $(STAGING_DIR_HOST)/bin/liballegro-prefix-args
202endef
203
204# workaround for cmake.mk bug
205ifneq ($(CONFIG_CCACHE),)
206  CMAKE_C_COMPILER:=ccache
207  CMAKE_CXX_COMPILER:=ccache
208endif
209
210EXTRA_CFLAGS = -DSETUP_SCREEN_W=320 -DSETUP_SCREEN_H=240 -DSETUP_CFG_FILE=\\\"/etc/allegrorc\\\"
211TARGET_LDFLAGS = -L$(STAGING_DIR)/usr/lib -ldl -lrt
212
213CMAKE_OPTIONS = \
214    -DRT_LIBRARY= \
215    -DALLEGRO_USE_CONSTRUCTOR_EXITCODE=0 \
216    -DRT_LIBRARY= \
217    -DDL_LIBRARY= \
218    -DWANT_TOOLS=on \
219    -DWANT_TESTS=on \
220    -DWANT_MODULES=on \
221    -DWANT_EXAMPLES=on \
222    -DWANT_ALLEGROGL=off \
223    -DWANT_X11=off \
224    -DWANT_LINUX_CONSOLE=on \
225    -DWANT_LINUX_FBCON=on \
226    -DWANT_LINUX_VGA=off \
227    -DWANT_LINUX_SVGALIB=off \
228    -DWANT_ALSA=on \
229    -DWANT_OSS=off \
230    -DWANT_JACK=off \
231    -DWANT_SGIAUDIO=off \
232    -DWANT_LOADPNG=$(if $(CONFIG_PACKAGE_liballegro-png),on,off) \
233    -DWANT_JPGALLEG=$(if $(CONFIG_PACKAGE_liballegro-jpeg),on,off) \
234    -DWANT_LOGG=$(if $(CONFIG_PACKAGE_liballegro-ogg),on,off)
235
236# todo: patch CMakeLists.txt to force addons to be compiled as shared libs?
237# -DADDON_LINKAGE=SHARED
238
239MAKE_FLAGS += -j4
240
241define Build/Configure
242    $(call Build/Configure/Default)
243endef
244
245define Build/Compile
246    $(call Build/Compile/Default)
247    $(call Build/Compile/Default -C PKG_BUILD_DIR)
248# ln -sf $(STAGING_DIR_HOST)/bin/liballegro-make-docfile $(PKG_BUILD_DIR)/lib-src/make-docfile
249endef
250
251define Build/Install
252    $(call Build/Install/Default)
253    #$(INSTALL_DATA) ./files/... $(PKG_INSTALL_DIR)/usr/share/..
254endef
255
256define Build/InstallDev
257    $(INSTALL_DIR) $(1)/usr/include/
258    $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
259
260    $(INSTALL_DIR) $(1)/usr/lib
261    $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
262    $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* \
263        $(1)/usr/lib/
264    -$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.a \
265        $(1)/usr/lib/
266    $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
267        $(1)/usr/lib/pkgconfig/
268# $(SED) 's,-I$$$${includedir},,g' $(1)/usr/lib/pkgconfig/plplotd.pc
269# $(SED) 's,-L$$$${libdir},,g' $(1)/usr/lib/pkgconfig/plplotd.pc
270endef
271
272define Package/liballegro/install
273    $(INSTALL_DIR) $(1)/usr/lib $(1)/etc
274    $(CP) $(PKG_INSTALL_DIR)/usr/lib/liballeg* $(1)/usr/lib/
275    $(CP) $(PKG_INSTALL_DIR)/usr/lib/allegro $(1)/usr/lib/
276    $(CP) ./files/allegrorc $(1)/etc/
277endef
278
279define Package/liballegro-data/install
280    $(INSTALL_DIR) $(1)/usr/share/allegro
281    $(CP) $(PKG_BUILD_DIR)/{keyboard.dat,language.dat} $(1)/usr/share/allegro
282        # readme file is used by the allegro 'shooter' demo
283    $(INSTALL_DIR) $(1)/usr/share/allegro/docs/{txt,src}
284    $(CP) $(PKG_BUILD_DIR)/docs/txt/readme.txt \
285        $(1)/usr/share/allegro/docs/txt
286    $(CP) $(PKG_BUILD_DIR)/docs/src/thanks._tx \
287        $(1)/usr/share/allegro/docs/src
288endef
289
290define Package/liballegro-png/install
291    $(INSTALL_DIR) $(1)/usr/lib/
292    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libloadpng* $(1)/usr/lib/
293endef
294
295define Package/liballegro-jpeg/install
296    $(INSTALL_DIR) $(1)/usr/lib/
297    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libjpgalleg* $(1)/usr/lib/
298endef
299
300define Package/liballegro-ogg/install
301    $(INSTALL_DIR) $(1)/usr/lib/
302    $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblogg* $(1)/usr/lib/
303endef
304
305define Package/liballegro-demo/install
306    $(INSTALL_DIR) $(1)/usr/bin
307    $(INSTALL_DIR) $(1)/usr/share/allegro
308    $(CP) $(PKG_BUILD_DIR)/demos/shooter/shooter $(1)/usr/bin/
309    $(CP) $(PKG_BUILD_DIR)/demos/shooter/demo.dat $(1)/usr/share/allegro/shooter.dat
310    $(CP) $(PKG_BUILD_DIR)/demos/skater/skater $(1)/usr/bin/
311    $(CP) $(PKG_BUILD_DIR)/demos/skater/demo.dat $(1)/usr/share/allegro/skater.dat
312endef
313
314define Package/liballegro-setup/install
315    $(INSTALL_DIR) $(1)/usr/bin
316    $(INSTALL_DIR) $(1)/usr/share/allegro/
317    $(CP) $(PKG_BUILD_DIR)/setup/setup $(1)/usr/bin/allegro-setup
318    $(CP) $(PKG_BUILD_DIR)/setup/setup.dat $(1)/usr/share/allegro/
319endef
320
321define Package/liballegro-examples/install
322    $(INSTALL_DIR) $(1)/usr/bin/allegro
323    $(CP) $(PKG_BUILD_DIR)/examples/* $(1)/usr/bin/allegro/
324    rm $(1)/usr/bin/allegro/{*.c,*.h,*.txt,*.cmake}
325    rm -r $(1)/usr/bin/allegro/CMakeFiles
326endef
327
328define Package/liballegro-utils/install
329    $(INSTALL_DIR) $(1)/usr/bin
330    $(CP) $(PKG_INSTALL_DIR)/usr/bin $(1)/usr
331endef
332
333
334$(eval $(call HostBuild))
335$(eval $(call BuildPackage,liballegro))
336$(eval $(call BuildPackage,liballegro-data))
337$(eval $(call BuildPackage,liballegro-png))
338$(eval $(call BuildPackage,liballegro-jpeg))
339$(eval $(call BuildPackage,liballegro-ogg))
340$(eval $(call BuildPackage,liballegro-demo))
341$(eval $(call BuildPackage,liballegro-setup))
342$(eval $(call BuildPackage,liballegro-examples))
343$(eval $(call BuildPackage,liballegro-utils))
344
345
346# The following comments configure the Emacs editor. Just ignore them.
347# Local Variables:
348# compile-command: "cd ~/src/nanonote/allegro-4.4.2 && ~/bin/quilt-export target && make -C ~/h/src/qi/openwrt-xburst package/liballegro/compile -j2 V=99"
349# End:
350

Archive Download this file



interactive