ReGameDLL_CS/regamedll/CMakeLists.txt

149 lines
4.1 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.1)
project(regamedll CXX)
option(DEBUG "Build debug application." OFF)
option(USE_INTEL_COMPILER "Use the Intel compiler." OFF)
option(USE_CLANG_COMPILER "Use the Clang compiler." OFF)
option(USE_STATIC_LIBSTDC "Enables static linking libstdc++." OFF)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (USE_INTEL_COMPILER)
set(CMAKE_C_COMPILER "/opt/intel/bin/icc")
set(CMAKE_CXX_COMPILER "/opt/intel/bin/icpc")
elseif (USE_CLANG_COMPILER)
set(CMAKE_C_COMPILER "/usr/bin/clang")
set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
if (USE_INTEL_COMPILER OR USE_CLANG_COMPILER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fasm-blocks")
endif()
if (DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3 -ggdb -O3 -Wall -ffunction-sections -fdata-sections")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g0 -O3 -fno-rtti -ffunction-sections -fdata-sections")
endif()
if (USE_INTEL_COMPILER)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-intel -no-intel-extensions")
else()
## Produce code optimized for the most common IA32/AMD64/EM64T processors.
## As new processors are deployed in the marketplace, the behavior of this option will change.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}\
-mtune=generic -msse3\
-Wno-write-strings -Wno-invalid-offsetof\
-Wno-unused-variable -Wno-unused-function\
-Wno-unused-result -Wno-invalid-offsetof\
-fpermissive -Wno-switch -Wno-enum-compare\
-Wno-unknown-pragmas -Wno-unused-value")
if (USE_CLANG_COMPILER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}\
-Wno-unused-local-typedef\
-Wno-unused-private-field\
-fno-strict-vtable-pointers\
-Wno-overloaded-virtual")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}\
-Wno-unused-local-typedefs\
-Wno-sign-compare\
-Wno-strict-aliasing\
-Wno-unused-but-set-variable\
-fno-devirtualize")
endif()
endif()
if (NOT DEBUG AND USE_STATIC_LIBSTDC)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-gc-sections -Wl,--version-script=\"${PROJECT_SOURCE_DIR}/../version_script.lds\"")
endif()
if (USE_STATIC_LIBSTDC)
add_definitions(-DBUILD_STATIC_LIBSTDC)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif()
set(PROJECT_SRC_DIR
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/engine"
"${PROJECT_SOURCE_DIR}/common"
"${PROJECT_SOURCE_DIR}/dlls"
"${PROJECT_SOURCE_DIR}/game_shared"
"${PROJECT_SOURCE_DIR}/pm_shared"
"${PROJECT_SOURCE_DIR}/regamedll"
)
set(PROJECT_PUBLIC_DIR
"${PROJECT_SOURCE_DIR}/public"
"${PROJECT_SOURCE_DIR}/public/regamedll"
)
set(ENGINE_SRCS
"engine/unicode_strtools.cpp"
)
file(GLOB SHARED_SRCS
"game_shared/bot/*.cpp"
"game_shared/*.cpp"
"pm_shared/*.cpp"
"regamedll/*.cpp"
"public/FileSystem.cpp"
"public/interface.cpp"
"public/MemPool.cpp"
"version/version.cpp"
)
list(REMOVE_ITEM SHARED_SRCS EXCLUDE "${PROJECT_SOURCE_DIR}/regamedll/classes_dummy.cpp")
file(GLOB GAMEDLL_SRCS
"dlls/*.cpp"
"dlls/API/*.cpp"
"dlls/addons/*.cpp"
"dlls/wpn_shared/*.cpp"
"dlls/bot/*.cpp"
"dlls/bot/states/*.cpp"
"dlls/hostage/*.cpp"
"dlls/hostage/states/*.cpp"
)
include_directories(
${PROJECT_SRC_DIR}
${PROJECT_PUBLIC_DIR}
)
link_directories(${PROJECT_SOURCE_DIR}/lib/linux32)
add_definitions(
-DREGAMEDLL_FIXES
-DBUILD_LATEST
-DREGAMEDLL_ADD
-DREGAMEDLL_API
-DUNICODE_FIXES
-DCLIENT_WEAPONS
-DUSE_QSTRING
-DGNUC
-DPOSIX
-D_LINUX
-DLINUX
-D_stricmp=strcasecmp
-D_strnicmp=strncasecmp
-D_strdup=strdup
-D_unlink=unlink
-D_vsnprintf=vsnprintf
-D_write=write
-D_close=close
-D_access=access
-D_vsnwprintf=vswprintf
)
add_library(regamedll SHARED ${appversion.sh} ${GAMEDLL_SRCS} ${ENGINE_SRCS} ${SHARED_SRCS})
set_property(TARGET regamedll PROPERTY LIBRARY_OUTPUT_NAME cs)
add_custom_target(appversion DEPENDS COMMAND "${PROJECT_SOURCE_DIR}/version/appversion.sh" "${PROJECT_SOURCE_DIR}")
set_target_properties(regamedll PROPERTIES PREFIX "" COMPILE_FLAGS "-m32" LINK_FLAGS "-m32" POSITION_INDEPENDENT_CODE ON)
target_link_libraries(regamedll dl aelf32)
add_dependencies(regamedll appversion)