]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/CMakeLists.txt
new hotbar, more minecraft-like
[dragonfireclient.git] / src / CMakeLists.txt
index c7c0a702556c0e0ae44bacf94a13b73addf2eae3..b8a36918768e44c80ff75136cb16f60baef7838f 100644 (file)
@@ -5,8 +5,26 @@ if(RUN_IN_PLACE)
        add_definitions ( -DRUN_IN_PLACE )
 endif(RUN_IN_PLACE)
 
-if(UNIX)
-       # Unix
+# Use cmake_config.h
+add_definitions ( -DUSE_CMAKE_CONFIG_H )
+
+if(WIN32)
+       # Windows
+       if(MSVC) # MSVC Specifics
+               # Surpress some useless warnings
+               add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
+       else() # Probably MinGW = GCC
+               set(PLATFORM_LIBS ws2_32.lib)
+       endif()
+       # Zlib stuff
+       set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
+                       CACHE PATH "Zlib include directory")
+       set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
+                       CACHE PATH "Path to zlibwapi.lib")
+       set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
+                       CACHE PATH "Path to zlibwapi.dll (for installation)")
+else()
+       # Unix probably
        if(BUILD_CLIENT)
                find_package(X11 REQUIRED)
                find_package(OpenGL REQUIRED)
@@ -16,36 +34,24 @@ if(UNIX)
        endif(BUILD_CLIENT)
        find_package(ZLIB REQUIRED)
        set(PLATFORM_LIBS -lpthread)
-       set(CLIENT_PLATFORM_LIBS -lXxf86vm)
-elseif(WIN32)
-       # Windows
-       # Surpress some warnings
-       add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
-       # Zlib stuff
-       set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
-                       CACHE PATH "Zlib include directory")
-       set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
-                       CACHE PATH "Path to zlibwapi.lib")
-       set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
-                       CACHE PATH "Path to zlibwapi.dll (for installation)")
+       #set(CLIENT_PLATFORM_LIBS -lXxf86vm)
+       # This way Xxf86vm is found on OpenBSD too
+       find_library(XXF86VM_LIBRARY, Xxf86vm)
+       set(CLIENT_PLATFORM_LIBS ${XXF86VM_LIBRARY})
 endif()
 
 configure_file(
-       "${PROJECT_SOURCE_DIR}/config.h.in"
-       "${PROJECT_BINARY_DIR}/config.h"
+       "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
+       "${PROJECT_BINARY_DIR}/cmake_config.h"
 )
 
-set(minetest_SRCS
+set(common_SRCS
+       noise.cpp
+       mineral.cpp
        porting.cpp
-       guiMessageMenu.cpp
        materials.cpp
-       guiTextInputMenu.cpp
-       guiInventoryMenu.cpp
-       irrlichtwrapper.cpp
-       guiPauseMenu.cpp
        defaultsettings.cpp
        mapnode.cpp
-       tile.cpp
        voxel.cpp
        mapblockobject.cpp
        inventory.cpp
@@ -55,43 +61,32 @@ set(minetest_SRCS
        filesys.cpp
        connection.cpp
        environment.cpp
-       client.cpp
        server.cpp
        socket.cpp
        mapblock.cpp
        mapsector.cpp
-       heightmap.cpp
        map.cpp
        player.cpp
        utility.cpp
-       main.cpp
        test.cpp
 )
 
+set(minetest_SRCS
+       ${common_SRCS}
+       guiMainMenu.cpp
+       guiMessageMenu.cpp
+       guiTextInputMenu.cpp
+       guiInventoryMenu.cpp
+       guiPauseMenu.cpp
+       irrlichtwrapper.cpp
+       client.cpp
+       tile.cpp
+       main.cpp
+)
+
 set(minetestserver_SRCS
-       porting.cpp
-       materials.cpp
-       defaultsettings.cpp
-       mapnode.cpp
-       voxel.cpp
-       mapblockobject.cpp
-       inventory.cpp
-       debug.cpp
-       serialization.cpp
-       light.cpp
-       filesys.cpp
-       connection.cpp
-       environment.cpp
-       server.cpp
-       socket.cpp
-       mapblock.cpp
-       mapsector.cpp
-       heightmap.cpp
-       map.cpp
-       player.cpp
-       utility.cpp
+       ${common_SRCS}
        servermain.cpp
-       test.cpp
 )
 
 include_directories(
@@ -105,8 +100,11 @@ include_directories(
 
 set(EXECUTABLE_OUTPUT_PATH ../bin)
 
+set(JTHREAD_LIBRARIES "jthread")
+set(JTHREAD_SRCS "")
+
 if(BUILD_CLIENT)
-       add_executable(minetest ${minetest_SRCS})
+       add_executable(minetest ${minetest_SRCS} ${JTHREAD_SRCS})
        target_link_libraries(
                minetest
                ${ZLIB_LIBRARIES}
@@ -116,17 +114,18 @@ if(BUILD_CLIENT)
                ${BZIP2_LIBRARIES}
                ${PNG_LIBRARIES}
                ${X11_LIBRARIES}
-               jthread
+               ${JTHREAD_LIBRARIES}
                ${PLATFORM_LIBS}
                ${CLIENT_PLATFORM_LIBS}
        )
 endif(BUILD_CLIENT)
+
 if(BUILD_SERVER)
-       add_executable(minetestserver ${minetestserver_SRCS})
+       add_executable(minetestserver ${minetestserver_SRCS} ${JTHREAD_SRCS})
        target_link_libraries(
                minetestserver
                ${ZLIB_LIBRARIES}
-               jthread
+               ${JTHREAD_LIBRARIES}
                ${PLATFORM_LIBS}
        )
 endif(BUILD_SERVER)
@@ -139,7 +138,11 @@ if(MSVC)
        # Visual Studio
 
        # EHa enables SEH exceptions (used for catching segfaults)
-       set(CMAKE_CXX_FLAGS_RELEASE "/EHa /MD /O2 /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast")
+       set(CMAKE_CXX_FLAGS_RELEASE "/EHa /MD /O2 /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\"")
+
+       # 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")
        
        if(BUILD_SERVER)