1bin_PROGRAMS = xboard
2
3### if we are compiling with ZIPPY we need some extra source files
4
5if ZIPPY
6  ZPY = zippy.c zippy.h
7else
8  ZPY =
9endif
10
11### define sources for the front-end and backend
12GTKsources = gtk/xboard.c    gtk/xboard.h \
13             gtk/xoptions.c  gtk/xtimer.c \
14             gtk/xengineoutput.c
15
16Xsources   = xaw/xboard.c    xaw/xboard.h    \
17             xaw/xengineoutput.c             \
18             xaw/xgamelist.c xaw/xgamelist.h \
19             xaw/xhistory.c  xaw/xhistory.h  \
20             xaw/xoptions.c \
21             bitmaps/checkmark.bm bitmaps/icon_black.bm bitmaps/icon_white.bm
22
23if withGTK
24  FRONTENDsources = $(GTKsources)
25  FRONTENDextras = $(Xsources)
26  headers = -I gtk
27endif
28if withXaw
29  FRONTENDsources = $(Xsources)
30  FRONTENDextras = $(GTKsources)
31  headers = -I xaw -DX11
32endif
33
34xboard_SOURCES = backend.c backend.h backendz.h \
35	 	 book.c \
36		 childio.c childio.h \
37	 	 common.h \
38		 frontend.h \
39	  	 gamelist.c ngamelist.c \
40	 	 gettext.h  \
41		 lists.c lists.h \
42		 moves.c moves.h \
43		 parser.c parser.h \
44		 pgntags.c \
45	  	 uci.c \
46	 	 args.h xboard2.h \
47	 	 board.c board.h \
48	 	 draw.c draw.h \
49		 dialogs.c dialogs.h \
50		 engineoutput.c nengineoutput.c engineoutput.h \
51		 evalgraph.c nevalgraph.c evalgraph.h \
52		 history.c nhistory.c \
53	 	 menus.c menus.h \
54	 	 usounds.c usystem.c usystem.h \
55		 $(ZPY) $(FRONTENDsources)
56
57###
58
59SUBDIRS = po
60xboard_LDADD = -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @PANGOCAIRO_LIBS@
61
62EXTRA_DIST = pixmaps themes png sounds winboard \
63	xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man xboard.desktop xboard-config.desktop \
64	xboard-fen-viewer.desktop  xboard-pgn-viewer.desktop  xboard-tourney.desktop xboard.xml \
65	COPYRIGHT FAQ.html engine-intf.html ics-parsing.txt readme.htm zippy.README \
66	xboard.conf SHORTLOG DIFFSTAT history.c ABOUT-NLS $(FRONTENDextras)
67
68DISTCLEANFILES = stamp-h
69
70GITVERSION=$(shell sh -c 'git describe --dirty --always 2>/dev/null')
71AM_CPPFLAGS=-DINFODIR='"$(infodir)"' @X_CFLAGS@ @PANGOCAIRO_CFLAGS@ @FRONTEND_CFLAGS@  -DSYSCONFDIR='"$(sysconfdir)"' \
72	    -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' \
73            -DCONFIGURE_OPTIONS='"@CONFIGURE_OPTIONS@"' -DDATADIR='"$(datadir)/games/xboard"' $(headers)
74
75ACLOCAL_AMFLAGS = -I m4
76
77info_TEXINFOS =  xboard.texi
78xboard_TEXINFOS =  copyright.texi
79man6_MANS = xboard.man
80
81
82### config file
83
84sysconf_DATA = xboard.conf
85
86### icon files
87
88icondir = @ICONSDIR@
89dist_icon_DATA = xboard.png
90svgicondir = @SVGICONSDIR@
91dist_svgicon_DATA = xboard.svg
92
93
94### desktop files for KDE and gnome
95
96Applicationsdir = @DESKTOPDIR@
97Applications_DATA = xboard.desktop xboard-fen-viewer.desktop  xboard-pgn-viewer.desktop  xboard-tourney.desktop  xboard-config.desktop
98
99### mime file
100mimedir = @MIMEDIR@
101mime_DATA = xboard.xml
102
103gamedatadir = @GAMEDATADIR@
104
105### directory and files for svgs
106
107svgdir = $(gamedatadir)/themes/default
108dist_svg_DATA = svg/icon_white.svg         svg/icon_black.svg      \
109           svg/BlackAdvisor.svg       svg/WhiteAdvisor.svg    \
110           svg/BlackArchbishop.svg    svg/WhiteArchbishop.svg  \
111           svg/BlackBishop.svg	      svg/WhiteBishop.svg      \
112           svg/BlackCanon.svg	      svg/WhiteCanon.svg       \
113           svg/BlackChancellor.svg    svg/WhiteChancellor.svg  \
114           svg/BlackCobra.svg         svg/WhiteCobra.svg       \
115           svg/BlackCommoner.svg      svg/WhiteCommoner.svg    \
116           svg/BlackCrownedBishop.svg svg/WhiteCrownedBishop.svg  \
117           svg/BlackCrownedRook.svg   svg/WhiteCrownedRook.svg \
118           svg/BlackElephant.svg      svg/WhiteElephant.svg    \
119           svg/BlackGoldKnight.svg    svg/WhiteGoldKnight.svg  \
120           svg/BlackGoldLance.svg   svg/WhiteGoldLance.svg    \
121           svg/BlackGoldPawn.svg    svg/WhiteGoldPawn.svg     \
122           svg/BlackGoldSilver.svg  svg/WhiteGoldSilver.svg   \
123           svg/BlackGold.svg	    svg/WhiteGold.svg	      \
124           svg/BlackHawk.svg        svg/WhiteHawk.svg         \
125           svg/BlackKing.svg	    svg/WhiteKing.svg	      \
126           svg/BlackKnight.svg	    svg/WhiteKnight.svg	      \
127           svg/BlackLance.svg	    svg/WhiteLance.svg	      \
128           svg/BlackMarshall.svg    svg/WhiteMarshall.svg     \
129           svg/BlackNightrider.svg  svg/WhiteNightrider.svg   \
130           svg/BlackPawn.svg	    svg/WhitePawn.svg	      \
131           svg/BlackPrincess.svg    svg/WhitePrincess.svg     \
132           svg/BlackQueen.svg	    svg/WhiteQueen.svg	      \
133           svg/BlackRook.svg	    svg/WhiteRook.svg	      \
134           svg/BlackUnicorn.svg	    svg/WhiteUnicorn.svg      \
135           svg/BlackSword.svg	    svg/WhiteSword.svg        \
136           svg/BlackHSword.svg	    svg/WhiteHSword.svg       \
137           svg/BlackLeopard.svg	    svg/WhiteLeopard.svg      \
138           svg/BlackLion.svg	    svg/WhiteLion.svg         \
139           svg/BlackPromoBishop.svg svg/WhitePromoBishop.svg  \
140           svg/BlackPromoRook.svg   svg/WhitePromoRook.svg    \
141           svg/BlackPromoHorse.svg  svg/WhitePromoHorse.svg   \
142           svg/BlackPromoDragon.svg svg/WhitePromoDragon.svg  \
143           svg/BlackPromoSword.svg  svg/WhitePromoSword.svg   \
144           svg/BlackPromoHSword.svg svg/WhitePromoHSword.svg  \
145           svg/BlackHCrown.svg	    svg/WhiteHCrown.svg       \
146           svg/BlackDolphin.svg	    svg/WhiteDolphin.svg      \
147           svg/BlackClaw.svg	    svg/WhiteClaw.svg         \
148           svg/eo_Analyzing.svg     svg/eo_Black.svg          \
149           svg/eo_Clear.svg         svg/eo_Ponder.svg         \
150           svg/eo_Thinking.svg      svg/eo_Unknown.svg        \
151           svg/eo_White.svg
152
153shogidir = $(gamedatadir)/themes/shogi
154dist_shogi_DATA = \
155           themes/shogi/WhiteGold.svg        themes/shogi/WhiteCrownedBishop.svg\
156           themes/shogi/WhiteBishop.svg      themes/shogi/WhiteKing.svg\
157           themes/shogi/WhiteKnight.svg      themes/shogi/WhiteGoldKnight.svg\
158           themes/shogi/WhiteLance.svg       themes/shogi/WhiteGoldLance.svg\
159           themes/shogi/WhitePawn.svg        themes/shogi/WhiteGoldPawn.svg\
160           themes/shogi/WhiteRook.svg        themes/shogi/WhiteCrownedRook.svg\
161           themes/shogi/WhiteAdvisor.svg     themes/shogi/WhiteGoldSilver.svg\
162           themes/shogi/BlackGold.svg        themes/shogi/BlackCrownedBishop.svg\
163           themes/shogi/BlackBishop.svg      themes/shogi/BlackKing.svg\
164           themes/shogi/BlackKnight.svg      themes/shogi/BlackGoldKnight.svg\
165           themes/shogi/BlackLance.svg       themes/shogi/BlackGoldLance.svg\
166           themes/shogi/BlackPawn.svg        themes/shogi/BlackGoldPawn.svg\
167           themes/shogi/BlackRook.svg        themes/shogi/BlackCrownedRook.svg\
168           themes/shogi/BlackAdvisor.svg     themes/shogi/BlackGoldSilver.svg
169
170xiangqidir = $(gamedatadir)/themes/xiangqi
171dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg  themes/xiangqi/WhiteAdvisor.svg \
172           themes/xiangqi/BlackCanon.svg    themes/xiangqi/WhiteCanon.svg    \
173           themes/xiangqi/BlackElephant.svg themes/xiangqi/WhiteElephant.svg \
174           themes/xiangqi/BlackKnight.svg   themes/xiangqi/WhiteKnight.svg   \
175           themes/xiangqi/BlackGold.svg	    themes/xiangqi/WhiteGold.svg     \
176           themes/xiangqi/BlackPawn.svg	    themes/xiangqi/WhitePawn.svg     \
177           themes/xiangqi/BlackRook.svg	    themes/xiangqi/WhiteRook.svg
178
179### directory and files for themes (and other) configuration files
180
181themesdir = $(datadir)/games/xboard/themes/conf
182dist_themes_DATA = conf/shogi conf/xq conf/chu conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen \
183	    conf/judkins conf/judkins.fen conf/xiangqi
184
185### directory and files for pixmaps
186
187pixmapsdir = $(gamedatadir)/pixmaps/textures
188dist_pixmaps_DATA = pixmaps/cross32.png pixmaps/cross48.png pixmaps/board32.png pixmaps/board48.png pixmaps/ini32.png pixmaps/ini48.png
189
190### directory and files for pngs
191
192pngdir = $(gamedatadir)/themes/textures
193dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png png/xqboard.png
194
195### directory and files for sound files
196
197soundsdir = $(gamedatadir)/sounds
198dist_sounds_DATA = \
199  sounds/cymbal.wav     sounds/pop2.wav   sounds/slap.wav     sounds/ding1.wav      sounds/laser.wav \
200  sounds/woodthunk.wav  sounds/gong.wav   sounds/penalty.wav  sounds/honkhonk.wav   sounds/phone.wav  sounds/roar.wav \
201  sounds/README         sounds/alarm.wav  sounds/challenge.wav sounds/channel.wav   sounds/channel1.wav \
202  sounds/ching.wav      sounds/click.wav  sounds/draw.wav     sounds/drip.wav       sounds/kibitz.wav \
203  sounds/lose.wav       sounds/move.wav   sounds/pop.wav      sounds/request.wav    sounds/seek.wav \
204  sounds/shout.wav      sounds/squeak.wav sounds/sshout.wav   sounds/swish.wav      sounds/tell.wav \
205  sounds/thud.wav       sounds/unfinished.wav sounds/whipcrak.wav sounds/win.wav
206
207### the man page depends on several files, so we add a special rule
208
209xboard.man: xboard.texi copyright.texi gpl.texinfo version.texi
210	$(srcdir)/texi2man $(srcdir)/xboard.texi > xboard.man || (rm -f xboard.man ; false)
211
212### install mime-type files and corresponding icons and menu entries if enabled during configure
213
214install-data-hook: install-mime-database
215uninstall-hook: uninstall-mime-database
216
217install-mime-database:
218if ENABLE_UPDATE_MIMEDB
219	-if test -z "$(DESTDIR)" -a -n "$(XDG_MIME)" -a -n "$(XDG_DESKTOP_MENU)" -a -n "$(XDG_ICON_RESOURCE)" ; then \
220		$(XDG_MIME) install --mode system --novendor xboard.xml ;\
221		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-pgn-viewer.desktop;\
222		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-fen-viewer.desktop;\
223		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-tourney.desktop;\
224		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-config.desktop;\
225		$(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.png application-x-chess-pgn;\
226		$(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.png application-x-xboard-trn;\
227		$(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.png application-x-xboard-opt;\
228		$(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.png application-x-chess-pgn;\
229		$(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.png application-x-xboard-trn;\
230		$(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.png application-x-xboard-opt;\
231	fi
232endif
233
234uninstall-mime-database:
235if ENABLE_UPDATE_MIMEDB
236	-if test -z "$(DESTDIR)" -a -n "$(XDG_MIME)" -a -n "$(XDG_DESKTOP_MENU)" -a -n "$(XDG_ICON_RESOURCE)" ; then \
237		$(XDG_MIME) uninstall --mode system --novendor xboard.xml;\
238		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-pgn-viewer.desktop;\
239		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-fen-viewer.desktop;\
240		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-tourney.desktop;\
241		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-config.desktop;\
242		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.png application-x-chess-pgn;\
243		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.png application-x-xboard-trn;\
244		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.png application-x-xboard-opt;\
245		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.png application-x-chess-pgn;\
246		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.png application-x-xboard-trn;\
247		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.png application-x-xboard-opt;\
248	fi
249endif
250
251if OSX_APP
252osxapp: all-recursive install install-recursive
253macportsprefix = $(shell which port | sed s/[/]bin[/]port//)
254	$(MKDIR_P) $(datarootdir)/bin
255	$(MKDIR_P) $(datarootdir)/lib
256	$(MKDIR_P) $(sysconfdir)/gtk-2.0
257	$(MKDIR_P) $(sysconfdir)/pango
258	$(MKDIR_P) $(datadir)/themes
259	$(MKDIR_P) $(datadir)/gtk-engines
260	$(MKDIR_P) $(gamedatadir)/themes
261	$(INSTALL) ./osxapp/Info.plist $(prefix)
262	$(INSTALL) ./osxapp/PkgInfo $(prefix)
263	$(INSTALL) ./osxapp/XBoard.gtklauncher $(bindir)/XBoard
264	$(INSTALL) ./xboard $(bindir)/xboard-bin
265	cp -R ./osxapp/icons/. $(datarootdir)
266	sed -e 's?-soundProgram "aplay -q"?-soundProgram "afplay"?'\
267            -e 's?-firstChessProgram fairymax?-firstChessProgram "./fairymax"?'\
268	    -e 's?-firstChessProgramNames {fairymax?-firstChessProgramNames {"fairymax" -fcp "./fairymax" -fd "~~/../../bin/fairymax"?'\
269	    -e 's?"Fruit 2.1" -fcp fruit -fUCI?"fruit" -fcp "./fruit" -fd "~~/../../bin/fruit" -fUCI?'\
270	    -e '/"Crafty" -fcp crafty/d'\
271	    -e '/"GNU Chess" -fcp gnuchess/d'\
272	    -e 's?"icc" -icshost chessclub.com -icshelper timestamp?"icc" -icshost 207.99.83.228 -icshelper timestamp?'\
273	    -e 's?"kc" -icshost alanimus.com -icshelper timeseal?"vics" -icshost winboard.nl -icshelper timeseal?'\
274	    -e '/; Save user settings./d'\
275	    -e '/; Must be last in file to make user options prevail over system-wide settings!/d'\
276	    -e '/-saveSettingsOnExit true/d'\
277	    -e '/-saveSettingsFile "~\/.xboardrc"/d'\
278	    -e '/-settingsFile "~\/.xboardrc"/d'<./xboard.conf >$(sysconfdir)/xboard.conf
279	echo '; OSX' >>$(sysconfdir)/xboard.conf
280	echo ';'>>$(sysconfdir)/xboard.conf
281	echo '-clockFont "Sans Bold 26" '>>$(sysconfdir)/xboard.conf
282	echo '-pieceImageDirectory "~~/themes/default"' >>$(sysconfdir)/xboard.conf
283	echo '-autoLogo true' >>$(sysconfdir)/xboard.conf
284	echo '-logoDir "~~/logos"' >>$(sysconfdir)/xboard.conf
285	echo '-logoSize 100' >>$(sysconfdir)/xboard.conf
286	echo '-openCommand "open"' >>$(sysconfdir)/xboard.conf
287	echo '-firstDirectory "~~/../../bin/fairymax"' >>$(sysconfdir)/xboard.conf
288	echo '-secondDirectory "~~/../../bin/fairymax"' >>$(sysconfdir)/xboard.conf
289	echo '-secondChessProgram "./fairymax"' >>$(sysconfdir)/xboard.conf
290	echo '-uxiAdapter "uci2wb -%variant %fcp %fd"' >>$(sysconfdir)/xboard.conf
291	echo ';' >>$(sysconfdir)/xboard.conf
292	echo '; Save user settings.' >>$(sysconfdir)/xboard.conf
293	echo '; Must be last in file to make user options prevail over system-wide settings!' >>$(sysconfdir)/xboard.conf
294	echo ';' >>$(sysconfdir)/xboard.conf
295	echo '-saveSettingsOnExit true' >>$(sysconfdir)/xboard.conf
296	echo '-saveSettingsFile "~/Library/Preferences/XBoard.conf"' >>$(sysconfdir)/xboard.conf
297	echo '-settingsFile "~/Library/Preferences/XBoard.conf"' >>$(sysconfdir)/xboard.conf
298
299	sed 's?$(macportsprefix)/lib?/tmp/skl/XBoard.app/Contents/Resources/lib?' <$(macportsprefix)/etc/gtk-2.0/gdk-pixbuf.loaders >$(sysconfdir)/gtk-2.0/gdk-pixbuf.loaders
300	sed -e 's?$(macportsprefix)/lib?/tmp/skl/XBoard.app/Contents/Resources/lib?' -e 's?$(macportsprefix)/share/locale?/tmp/skl/XBoard.app/Contents/Resources/share/locale?' <$(macportsprefix)/etc/gtk-2.0/gtk.immodules >$(sysconfdir)/gtk-2.0/gtk.immodules
301	$(INSTALL) ./osxapp/launcher_rc $(datarootdir)/
302	$(INSTALL) $(macportsprefix)/etc/gtk-2.0/im-multipress.conf $(sysconfdir)/gtk-2.0
303	$(INSTALL) ./osxapp/gtkrc $(sysconfdir)/gtk-2.0/gtkrc
304	sed -e '/ModuleFiles = .*\/etc\/pango\/pango.modules/d' <$(macportsprefix)/etc/pango/pangorc >$(sysconfdir)/pango/pangorc
305	sed -e 's?$(macportsprefix)/lib/pango/1.8.0/modules/??' <$(macportsprefix)/etc/pango/pango.modules >$(sysconfdir)/pango/pango.modules
306	cp -R $(macportsprefix)/lib/gtk-2.0 $(datarootdir)/lib
307	cp -R $(macportsprefix)/lib/gdk-pixbuf-2.0 $(datarootdir)/lib
308	cp -R $(macportsprefix)/lib/pango $(datarootdir)/lib
309	cp -R $(macportsprefix)/share/themes/Mac $(datadir)/themes
310	cp -R ./osxapp/gtk2-themes/Mac/gtk-2.0 $(datadir)/themes/Mac
311	cp -R ./osxapp/themes/default/. $(gamedatadir)/themes/default
312	cp $(macportsprefix)/share/gtk-engines/murrine.xml $(datadir)/gtk-engines/murrine.xml
313	$(INSTALL) ./png/marble_d.png $(gamedatadir)/themes/textures
314	$(INSTALL) ./png/marble_l.png $(gamedatadir)/themes/textures
315	$(INSTALL) ./png/xqwood.png $(gamedatadir)/themes/textures
316	cp -R ./osxapp/logos $(gamedatadir)/
317	cp -R $(macportsprefix)/share/strings/. $(datarootdir)/
318	for i in po/*gmo; do lang=`basename $$i .gmo`; $(INSTALL) $(macportsprefix)/share/locale/$$lang/LC_MESSAGES/gtk20.mo $(localedir)/$$lang/LC_MESSAGES/; done
319	dylibbundler -of -b -x $(bindir)/xboard-bin -d $(datarootdir)/lib -p @executable_path/../Resources/lib
320	dylibbundler -of -b -x $(datarootdir)/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
321	dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/immodules/im-quartz.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
322	dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/engines/libpixmap.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
323	dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/engines/libmurrine.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
324	dylibbundler -of -b -x $(datarootdir)/lib/pango/1.8.0/modules/pango-arabic-lang.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
325	dylibbundler -of -b -x $(datarootdir)/lib/pango/1.8.0/modules/pango-basic-coretext.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
326	dylibbundler -of -b -x $(datarootdir)/lib/pango/1.8.0/modules/pango-basic-fc.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
327	dylibbundler -of -b -x $(datarootdir)/lib/pango/1.8.0/modules/pango-indic-lang.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
328	find ./XBoard.app -name '*.a' -print0 | xargs -0 rm
329	find ./XBoard.app -name '*.la' -print0 | xargs -0 rm
330	rm -r $(datarootdir)/lib/gtk-2.0/include
331	rm -r $(datarootdir)/share/applications
332	rm $(datarootdir)/share/info/dir
333	rm -r $(datarootdir)/share/icons
334	rm -r $(datarootdir)/share/mime
335	mv $(datarootdir)/share/games/xboard/themes/conf $(datarootdir)/share/xboard/conf
336	rm -r $(datarootdir)/share/xboard/pixmaps
337	rm -r $(datarootdir)/share/games
338endif
339
340