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 = -ldl -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_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@ @CAIRO_CFLAGS@ @FRONTEND_CFLAGS@  -DSYSCONFDIR='"$(sysconfdir)"' \
72	    -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' \
73            -DCONFIGURE_OPTIONS='"@CONFIGURE_OPTIONS@"' -DDATADIR='"$(datadir)/games/xboard"' -DMANDIR='"$(mandir)"' $(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/BlackWolf.svg	    svg/WhiteWolf.svg         \
149           svg/BlackCamel.svg	    svg/WhiteCamel.svg        \
150           svg/BlackZebra.svg	    svg/WhiteZebra.svg        \
151           svg/BlackGnu.svg	    svg/WhiteGnu.svg          \
152           svg/BlackWizard.svg	    svg/WhiteWizard.svg       \
153           svg/BlackViking.svg	    svg/WhiteViking.svg       \
154           svg/BlackIron.svg	    svg/WhiteIron.svg         \
155           svg/BlackCopper.svg	    svg/WhiteCopper.svg       \
156           svg/BlackTower.svg	    svg/WhiteTower.svg        \
157           svg/BlackDragon.svg	    svg/WhiteDragon.svg       \
158           svg/BlackCub.svg	    svg/WhiteCub.svg          \
159           svg/BlackButterfly.svg   svg/WhiteButterfly.svg    \
160           svg/BlackLeft.svg	    svg/WhiteLeft.svg         \
161           svg/BlackRight.svg	    svg/WhiteRight.svg        \
162           svg/BlackHat.svg	    svg/WhiteHat.svg          \
163           svg/BlackRShield.svg	    svg/WhiteRShield.svg      \
164           svg/BlackLShield.svg	    svg/WhiteLShield.svg      \
165           svg/BlackAxe.svg	    svg/WhiteAxe.svg          \
166           svg/BlackFlag.svg	    svg/WhiteFlag.svg         \
167           svg/BlackDuck.svg	    svg/WhiteDuck.svg         \
168           svg/BlackPegasus.svg	    svg/WhitePegasus.svg      \
169           svg/eo_Analyzing.svg     svg/eo_Black.svg          \
170           svg/eo_Clear.svg         svg/eo_Ponder.svg         \
171           svg/eo_Thinking.svg      svg/eo_Unknown.svg        \
172           svg/eo_White.svg
173
174shogidir = $(gamedatadir)/themes/shogi
175dist_shogi_DATA = \
176           themes/shogi/WhiteGold.svg        themes/shogi/WhiteCrownedBishop.svg\
177           themes/shogi/WhiteBishop.svg      themes/shogi/WhiteKing.svg\
178           themes/shogi/WhiteKnight.svg      themes/shogi/WhiteGoldKnight.svg\
179           themes/shogi/WhiteLance.svg       themes/shogi/WhiteGoldLance.svg\
180           themes/shogi/WhitePawn.svg        themes/shogi/WhiteGoldPawn.svg\
181           themes/shogi/WhiteRook.svg        themes/shogi/WhiteCrownedRook.svg\
182           themes/shogi/WhiteAdvisor.svg     themes/shogi/WhiteGoldSilver.svg\
183           themes/shogi/BlackGold.svg        themes/shogi/BlackCrownedBishop.svg\
184           themes/shogi/BlackBishop.svg      themes/shogi/BlackKing.svg\
185           themes/shogi/BlackKnight.svg      themes/shogi/BlackGoldKnight.svg\
186           themes/shogi/BlackLance.svg       themes/shogi/BlackGoldLance.svg\
187           themes/shogi/BlackPawn.svg        themes/shogi/BlackGoldPawn.svg\
188           themes/shogi/BlackRook.svg        themes/shogi/BlackCrownedRook.svg\
189           themes/shogi/BlackAdvisor.svg     themes/shogi/BlackGoldSilver.svg
190
191xiangqidir = $(gamedatadir)/themes/xiangqi
192dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg  themes/xiangqi/WhiteAdvisor.svg \
193           themes/xiangqi/BlackCanon.svg    themes/xiangqi/WhiteCanon.svg    \
194           themes/xiangqi/BlackElephant.svg themes/xiangqi/WhiteElephant.svg \
195           themes/xiangqi/BlackKnight.svg   themes/xiangqi/WhiteKnight.svg   \
196           themes/xiangqi/BlackGold.svg	    themes/xiangqi/WhiteGold.svg     \
197           themes/xiangqi/BlackPawn.svg	    themes/xiangqi/WhitePawn.svg     \
198           themes/xiangqi/BlackRook.svg	    themes/xiangqi/WhiteRook.svg
199
200### directory and files for themes (and other) configuration files
201
202themesdir = $(datadir)/games/xboard/themes/conf
203dist_themes_DATA = conf/shogi conf/xq conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen
204
205### directory and files for pixmaps
206
207pixmapsdir = $(gamedatadir)/pixmaps/textures
208dist_pixmaps_DATA = pixmaps/cross32.png pixmaps/cross48.png pixmaps/board32.png pixmaps/board48.png pixmaps/ini32.png pixmaps/ini48.png
209
210### directory and files for pngs
211
212pngdir = $(gamedatadir)/themes/textures
213dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png png/xqboard-9x10.png
214
215### directory and files for sound files
216
217soundsdir = $(gamedatadir)/sounds
218dist_sounds_DATA = \
219  sounds/cymbal.wav     sounds/pop2.wav   sounds/slap.wav     sounds/ding1.wav      sounds/laser.wav \
220  sounds/woodthunk.wav  sounds/gong.wav   sounds/penalty.wav  sounds/honkhonk.wav   sounds/phone.wav  sounds/roar.wav
221
222### the man page depends on several files, so we add a special rule
223
224xboard.man: xboard.texi copyright.texi gpl.texinfo version.texi
225	$(srcdir)/texi2man $(srcdir)/xboard.texi > xboard.man || (rm -f xboard.man ; false)
226
227### install mime-type files and corresponding icons and menu entries if enabled during configure
228
229install-data-hook: install-mime-database
230uninstall-hook: uninstall-mime-database
231
232install-mime-database:
233if ENABLE_UPDATE_MIMEDB
234	-if test -z "$(DESTDIR)" -a -n "$(XDG_MIME)" -a -n "$(XDG_DESKTOP_MENU)" -a -n "$(XDG_ICON_RESOURCE)" ; then \
235		$(XDG_MIME) install --mode system --novendor xboard.xml ;\
236		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-pgn-viewer.desktop;\
237		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-fen-viewer.desktop;\
238		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-tourney.desktop;\
239		$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-config.desktop;\
240		$(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.png application-x-chess-pgn;\
241		$(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.png application-x-xboard-trn;\
242		$(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.png application-x-xboard-opt;\
243		$(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.png application-x-chess-pgn;\
244		$(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.png application-x-xboard-trn;\
245		$(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.png application-x-xboard-opt;\
246	fi
247endif
248
249uninstall-mime-database:
250if ENABLE_UPDATE_MIMEDB
251	-if test -z "$(DESTDIR)" -a -n "$(XDG_MIME)" -a -n "$(XDG_DESKTOP_MENU)" -a -n "$(XDG_ICON_RESOURCE)" ; then \
252		$(XDG_MIME) uninstall --mode system --novendor xboard.xml;\
253		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-pgn-viewer.desktop;\
254		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-fen-viewer.desktop;\
255		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-tourney.desktop;\
256		$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-config.desktop;\
257		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.png application-x-chess-pgn;\
258		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.png application-x-xboard-trn;\
259		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.png application-x-xboard-opt;\
260		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.png application-x-chess-pgn;\
261		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.png application-x-xboard-trn;\
262		$(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.png application-x-xboard-opt;\
263	fi
264endif
265
266if OSX_APP
267osxapp: all-recursive install install-recursive
268macportsprefix = $(shell which port | sed s/[/]bin[/]port//)
269	$(MKDIR_P) $(datarootdir)/bin
270	$(MKDIR_P) $(datarootdir)/lib
271	$(MKDIR_P) $(sysconfdir)/gtk-2.0
272	$(MKDIR_P) $(datadir)/themes
273	$(MKDIR_P) $(datadir)/gtk-engines
274	$(MKDIR_P) $(gamedatadir)/themes
275	$(INSTALL) ./osxapp/Info.plist $(prefix)
276	$(INSTALL) ./osxapp/PkgInfo $(prefix)
277	$(INSTALL) ./osxapp/XBoard.gtklauncher $(bindir)/XBoard
278	$(INSTALL) ./xboard $(bindir)/xboard-bin
279	cp -R ./osxapp/icons/. $(datarootdir)
280	sed -e 's?-soundProgram "aplay -q"?-soundProgram "afplay"?'\
281            -e 's?-firstChessProgram fairymax?-firstChessProgram "./fairymax"?'\
282	    -e 's?-firstChessProgramNames {fairymax?-firstChessProgramNames {"fairymax" -fcp "./fairymax" -fd "~~/../../bin/fairymax"?'\
283	    -e 's?"Fruit 2.1" -fcp fruit -fUCI?"fruit" -fcp "./fruit" -fd "~~/../../bin/fruit" -fUCI?'\
284	    -e '/"Crafty" -fcp crafty/d'\
285	    -e '/"GNU Chess" -fcp gnuchess/d'\
286	    -e 's?"icc" -icshost chessclub.com -icshelper timestamp?"icc" -icshost 207.99.83.228 -icshelper timestamp?'\
287	    -e 's?"kc" -icshost alanimus.com -icshelper timeseal?"vics" -icshost winboard.nl -icshelper timeseal?'\
288	    -e '/; Save user settings./d'\
289	    -e '/; Must be last in file to make user options prevail over system-wide settings!/d'\
290	    -e '/-saveSettingsOnExit true/d'\
291	    -e '/-saveSettingsFile "~\/.xboardrc"/d'\
292	    -e '/-settingsFile "~\/.xboardrc"/d'<./xboard.conf >$(sysconfdir)/xboard.conf
293	echo '; OSX' >>$(sysconfdir)/xboard.conf
294	echo ';'>>$(sysconfdir)/xboard.conf
295	echo '-clockFont "Sans Bold 26" '>>$(sysconfdir)/xboard.conf
296	echo '-pieceImageDirectory "~~/themes/default"' >>$(sysconfdir)/xboard.conf
297	echo '-autoLogo true' >>$(sysconfdir)/xboard.conf
298	echo '-logoDir "~~/logos"' >>$(sysconfdir)/xboard.conf
299	echo '-logoSize 100' >>$(sysconfdir)/xboard.conf
300	echo '-openCommand "open"' >>$(sysconfdir)/xboard.conf
301	echo '-firstDirectory "~~/../../bin/fairymax"' >>$(sysconfdir)/xboard.conf
302	echo '-secondDirectory "~~/../../bin/fairymax"' >>$(sysconfdir)/xboard.conf
303	echo '-secondChessProgram "./fairymax"' >>$(sysconfdir)/xboard.conf
304	echo '-uxiAdapter "uci2wb -%variant %fcp %fd"' >>$(sysconfdir)/xboard.conf
305	echo ';' >>$(sysconfdir)/xboard.conf
306	echo '; Save user settings.' >>$(sysconfdir)/xboard.conf
307	echo '; Must be last in file to make user options prevail over system-wide settings!' >>$(sysconfdir)/xboard.conf
308	echo ';' >>$(sysconfdir)/xboard.conf
309	echo '-saveSettingsOnExit true' >>$(sysconfdir)/xboard.conf
310	echo '-saveSettingsFile "~/Library/Preferences/XBoard.conf"' >>$(sysconfdir)/xboard.conf
311	echo '-settingsFile "~/Library/Preferences/XBoard.conf"' >>$(sysconfdir)/xboard.conf
312
313	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
314	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
315	$(INSTALL) ./osxapp/launcher_rc $(datarootdir)/
316	$(INSTALL) $(macportsprefix)/etc/gtk-2.0/im-multipress.conf $(sysconfdir)/gtk-2.0
317	$(INSTALL) ./osxapp/gtkrc $(sysconfdir)/gtk-2.0/gtkrc
318	cp -R $(macportsprefix)/lib/gtk-2.0 $(datarootdir)/lib
319	cp -R $(macportsprefix)/lib/gdk-pixbuf-2.0 $(datarootdir)/lib
320	cp -R $(macportsprefix)/share/themes/Mac $(datadir)/themes
321	cp -R ./osxapp/gtk2-themes/Mac/gtk-2.0 $(datadir)/themes/Mac
322	cp -R ./osxapp/themes/default/. $(gamedatadir)/themes/default
323	cp $(macportsprefix)/share/gtk-engines/murrine.xml $(datadir)/gtk-engines/murrine.xml
324	$(INSTALL) ./png/marble_d.png $(gamedatadir)/themes/textures
325	$(INSTALL) ./png/marble_l.png $(gamedatadir)/themes/textures
326	$(INSTALL) ./png/xqwood-9x10.png $(gamedatadir)/themes/textures
327	cp -R ./osxapp/logos $(gamedatadir)/
328if NLS_ENABLED
329	cp -R $(macportsprefix)/share/strings/. $(datarootdir)/
330	for i in po/*gmo; do lang=`basename $$i .gmo`; $(INSTALL) $(macportsprefix)/share/locale/$$lang/LC_MESSAGES/gtk20.mo $(localedir)/$$lang/LC_MESSAGES/; done
331endif
332	dylibbundler -of -b -x $(bindir)/xboard-bin -d $(datarootdir)/lib -p @executable_path/../Resources/lib
333	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
334	dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/immodules/im-quartz.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
335	dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/engines/libpixmap.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
336	dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/engines/libmurrine.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib
337	find ./XBoard.app -name '*.a' -print0 | xargs -0 rm
338	rm -r $(datarootdir)/lib/gtk-2.0/include
339	rm -r $(datarootdir)/share/applications
340	rm $(datarootdir)/share/info/dir
341	rm -r $(datarootdir)/share/icons
342	rm -r $(datarootdir)/share/mime
343	mv $(datarootdir)/share/games/xboard/themes/conf $(datarootdir)/share/xboard/conf
344	rm -r $(datarootdir)/share/xboard/pixmaps
345	rm -r $(datarootdir)/share/games
346endif
347
348