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