9 set(QT_USE_QTXML FALSE) |
9 set(QT_USE_QTXML FALSE) |
10 set(QT_USE_QTOPENGL FALSE) |
10 set(QT_USE_QTOPENGL FALSE) |
11 set(QT_USE_QTMAIN TRUE) |
11 set(QT_USE_QTMAIN TRUE) |
12 |
12 |
13 find_package(Qt4 REQUIRED) |
13 find_package(Qt4 REQUIRED) |
14 if (NOT CROSSAPPLE) |
14 include(${QT_USE_FILE}) |
15 include(${QT_USE_FILE}) |
|
16 endif() |
|
17 |
15 |
18 find_package(SDL REQUIRED) #video in SDLInteraction |
16 find_package(SDL REQUIRED) #video in SDLInteraction |
19 find_package(SDL_mixer REQUIRED) #audio in SDLInteraction |
17 find_package(SDL_mixer REQUIRED) #audio in SDLInteraction |
20 find_package(SDL_net REQUIRED) #network frontlib |
18 find_package(SDL_net REQUIRED) #network frontlib |
21 if(NOT NOVIDEOREC) |
19 if(NOT NOVIDEOREC) |
42 if(UNIX) |
40 if(UNIX) |
43 # HACK: in freebsd cannot find iconv.h included via SDL.h |
41 # HACK: in freebsd cannot find iconv.h included via SDL.h |
44 include_directories("/usr/local/include") |
42 include_directories("/usr/local/include") |
45 endif(UNIX) |
43 endif(UNIX) |
46 |
44 |
47 |
45 #directory for resources, relative to bindir (on linux an absolute path is always used) |
48 if(WIN32 AND NOT UNIX) |
46 string(SUBSTRING "${SHAREPATH}" 0 1 sharepath_start) |
49 set(HEDGEWARS_BINDIR ".") |
47 if(APPLE OR WIN32 OR ${sharepath_start} MATCHES "/") |
50 set(HEDGEWARS_DATADIR "../share/") |
48 set(HEDGEWARS_DATADIR ${SHAREPATH}) |
51 add_definitions(-DUSE_XFIRE) |
|
52 else() |
49 else() |
53 set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX}) |
50 set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/${SHAREPATH}) |
54 if(DEFINED DATA_INSTALL_DIR) |
51 endif() |
55 set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR}) |
52 |
56 else() |
53 #only the cocoa version of qt supports building 64 bit apps |
57 set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/) |
54 if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA)) |
58 endif() |
55 message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X") |
59 #only the cocoa version of qt supports building 64 bit apps |
56 endif() |
60 if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA)) |
57 #endif() |
61 message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X") |
|
62 endif() |
|
63 endif() |
|
64 |
58 |
65 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp) |
59 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp) |
66 |
60 |
67 file(GLOB NetCpp net/*.cpp) |
61 file(GLOB NetCpp net/*.cpp) |
68 file(GLOB ModelCpp model/*.cpp) |
62 file(GLOB ModelCpp model/*.cpp) |
69 file(GLOB_RECURSE UIcpp ui/*.cpp) |
63 file(GLOB_RECURSE UIcpp ui/*.cpp) |
70 file(GLOB UtilCpp util/*.cpp) |
64 file(GLOB UtilCpp util/*.cpp) |
71 |
65 |
72 set(hwfr_src |
66 list(APPEND hwfr_src |
73 ${ModelCpp} |
67 ${ModelCpp} |
74 ${NetCpp} |
68 ${NetCpp} |
75 ${UIcpp} |
69 ${UIcpp} |
76 ${UtilCpp} |
70 ${UtilCpp} |
77 achievements.cpp |
71 achievements.cpp |
88 ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp |
82 ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp |
89 ) |
83 ) |
90 |
84 |
91 #xfire integration |
85 #xfire integration |
92 if(WIN32) |
86 if(WIN32) |
93 set(hwfr_src ${hwfr_src} xfire.cpp ../misc/xfire/xfiregameclient.cpp) |
87 list(APPEND hwfr_src xfire.cpp ../misc/xfire/xfiregameclient.cpp) |
94 endif(WIN32) |
88 endif(WIN32) |
95 |
89 |
96 if(MINGW) |
90 if(MINGW) |
97 # resource compilation for mingw |
91 # resource compilation for mingw |
98 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o |
92 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o |
99 COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} |
93 COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} |
100 -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc |
94 -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc |
101 -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) |
95 -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) |
102 set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) |
96 list(APPEND hwfr_src ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) |
103 else(MINGW) |
97 else(MINGW) |
104 set(hwfr_src ${hwfr_src} hedgewars.rc) |
98 list(APPEND hwfr_src hedgewars.rc) |
105 endif(MINGW) |
99 endif(MINGW) |
106 |
100 |
107 file(GLOB ModelHdr model/*.h) |
101 file(GLOB ModelHdr model/*.h) |
108 file(GLOB NetHdr net/*.h) |
102 file(GLOB NetHdr net/*.h) |
109 file(GLOB_RECURSE UIhdr ui/*.h) |
103 file(GLOB_RECURSE UIhdr ui/*.h) |
136 campaign.h |
130 campaign.h |
137 ) |
131 ) |
138 |
132 |
139 set(hwfr_rez hedgewars.qrc) |
133 set(hwfr_rez hedgewars.qrc) |
140 |
134 |
|
135 if(${BUILD_ENGINE_LIBRARY}) |
|
136 add_definitions(-DHWLIBRARY=1) |
|
137 set(hwlibname "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}") |
|
138 list(APPEND HW_LINK_LIBS ${hwlibname}) |
|
139 endif() |
|
140 |
141 qt4_add_resources(hwfr_rez_src ${hwfr_rez}) |
141 qt4_add_resources(hwfr_rez_src ${hwfr_rez}) |
142 |
142 |
143 qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs}) |
143 qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs}) |
144 |
144 |
145 |
145 |
146 if(APPLE OR CROSSAPPLE) |
146 if(APPLE) |
147 find_library(iokit_framework NAMES IOKit) |
147 find_library(iokit_framework NAMES IOKit) |
148 set(HW_LINK_LIBS ${iokit_framework} ${HW_LINK_LIBS}) |
148 list(APPEND HW_LINK_LIBS ${iokit_framework}) |
149 set(hwfr_src ${hwfr_src} CocoaInitializer.mm |
149 list(APPEND hwfr_src CocoaInitializer.mm |
150 InstallController.cpp |
150 InstallController.cpp |
151 M3Panel.mm |
151 M3Panel.mm |
152 M3InstallController.m |
152 M3InstallController.m |
153 NSWorkspace_RBAdditions.m |
153 NSWorkspace_RBAdditions.m |
154 ) |
154 ) |
155 if(NOT NOAUTOUPDATE) |
155 if(NOT NOAUTOUPDATE) |
156 find_package(Sparkle) |
156 find_package(Sparkle) |
157 if(SPARKLE_FOUND) |
157 if(SPARKLE_FOUND) |
158 add_definitions(-DSPARKLE_ENABLED) |
158 add_definitions(-DSPARKLE_ENABLED) |
159 set(hwfr_src ${hwfr_src} AutoUpdater.cpp SparkleAutoUpdater.mm) |
159 list(APPEND hwfr_src AutoUpdater.cpp SparkleAutoUpdater.mm) |
160 set(HW_LINK_LIBS ${SPARKLE_LIBRARY} ${HW_LINK_LIBS}) |
160 list(APPEND HW_LINK_LIBS ${SPARKLE_LIBRARY}) |
161 endif() |
161 endif() |
162 endif() |
162 endif() |
163 endif() |
|
164 |
|
165 if(BUILD_ENGINE_LIBRARY) |
|
166 add_definitions(-DHWLIBRARY) |
|
167 set(HW_LINK_LIBS hwengine ${HW_LINK_LIBS}) |
|
168 link_directories(${EXECUTABLE_OUTPUT_PATH}) |
|
169 endif() |
163 endif() |
170 |
164 |
171 #when debugging, always prompt a console to see fronted messages |
165 #when debugging, always prompt a console to see fronted messages |
172 #TODO: check it doesn't interfere on UNIX |
166 #TODO: check it doesn't interfere on UNIX |
173 if(CMAKE_BUILD_TYPE MATCHES "RELEASE") |
167 if(CMAKE_BUILD_TYPE MATCHES "RELEASE") |
179 ${hwfr_moc_srcs} |
173 ${hwfr_moc_srcs} |
180 ${hwfr_hdrs} |
174 ${hwfr_hdrs} |
181 ${hwfr_rez_src} |
175 ${hwfr_rez_src} |
182 ) |
176 ) |
183 |
177 |
184 |
178 if((UNIX AND NOT APPLE) AND ${BUILD_ENGINE_LIBRARY}) |
185 set(HW_LINK_LIBS |
179 set_target_properties(hedgewars PROPERTIES LINK_FLAGS "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}") |
|
180 endif() |
|
181 |
|
182 list(APPEND HW_LINK_LIBS |
186 frontlib |
183 frontlib |
187 physfs |
184 physfs |
188 ${QT_LIBRARIES} |
185 ${QT_LIBRARIES} |
189 ${SDL_LIBRARY} |
186 ${SDL_LIBRARY} |
190 ${SDLMIXER_LIBRARY} |
187 ${SDLMIXER_LIBRARY} |
191 ${SDLNET_LIBRARY} |
188 ${SDLNET_LIBRARY} |
192 ${FFMPEG_LIBRARIES} |
189 ${FFMPEG_LIBRARIES} |
193 ${HW_LINK_LIBS} |
|
194 ) |
190 ) |
195 |
191 |
196 if(WIN32 AND NOT UNIX) |
192 if(WIN32 AND NOT UNIX) |
197 if(NOT SDL_LIBRARY) |
193 if(NOT SDL_LIBRARY) |
198 set(HW_LINK_LIBS ${HW_LINK_LIBS} SDL) |
194 list(APPEND HW_LINK_LIBS SDL) |
199 endif() |
195 endif() |
200 |
196 |
201 set(HW_LINK_LIBS |
197 list(APPEND HW_LINK_LIBS |
202 ${HW_LINK_LIBS} |
|
203 ole32 |
198 ole32 |
204 oleaut32 |
199 oleaut32 |
205 winspool |
200 winspool |
206 uuid |
201 uuid |
207 ) |
202 ) |
208 endif() |
203 endif() |
209 |
204 |
210 |
205 target_link_libraries(hedgewars ${HW_LINK_LIBS}) |
211 if (NOT CROSSAPPLE) |
206 |
212 target_link_libraries(hedgewars ${HW_LINK_LIBS}) |
207 |
213 endif() |
208 install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_binary_install_dir}) |
214 |
209 |
215 |
|
216 install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir}) |
|
217 |
|