X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FCMakeLists.txt;h=58596a10164f46e9237f3c1b06488e47c2371119;hb=3b707b8a4a52a88da4398ec9b32109c073683a76;hp=e55e502f9bf3c6636e4dc796eccd0c2b3140e2c4;hpb=d435dedb898c7d268dfea3504a38a2cd9998bdb2;p=dragonfireclient.git diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e55e502f9..58596a101 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,45 +5,60 @@ if(RUN_IN_PLACE) add_definitions ( -DRUN_IN_PLACE ) endif(RUN_IN_PLACE) -if(UNIX) - # Unix +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 + 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 FILEPATH "Path to zlibwapi.lib") + set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll" + CACHE FILEPATH "Path to zlibwapi.dll (for installation)") +else() + # Unix probably if(BUILD_CLIENT) find_package(X11 REQUIRED) find_package(OpenGL REQUIRED) find_package(JPEG REQUIRED) find_package(BZip2 REQUIRED) + find_package(PNG REQUIRED) endif(BUILD_CLIENT) find_package(ZLIB REQUIRED) - set(SERVER_PLATFORM_LIBS -lpthread) -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(PLATFORM_LIBS -lpthread) + #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 @@ -53,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( @@ -97,6 +110,7 @@ include_directories( ${IRRLICHT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ${CMAKE_BUILD_TYPE} + ${PNG_INCLUDE_DIR} "${PROJECT_SOURCE_DIR}/jthread" ) @@ -111,56 +125,80 @@ if(BUILD_CLIENT) ${OPENGL_LIBRARIES} ${JPEG_LIBRARIES} ${BZIP2_LIBRARIES} + ${PNG_LIBRARIES} + ${X11_LIBRARIES} + ${PLATFORM_LIBS} + ${CLIENT_PLATFORM_LIBS} jthread ) endif(BUILD_CLIENT) + if(BUILD_SERVER) add_executable(minetestserver ${minetestserver_SRCS}) target_link_libraries( minetestserver ${ZLIB_LIBRARIES} + ${PLATFORM_LIBS} jthread - ${SERVER_PLATFORM_LIBS} ) endif(BUILD_SERVER) +# # Set some optimizations and tweaks -if( UNIX ) - # Unix - - set(UNIX_FLAGS "-Wall") +# - if(BUILD_CLIENT) - set_target_properties(minetest PROPERTIES COMPILE_FLAGS - "${UNIX_FLAGS}") - endif(BUILD_CLIENT) +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 /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 - "${UNIX_FLAGS} -DSERVER") + set_target_properties(minetestserver PROPERTIES + COMPILE_DEFINITIONS "SERVER") endif(BUILD_SERVER) -else( UNIX ) - # Windows +else() + # Probably GCC - if(BUILD_CLIENT) - # EHa enables SEH exceptions (used for catching segfaults) - set_target_properties(minetest PROPERTIES COMPILE_FLAGS - "/O2 /Ob2 /Oi /Ot /Oy /GL /EHa") - endif(BUILD_CLIENT) + if(WARN_ALL) + set(WARNING_FLAGS "-Wall") + 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) - # EHa enables SEH exceptions (used for catching segfaults) - set_target_properties(minetestserver PROPERTIES COMPILE_FLAGS - "/O2 /Ob2 /Oi /Ot /Oy /GL /EHa /D SERVER") + set_target_properties(minetestserver PROPERTIES + COMPILE_DEFINITIONS "SERVER") endif(BUILD_SERVER) -endif( UNIX ) +endif() + +#MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}") +#MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}") # # 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})