]> git.lizzy.rs Git - minetest.git/blobdiff - src/CMakeLists.txt
Remove Android makefile ugly make -j hack
[minetest.git] / src / CMakeLists.txt
index 5de5834d38f518a0d7820dd2780a34bd0de0372f..2ce1086813ea7307b72e4e97150d90d1e2a890c4 100644 (file)
@@ -2,11 +2,28 @@ project(minetest)
 cmake_minimum_required( VERSION 2.6 )
 
 INCLUDE(CheckCSourceRuns)
+INCLUDE(CheckIncludeFiles)
+
+# Add custom SemiDebug build mode
+set(CMAKE_CXX_FLAGS_SEMIDEBUG "-O1 -g -Wall -Wabi" CACHE STRING
+       "Flags used by the C++ compiler during semidebug builds."
+       FORCE
+)
+set(CMAKE_C_FLAGS_SEMIDEBUG "-O1 -g -Wall -pedantic" CACHE STRING
+       "Flags used by the C compiler during semidebug builds."
+       FORCE
+)
+mark_as_advanced(
+       CMAKE_CXX_FLAGS_SEMIDEBUG
+       CMAKE_C_FLAGS_SEMIDEBUG
+)
+set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
+       "Choose the type of build. Options are: None Debug SemiDebug RelWithDebInfo MinSizeRel."
+       FORCE
+)
 
 # Set some random things default to not being visible in the GUI
 mark_as_advanced(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
-mark_as_advanced(SQLITE3_INCLUDE_DIR SQLITE3_LIBRARY)
-mark_as_advanced(JSON_INCLUDE_DIR JSON_LIBRARY)
 
 option(ENABLE_CURL "Enable cURL support for fetching media" 1)
 
@@ -111,6 +128,7 @@ add_definitions ( -DUSE_CMAKE_CONFIG_H )
 if(WIN32)
        # Windows
        if(MSVC) # MSVC Specifics
+               set(PLATFORM_LIBS dbghelp.lib ${PLATFORM_LIBS})
                # Surpress some useless warnings
                add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
        else() # Probably MinGW = GCC
@@ -173,7 +191,7 @@ else()
        set(CLIENT_PLATFORM_LIBS ${CLIENT_PLATFORM_LIBS} ${XXF86VM_LIBRARY})
 endif()
 
-find_package(Sqlite3 REQUIRED)
+find_package(SQLite3 REQUIRED)
 find_package(Json REQUIRED)
 
 option(ENABLE_GLES "Enable OpenGL ES support" 0)
@@ -296,7 +314,7 @@ endif(ENABLE_LEVELDB)
 
 set(USE_REDIS 0)
 
-OPTION(ENABLE_REDIS "Enable redis backend" 1)
+OPTION(ENABLE_REDIS "Enable redis backend" 0)
 
 if(ENABLE_REDIS)
        find_library(REDIS_LIBRARY hiredis)
@@ -313,6 +331,11 @@ if(ENABLE_REDIS)
        endif(REDIS_LIBRARY AND REDIS_INCLUDE_DIR)
 endif(ENABLE_REDIS)
 
+CHECK_INCLUDE_FILES(endian.h HAVE_ENDIAN_H)
+if(NOT HAVE_ENDIAN_H)
+  set(HAVE_ENDIAN_H 0)
+endif(NOT HAVE_ENDIAN_H)
+
 configure_file(
        "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
        "${PROJECT_BINARY_DIR}/cmake_config.h"
@@ -329,16 +352,19 @@ add_custom_target(GenerateVersion
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
 
 add_subdirectory(jthread)
+add_subdirectory(network)
 add_subdirectory(script)
 add_subdirectory(util)
 
+set (unittests_SRCS
+       test.cpp
+)
+
 set(common_SRCS
        ban.cpp
-       base64.cpp
        cavegen.cpp
        clientiface.cpp
        collision.cpp
-       connection.cpp
        content_abm.cpp
        content_mapnode.cpp
        content_nodemeta.cpp
@@ -368,6 +394,7 @@ set(common_SRCS
        mapblock.cpp
        mapgen.cpp
        mapgen_singlenode.cpp
+       mapgen_v5.cpp
        mapgen_v6.cpp
        mapgen_v7.cpp
        mapnode.cpp
@@ -394,20 +421,20 @@ set(common_SRCS
        serverlist.cpp
        serverobject.cpp
        settings.cpp
-       sha1.cpp
        socket.cpp
        sound.cpp
        staticobject.cpp
        subgame.cpp
-       test.cpp
        tool.cpp
        treegen.cpp
        version.cpp
        voxel.cpp
        voxelalgorithms.cpp
+       ${common_network_SRCS}
        ${JTHREAD_SRCS}
        ${common_SCRIPT_SRCS}
        ${UTIL_SRCS}
+       ${unittests_SRCS}
 )
 
 # This gives us the icon and file version information
@@ -430,9 +457,16 @@ if(WIN32)
 endif()
 
 # Client sources
+
+if (BUILD_CLIENT)
+       add_subdirectory(client)
+endif(BUILD_CLIENT)
+
 set(minetest_SRCS
        ${common_SRCS}
        ${sound_SRCS}
+       ${client_SRCS}
+       ${client_network_SRCS}
        camera.cpp
        chat.cpp
        client.cpp
@@ -446,6 +480,7 @@ set(minetest_SRCS
        convert_json.cpp
        drawscene.cpp
        filecache.cpp
+       fontengine.cpp
        game.cpp
        guiChatConsole.cpp
        guiEngine.cpp
@@ -464,7 +499,7 @@ set(minetest_SRCS
        particles.cpp
        shader.cpp
        sky.cpp
-       tile.cpp
+       wieldmesh.cpp
        ${minetest_SCRIPT_SRCS}
 )
 list(SORT minetest_SRCS)
@@ -601,10 +636,12 @@ if(MSVC)
        # Visual Studio
 
        # EHa enables SEH exceptions (used for catching segfaults)
-       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")
+       set(CMAKE_CXX_FLAGS_RELEASE "/EHa /Ox /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP")
        #set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
        set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
 
+       set(CMAKE_CXX_FLAGS_SEMIDEBUG "/MDd /Zi /Ob0 /O1 /RTC1")
+
        # Debug build doesn't catch exceptions by itself
        # Add some optimizations because otherwise it's VERY slow
        set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
@@ -629,11 +666,9 @@ 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)
-                       set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-unused-but-set-variable")
-               endif(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
+       if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+               # clang does not understand __extern_always_inline but libc headers use it
+               set(OTHER_FLAGS "${OTHER_FLAGS} \"-D__extern_always_inline=extern __always_inline\"")
        endif()
 
        if(MINGW)
@@ -646,7 +681,8 @@ else()
        else()
                set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
        endif(APPLE)
-       set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}")
+       set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
+       set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
 
        if(USE_GPROF)
                set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
@@ -692,13 +728,29 @@ if(WIN32)
        if(FREETYPE_DLL)
                install(FILES ${FREETYPE_DLL} DESTINATION ${BINDIR})
        endif()
+       if(SQLITE3_DLL)
+               install(FILES ${SQLITE3_DLL} DESTINATION ${BINDIR})
+       endif()
        if(LEVELDB_DLL)
                install(FILES ${LEVELDB_DLL} DESTINATION ${BINDIR})
        endif()
 endif()
 
 if(BUILD_CLIENT)
-       install(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+       install(TARGETS ${PROJECT_NAME}
+               RUNTIME DESTINATION ${BINDIR}
+               LIBRARY DESTINATION ${BINDIR}
+               ARCHIVE DESTINATION ${BINDIR}
+               BUNDLE DESTINATION .
+       )
+
+       if(APPLE)
+               install(CODE "
+                       set(BU_CHMOD_BUNDLE_ITEMS ON)
+                       include(BundleUtilities)
+                       fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${BUNDLE_PATH}\" \"\" \"\${CMAKE_INSTALL_PREFIX}/${BINDIR}\")
+               " COMPONENT Runtime)
+       endif()
 
        if(USE_GETTEXT)
                foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
@@ -755,11 +807,6 @@ endif(USE_GETTEXT)
 
 # Subdirectories
 
-if (SQLITE3_FOUND)
-else (SQLITE3_FOUND)
-       add_subdirectory(sqlite)
-endif (SQLITE3_FOUND)
-
 if (BUILD_CLIENT AND USE_FREETYPE)
        add_subdirectory(cguittfont)
 endif (BUILD_CLIENT AND USE_FREETYPE)