]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/CMakeLists.txt
Fix formspec field labels
[dragonfireclient.git] / src / CMakeLists.txt
index 9bef3289e06351f37ad77c3fd0b71e4f86c43120..90f5867856b6029b2fe2d76c75491e65cfbfe36f 100644 (file)
@@ -3,7 +3,6 @@ cmake_minimum_required( VERSION 2.6 )
 
 # Set some random things default to not being visible in the GUI
 mark_as_advanced(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
-mark_as_advanced(JTHREAD_INCLUDE_DIR JTHREAD_LIBRARY)
 mark_as_advanced(SQLITE3_INCLUDE_DIR SQLITE3_LIBRARY)
 mark_as_advanced(JSON_INCLUDE_DIR JSON_LIBRARY)
 
@@ -169,7 +168,6 @@ else()
        set(CLIENT_PLATFORM_LIBS ${CLIENT_PLATFORM_LIBS} ${XXF86VM_LIBRARY})
 endif()
 
-find_package(Jthread REQUIRED)
 find_package(Sqlite3 REQUIRED)
 find_package(Json REQUIRED)
 find_package(OpenGLES2)
@@ -180,17 +178,69 @@ if(USE_FREETYPE)
        set(CGUITTFONT_LIBRARY cguittfont)
 endif(USE_FREETYPE)
 
-# Do not use system-wide installation of Lua, because it'll likely be a
-# different version and/or has different build options.
-set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
-set(LUA_LIBRARY "lua")
+
+find_library(LUA_LIBRARY luajit
+               NAMES luajit-5.1)
+find_path(LUA_INCLUDE_DIR luajit.h
+       NAMES luajit.h
+       PATH_SUFFIXES luajit-2.0)
+message (STATUS "LuaJIT library: ${LUA_LIBRARY}")
+message (STATUS "LuaJIT headers: ${LUA_INCLUDE_DIR}")
+
+set(USE_LUAJIT 0)
+if(LUA_LIBRARY AND LUA_INCLUDE_DIR)
+       message (STATUS "LuaJIT found.")
+       set(USE_LUAJIT 1)
+else(LUA_LIBRARY AND LUA_INCLUDE_DIR)
+       message (STATUS "LuaJIT not found, using bundled Lua.")
+       set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
+       set(LUA_LIBRARY "lua")
+       add_subdirectory(lua)
+endif(LUA_LIBRARY AND LUA_INCLUDE_DIR)
+
+mark_as_advanced(LUA_LIBRARY)
+mark_as_advanced(LUA_INCLUDE_DIR)
+
+set(USE_LEVELDB 0)
+
+OPTION(ENABLE_LEVELDB "Enable LevelDB backend")
+
+if(ENABLE_LEVELDB)
+       find_library(LEVELDB_LIBRARY leveldb)
+       find_path(LEVELDB_INCLUDE_DIR db.h PATH_SUFFIXES leveldb)
+       message (STATUS "LevelDB library: ${LEVELDB_LIBRARY}")
+       message (STATUS "LevelDB headers: ${LEVELDB_INCLUDE_DIR}")
+       if(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
+               set(USE_LEVELDB 1)
+               message(STATUS "LevelDB backend enabled")
+               include_directories(${LEVELDB_INCLUDE_DIR})
+       else(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
+               set(USE_LEVELDB 0)
+               message(STATUS "LevelDB not found!")
+       endif(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
+endif(ENABLE_LEVELDB)
 
 configure_file(
        "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
        "${PROJECT_BINARY_DIR}/cmake_config.h"
 )
 
+# Add a target that always rebuilds cmake_config_githash.h
+add_custom_target(GenerateVersion
+       COMMAND ${CMAKE_COMMAND}
+       -D "GENERATE_VERSION_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
+       -D "GENERATE_VERSION_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}"
+       -D "VERSION_STRING=${VERSION_STRING}"
+       -D "VERSION_EXTRA=${VERSION_EXTRA}"
+       -P "${CMAKE_SOURCE_DIR}/cmake/Modules/GenerateVersion.cmake"
+       WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
+
+add_subdirectory(jthread)
+add_subdirectory(script)
+add_subdirectory(util)
+
 set(common_SRCS
+       version.cpp
        rollback_interface.cpp
        rollback.cpp
        genericobject.cpp
@@ -206,22 +256,6 @@ set(common_SRCS
        itemdef.cpp
        nodedef.cpp
        object_properties.cpp
-       scriptapi_types.cpp
-       scriptapi_common.cpp
-       scriptapi_content.cpp
-       scriptapi_craft.cpp
-       scriptapi_node.cpp
-       scriptapi_item.cpp
-       scriptapi_env.cpp
-       scriptapi_nodetimer.cpp
-       scriptapi_noise.cpp
-       scriptapi_entity.cpp
-       scriptapi_object.cpp
-       scriptapi_nodemeta.cpp
-       scriptapi_inventory.cpp
-       scriptapi_particles.cpp
-       scriptapi.cpp
-       script.cpp
        log.cpp
        content_sao.cpp
        emerge.cpp
@@ -230,8 +264,10 @@ set(common_SRCS
        mapgen_v7.cpp
        mapgen_indev.cpp
        mapgen_singlenode.cpp
+       mapgen_math.cpp
        treegen.cpp
        dungeongen.cpp
+       cavegen.cpp
        content_nodemeta.cpp
        content_mapnode.cpp
        collision.cpp
@@ -256,22 +292,25 @@ set(common_SRCS
        mapblock.cpp
        mapsector.cpp
        map.cpp
+       database.cpp
+       database-dummy.cpp
+       database-leveldb.cpp
+       database-sqlite3.cpp
        player.cpp
        test.cpp
        sha1.cpp
        base64.cpp
        ban.cpp
        biome.cpp
-       clientserver.cpp
        staticobject.cpp
        serverlist.cpp
        pathfinder.cpp
-       util/serialize.cpp
-       util/directiontables.cpp
-       util/numeric.cpp
-       util/pointedthing.cpp
-       util/string.cpp
-       util/timetaker.cpp
+       convert_json.cpp
+       gettext.cpp
+       httpfetch.cpp
+       ${JTHREAD_SRCS}
+       ${common_SCRIPT_SRCS}
+       ${UTIL_SRCS}
 )
 
 # This gives us the icon
@@ -304,14 +343,13 @@ set(minetest_SRCS
        content_cao.cpp
        mesh.cpp
        mapblock_mesh.cpp
-       farmesh.cpp
        keycode.cpp
        camera.cpp
        clouds.cpp
        particles.cpp
        clientobject.cpp
        chat.cpp
-       guiMainMenu.cpp
+       hud.cpp
        guiKeyChangeMenu.cpp
        guiMessageMenu.cpp
        guiTextInputMenu.cpp
@@ -321,15 +359,17 @@ set(minetest_SRCS
        guiVolumeChange.cpp
        guiDeathScreen.cpp
        guiChatConsole.cpp
-       guiCreateWorld.cpp
-       guiConfigureWorld.cpp
-       guiConfirmMenu.cpp
        client.cpp
+       clientmedia.cpp
        filecache.cpp
        tile.cpp
        shader.cpp
        game.cpp
        main.cpp
+       guiEngine.cpp
+       guiFileSelectMenu.cpp
+       convert_json.cpp
+       ${minetest_SCRIPT_SRCS}
 )
 
 if(USE_FREETYPE)
@@ -339,24 +379,28 @@ if(USE_FREETYPE)
        )
 endif(USE_FREETYPE)
 
+list(SORT minetest_SRCS)
+
 # Server sources
 set(minetestserver_SRCS
        ${common_SRCS}
        main.cpp
 )
+list(SORT minetestserver_SRCS)
 
 include_directories(
        ${PROJECT_BINARY_DIR}
+       ${PROJECT_SOURCE_DIR}
        ${IRRLICHT_INCLUDE_DIR}
        ${ZLIB_INCLUDE_DIR}
        ${CMAKE_BUILD_TYPE}
        ${PNG_INCLUDE_DIR}
        ${GETTEXT_INCLUDE_DIR}
        ${SOUND_INCLUDE_DIRS}
-       ${JTHREAD_INCLUDE_DIR}
        ${SQLITE3_INCLUDE_DIR}
        ${LUA_INCLUDE_DIR}
        ${JSON_INCLUDE_DIR}
+       ${PROJECT_SOURCE_DIR}/script
 )
 
 if(USE_FREETYPE)
@@ -376,6 +420,7 @@ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin")
 
 if(BUILD_CLIENT)
        add_executable(${PROJECT_NAME} ${minetest_SRCS})
+       add_dependencies(${PROJECT_NAME} GenerateVersion)
        target_link_libraries(
                ${PROJECT_NAME}
                ${ZLIB_LIBRARIES}
@@ -387,7 +432,6 @@ if(BUILD_CLIENT)
                ${X11_LIBRARIES}
                ${GETTEXT_LIBRARY}
                ${SOUND_LIBRARIES}
-               ${JTHREAD_LIBRARY}
                ${SQLITE3_LIBRARY}
                ${LUA_LIBRARY}
                ${JSON_LIBRARY}
@@ -408,20 +452,26 @@ if(BUILD_CLIENT)
                        ${CGUITTFONT_LIBRARY}
                )
        endif(USE_FREETYPE)
+       if (USE_LEVELDB)
+               target_link_libraries(${PROJECT_NAME} ${LEVELDB_LIBRARY})
+       endif(USE_LEVELDB)
 endif(BUILD_CLIENT)
 
 if(BUILD_SERVER)
        add_executable(${PROJECT_NAME}server ${minetestserver_SRCS})
+       add_dependencies(${PROJECT_NAME}server GenerateVersion)
        target_link_libraries(
                ${PROJECT_NAME}server
                ${ZLIB_LIBRARIES}
-               ${JTHREAD_LIBRARY}
                ${SQLITE3_LIBRARY}
                ${JSON_LIBRARY}
                ${GETTEXT_LIBRARY}
                ${LUA_LIBRARY}
                ${PLATFORM_LIBS}
        )
+       if (USE_LEVELDB)
+               target_link_libraries(${PROJECT_NAME}server ${LEVELDB_LIBRARY})
+       endif(USE_LEVELDB)
        if(USE_CURL)
                target_link_libraries(
                        ${PROJECT_NAME}server
@@ -452,7 +502,7 @@ if(MSVC)
        # Flags for C files (sqlite)
        # /MT = Link statically with standard library stuff
        set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT")
-       
+
        if(BUILD_SERVER)
                set_target_properties(${PROJECT_NAME}server PROPERTIES
                                COMPILE_DEFINITIONS "SERVER")
@@ -460,13 +510,13 @@ if(MSVC)
 
 else()
        # Probably GCC
-       
+
        if(WARN_ALL)
                set(RELEASE_WARNING_FLAGS "-Wall")
        else()
                set(RELEASE_WARNING_FLAGS "")
        endif()
-       
+
        if(NOT APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
                CHECK_CXX_COMPILER_FLAG("-Wno-unused-but-set-variable" HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
                if(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
@@ -489,7 +539,7 @@ else()
        if(USE_GPROF)
                set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
        endif()
-       
+
        if(BUILD_SERVER)
                set_target_properties(${PROJECT_NAME}server PROPERTIES
                                COMPILE_DEFINITIONS "SERVER")
@@ -587,11 +637,6 @@ endif(USE_GETTEXT)
 
 # Subdirectories
 
-if (JTHREAD_FOUND)
-else (JTHREAD_FOUND)
-       add_subdirectory(jthread)
-endif (JTHREAD_FOUND)
-
 if (SQLITE3_FOUND)
 else (SQLITE3_FOUND)
        add_subdirectory(sqlite)
@@ -601,11 +646,6 @@ if (BUILD_CLIENT AND USE_FREETYPE)
        add_subdirectory(cguittfont)
 endif (BUILD_CLIENT AND USE_FREETYPE)
 
-if (LUA_FOUND)
-else (LUA_FOUND)
-       add_subdirectory(lua)
-endif (LUA_FOUND)
-
 if (JSON_FOUND)
 else (JSON_FOUND)
        add_subdirectory(json)