Added checking for MMX/SSE in the build system.
[tagua.git] / CMakeLists.txt
blobc70b689d45ac9c6789720f94d45d9cf594393287
2 PROJECT(kboard)
3 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.0)
7 MACRO(SETUP_SOURCES SRC UI)
8   FILE(GLOB_RECURSE ${SRC} *.c *.cpp)
10   #find uis
11   FILE(GLOB_RECURSE ${UI} *.ui)
13   FOREACH(FILE1 ${${SRC}} ${${SRC}})
14     GET_FILENAME_COMPONENT(FILE2 ${FILE1} PATH)
15     FILE(RELATIVE_PATH FILE3 ${CMAKE_CURRENT_SOURCE_DIR} ${FILE2})
16     IF(NOT "${FILE3}" STREQUAL "")
17       LIST(APPEND DIRS "${FILE3}")
18     ENDIF(NOT "${FILE3}" STREQUAL "")
19   ENDFOREACH(FILE1)
21   #LIST(SORT DIRS)
23   FOREACH(D ${DIRS})
24     IF(NOT "${D}" STREQUAL "${PREVD}")
25       LIST(APPEND UDIRS "${D}")
26     ENDIF(NOT "${D}" STREQUAL "${PREVD}")
27     SET(PREVD "${D}")
28   ENDFOREACH(D)
30   FOREACH(D ${UDIRS})
31     FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${D}")
32   ENDFOREACH(D)
34   SET(PREVD)
35   SET(DIRS)
36   SET(UDIRS)
37 ENDMACRO(SETUP_SOURCES SRC UI)
42 ###############################################################################################
43 # Boost stuff
44 ###############################################################################################
45 FIND_PACKAGE(Boost)
50 ###############################################################################################
51 # Lua stuff
52 ###############################################################################################
53 IF(SYSTEM_LUA)
54   INCLUDE(UsePkgConfig)
56   IF(LUA_PKG)
57     PKGCONFIG(${LUA_PKG} LUA_INCLUDE_DIRS LUA_LIBRARY_DIRS LUA_LINK_FLAGS LUA_CFLAGS)
58   ELSE(LUA_PKG)
59     PKGCONFIG(lua5.1 LUA_INCLUDE_DIRS LUA_LIBRARY_DIRS LUA_LINK_FLAGS LUA_CFLAGS)
60     IF(NOT LUA_LINK_FLAGS)
61       PKGCONFIG(lua LUA_INCLUDE_DIRS LUA_LIBRARY_DIRS LUA_LINK_FLAGS LUA_CFLAGS)
62     ENDIF(NOT LUA_LINK_FLAGS)
63   ENDIF(LUA_PKG)
65   ADD_CUSTOM_TARGET(lua_library)
66 ELSE(SYSTEM_LUA)
67   SET(LUA_BIN_DIR "${CMAKE_CURRENT_BINARY_DIR}/lua")
68   SET(LUA_INCLUDE_DIRS "${LUA_BIN_DIR}/include")
69   SET(LUA_LIBRARY_DIRS "${LUA_BIN_DIR}")
70   SET(LUA_LINK_FLAGS lua)
72   ADD_SUBDIRECTORY(lua)
73 #   GET_FILENAME_COMPONENT(_LUA_SRC_DIRS lua ABSOLUTE)
74 #   SET(LUA_INCLUDE_DIRS ${_LUA_SRC_DIRS}/include)
75 #   SET(LUA_LIBRARY_DIRS ${_LUA_SRC_DIRS}/lib)
76 #   SET(LUA_LINK_FLAGS ${LUA_LIBRARY_DIRS}/liblua.a)
78 #   ADD_CUSTOM_TARGET(${__LUA_LIB}
79 #     ALL
80 #     COMMAND make linux
81 #     COMMAND make local
82 #     WORKING_DIRECTORY lua)
83 ENDIF(SYSTEM_LUA)
88 ###############################################################################################
89 # X11
90 ###############################################################################################
91 FIND_PACKAGE(X11)
93 IF(0)
94 IF (X11_FOUND)
95   ADD_DEFINITIONS(-DHAVE_X11)
96 ENDIF (X11_FOUND)
97 ENDIF(0)
102 ###############################################################################################
103 # Qt4 / KDE4 stuff
104 ###############################################################################################
105 ADD_DEFINITIONS(-fexceptions)
106 FIND_PACKAGE(KDE4 REQUIRED)
107 INCLUDE(KDE4Defaults)
109 INCLUDE(${QT_USE_FILE})
114 ###############################################################################################
115 # system stuff
116 ###############################################################################################
117 INCLUDE(CheckCXXSourceCompiles)
119 CHECK_CXX_SOURCE_COMPILES(" int main() { __asm__(\"pxor %mm0, %mm0\") ; }" HAVE_X86_MMX)
120 CHECK_CXX_SOURCE_COMPILES(" int main() { __asm__(\"xorps %xmm0, %xmm0\"); }" HAVE_X86_SSE)
122 IF(HAVE_X86_MMX)
123   ADD_DEFINITIONS(-DHAVE_X86_MMX)
124 ENDIF(HAVE_X86_MMX)
126 IF(HAVE_X86_SSE)
127   ADD_DEFINITIONS(-DHAVE_X86_SSE)
128 ENDIF(HAVE_X86_SSE)
133 # Compile for debugging as default
134 SET(CMAKE_BUILD_TYPE debug)
136 IF(SETTINGS_DEBUG)
137   MESSAGE("Compiling with -D__SETTINGS_DEBUG")
138   ADD_DEFINITIONS(-D__SETTINGS_DEBUG)
139 ENDIF(SETTINGS_DEBUG)
142 # FIXME, i think this is not portable
143 IF(1)
144   ADD_DEFINITIONS(-Wall -ansi -pedantic -Wno-long-long) # -pg
145   #LINK_LIBRARIES(-pg)
146 ENDIF(1)
148 # Note by Paolo: verbose mode can be controlled
149 # directly by the cmake command line. The setting
150 # is stored in the cache, so you just need to type
151 #    cmake -DCMAKE_VERBOSE_MAKEFILE=1
152 #     -or when compiling-
153 #    make VERBOSE=1
154 # once and for all.
156 # Debug messages
158 IF (X11_FOUND)
159 MESSAGE("* X11 was found!")
160 ENDIF (X11_FOUND)
162 SET (MyRuby_DIR ${CMAKE_CURRENT_SOURCE_DIR})
163 FIND_PACKAGE(Ruby)
165 MESSAGE("* Qt4:")
166 MESSAGE("    Includes:  ${QT_INCLUDE_DIR}")
167 MESSAGE("    LinkFlags: ${QT_LIBRARIES}")
169 MESSAGE("* Kde4:")
170 MESSAGE("    Includes:  ${KDE4_INCLUDE_DIR}")
171 MESSAGE("    LinkFlags: ${KDE4_KDEUI_LIBS}")
173 MESSAGE("* Boost:")
174 MESSAGE("    Includes: ${Boost_INCLUDE_DIRS}")
175 MESSAGE("    LinkDir:  ${Boost_LIBRARY_DIRS}")
177 MESSAGE("* Lua:")
178 MESSAGE("    Includes:  ${LUA_INCLUDE_DIRS}")
179 MESSAGE("    LinkDir:   ${LUA_LIBRARY_DIRS}")
180 MESSAGE("    LinkFlags: ${LUA_LINK_FLAGS}")
181 MESSAGE("    CFlags:    ${LUA_CFLAGS}")
183 MESSAGE("* Ruby:")
184 MESSAGE("    Includes: ${RUBY_INCLUDE_PATH}")
186 MESSAGE("* Host:")
187 MESSAGE("    Have MMX: ${HAVE_X86_MMX}")
188 MESSAGE("    Have SSE: ${HAVE_X86_SSE}")
191 #MESSAGE("data dir: ${DATA_INSTALL_DIR}")
192 #SET(DATA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/apps/kboard/)
194 MACRO(INSTALL_LOCAL_DATA_DIR local_dir)
195   SET(abs_local_dir ${CMAKE_CURRENT_SOURCE_DIR}/data/${local_dir})
196   #MESSAGE("looking for files in ${abs_local_dir}")
197   FILE(GLOB_RECURSE INST_FILES ${abs_local_dir}/*)
198   FOREACH(INST_FILE ${INST_FILES})
199     #MESSAGE("processing: ${INST_FILE}")
200     STRING(REGEX MATCH "/\\.svn/" TEMP ${INST_FILE})
201     IF(NOT TEMP)
202       FILE(RELATIVE_PATH REL_FILE ${abs_local_dir} ${INST_FILE})
203       GET_FILENAME_COMPONENT(REL_DIR ${REL_FILE} PATH)
204       #MESSAGE("rel dir: ${REL_DIR}")
205       #MESSAGE("installing to: ${DATA_INSTALL_DIR}/${local_dir}/${REL_DIR}")
206       INSTALL(FILES ${INST_FILE}
207         DESTINATION ${DATA_INSTALL_DIR}/kboard/${local_dir}/${REL_DIR})
208     ENDIF(NOT TEMP)
209   ENDFOREACH(INST_FILE)
210 ENDMACRO(INSTALL_LOCAL_DATA_DIR local_dir)
212 INSTALL_LOCAL_DATA_DIR(themes)
213 INSTALL_LOCAL_DATA_DIR(scripts)
214 INSTALL_LOCAL_DATA_DIR(highlighting)
215 INSTALL_LOCAL_DATA_DIR(pics)
216 INSTALL_LOCAL_DATA_DIR(piece_icons)
218 ADD_DEFINITIONS("-DDATA_INSTALL_DIR=\"${DATA_INSTALL_DIR}\"")
223 ADD_SUBDIRECTORY(src)
224 ADD_SUBDIRECTORY(tests EXCLUDE_FROM_ALL)