Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / CMakeLists.txt
CommitLineData
7eeb782e
AT
1INCLUDE_DIRECTORIES(${GNUGo_SOURCE_DIR}/patterns)
2INCLUDE_DIRECTORIES(${GNUGo_SOURCE_DIR}/engine)
3INCLUDE_DIRECTORIES(${GNUGo_SOURCE_DIR}/sgf)
4INCLUDE_DIRECTORIES(${GNUGo_SOURCE_DIR}/utils)
5
6########### mkpat program ###############
7
8SET(mkpat_SRCS
9 mkpat.c
10 transform.c
11 dfa.c
12 )
13
14ADD_EXECUTABLE(mkpat ${mkpat_SRCS})
15
16TARGET_LINK_LIBRARIES(mkpat utils)
17
18
19########### joseki program ###############
20
21SET(joseki_SRCS
22 joseki.c
23 )
24
25ADD_EXECUTABLE(joseki ${joseki_SRCS})
26
27TARGET_LINK_LIBRARIES(joseki board sgf utils)
28
29
30########### mkeyes program ###############
31
32SET(mkeyes_SRCS
33 mkeyes.c
34 )
35
36ADD_EXECUTABLE(mkeyes ${mkeyes_SRCS})
37
38TARGET_LINK_LIBRARIES(mkeyes utils)
39
40
41########### mkmcpat program ###############
42
43SET(mkmcpat_SRCS
44 mkmcpat.c
45 )
46
47ADD_EXECUTABLE(mkmcpat ${mkmcpat_SRCS})
48
49IF(UNIX)
50 SET(PLATFORM_LIBRARIES m)
51ENDIF(UNIX)
52
53TARGET_LINK_LIBRARIES(mkmcpat engine sgf utils ${PLATFORM_LIBRARIES})
54
55
56########### uncompress_fuseki program ###############
57
58SET(uncompress_fuseki_SRCS
59 uncompress_fuseki.c
60 )
61
62ADD_EXECUTABLE(uncompress_fuseki ${uncompress_fuseki_SRCS})
63
64TARGET_LINK_LIBRARIES(uncompress_fuseki utils board sgf)
65
66
67########### extract_fuseki program ###############
68
69SET(extract_fuseki_SRCS
70 extract_fuseki.c
71 )
72
73ADD_EXECUTABLE(extract_fuseki ${extract_fuseki_SRCS})
74
75TARGET_LINK_LIBRARIES(extract_fuseki engine patterns
76 engine patterns sgf utils)
77
78
79########### next target ###############
80
81SET(compress_fuseki_SRCS
82 compress_fuseki.c
83 )
84
85ADD_EXECUTABLE(compress_fuseki ${compress_fuseki_SRCS})
86
87TARGET_LINK_LIBRARIES(compress_fuseki)
88
89
90########### Generate files. ##############
91
92GET_TARGET_PROPERTY(JOSEKI_EXE joseki LOCATION)
93GET_TARGET_PROPERTY(MKPAT_EXE mkpat LOCATION)
94GET_TARGET_PROPERTY(MKEYES_EXE mkeyes LOCATION)
95GET_TARGET_PROPERTY(MKMCPAT_EXE mkmcpat LOCATION)
96GET_TARGET_PROPERTY(UNCOMPRESS_FUSEKI_EXE uncompress_fuseki LOCATION)
97
98SET(JOSEKI_INPUTS "")
99SET(JOSEKI_NAMES "")
100SET(GG_BUILT_SOURCES "")
101MACRO(BUILD_JOSEKI NAME PREFIX)
102 ADD_CUSTOM_COMMAND(
103 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.db
104 COMMAND ${JOSEKI_EXE} ${PREFIX}
105 ${CMAKE_CURRENT_SOURCE_DIR}/${NAME}.sgf
106 > ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.db
107 DEPENDS joseki ${CMAKE_CURRENT_SOURCE_DIR}/${NAME}.sgf
108 )
109 SET(JOSEKI_INPUTS ${JOSEKI_INPUTS}
110 "-i" ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.db)
111 SET(JOSEKI_NAMES ${JOSEKI_NAMES}
112 ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.db)
113ENDMACRO(BUILD_JOSEKI)
114
115BUILD_JOSEKI(gogo JG)
116BUILD_JOSEKI(hoshi_keima JHK)
117BUILD_JOSEKI(hoshi_other JHO)
118BUILD_JOSEKI(komoku JK)
119BUILD_JOSEKI(sansan JS)
120BUILD_JOSEKI(mokuhazushi JM)
121BUILD_JOSEKI(takamoku JT)
122
123MACRO(RUN_MKPAT OPTIONS1 OPTIONS2 PATNAME DBNAME CNAME)
124 ADD_CUSTOM_COMMAND(
125 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CNAME}
126 COMMAND ${MKPAT_EXE} ${OPTIONS1} ${OPTIONS2} ${PATNAME}
127 -i ${CMAKE_CURRENT_SOURCE_DIR}/${DBNAME}
128 -o ${CMAKE_CURRENT_BINARY_DIR}/${CNAME}
129 DEPENDS mkpat ${CMAKE_CURRENT_SOURCE_DIR}/${DBNAME}
130 )
131 SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/${CNAME})
132ENDMACRO(RUN_MKPAT)
133
134SET(DFAFLAGS -D -m)
135
136MACRO(RUN_MKPAT_DFA OPTIONS PATNAME DTRNAME DBNAME CNAME)
137 ADD_CUSTOM_COMMAND(
138 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CNAME}
139 COMMAND ${MKPAT_EXE} ${DFAFLAGS} ${OPTIONS}
140 -t ${CMAKE_CURRENT_SOURCE_DIR}/${DTRNAME} ${PATNAME}
141 -i ${CMAKE_CURRENT_SOURCE_DIR}/${DBNAME}
142 -o ${CMAKE_CURRENT_BINARY_DIR}/${CNAME}
143 DEPENDS mkpat ${CMAKE_CURRENT_SOURCE_DIR}/${DBNAME}
144 ${CMAKE_CURRENT_SOURCE_DIR}/${DTRNAME}
145 )
146 SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/${CNAME})
147ENDMACRO(RUN_MKPAT_DFA)
148
149MACRO(RUN_UNCOMPRESS_FUSEKI BOARDSIZE)
150 ADD_CUSTOM_COMMAND(
151 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fuseki${BOARDSIZE}.c
152 COMMAND ${UNCOMPRESS_FUSEKI_EXE} ${BOARDSIZE}
153 ${CMAKE_CURRENT_SOURCE_DIR}/fuseki${BOARDSIZE}.dbz
154 c > ${CMAKE_CURRENT_BINARY_DIR}/fuseki${BOARDSIZE}.c
155 DEPENDS uncompress_fuseki
156 ${CMAKE_CURRENT_SOURCE_DIR}/fuseki${BOARDSIZE}.dbz
157 )
158 SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES}
159 ${CMAKE_CURRENT_BINARY_DIR}/fuseki${BOARDSIZE}.c)
160ENDMACRO(RUN_UNCOMPRESS_FUSEKI)
161
162# FIXME: It's very ugly that the RUN_MKPAT macro takes two separate
163# option arguments, where one is in most cases eliminated by using "".
164# The problem with just having one option argument is that specifying
165# it as "-c -b" causes the space to be escaped into "-c\ -b". There is
166# probably some trivial workaround for someone who actually knows cmake.
167RUN_MKPAT(-X "" attpat attack.db apatterns.c)
168RUN_MKPAT("" "" defpat defense.db dpatterns.c)
169RUN_MKPAT(-b "" handipat handicap.db handipat.c)
170RUN_MKPAT(-c "" influencepat influence.db influence.c)
171RUN_MKPAT(-c -b barrierspat barriers.db barriers.c)
172RUN_MKPAT(-b "" endpat endgame.db endgame.c)
173RUN_MKPAT(-c "" conn conn.db conn.c)
174RUN_MKPAT(-b "" fusekipat fuseki.db fusekipat.c)
175RUN_MKPAT_DFA(-b aa_attackpat aa_attackpats.dtr aa_attackpats.db aa_attackpat.c)
176RUN_MKPAT_DFA(-b owl_vital_apat owl_vital_apats.dtr owl_vital_apats.db owl_vital_apat.c)
177RUN_MKPAT_DFA(-b owl_attackpat owl_attackpats.dtr owl_attackpats.db owl_attackpat.c)
178RUN_MKPAT_DFA(-b owl_defendpat owl_defendpats.dtr owl_defendpats.db owl_defendpat.c)
179RUN_UNCOMPRESS_FUSEKI(9)
180RUN_UNCOMPRESS_FUSEKI(13)
181RUN_UNCOMPRESS_FUSEKI(19)
182
183ADD_CUSTOM_COMMAND(
184 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/josekidb.c
185 COMMAND ${MKPAT_EXE} -C joseki ${JOSEKI_INPUTS}
186 -o ${CMAKE_CURRENT_BINARY_DIR}/josekidb.c
187 DEPENDS mkpat ${JOSEKI_NAMES}
188 )
189SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES}
190 ${CMAKE_CURRENT_BINARY_DIR}/josekidb.c)
191
192ADD_CUSTOM_COMMAND(
193 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/patterns.c
194 COMMAND ${MKPAT_EXE} -b pat -i ${CMAKE_CURRENT_SOURCE_DIR}/patterns.db
195 -i ${CMAKE_CURRENT_SOURCE_DIR}/patterns2.db
196 -o ${CMAKE_CURRENT_BINARY_DIR}/patterns.c
197 DEPENDS mkpat ${CMAKE_CURRENT_SOURCE_DIR}/patterns.db
198 ${CMAKE_CURRENT_SOURCE_DIR}/patterns2.db
199 )
200SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES}
201 ${CMAKE_CURRENT_BINARY_DIR}/patterns.c)
202
203ADD_CUSTOM_COMMAND(
204 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/eyes.c
205 COMMAND ${MKEYES_EXE} < ${CMAKE_CURRENT_SOURCE_DIR}/eyes.db
206 > ${CMAKE_CURRENT_BINARY_DIR}/eyes.c
207 DEPENDS mkeyes ${CMAKE_CURRENT_SOURCE_DIR}/eyes.db
208 )
209SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/eyes.c)
210
211ADD_CUSTOM_COMMAND(
212 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mcpat.c
213 COMMAND ${MKMCPAT_EXE} ${CMAKE_CURRENT_SOURCE_DIR}/mc_montegnu_classic.db
214 ${CMAKE_CURRENT_SOURCE_DIR}/mc_mogo_classic.db
215 ${CMAKE_CURRENT_SOURCE_DIR}/mc_uniform.db
216 > ${CMAKE_CURRENT_BINARY_DIR}/mcpat.c
217 DEPENDS mkmcpat ${CMAKE_CURRENT_SOURCE_DIR}/mkmcpat.c
218 ${CMAKE_CURRENT_SOURCE_DIR}/mc_montegnu_classic.db
219 ${CMAKE_CURRENT_SOURCE_DIR}/mc_mogo_classic.db
220 ${CMAKE_CURRENT_SOURCE_DIR}/mc_uniform.db
221 )
222
223SET(GG_BUILT_SOURCES ${GG_BUILT_SOURCES}
224 ${CMAKE_CURRENT_BINARY_DIR}/mcpat.c)
225
226
227
228########### patterns library ###############
229
230SET(patterns_STAT_SRCS
231 connections.c
232 helpers.c
233 transform.c
234 ${GG_BUILT_SOURCES}
235 )
236
237ADD_LIBRARY(patterns STATIC ${patterns_STAT_SRCS})