]> git.lizzy.rs Git - minetest.git/blobdiff - src/CMakeLists.txt
Cleanup jthread and fix win32 build
[minetest.git] / src / CMakeLists.txt
index 7ddeeb02e425c85ef307e66326bf18db9e27505b..a30dc9854af3adc7c87e5c0a3c52257a5b569ef1 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)
@@ -189,8 +187,10 @@ find_path(LUA_INCLUDE_DIR luajit.h
 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")
@@ -201,12 +201,46 @@ 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
@@ -222,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
@@ -246,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
@@ -272,22 +292,24 @@ 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
+       ${JTHREAD_SRCS}
+       ${common_SCRIPT_SRCS}
+       ${UTIL_SRCS}
 )
 
 # This gives us the icon
@@ -320,7 +342,6 @@ set(minetest_SRCS
        content_cao.cpp
        mesh.cpp
        mapblock_mesh.cpp
-       farmesh.cpp
        keycode.cpp
        camera.cpp
        clouds.cpp
@@ -328,7 +349,6 @@ set(minetest_SRCS
        clientobject.cpp
        chat.cpp
        hud.cpp
-       guiMainMenu.cpp
        guiKeyChangeMenu.cpp
        guiMessageMenu.cpp
        guiTextInputMenu.cpp
@@ -338,15 +358,16 @@ set(minetest_SRCS
        guiVolumeChange.cpp
        guiDeathScreen.cpp
        guiChatConsole.cpp
-       guiCreateWorld.cpp
-       guiConfigureWorld.cpp
-       guiConfirmMenu.cpp
        client.cpp
        filecache.cpp
        tile.cpp
        shader.cpp
        game.cpp
        main.cpp
+       guiEngine.cpp
+       guiFileSelectMenu.cpp
+       convert_json.cpp
+       ${minetest_SCRIPT_SRCS}
 )
 
 if(USE_FREETYPE)
@@ -356,24 +377,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)
@@ -393,6 +418,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}
@@ -404,7 +430,6 @@ if(BUILD_CLIENT)
                ${X11_LIBRARIES}
                ${GETTEXT_LIBRARY}
                ${SOUND_LIBRARIES}
-               ${JTHREAD_LIBRARY}
                ${SQLITE3_LIBRARY}
                ${LUA_LIBRARY}
                ${JSON_LIBRARY}
@@ -425,20 +450,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
@@ -604,11 +635,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)