Fix loading saved states on 64-bit systems
[wmaker-crm.git] / debian / rules
blobd9c3ede1a11ee498c73befb476023066ff798758
1 #!/usr/bin/make -f
2 # GNU Copyright 1997-2005 Marcelo Magallon <mmagallo@debian.org>
4 package := wmaker
5 version := $(shell dpkg-parsechangelog | grep-dctrl -ne -sVersion -FVersion .)
7 # use '(>= some_version)' whenever version dependencies are needed
8 # libwraster_deps := (>= 0.90.0-1)
10 SHELL=/bin/sh
12 CFLAGS = -g -Wall -DGLOBAL_DEFAULTS_SUBDIR="\\\"GNUstep/Defaults\\\""
14 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
15 CFLAGS += -O0
16 else
17 CFLAGS += -O2
18 endif
20 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
21 CFLAGS += -DDEBUG
22 endif
24 LINGUAS := $(patsubst po/%.po, %, $(wildcard po/*.po))
25 #LINGUAS := $(filter-out zh_TW.Big5, $(LINGUAS))
27 XLOCALE := --disable-locale
28 MODELOCK := --enable-modelock
30 XINERAMA := --enable-xinerama
32 # USERMENU := --enable-usermenu
34 # SHAPE_EXT := --disable-shape
35 # USE_SHM := --disable-shm
37 # USE_XPM := --disable-xpm
38 # USE_PNG := --disable-png
39 # USE_JPEG := --disable-jpeg
40 # USE_GIF := --disable-gif
41 # USE_TIFF := --disable-tiff
43 WMAKER_OPTIONS := $(XLOCALE) $(MODELOCK) $(XINERAMA) \
44 $(USERMENU) $(SHAPE_EXT) $(USE_SHM) \
45 $(USE_XPM) $(USE_PNG) $(USE_JPEG) $(USE_GIF) $(USE_TIFF)
47 TOPSRCDIR := $(shell pwd)
48 DEBTMPDIR := $(TOPSRCDIR)/debian/wmaker
50 WMAKER := wmaker
51 WMAKER_BD := $(TOPSRCDIR)/$(WMAKER)
52 WMAKER_TMP := $(DEBTMPDIR)
54 # Be careful with the leading / because some of these values are going
55 # to be hardcoded into the executables
57 BASEDIR := /usr
58 CONFDIR := /etc
59 BINDIR := $(BASEDIR)/bin
60 INCLUDEDIR := $(BASEDIR)/include
61 SHAREDIR := $(BASEDIR)/share
62 DOCDIR := $(SHAREDIR)/doc
63 MANDIR := $(SHAREDIR)/man
64 MAN1DIR := $(MANDIR)/man1
65 MAN8DIR := $(MANDIR)/man8
66 LIBDIR := $(BASEDIR)/lib
67 PKGLIBDIR := $(BASEDIR)/lib/WindowMaker
68 NLSDIR := $(SHAREDIR)/locale
69 WMCONFDIR := $(CONFDIR)/X11/WindowMaker
70 WMSHAREDIR := $(SHAREDIR)/WindowMaker
71 WMDOCDIR := $(DOCDIR)/wmaker
72 GNUSTEPDIR := $(LIBDIR)/GNUstep/System
73 GNUSTEPCONFDIR := $(CONFDIR)/GNUstep
74 DEFAULTSDIR := $(GNUSTEPCONFDIR)/Defaults
75 PIXMAPDIR := $(INCLUDEDIR)/X11/pixmaps
76 GNUSTEPAPPS := $(GNUSTEPDIR)/Applications
77 WPREFSAPPDIR := $(GNUSTEPAPPS)/WPrefs.app
79 WPREFSSRCDIR := $(TOPSRCDIR)/WPrefs.app
80 WRASTERSRCDIR := $(TOPSRCDIR)/wrlib
81 WINGSSRCDIR := $(TOPSRCDIR)/WINGs
83 LIBWRASTER := libwraster3
84 LIBWRASTER_TMP := $(DEBTMPDIR)/../$(LIBWRASTER)
85 LIBWINGS := libwings-dev
86 LIBWINGS_TMP := $(DEBTMPDIR)/../$(LIBWINGS)
88 RM := rm -f
89 RMDIR := rmdir --ignore-fail-on-non-empty
91 COMMON_OPTIONS := --prefix=$(BASEDIR) \
92 --mandir=$(MANDIR) \
93 --includedir=$(INCLUDEDIR) \
94 --sysconfdir=$(CONFDIR) \
95 --datadir=$(SHAREDIR) \
96 --with-nlsdir=$(NLSDIR) \
97 --with-pixmapdir=$(PIXMAPDIR) \
98 --with-gnustepdir=$(GNUSTEPDIR) \
99 --with-xft
101 LIST_PATCHES := find debian/patches -mindepth 1 -maxdepth 1 -name \*.diff -type f | sort
102 RLIST_PATCHES := find debian/patches -mindepth 1 -maxdepth 1 -name \*.diff -type f | sort -r
104 install_file := install -p -o root -g root -m 0644
105 install_prog := install -p -o root -g root -m 0755
106 install_dir := install -p -d -o root -g root -m 0755
108 build: build-stamp
109 build-stamp: build-wmaker-stamp
110 touch $@
112 build-wmaker-stamp: config-wmaker-stamp
113 $(RM) $(patsubst %.in,%,$(shell find WindowMaker -name \*.in ! -name Makefile.in))
114 test -x libtool || ln -sf $(WMAKER_BD)/libtool .
115 $(MAKE) -C $(WMAKER_BD)
116 touch $@
118 config-wmaker-stamp: patch-wmaker-stamp configure
119 dh_testdir
120 test -x config.guess || chmod +x config.guess
121 test -x config.sub || chmod +x config.sub
122 find -name \*.h.in | sed -e 's/\.in$$//' | xargs -r rm -f
123 mkdir -p $(WMAKER_BD)
124 cd $(WMAKER_BD) && \
125 LINGUAS="$(LINGUAS)" $(TOPSRCDIR)/configure $(COMMON_OPTIONS) \
126 $(WMAKER_OPTIONS) CFLAGS="$(CFLAGS)"
127 touch $@
129 patch-wmaker-stamp:
130 @$(LIST_PATCHES) | \
131 while read patch ; do \
132 echo $$patch ; \
133 if head -1 $$patch | grep -q ^Index: ; then \
134 patch -p0 < $$patch ; \
135 else \
136 patch -p1 < $$patch ; \
137 fi ; \
138 echo ; \
139 done
140 touch $@
142 test-patch-wmaker:
143 @$(LIST_PATCHES) | \
144 while read patch ; do \
145 echo $$patch ; \
146 if head -1 $$patch | grep -q ^Index: ; then \
147 patch --dry-run -p0 < $$patch ; \
148 else \
149 patch --dry-run -p1 < $$patch ; \
150 fi ; \
151 echo ; \
152 done
154 unpatch-wmaker:
155 @if [ -e patch-wmaker-stamp ] ; then \
156 $(RLIST_PATCHES) | \
157 while read patch ; do \
158 echo $$patch ; \
159 if head -1 $$patch | grep -q ^Index: ; then \
160 patch -p0 -R < $$patch ; \
161 else \
162 patch -p1 -R < $$patch ; \
163 fi ; \
164 echo ; \
165 done ; \
166 rm patch-wmaker-stamp ; \
169 clean:
170 dh_testdir
171 dh_testroot
172 $(RM) -r $(WMAKER_BD)
173 $(RM) *-stamp \
174 debian/*.files \
175 debian/shlibs.local \
176 debian/conffiles
177 debian/rules unpatch-wmaker
178 dh_clean
180 binary-indep: build
181 # dh_testdir -i
182 # dh_testroot
183 # dh_clean -i -k
185 binary-arch: build
186 dh_testdir -a
187 dh_testroot
188 dh_clean -a -k
189 dh_installdirs -a
190 debian/rules install-wmaker-stamp
191 debian/rules debian/$(LIBWRASTER)-dev.files
192 debian/rules debian/$(LIBWRASTER).files
193 debian/rules debian/$(LIBWINGS).files
194 dh_movefiles -a --sourcedir=debian/wmaker
195 # Remove cruft
196 $(RM) $(DEBTMPDIR)/usr/bin/wkdemenu.pl
197 # deal with menus
198 dh_installmenu -a --noscripts
199 $(install_prog) debian/appearance.menu-method \
200 $(DEBTMPDIR)/etc/menu-methods/wmappearance
201 $(install_file) WindowMaker/appearance.menu \
202 $(DEBTMPDIR)/$(WMCONFDIR)/
203 $(install_file) WindowMaker/background.menu \
204 $(DEBTMPDIR)/$(WMCONFDIR)/
205 $(install_file) WindowMaker/wmmacros \
206 $(DEBTMPDIR)/$(WMCONFDIR)/
207 touch $(DEBTMPDIR)/$(WMCONFDIR)/menu.prehook
208 touch $(DEBTMPDIR)/$(WMCONFDIR)/menu.posthook
209 $(install_file) debian/wmaker.desktop $(DEBTMPDIR)/usr/share/xsessions
210 # build a conffiles list AFTER installing the menus
211 # the sed part is there because of policy
212 # -cd $(DEBTMPDIR) && \
213 # find etc ! -type d \
214 # | sed -e "s:^etc/:/etc/:" > ../conffiles
215 dh_installdocs -a
216 $(install_file) $(WINGSSRCDIR)/README \
217 $(LIBWINGS_TMP)/$(DOCDIR)/$(LIBWINGS)/README.WINGs
218 $(install_file) $(WRASTERSRCDIR)/README \
219 $(LIBWRASTER_TMP)/$(DOCDIR)/$(LIBWRASTER)/README.wrlib
220 $(install_dir) $(DEBTMPDIR)/$(MAN1DIR)
221 $(RM) $(DEBTMPDIR)/$(MAN1DIR)/convertstyle*
222 dh_installman -pwmaker debian/manpages/*.1x
223 dh_installman -pwmaker debian/manpages/*.8
224 dh_installman -plibwraster3-dev debian/manpages/get-wraster-flags.1
225 dh_installman -plibwings-dev debian/manpages/get-wings-flags.1
226 dh_installman -plibwings-dev debian/manpages/get-wutil-flags.1
227 dh_installchangelogs -a ChangeLog
228 # dh_strip -a
229 dh_compress -a
230 dh_fixperms -a
231 cd debian && find -name \*.la -exec chmod a-X {} \;
232 dh_installdeb -a
233 dh_makeshlibs -p$(LIBWRASTER) -V '$(LIBWRASTER) $(libwraster_deps)'
234 dh_shlibdeps -u-L$(LIBWRASTER_TMP)/DEBIAN/shlibs
235 dh_gencontrol -a -u-isp
236 dh_md5sums -a
237 find debian -type d -empty -print0 | xargs -0r rm -rf
238 $(RMDIR) $(DEBTMPDIR)/$(INCLUDEDIR)
239 dh_builddeb -a
241 binary: binary-indep binary-arch
243 install-wmaker-stamp: DH_OPTIONS=-pwmaker
244 install-wmaker-stamp: build-wmaker-stamp
245 dh_testdir
246 dh_installdirs
247 $(MAKE) -C $(WMAKER_BD) install DESTDIR=$(DEBTMPDIR)/
248 # Ugly hack, FIXME
249 mv $(DEBTMPDIR)/etc/WindowMaker/* $(DEBTMPDIR)/$(DEFAULTSDIR)/
251 # Now begin fixing stuff
253 # First, provide a wrapper to compensate for Window Maker's funny first
254 # start up requierements
255 mv $(DEBTMPDIR)/$(BINDIR)/wmaker $(DEBTMPDIR)/$(PKGLIBDIR)/WindowMaker
256 dh_link $(PKGLIBDIR)/WindowMaker $(BINDIR)/WindowMaker
257 $(install_prog) debian/wmaker.sh $(DEBTMPDIR)/$(BINDIR)/wmaker
259 -mv $(DEBTMPDIR)/$(BINDIR)/convertfonts $(DEBTMPDIR)/$(PKGLIBDIR)/
261 # place wm-oldmenu2new under a more appropiate directory
262 -mv $(DEBTMPDIR)/$(BINDIR)/wm-oldmenu2new $(DEBTMPDIR)/$(WMDOCDIR)
264 # put a symlink in place because there's some hardcoded value that says
265 # Defaults is under /usr/share/WindowMaker.
266 ln -s $(DEFAULTSDIR) $(DEBTMPDIR)/$(WMSHAREDIR)/Defaults
267 # the next is stricly not necessary, because there's a symlink in place,
268 # but I don't want to abuse it. Some dumb program uses that path and is a
269 # PITA to modify it)
270 perl -pi -e 's:/$(WPREFSAPPDIR)/WPrefs:/$(BINDIR)/WPrefs:' \
271 $(DEBTMPDIR)/$(DEFAULTSDIR)/WMState
273 # Ditch this!
274 $(RM) $(DEBTMPDIR)/$(BINDIR)/wmaker.inst
275 $(RM) $(DEBTMPDIR)/$(BINDIR)/wmsetup
276 # this copyright is located in /$(DOCDIR)/wmaker
277 $(RM) $(DEBTMPDIR)/$(WMCONFDIR)/Copyright
279 # Fix permissions
280 chmod +x $(DEBTMPDIR)/usr/share/WindowMaker/autostart.sh
281 chmod +x $(DEBTMPDIR)/usr/share/WindowMaker/exitscript.sh
283 # Install our transition script
284 $(install_prog) debian/upgrade-windowmaker-defaults \
285 $(DEBTMPDIR)/usr/sbin/upgrade-windowmaker-defaults
287 # This file qualifies as "unpatchable"
288 cp debian/WMWindowAttributes $(DEBTMPDIR)/$(DEFAULTSDIR)/
289 # Need this file for start up
290 echo '"menu.hook"' > $(DEBTMPDIR)/$(DEFAULTSDIR)/WMRootMenu
292 # the plethora of readmes
293 -cp $(TOPSRCDIR)/po/README \
294 $(DEBTMPDIR)/$(WMDOCDIR)/README.po
295 -cp $(TOPSRCDIR)/README.definable-cursor \
296 $(DEBTMPDIR)/$(WMDOCDIR)/README.definable-cursor
297 -cp $(WPREFSSRCDIR)/README \
298 $(DEBTMPDIR)/$(WMDOCDIR)/README.WPrefs
299 -cp $(WPREFSSRCDIR)/po/README \
300 $(DEBTMPDIR)/$(WMDOCDIR)/README.WPrefs.po
302 # Copy in the Debian theme
303 cp debian/Debian.theme $(DEBTMPDIR)/$(WMSHAREDIR)/Themes/Debian
304 uudecode -o $(DEBTMPDIR)/$(WMSHAREDIR)/Backgrounds/debian.tiff \
305 debian/debian.tiff.uu
306 # This has the new default Debian theme settings.
307 cp debian/WindowMaker.default $(DEBTMPDIR)/$(DEFAULTSDIR)/WindowMaker
309 # Overrides lintian warnings
310 dh_installdirs usr/share/lintian/overrides
311 cp debian/wmaker.overrides debian/wmaker/usr/share/lintian/overrides/wmaker
313 # WPrefs
314 # fix the location of WPrefs
315 # mv $(DEBTMPDIR)/$(WPREFSAPPDIR)/WPrefs $(DEBTMPDIR)/$(BINDIR)
316 # dh_link $(BINDIR)/WPrefs $(WPREFSAPPDIR)/WPrefs
317 dh_link $(WPREFSAPPDIR)/WPrefs $(BINDIR)/WPrefs
318 # libwraster is compiled with tiff support, we don't need the xpm version
319 $(RM) -r $(DEBTMPDIR)/$(WPREFSAPPDIR)/xpm
320 $(RM) $(patsubst %.tiff,%.xpm,$(wildcard $(DEBTMPDIR)/$(WMSHAREDIR)/Icons/*.tiff))
322 # Fix the get-*-flags scripts
323 perl -pi -e '/^WCFLAGS/ && s:=.*:="-I/usr/X11R6/include":; /^WLFLAGS/ && s:=.*:="-L/usr/X11R6/lib":;' `find $(DEBTMPDIR) -name get-*-flags`
324 perl -pi -e '/^WLIBS/ && s:=.*:="-lwraster":' `find $(DEBTMPDIR) -name get-wraster-flags`
325 perl -pi -e '/^WLIBS/ && s:=.*:="-lWINGs -lwraster -lXft":' `find $(DEBTMPDIR) -name get-wings-flags`
326 perl -pi -e '/^WLIBS/ && s:=.*:="-lWUtil -lX11":' `find $(DEBTMPDIR) -name get-wutil-flags`
328 ifeq (skip,)
329 if [ -d $(DEBTMPDIR)/usr/include/WINGs ] ; then \
330 mv $(DEBTMPDIR)/usr/include/WINGs/* \
331 $(DEBTMPDIR)/usr/include ; \
332 rmdir $(DEBTMPDIR)/usr/include/WINGs ; \
334 endif
336 debian/$(LIBWRASTER)-dev.files: build
337 ( find $(DEBTMPDIR)/$(INCLUDEDIR) $(DEBTMPDIR)/$(LIBDIR) \
338 -name '*wraster*.h' \
339 -o -name '*wraster*.a' \
340 -o -name '*wraster*.la' \
341 -o -name '*wraster*.so' ; \
342 cd $(DEBTMPDIR) && \
343 find usr -name get-wraster-flags \
344 ) | sed -e 's:$(DEBTMPDIR)/*::'> $@
346 debian/$(LIBWRASTER).files: build
347 ( find $(DEBTMPDIR)/$(INCLUDEDIR) $(DEBTMPDIR)/$(LIBDIR) \
348 -name '*wraster*.so.*' \
349 ) | sed -e 's:$(DEBTMPDIR)/*::'> $@
351 debian/libwings-dev.files: build
352 ( find $(DEBTMPDIR)/$(INCLUDEDIR) $(DEBTMPDIR)/$(LIBDIR) \
353 -name '*WINGs*' \
354 -o -name '*WUtil*' | grep -v '\.so\.[0-9]' ; \
355 cd $(DEBTMPDIR) && \
356 find usr -name get-wutil-flags -o -name get-wings-flags \
357 ) | sed -e 's:$(DEBTMPDIR)/*::'> $@
359 debian/shlibs.local:
360 echo 'libwraster $(patsubst libwraster%,%, $(LIBWRASTER)) $(LIBWRASTER) $(libwraster_deps)' > $@
362 configure: configure.ac
363 $(TOPSRCDIR)/autogen.sh
365 .PHONY: binary binary-arch binary-indep binary-custom clean build unpatch-wmaker