]> 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 -lrt ${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 find_package(OpenGLES2)
176
177 if(USE_FREETYPE)
178         find_package(Freetype REQUIRED)
179         set(CGUITTFONT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cguittfont")
180         set(CGUITTFONT_LIBRARY cguittfont)
181 endif(USE_FREETYPE)
182
183 # Do not use system-wide installation of Lua, because it'll likely be a
184 # different version and/or has different build options.
185 set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
186 set(LUA_LIBRARY "lua")
187
188 configure_file(
189         "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
190         "${PROJECT_BINARY_DIR}/cmake_config.h"
191 )
192
193 set(common_SRCS
194         rollback_interface.cpp
195         rollback.cpp
196         genericobject.cpp
197         voxelalgorithms.cpp
198         sound.cpp
199         quicktune.cpp
200         subgame.cpp
201         inventorymanager.cpp
202         mods.cpp
203         content_abm.cpp
204         craftdef.cpp
205         nameidmapping.cpp
206         itemdef.cpp
207         nodedef.cpp
208         object_properties.cpp
209         scriptapi_types.cpp
210         scriptapi_common.cpp
211         scriptapi_content.cpp
212         scriptapi_craft.cpp
213         scriptapi_node.cpp
214         scriptapi_item.cpp
215         scriptapi_env.cpp
216         scriptapi_nodetimer.cpp
217         scriptapi_noise.cpp
218         scriptapi_entity.cpp
219         scriptapi_object.cpp
220         scriptapi_nodemeta.cpp
221         scriptapi_inventory.cpp
222         scriptapi_particles.cpp
223         scriptapi.cpp
224         script.cpp
225         log.cpp
226         content_sao.cpp
227         emerge.cpp
228         mapgen.cpp
229         mapgen_v6.cpp
230         mapgen_v7.cpp
231         mapgen_indev.cpp
232         mapgen_singlenode.cpp
233         treegen.cpp
234         dungeongen.cpp
235         content_nodemeta.cpp
236         content_mapnode.cpp
237         collision.cpp
238         nodemetadata.cpp
239         nodetimer.cpp
240         serverobject.cpp
241         noise.cpp
242         porting.cpp
243         tool.cpp
244         defaultsettings.cpp
245         mapnode.cpp
246         voxel.cpp
247         inventory.cpp
248         debug.cpp
249         serialization.cpp
250         light.cpp
251         filesys.cpp
252         connection.cpp
253         environment.cpp
254         server.cpp
255         socket.cpp
256         mapblock.cpp
257         mapsector.cpp
258         map.cpp
259         player.cpp
260         test.cpp
261         sha1.cpp
262         base64.cpp
263         ban.cpp
264         biome.cpp
265         clientserver.cpp
266         staticobject.cpp
267         serverlist.cpp
268         pathfinder.cpp
269         util/serialize.cpp
270         util/directiontables.cpp
271         util/numeric.cpp
272         util/pointedthing.cpp
273         util/string.cpp
274         util/timetaker.cpp
275 )
276
277 # This gives us the icon
278 if(WIN32)
279         set(WINRESOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../misc/winresource.rc)
280         if(MINGW)
281                 if(NOT CMAKE_RC_COMPILER)
282                         set(CMAKE_RC_COMPILER "windres.exe")
283                 endif()
284                 ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o
285                         COMMAND ${CMAKE_RC_COMPILER} -I${CMAKE_CURRENT_SOURCE_DIR}
286                         -i${WINRESOURCE_FILE}
287                         -o ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o
288                         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
289                 SET(common_SRCS ${common_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o)
290         else(MINGW) # Probably MSVC
291                 set(common_SRCS ${common_SRCS} ${WINRESOURCE_FILE})
292         endif(MINGW)
293 endif()
294
295 # Client sources
296 set(minetest_SRCS
297         ${common_SRCS}
298         ${sound_SRCS}
299         localplayer.cpp
300         sky.cpp
301         clientmap.cpp
302         content_cso.cpp
303         content_mapblock.cpp
304         content_cao.cpp
305         mesh.cpp
306         mapblock_mesh.cpp
307         farmesh.cpp
308         keycode.cpp
309         camera.cpp
310         clouds.cpp
311         particles.cpp
312         clientobject.cpp
313         chat.cpp
314         guiMainMenu.cpp
315         guiKeyChangeMenu.cpp
316         guiMessageMenu.cpp
317         guiTextInputMenu.cpp
318         guiFormSpecMenu.cpp
319         guiPauseMenu.cpp
320         guiPasswordChange.cpp
321         guiVolumeChange.cpp
322         guiDeathScreen.cpp
323         guiChatConsole.cpp
324         guiCreateWorld.cpp
325         guiConfigureWorld.cpp
326         guiConfirmMenu.cpp
327         client.cpp
328         filecache.cpp
329         tile.cpp
330         shader.cpp
331         game.cpp
332         main.cpp
333 )
334
335 if(USE_FREETYPE)
336         set(minetest_SRCS
337                 ${minetest_SRCS}
338                 intlGUIEditBox.cpp
339         )
340 endif(USE_FREETYPE)
341
342 # Server sources
343 set(minetestserver_SRCS
344         ${common_SRCS}
345         main.cpp
346 )
347
348 include_directories(
349         ${PROJECT_BINARY_DIR}
350         ${IRRLICHT_INCLUDE_DIR}
351         ${ZLIB_INCLUDE_DIR}
352         ${CMAKE_BUILD_TYPE}
353         ${PNG_INCLUDE_DIR}
354         ${GETTEXT_INCLUDE_DIR}
355         ${SOUND_INCLUDE_DIRS}
356         ${JTHREAD_INCLUDE_DIR}
357         ${SQLITE3_INCLUDE_DIR}
358         ${LUA_INCLUDE_DIR}
359         ${JSON_INCLUDE_DIR}
360 )
361
362 if(USE_FREETYPE)
363         include_directories(
364                 ${FREETYPE_INCLUDE_DIRS}
365                 ${CGUITTFONT_INCLUDE_DIR}
366         )
367 endif(USE_FREETYPE)
368
369 if(USE_CURL)
370         include_directories(
371                 ${CURL_INCLUDE_DIR}
372         )
373 endif(USE_CURL)
374
375 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin")
376
377 if(BUILD_CLIENT)
378         add_executable(${PROJECT_NAME} ${minetest_SRCS})
379         target_link_libraries(
380                 ${PROJECT_NAME}
381                 ${ZLIB_LIBRARIES}
382                 ${IRRLICHT_LIBRARY}
383                 ${OPENGL_LIBRARIES}
384                 ${JPEG_LIBRARIES}
385                 ${BZIP2_LIBRARIES}
386                 ${PNG_LIBRARIES}
387                 ${X11_LIBRARIES}
388                 ${GETTEXT_LIBRARY}
389                 ${SOUND_LIBRARIES}
390                 ${JTHREAD_LIBRARY}
391                 ${SQLITE3_LIBRARY}
392                 ${LUA_LIBRARY}
393                 ${JSON_LIBRARY}
394                 ${OPENGLES2_LIBRARIES}
395                 ${PLATFORM_LIBS}
396                 ${CLIENT_PLATFORM_LIBS}
397         )
398         if(USE_CURL)
399                 target_link_libraries(
400                         ${PROJECT_NAME}
401                         ${CURL_LIBRARY}
402                 )
403         endif(USE_CURL)
404         if(USE_FREETYPE)
405                 target_link_libraries(
406                         ${PROJECT_NAME}
407                         ${FREETYPE_LIBRARY}
408                         ${CGUITTFONT_LIBRARY}
409                 )
410         endif(USE_FREETYPE)
411 endif(BUILD_CLIENT)
412
413 if(BUILD_SERVER)
414         add_executable(${PROJECT_NAME}server ${minetestserver_SRCS})
415         target_link_libraries(
416                 ${PROJECT_NAME}server
417                 ${ZLIB_LIBRARIES}
418                 ${JTHREAD_LIBRARY}
419                 ${SQLITE3_LIBRARY}
420                 ${JSON_LIBRARY}
421                 ${GETTEXT_LIBRARY}
422                 ${LUA_LIBRARY}
423                 ${PLATFORM_LIBS}
424         )
425         if(USE_CURL)
426                 target_link_libraries(
427                         ${PROJECT_NAME}server
428                         ${CURL_LIBRARY}
429                 )
430         endif(USE_CURL)
431 endif(BUILD_SERVER)
432
433
434 #
435 # Set some optimizations and tweaks
436 #
437
438 include(CheckCXXCompilerFlag)
439
440 if(MSVC)
441         # Visual Studio
442
443         # EHa enables SEH exceptions (used for catching segfaults)
444         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")
445         #set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
446         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
447
448         # Debug build doesn't catch exceptions by itself
449         # Add some optimizations because otherwise it's VERY slow
450         set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
451
452         # Flags for C files (sqlite)
453         # /MT = Link statically with standard library stuff
454         set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT")
455         
456         if(BUILD_SERVER)
457                 set_target_properties(${PROJECT_NAME}server PROPERTIES
458                                 COMPILE_DEFINITIONS "SERVER")
459         endif(BUILD_SERVER)
460
461 else()
462         # Probably GCC
463         
464         if(WARN_ALL)
465                 set(RELEASE_WARNING_FLAGS "-Wall")
466         else()
467                 set(RELEASE_WARNING_FLAGS "")
468         endif()
469         
470         if(NOT APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
471                 CHECK_CXX_COMPILER_FLAG("-Wno-unused-but-set-variable" HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
472                 if(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
473                         set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-unused-but-set-variable")
474                 endif(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
475         endif()
476
477         if(MINGW)
478                 set(OTHER_FLAGS "-mthreads -fexceptions")
479         endif()
480
481         if(APPLE)
482                 set(CMAKE_OSX_ARCHITECTURES i386 CACHE STRING "do not build for 64-bit" FORCE)
483                 set(ARCH i386)
484         endif()
485
486         set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} ${OTHER_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
487         set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}")
488
489         if(USE_GPROF)
490                 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
491         endif()
492         
493         if(BUILD_SERVER)
494                 set_target_properties(${PROJECT_NAME}server PROPERTIES
495                                 COMPILE_DEFINITIONS "SERVER")
496         endif(BUILD_SERVER)
497
498 endif()
499
500 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
501 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
502
503 #
504 # Installation
505 #
506 if(WIN32)
507         if(MINGWM10_DLL)
508                 install(FILES ${MINGWM10_DLL} DESTINATION ${BINDIR})
509         endif()
510         if(DEFINED ZLIB_DLL)
511                 install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
512         endif()
513         if(USE_SOUND)
514                 if(OPENAL_DLL)
515                         install(FILES ${OPENAL_DLL} DESTINATION ${BINDIR})
516                 endif()
517                 if(OGG_DLL)
518                         install(FILES ${OGG_DLL} DESTINATION ${BINDIR})
519                 endif()
520                 if(VORBIS_DLL)
521                         install(FILES ${VORBIS_DLL} DESTINATION ${BINDIR})
522                 endif()
523                 if(VORBISFILE_DLL)
524                         install(FILES ${VORBISFILE_DLL} DESTINATION ${BINDIR})
525                 endif()
526                 if(CURL_DLL)
527                         install(FILES ${CURL_DLL} DESTINATION ${BINDIR})
528                 endif()
529         endif()
530 endif()
531
532 if(BUILD_CLIENT)
533         install(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
534
535         if(USE_GETTEXT)
536                 foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
537                         set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE})
538                         set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo")
539                         install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH})
540                 endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
541         endif()
542
543         if(WIN32)
544                 if(DEFINED IRRLICHT_DLL)
545                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
546                 endif()
547                 if(USE_GETTEXT)
548                         if(DEFINED GETTEXT_DLL)
549                                 install(FILES ${GETTEXT_DLL} DESTINATION ${BINDIR})
550                         endif()
551                         if(DEFINED GETTEXT_ICONV_DLL)
552                                 install(FILES ${GETTEXT_ICONV_DLL} DESTINATION ${BINDIR})
553                         endif()
554                 endif(USE_GETTEXT)
555         endif()
556 endif(BUILD_CLIENT)
557
558 if(BUILD_SERVER)
559         install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR})
560 endif(BUILD_SERVER)
561
562 if (USE_GETTEXT)
563         set(MO_FILES)
564
565         foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
566                 set(PO_FILE_PATH "${GETTEXT_PO_PATH}/${LOCALE}/minetest.po")
567                 set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE})
568                 set(MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo")
569
570                 add_custom_command(OUTPUT ${MO_BUILD_PATH}
571                         COMMAND ${CMAKE_COMMAND} -E make_directory ${MO_BUILD_PATH}
572                         COMMENT "mo-update [${LOCALE}]: Creating locale directory.")
573
574                 add_custom_command(
575                         OUTPUT ${MO_FILE_PATH}
576                         COMMAND ${GETTEXT_MSGFMT} -o ${MO_FILE_PATH} ${PO_FILE_PATH}
577                         DEPENDS ${MO_BUILD_PATH} ${PO_FILE_PATH}
578                         WORKING_DIRECTORY "${GETTEXT_PO_PATH}/${LOCALE}"
579                         COMMENT "mo-update [${LOCALE}]: Creating mo file."
580                         )
581
582                 set(MO_FILES ${MO_FILES} ${MO_FILE_PATH})
583         endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
584
585         add_custom_target(translations ALL COMMENT "mo update" DEPENDS ${MO_FILES})
586 endif(USE_GETTEXT)
587
588 # Subdirectories
589
590 if (JTHREAD_FOUND)
591 else (JTHREAD_FOUND)
592         add_subdirectory(jthread)
593 endif (JTHREAD_FOUND)
594
595 if (SQLITE3_FOUND)
596 else (SQLITE3_FOUND)
597         add_subdirectory(sqlite)
598 endif (SQLITE3_FOUND)
599
600 if (BUILD_CLIENT AND USE_FREETYPE)
601         add_subdirectory(cguittfont)
602 endif (BUILD_CLIENT AND USE_FREETYPE)
603
604 if (LUA_FOUND)
605 else (LUA_FOUND)
606         add_subdirectory(lua)
607 endif (LUA_FOUND)
608
609 if (JSON_FOUND)
610 else (JSON_FOUND)
611         add_subdirectory(json)
612 endif (JSON_FOUND)
613
614 #end