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)
149endef
150
151define Package/liballegro-utils/description
152$(call Package/liballegro/Default/description)
153 This package contains the setup and test tool that ship with Allegro.
154endef
155
156HOST_CONFIGURE_ARGS +=
157CONFIGURE_ARGS +=
158
159TARGET_CPPFLAGS +=
160
161define Build/Prepare
162    $(call Build/Prepare/Default)
163endef
164
165HOST_CMAKE_FLAGS= \
166    -DCMAKE_INSTALL_PREFIX=$(STAGING_DIR_HOST) \
167    -DRT_LIBRARY= \
168    -DDL_LIBRARY= \
169    -DWANT_TOOLS=on \
170    -DWANT_TESTS=off \
171    -DWANT_MODULES=off \
172    -DWANT_EXAMPLES=off \
173    -DWANT_ALLEGROGL=off \
174    -DWANT_LOADPNG=off \
175    -DWANT_LOGG=off \
176    -DWANT_JPGALLEG=off \
177    -DWANT_X11=off \
178    -DWANT_LINUX_CONSOLE=on \
179    -DWANT_LINUX_FBCON=off \
180    -DWANT_LINUX_VGA=off \
181    -DWANT_LINUX_SVGALIB=off \
182    -DWANT_ALSA=off \
183    -DWANT_OSS=off \
184    -DWANT_JACK=off \
185    -DWANT_SGIAUDIO=off
186
187define Host/Configure
188    cd $(HOST_BUILD_DIR) && cmake $(HOST_CMAKE_FLAGS) .
189endef
190
191## On the host, we only need to compile the allegro develpment tools:
192## dat&friends
193define Host/Compile
194    $(call Host/Compile/Default, VERBOSE=1 -j4)
195endef
196
197define Host/Install
198    $(call Host/Install/Default)
199# $(INSTALL_BIN) $(HOST_BUILD_DIR)/lib-src/make-docfile $(STAGING_DIR_HOST)/bin/liballegro-make-docfile
200# $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/prefix-args $(STAGING_DIR_HOST)/bin/liballegro-prefix-args
201endef
202
203# workaround for cmake.mk bug
204ifneq ($(CONFIG_CCACHE),)
205  CMAKE_C_COMPILER:=ccache
206  CMAKE_CXX_COMPILER:=ccache
207endif
208
209EXTRA_CFLAGS = -DSETUP_SCREEN_W=320 -DSETUP_SCREEN_H=240 -DSETUP_CFG_FILE=\\\"/etc/allegrorc\\\"
210TARGET_LDFLAGS = -L$(STAGING_DIR)/usr/lib -ldl -lrt
211
212CMAKE_OPTIONS = \
213    -DRT_LIBRARY= \
214    -DALLEGRO_USE_CONSTRUCTOR_EXITCODE=0 \
215    -DRT_LIBRARY= \
216    -DDL_LIBRARY= \
217    -DWANT_TOOLS=on \
218    -DWANT_TESTS=on \
219    -DWANT_MODULES=on \
220    -DWANT_EXAMPLES=on \
221    -DWANT_ALLEGROGL=off \
222    -DWANT_X11=off \
223    -DWANT_LINUX_CONSOLE=on \
224    -DWANT_LINUX_FBCON=on \
225    -DWANT_LINUX_VGA=off \
226    -DWANT_LINUX_SVGALIB=off \
227    -DWANT_ALSA=on \
228    -DWANT_OSS=off \
229    -DWANT_JACK=off \
230    -DWANT_SGIAUDIO=off \
231    -DWANT_LOADPNG=$(if $(CONFIG_PACKAGE_liballegro-png),on,off) \
232    -DWANT_JPGALLEG=$(if $(CONFIG_PACKAGE_liballegro-jpeg),on,off) \
233    -DWANT_LOGG=$(if $(CONFIG_PACKAGE_liballegro-ogg),on,off)
234
235# todo: patch CMakeLists.txt to force addons to be compiled as shared libs?
236# -DADDON_LINKAGE=SHARED
237
238MAKE_FLAGS += -j4
239
240define Build/Configure
241    $(call Build/Configure/Default)
242endef
243
244define Build/Compile
245    $(call Build/Compile/Default)
246    $(call Build/Compile/Default -C PKG_BUILD_DIR)
247# ln -sf $(STAGING_DIR_HOST)/bin/liballegro-make-docfile $(PKG_BUILD_DIR)/lib-src/make-docfile
248endef
249
250define Build/Install
251    $(call Build/Install/Default)
252    #$(INSTALL_DATA) ./files/... $(PKG_INSTALL_DIR)/usr/share/..
253endef
254
255define Build/InstallDev
256    $(INSTALL_DIR) $(1)/usr/include/
257    $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
258
259    $(INSTALL_DIR) $(1)/usr/lib
260    $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
261    $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* \
262        $(1)/usr/lib/
263    -$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.a \
264        $(1)/usr/lib/
265    $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
266        $(1)/usr/lib/pkgconfig/
267# $(SED) 's,-I$$$${includedir},,g' $(1)/usr/lib/pkgconfig/plplotd.pc
268# $(SED) 's,-L$$$${libdir},,g' $(1)/usr/lib/pkgconfig/plplotd.pc
269endef
270
271define Package/liballegro/install
272    $(INSTALL_DIR) $(1)/usr/lib $(1)/etc
273    $(CP) $(PKG_INSTALL_DIR)/usr/lib/liballeg* $(1)/usr/lib/
274    $(CP) $(PKG_INSTALL_DIR)/usr/lib/allegro $(1)/usr/lib/
275    $(CP) ./files/allegrorc $(1)/etc/
276endef
277
278define Package/liballegro-data/install
279    $(INSTALL_DIR) $(1)/usr/share/allegro
280    $(CP) $(PKG_BUILD_DIR)/{keyboard.dat,language.dat} $(1)/usr/share/allegro
281        # readme file is used by the allegro 'shooter' demo
282    $(INSTALL_DIR) $(1)/usr/share/allegro/docs/{txt,src}
283    $(CP) $(PKG_BUILD_DIR)/docs/txt/readme.txt \
284        $(1)/usr/share/allegro/docs/txt
285    $(CP) $(PKG_BUILD_DIR)/docs/src/thanks._tx \
286        $(1)/usr/share/allegro/docs/src
287endef
288
289define Package/liballegro-png/install
290    $(INSTALL_DIR) $(1)/usr/lib/
291    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libloadpng* $(1)/usr/lib/
292endef
293
294define Package/liballegro-jpeg/install
295    $(INSTALL_DIR) $(1)/usr/lib/
296    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libjpgalleg* $(1)/usr/lib/
297endef
298
299define Package/liballegro-ogg/install
300    $(INSTALL_DIR) $(1)/usr/lib/
301    $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblogg* $(1)/usr/lib/
302endef
303
304define Package/liballegro-demo/install
305    $(INSTALL_DIR) $(1)/usr/bin
306    $(INSTALL_DIR) $(1)/usr/share/allegro
307    $(CP) $(PKG_BUILD_DIR)/demos/shooter/shooter $(1)/usr/bin/
308    $(CP) $(PKG_BUILD_DIR)/demos/shooter/demo.dat $(1)/usr/share/allegro/shooter.dat
309    $(CP) $(PKG_BUILD_DIR)/demos/skater/skater $(1)/usr/bin/
310    $(CP) $(PKG_BUILD_DIR)/demos/skater/demo.dat $(1)/usr/share/allegro/skater.dat
311endef
312
313define Package/liballegro-setup/install
314    $(INSTALL_DIR) $(1)/usr/bin
315    $(INSTALL_DIR) $(1)/usr/share/allegro/
316    $(CP) $(PKG_BUILD_DIR)/setup/setup $(1)/usr/bin/allegro-setup
317    $(CP) $(PKG_BUILD_DIR)/setup/setup.dat $(1)/usr/share/allegro/
318endef
319
320define Package/liballegro-examples/install
321    $(INSTALL_DIR) $(1)/usr/bin/allegro
322    $(CP) $(PKG_BUILD_DIR)/examples/* $(1)/usr/bin/allegro/
323    rm $(1)/usr/bin/allegro/{*.c,*.h,*.txt,*.cmake}
324    rm -r $(1)/usr/bin/allegro/CMakeFiles
325endef
326
327define Package/liballegro-utils/install
328    $(INSTALL_DIR) $(1)/usr/bin
329    $(CP) $(PKG_INSTALL_DIR)/usr/bin $(1)/usr
330endef
331
332
333$(eval $(call HostBuild))
334$(eval $(call BuildPackage,liballegro))
335$(eval $(call BuildPackage,liballegro-data))
336$(eval $(call BuildPackage,liballegro-png))
337$(eval $(call BuildPackage,liballegro-jpeg))
338$(eval $(call BuildPackage,liballegro-ogg))
339$(eval $(call BuildPackage,liballegro-demo))
340$(eval $(call BuildPackage,liballegro-setup))
341$(eval $(call BuildPackage,liballegro-examples))
342$(eval $(call BuildPackage,liballegro-utils))
343
344
345# The following comments configure the Emacs editor. Just ignore them.
346# Local Variables:
347# 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"
348# End:
349

Archive Download this file



interactive