Fix multi-leg promotions
[xboard.git] / Makefile.am
1 bin_PROGRAMS = xboard
2
3 ### if we are compiling with ZIPPY we need some extra source files
4
5 if ZIPPY
6   ZPY = zippy.c zippy.h
7 else
8   ZPY =
9 endif
10
11 ### define sources for the front-end and backend
12 GTKsources = gtk/xboard.c    gtk/xboard.h \
13              gtk/xoptions.c  gtk/xtimer.c \
14              gtk/xengineoutput.c
15
16 Xsources   = 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
23 if withGTK
24   FRONTENDsources = $(GTKsources)
25   FRONTENDextras = $(Xsources)
26   headers = -I gtk
27 endif
28 if withXaw
29   FRONTENDsources = $(Xsources)
30   FRONTENDextras = $(GTKsources)
31   headers = -I xaw -DX11
32 endif
33
34 xboard_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
59 SUBDIRS = po
60 xboard_LDADD = -ldl -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@
61
62 EXTRA_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
68 DISTCLEANFILES = stamp-h
69
70 GITVERSION=$(shell sh -c 'git describe --dirty --always 2>/dev/null')
71 AM_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
75 ACLOCAL_AMFLAGS = -I m4
76
77 info_TEXINFOS =  xboard.texi
78 xboard_TEXINFOS =  copyright.texi
79 man6_MANS = xboard.man
80
81
82 ### config file
83
84 sysconf_DATA = xboard.conf
85
86 ### icon files
87
88 icondir = @ICONSDIR@
89 dist_icon_DATA = xboard.png
90 svgicondir = @SVGICONSDIR@
91 dist_svgicon_DATA = xboard.svg
92
93
94 ### desktop files for KDE and gnome
95
96 Applicationsdir = @DESKTOPDIR@
97 Applications_DATA = xboard.desktop xboard-fen-viewer.desktop  xboard-pgn-viewer.desktop  xboard-tourney.desktop  xboard-config.desktop
98
99 ### mime file
100 mimedir = @MIMEDIR@
101 mime_DATA = xboard.xml
102
103 gamedatadir = @GAMEDATADIR@
104
105 ### directory and files for svgs
106
107 svgdir = $(gamedatadir)/themes/default
108 dist_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
174 shogidir = $(gamedatadir)/themes/shogi
175 dist_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
191 xiangqidir = $(gamedatadir)/themes/xiangqi
192 dist_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
202 themesdir = $(datadir)/games/xboard/themes/conf
203 dist_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
207 pixmapsdir = $(gamedatadir)/pixmaps/textures
208 dist_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
212 pngdir = $(gamedatadir)/themes/textures
213 dist_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
217 soundsdir = $(gamedatadir)/sounds
218 dist_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
224 xboard.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
229 install-data-hook: install-mime-database
230 uninstall-hook: uninstall-mime-database
231
232 install-mime-database:
233 if 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
247 endif
248
249 uninstall-mime-database:
250 if 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
264 endif
265
266 if OSX_APP
267 osxapp: all-recursive install install-recursive
268 macportsprefix = $(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)/
328 if 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
331 endif
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
346 endif
347