X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FCMakeLists.txt;h=58596a10164f46e9237f3c1b06488e47c2371119;hb=3b707b8a4a52a88da4398ec9b32109c073683a76;hp=72a159f161eb01956b19e051356eed328c5fc905;hpb=d825ed572f97d7d354c84106e508d52255f5e94b;p=dragonfireclient.git diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 72a159f16..58596a101 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,31 +1,64 @@ project(minetest) cmake_minimum_required( VERSION 2.6 ) -set ( CMAKE_BUILD_TYPE Debug ) -add_definitions ( -Wall -DRUN_IN_PLACE -O2) -find_package(ZLIB REQUIRED) -find_package(X11 REQUIRED) -find_package(OpenGL REQUIRED) -find_package(JPEG REQUIRED) -find_package(BZip2 REQUIRED) - -if( UNIX ) - #set( platform_SRCS some_necessary_linux_file.cpp ) -else( UNIX ) - #windows - #set( platform_SRCS dllmain.cpp stdafx.cpp ) -endif( UNIX ) -set(minetest_SRCS +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 + 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(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}/cmake_config.h.in" + "${PROJECT_BINARY_DIR}/cmake_config.h" +) + +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 @@ -35,39 +68,160 @@ 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 + ${common_SRCS} + servermain.cpp +) + include_directories( - ${ZLIB_INCLUDE_DIR} + ${PROJECT_BINARY_DIR} ${IRRLICHT_INCLUDE_DIR} + ${ZLIB_INCLUDE_DIR} + ${CMAKE_BUILD_TYPE} + ${PNG_INCLUDE_DIR} "${PROJECT_SOURCE_DIR}/jthread" ) set(EXECUTABLE_OUTPUT_PATH ../bin) -add_executable(minetest ${minetest_SRCS}) +if(BUILD_CLIENT) + add_executable(minetest ${minetest_SRCS}) + target_link_libraries( + minetest + ${ZLIB_LIBRARIES} + ${IRRLICHT_LIBRARY} + ${OPENGL_LIBRARIES} + ${JPEG_LIBRARIES} + ${BZIP2_LIBRARIES} + ${PNG_LIBRARIES} + ${X11_LIBRARIES} + ${PLATFORM_LIBS} + ${CLIENT_PLATFORM_LIBS} + jthread + ) +endif(BUILD_CLIENT) -target_link_libraries( - minetest - ${ZLIB_LIBRARIES} - ${IRRLICHT_LIBRARY} - ${OPENGL_LIBRARIES} - ${JPEG_LIBRARIES} - ${BZIP2_LIBRARIES} - jthread -) +if(BUILD_SERVER) + add_executable(minetestserver ${minetestserver_SRCS}) + target_link_libraries( + minetestserver + ${ZLIB_LIBRARIES} + ${PLATFORM_LIBS} + jthread + ) +endif(BUILD_SERVER) + +# +# Set some optimizations and tweaks +# + +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_DEFINITIONS "SERVER") + endif(BUILD_SERVER) + +else() + # Probably GCC + + 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) + set_target_properties(minetestserver PROPERTIES + COMPILE_DEFINITIONS "SERVER") + endif(BUILD_SERVER) + +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}) + + file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png") + + install(FILES ${images} DESTINATION ${DATADIR}) + + if(WIN32) + if(DEFINED IRRLICHT_DLL) + install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR}) + endif() + if(DEFINED ZLIB_DLL) + install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR}) + endif() + endif() +endif(BUILD_CLIENT) + +if(BUILD_SERVER) + install(TARGETS minetestserver DESTINATION ${BINDIR}) +endif(BUILD_SERVER) + +# Subdirectories add_subdirectory(jthread) -#END +#end