X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FCMakeLists.txt;h=58596a10164f46e9237f3c1b06488e47c2371119;hb=3b707b8a4a52a88da4398ec9b32109c073683a76;hp=c55b238e107090a96aeb03ecc2efbaa3e5f3ec12;hpb=56918c0ca47582c425e56017115df852df1fa886;p=dragonfireclient.git diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c55b238e1..58596a101 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,17 +5,28 @@ if(RUN_IN_PLACE) add_definitions ( -DRUN_IN_PLACE ) endif(RUN_IN_PLACE) +if(NOT MSVC) + set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++") +endif() + +# Use cmake_config.h +add_definitions ( -DUSE_CMAKE_CONFIG_H ) + if(WIN32) # Windows - # Surpress some warnings - add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 ) + 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") + CACHE FILEPATH "Path to zlibwapi.lib") set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll" - CACHE PATH "Path to zlibwapi.dll (for installation)") + CACHE FILEPATH "Path to zlibwapi.dll (for installation)") else() # Unix probably if(BUILD_CLIENT) @@ -27,25 +38,27 @@ else() endif(BUILD_CLIENT) find_package(ZLIB REQUIRED) set(PLATFORM_LIBS -lpthread) - set(CLIENT_PLATFORM_LIBS -lXxf86vm) + #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 + collision.cpp + nodemetadata.cpp + serverobject.cpp + 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 +68,41 @@ set(minetest_SRCS filesys.cpp connection.cpp environment.cpp - client.cpp server.cpp + servercommand.cpp socket.cpp mapblock.cpp mapsector.cpp - heightmap.cpp map.cpp player.cpp utility.cpp - main.cpp test.cpp ) +# Client sources +set(minetest_SRCS + ${common_SRCS} + keycode.cpp + clouds.cpp + clientobject.cpp + guiFurnaceMenu.cpp + guiMainMenu.cpp + guiMessageMenu.cpp + guiTextInputMenu.cpp + guiInventoryMenu.cpp + guiPauseMenu.cpp + client.cpp + tile.cpp + game.cpp + main.cpp + sha1.cpp + base64.cpp +) + +# Server sources 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( @@ -99,8 +110,8 @@ include_directories( ${IRRLICHT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ${CMAKE_BUILD_TYPE} - "${PROJECT_SOURCE_DIR}/jthread" ${PNG_INCLUDE_DIR} + "${PROJECT_SOURCE_DIR}/jthread" ) set(EXECUTABLE_OUTPUT_PATH ../bin) @@ -116,9 +127,9 @@ if(BUILD_CLIENT) ${BZIP2_LIBRARIES} ${PNG_LIBRARIES} ${X11_LIBRARIES} - jthread ${PLATFORM_LIBS} ${CLIENT_PLATFORM_LIBS} + jthread ) endif(BUILD_CLIENT) @@ -127,8 +138,8 @@ if(BUILD_SERVER) target_link_libraries( minetestserver ${ZLIB_LIBRARIES} - jthread ${PLATFORM_LIBS} + jthread ) endif(BUILD_SERVER) @@ -140,12 +151,17 @@ 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\" /NODEFAULTLIB:\"libcmt.lib\"") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG") + + # 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) set_target_properties(minetestserver PROPERTIES - COMPILE_FLAGS "/D SERVER") + COMPILE_DEFINITIONS "SERVER") endif(BUILD_SERVER) else() @@ -157,12 +173,18 @@ else() set(WARNING_FLAGS "") endif() + set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-unused-but-set-variable") + set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops") set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall") + + if(USE_GPROF) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg") + endif() if(BUILD_SERVER) set_target_properties(minetestserver PROPERTIES - COMPILE_FLAGS "-DSERVER") + COMPILE_DEFINITIONS "SERVER") endif(BUILD_SERVER) endif() @@ -174,6 +196,9 @@ endif() # Installation # +# Example configuration file +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../minetest.conf.example" DESTINATION ${EXAMPLE_CONF_DIR}) + if(BUILD_CLIENT) install(TARGETS minetest DESTINATION ${BINDIR})