6b96f53faf961cfe666df82614e7fb76baee437f
[oweals/minetest.git] / src / CMakeLists.txt
1 project(minetest)
2 cmake_minimum_required( VERSION 2.6 )
3
4 # Set some random things default to not being visible in the GUI
5 mark_as_advanced(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
6 mark_as_advanced(JTHREAD_INCLUDE_DIR JTHREAD_LIBRARY)
7 mark_as_advanced(SQLITE3_INCLUDE_DIR SQLITE3_LIBRARY)
8
9 option(ENABLE_CURL "Enable cURL support for fetching media" 1)
10
11 if (NOT ENABLE_CURL)
12         mark_as_advanced(CLEAR CURL_LIBRARY CURL_INCLUDE_DIR)
13 endif(NOT ENABLE_CURL)
14
15 if( ENABLE_CURL )
16         find_package(CURL)
17 endif( ENABLE_CURL )
18 set(USE_CURL 0)
19 if (CURL_FOUND AND ENABLE_CURL)
20         message(STATUS "cURL support enabled")
21         set(USE_CURL 1)
22 endif(CURL_FOUND AND ENABLE_CURL)
23
24 # user-visible option to enable/disable gettext usage
25 OPTION(ENABLE_GETTEXT "Use GetText for internationalization" 0)
26
27 # this is only set to 1 if gettext is enabled _and_ available
28 set(USE_GETTEXT 0)
29
30 if(ENABLE_GETTEXT)
31         find_package(GettextLib)
32 else()
33         MARK_AS_ADVANCED(GETTEXT_ICONV_DLL GETTEXT_INCLUDE_DIR GETTEXT_LIBRARY GETTEXT_MSGFMT)
34 endif()
35
36 if(GETTEXT_FOUND AND ENABLE_GETTEXT)
37         message(STATUS "gettext include path: ${GETTEXT_INCLUDE_DIR}")
38         message(STATUS "gettext msgfmt path: ${GETTEXT_MSGFMT}")
39         if(WIN32)
40                 message(STATUS "gettext library: ${GETTEXT_LIBRARY}")
41                 message(STATUS "gettext dll: ${GETTEXT_DLL}")
42                 message(STATUS "gettext iconv dll: ${GETTEXT_ICONV_DLL}")
43         endif()
44         set(USE_GETTEXT 1)
45         message(STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}")
46 elseif(GETTEXT_FOUND AND NOT ENABLE_GETTEXT)
47         MESSAGE(STATUS "GetText found but disabled;")
48 else(GETTEXT_FOUND AND ENABLE_GETTEXT)
49         message(STATUS "GetText disabled")
50 endif(GETTEXT_FOUND AND ENABLE_GETTEXT)
51
52 # user visible option to enable/disable sound
53 OPTION(ENABLE_SOUND "Enable sound" ON)
54
55 # this is only set to 1 if sound is enabled _and_ available
56 set(USE_SOUND 0)
57 set(SOUND_PROBLEM 0)
58
59 if(ENABLE_SOUND AND BUILD_CLIENT)
60         # Sound libraries
61         find_package(OpenAL)
62         find_package(Vorbis)
63         if(NOT OPENAL_FOUND)
64                 message(STATUS "Sound enabled, but OpenAL not found!")
65                 set(SOUND_PROBLEM 1)
66                 MARK_AS_ADVANCED(CLEAR OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
67         endif()
68         if(NOT VORBIS_FOUND)
69                 message(STATUS "Sound enabled, but Vorbis libraries not found!")
70                 set(SOUND_PROBLEM 1)
71                 MARK_AS_ADVANCED(CLEAR OGG_INCLUDE_DIR VORBIS_INCLUDE_DIR OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY)
72         endif()
73         if(OPENAL_FOUND AND VORBIS_FOUND)
74                 set(USE_SOUND 1)
75                 message(STATUS "Sound enabled")
76         endif()
77 endif(ENABLE_SOUND AND BUILD_CLIENT)
78
79 if(SOUND_PROBLEM)
80         message(FATAL_ERROR "Sound enabled, but cannot be used.\n"
81                 "To continue, either fill in the required paths or disable sound. (-DENABLE_SOUND=0)")
82 endif()
83 if(USE_SOUND)
84         set(sound_SRCS sound_openal.cpp)
85         set(SOUND_INCLUDE_DIRS
86                 ${OPENAL_INCLUDE_DIR}
87                 ${VORBIS_INCLUDE_DIR}
88                 ${OGG_INCLUDE_DIR}
89                 )
90         set(SOUND_LIBRARIES
91                 ${OPENAL_LIBRARY}
92                 ${VORBIS_LIBRARIES}
93                 )
94 endif()
95
96 option(ENABLE_FREETYPE "Enable freetype2 (truetype fonts and basic unicode support)" OFF)
97 set(USE_FREETYPE 0)
98 if(ENABLE_FREETYPE)
99         set(USE_FREETYPE 1)
100 endif(ENABLE_FREETYPE)
101
102 if(NOT MSVC)
103         set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
104 endif()
105
106 # Use cmake_config.h
107 add_definitions ( -DUSE_CMAKE_CONFIG_H )
108
109 if(WIN32)
110         # Windows
111         if(MSVC) # MSVC Specifics
112                 # Surpress some useless warnings
113                 add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
114         else() # Probably MinGW = GCC
115                 set(PLATFORM_LIBS ws2_32.lib)
116         endif()
117         # Zlib stuff
118         set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
119                         CACHE PATH "Zlib include directory")
120         set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
121                         CACHE FILEPATH "Path to zlibwapi.lib")
122         set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
123                         CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
124         set(IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2"
125                         CACHE PATH "irrlicht dir")
126         if(USE_FREETYPE)
127                 set(FREETYPE_INCLUDE_DIR_ft2build "${PROJECT_SOURCE_DIR}/../../freetype2/include/"
128                                 CACHE PATH "freetype include dir")
129                 set(FREETYPE_INCLUDE_DIR_freetype2 "${PROJECT_SOURCE_DIR}/../../freetype2/include/freetype"
130                                 CACHE PATH "freetype include dir")
131                 set(FREETYPE_LIBRARY "${PROJECT_SOURCE_DIR}/../../freetype2/objs/win32/vc2005/freetype247.lib"
132                                 CACHE FILEPATH "Path to freetype247.lib")
133         endif(USE_FREETYPE)
134         set(MINGWM10_DLL ""
135                         CACHE FILEPATH "Path to mingwm10.dll (for installation)")
136         if(ENABLE_SOUND)
137                 set(OPENAL_DLL "" CACHE FILEPATH "Path to OpenAL32.dll for installation (optional)")
138                 set(OGG_DLL "" CACHE FILEPATH "Path to libogg.dll for installation (optional)")
139                 set(VORBIS_DLL "" CACHE FILEPATH "Path to libvorbis.dll for installation (optional)")
140                 set(VORBISFILE_DLL "" CACHE FILEPATH "Path to libvorbisfile.dll for installation (optional)")
141         endif()
142 else()
143         # Unix probably
144         if(BUILD_CLIENT)
145                 find_package(X11 REQUIRED)
146                 find_package(OpenGL REQUIRED)
147                 find_package(JPEG REQUIRED)
148                 find_package(BZip2 REQUIRED)
149                 find_package(PNG REQUIRED)
150                 if(APPLE)
151                         FIND_LIBRARY(CARBON_LIB Carbon)
152                         FIND_LIBRARY(COCOA_LIB Cocoa)
153                         FIND_LIBRARY(IOKIT_LIB IOKit)
154                         mark_as_advanced(
155                                 CARBON_LIB
156                                 COCOA_LIB
157                                 IOKIT_LIB
158                         )
159                         SET(CLIENT_PLATFORM_LIBS ${CLIENT_PLATFORM_LIBS} ${CARBON_LIB} ${COCOA_LIB} ${IOKIT_LIB})
160                 endif(APPLE)
161         endif(BUILD_CLIENT)
162         find_package(ZLIB REQUIRED)
163         set(PLATFORM_LIBS -lpthread ${CMAKE_DL_LIBS})
164         #set(CLIENT_PLATFORM_LIBS -lXxf86vm)
165         # This way Xxf86vm is found on OpenBSD too
166         find_library(XXF86VM_LIBRARY Xxf86vm)
167         mark_as_advanced(XXF86VM_LIBRARY)
168         set(CLIENT_PLATFORM_LIBS ${CLIENT_PLATFORM_LIBS} ${XXF86VM_LIBRARY})
169 endif()
170
171 find_package(Jthread REQUIRED)
172 find_package(Sqlite3 REQUIRED)
173
174 if(USE_FREETYPE)
175         find_package(Freetype REQUIRED)
176         set(CGUITTFONT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cguittfont")
177         set(CGUITTFONT_LIBRARY cguittfont)
178 endif(USE_FREETYPE)
179
180 # Do not use system-wide installation of Lua, because it'll likely be a
181 # different version and/or has different build options.
182 set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
183 set(LUA_LIBRARY "lua")
184
185 configure_file(
186         "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
187         "${PROJECT_BINARY_DIR}/cmake_config.h"
188 )
189
190 set(common_SRCS
191         rollback_interface.cpp
192         rollback.cpp
193         genericobject.cpp
194         voxelalgorithms.cpp
195         sound.cpp
196         quicktune.cpp
197         subgame.cpp
198         inventorymanager.cpp
199         mods.cpp
200         content_abm.cpp
201         craftdef.cpp
202         nameidmapping.cpp
203         itemdef.cpp
204         nodedef.cpp
205         object_properties.cpp
206         scriptapi.cpp
207         script.cpp
208         log.cpp
209         content_sao.cpp
210         mapgen.cpp
211         mapgen_v6.cpp
212         treegen.cpp
213         content_nodemeta.cpp
214         content_mapnode.cpp
215         collision.cpp
216         nodemetadata.cpp
217         nodetimer.cpp
218         serverobject.cpp
219         noise.cpp
220         porting.cpp
221         tool.cpp
222         defaultsettings.cpp
223         mapnode.cpp
224         voxel.cpp
225         inventory.cpp
226         debug.cpp
227         serialization.cpp
228         light.cpp
229         filesys.cpp
230         connection.cpp
231         environment.cpp
232         server.cpp
233         socket.cpp
234         mapblock.cpp
235         mapsector.cpp
236         map.cpp
237         player.cpp
238         test.cpp
239         sha1.cpp
240         base64.cpp
241         ban.cpp
242         biome.cpp
243         clientserver.cpp
244         staticobject.cpp
245         util/serialize.cpp
246         util/directiontables.cpp
247         util/numeric.cpp
248         util/pointedthing.cpp
249         util/string.cpp
250         util/timetaker.cpp
251 )
252
253 # This gives us the icon
254 if(WIN32)
255         set(WINRESOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../misc/winresource.rc)
256         if(MINGW)
257                 if(NOT CMAKE_RC_COMPILER)
258                         set(CMAKE_RC_COMPILER "windres.exe")
259                 endif()
260                 ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o
261                         COMMAND ${CMAKE_RC_COMPILER} -I${CMAKE_CURRENT_SOURCE_DIR}
262                         -i${WINRESOURCE_FILE}
263                         -o ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o
264                         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
265                 SET(common_SRCS ${common_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o)
266         else(MINGW) # Probably MSVC
267                 set(common_SRCS ${common_SRCS} ${WINRESOURCE_FILE})
268         endif(MINGW)
269 endif()
270
271 # Client sources
272 set(minetest_SRCS
273         ${common_SRCS}
274         ${sound_SRCS}
275         localplayer.cpp
276         sky.cpp
277         clientmap.cpp
278         content_cso.cpp
279         content_mapblock.cpp
280         content_cao.cpp
281         mesh.cpp
282         mapblock_mesh.cpp
283         farmesh.cpp
284         keycode.cpp
285         camera.cpp
286         clouds.cpp
287         particles.cpp
288         clientobject.cpp
289         chat.cpp
290         guiMainMenu.cpp
291         guiKeyChangeMenu.cpp
292         guiMessageMenu.cpp
293         guiTextInputMenu.cpp
294         guiFormSpecMenu.cpp
295         guiPauseMenu.cpp
296         guiPasswordChange.cpp
297         guiDeathScreen.cpp
298         guiChatConsole.cpp
299         guiCreateWorld.cpp
300         guiConfigureWorld.cpp
301         guiConfirmMenu.cpp
302         client.cpp
303         filecache.cpp
304         tile.cpp
305         shader.cpp
306         serverlist.cpp
307         game.cpp
308         main.cpp
309 )
310
311 if(USE_FREETYPE)
312         set(minetest_SRCS
313                 ${minetest_SRCS}
314                 intlGUIEditBox.cpp
315         )
316 endif(USE_FREETYPE)
317
318 # Server sources
319 set(minetestserver_SRCS
320         ${common_SRCS}
321         main.cpp
322 )
323
324 include_directories(
325         ${PROJECT_BINARY_DIR}
326         ${IRRLICHT_INCLUDE_DIR}
327         ${ZLIB_INCLUDE_DIR}
328         ${CMAKE_BUILD_TYPE}
329         ${PNG_INCLUDE_DIR}
330         ${GETTEXT_INCLUDE_DIR}
331         ${SOUND_INCLUDE_DIRS}
332         ${JTHREAD_INCLUDE_DIR}
333         ${SQLITE3_INCLUDE_DIR}
334         ${LUA_INCLUDE_DIR}
335 )
336
337 if(USE_FREETYPE)
338         include_directories(
339                 ${FREETYPE_INCLUDE_DIRS}
340                 ${CGUITTFONT_INCLUDE_DIR}
341         )
342 endif(USE_FREETYPE)
343
344 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin")
345
346 if(BUILD_CLIENT)
347         add_executable(${PROJECT_NAME} ${minetest_SRCS})
348         target_link_libraries(
349                 ${PROJECT_NAME}
350                 ${ZLIB_LIBRARIES}
351                 ${IRRLICHT_LIBRARY}
352                 ${OPENGL_LIBRARIES}
353                 ${JPEG_LIBRARIES}
354                 ${BZIP2_LIBRARIES}
355                 ${PNG_LIBRARIES}
356                 ${X11_LIBRARIES}
357                 ${GETTEXT_LIBRARY}
358                 ${SOUND_LIBRARIES}
359                 ${JTHREAD_LIBRARY}
360                 ${SQLITE3_LIBRARY}
361                 ${LUA_LIBRARY}
362                 ${PLATFORM_LIBS}
363                 ${CLIENT_PLATFORM_LIBS}
364         )
365
366         if(USE_CURL)
367                 target_link_libraries(
368                         ${PROJECT_NAME}
369                         ${CURL_LIBRARY}
370                 )
371                 include_directories(
372                         ${CURL_INCLUDE_DIR}
373                 )
374         endif(USE_CURL)
375         if(USE_FREETYPE)
376                 target_link_libraries(
377                         ${PROJECT_NAME}
378                         ${FREETYPE_LIBRARY}
379                         ${CGUITTFONT_LIBRARY}
380                 )
381         endif(USE_FREETYPE)
382 endif(BUILD_CLIENT)
383
384 if(BUILD_SERVER)
385         add_executable(${PROJECT_NAME}server ${minetestserver_SRCS})
386         target_link_libraries(
387                 ${PROJECT_NAME}server
388                 ${ZLIB_LIBRARIES}
389                 ${JTHREAD_LIBRARY}
390                 ${SQLITE3_LIBRARY}
391                 ${GETTEXT_LIBRARY}
392                 ${LUA_LIBRARY}
393                 ${PLATFORM_LIBS}
394         )
395 endif(BUILD_SERVER)
396
397 #
398 # Set some optimizations and tweaks
399 #
400
401 include(CheckCXXCompilerFlag)
402
403 if(MSVC)
404         # Visual Studio
405
406         # EHa enables SEH exceptions (used for catching segfaults)
407         set(CMAKE_CXX_FLAGS_RELEASE "/EHa /O2 /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP")
408         #set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
409         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
410
411         # Debug build doesn't catch exceptions by itself
412         # Add some optimizations because otherwise it's VERY slow
413         set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
414
415         # Flags for C files (sqlite)
416         # /MT = Link statically with standard library stuff
417         set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT")
418         
419         if(BUILD_SERVER)
420                 set_target_properties(${PROJECT_NAME}server PROPERTIES
421                                 COMPILE_DEFINITIONS "SERVER")
422         endif(BUILD_SERVER)
423
424 else()
425         # Probably GCC
426         
427         if(WARN_ALL)
428                 set(RELEASE_WARNING_FLAGS "-Wall")
429         else()
430                 set(RELEASE_WARNING_FLAGS "")
431         endif()
432         
433         if(NOT APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
434                 CHECK_CXX_COMPILER_FLAG("-Wno-unused-but-set-variable" HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
435                 if(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
436                         set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-unused-but-set-variable")
437                 endif(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
438         endif()
439
440         if(MINGW)
441                 set(OTHER_FLAGS "-mthreads -fexceptions")
442         endif()
443
444         if(APPLE)
445                 set(CMAKE_OSX_ARCHITECTURES i386 CACHE STRING "do not build for 64-bit" FORCE)
446                 set(ARCH i386)
447         endif()
448
449         set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} ${OTHER_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
450         set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}")
451
452         if(USE_GPROF)
453                 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
454         endif()
455         
456         if(BUILD_SERVER)
457                 set_target_properties(${PROJECT_NAME}server PROPERTIES
458                                 COMPILE_DEFINITIONS "SERVER")
459         endif(BUILD_SERVER)
460
461 endif()
462
463 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
464 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
465
466 #
467 # Installation
468 #
469 if(WIN32)
470         if(MINGWM10_DLL)
471                 install(FILES ${MINGWM10_DLL} DESTINATION ${BINDIR})
472         endif()
473         if(DEFINED ZLIB_DLL)
474                 install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
475         endif()
476         if(USE_SOUND)
477                 if(OPENAL_DLL)
478                         install(FILES ${OPENAL_DLL} DESTINATION ${BINDIR})
479                 endif()
480                 if(OGG_DLL)
481                         install(FILES ${OGG_DLL} DESTINATION ${BINDIR})
482                 endif()
483                 if(VORBIS_DLL)
484                         install(FILES ${VORBIS_DLL} DESTINATION ${BINDIR})
485                 endif()
486                 if(VORBISFILE_DLL)
487                         install(FILES ${VORBISFILE_DLL} DESTINATION ${BINDIR})
488                 endif()
489                 if(CURL_DLL)
490                         install(FILES ${CURL_DLL} DESTINATION ${BINDIR})
491                 endif()
492         endif()
493 endif()
494
495 if(BUILD_CLIENT)
496         install(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
497
498         if(USE_GETTEXT)
499                 foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
500                         set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE})
501                         set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo")
502                         install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH})
503                 endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
504         endif()
505
506         if(WIN32)
507                 if(DEFINED IRRLICHT_DLL)
508                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
509                 endif()
510                 if(USE_GETTEXT)
511                         if(DEFINED GETTEXT_DLL)
512                                 install(FILES ${GETTEXT_DLL} DESTINATION ${BINDIR})
513                         endif()
514                         if(DEFINED GETTEXT_ICONV_DLL)
515                                 install(FILES ${GETTEXT_ICONV_DLL} DESTINATION ${BINDIR})
516                         endif()
517                 endif(USE_GETTEXT)
518         endif()
519 endif(BUILD_CLIENT)
520
521 if(BUILD_SERVER)
522         install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR})
523 endif(BUILD_SERVER)
524
525 if (USE_GETTEXT)
526         set(MO_FILES)
527
528         foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
529                 set(PO_FILE_PATH "${GETTEXT_PO_PATH}/${LOCALE}/minetest.po")
530                 set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE})
531                 set(MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo")
532
533                 add_custom_command(OUTPUT ${MO_BUILD_PATH}
534                         COMMAND ${CMAKE_COMMAND} -E make_directory ${MO_BUILD_PATH}
535                         COMMENT "mo-update [${LOCALE}]: Creating locale directory.")
536
537                 add_custom_command(
538                         OUTPUT ${MO_FILE_PATH}
539                         COMMAND ${GETTEXT_MSGFMT} -o ${MO_FILE_PATH} ${PO_FILE_PATH}
540                         DEPENDS ${MO_BUILD_PATH} ${PO_FILE_PATH}
541                         WORKING_DIRECTORY "${GETTEXT_PO_PATH}/${LOCALE}"
542                         COMMENT "mo-update [${LOCALE}]: Creating mo file."
543                         )
544
545                 set(MO_FILES ${MO_FILES} ${MO_FILE_PATH})
546         endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
547
548         add_custom_target(translations ALL COMMENT "mo update" DEPENDS ${MO_FILES})
549 endif(USE_GETTEXT)
550
551 # Subdirectories
552
553 if (JTHREAD_FOUND)
554 else (JTHREAD_FOUND)
555         add_subdirectory(jthread)
556 endif (JTHREAD_FOUND)
557
558 if (SQLITE3_FOUND)
559 else (SQLITE3_FOUND)
560         add_subdirectory(sqlite)
561 endif (SQLITE3_FOUND)
562
563 if (BUILD_CLIENT AND USE_FREETYPE)
564         add_subdirectory(cguittfont)
565 endif (BUILD_CLIENT AND USE_FREETYPE)
566
567 if (LUA_FOUND)
568 else (LUA_FOUND)
569         add_subdirectory(lua)
570 endif (LUA_FOUND)
571
572 #end