153 lines
3.0 KiB
CMake
153 lines
3.0 KiB
CMake
cmake_minimum_required (VERSION 3.12)
|
|
project(CxbxGUI)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
# Suppress extra stuff from generated solution
|
|
set(CMAKE_SUPPRESS_REGENERATION true)
|
|
|
|
include_directories(
|
|
"${CXBXR_ROOT_DIR}/src"
|
|
"${CXBXR_ROOT_DIR}/src/common"
|
|
"${CXBXR_ROOT_DIR}/src/common/Win32"
|
|
"${CXBXR_ROOT_DIR}/import/OpenXDK/include"
|
|
"${CXBXR_ROOT_DIR}/import/XbSymbolDatabase"
|
|
"${CXBXR_ROOT_DIR}/import/simpleini"
|
|
"${CXBXR_ROOT_DIR}/import/DirectX9/include"
|
|
"${CXBXR_ROOT_DIR}/import/libtommath"
|
|
"${CXBXR_ROOT_DIR}/import/libtomcrypt/src/headers"
|
|
)
|
|
|
|
link_directories(
|
|
"${CXBXR_ROOT_DIR}/import/DirectX9/lib"
|
|
)
|
|
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
add_compile_definitions(
|
|
_CRT_SECURE_NO_WARNINGS
|
|
# Windows 7 minimum requirement
|
|
_WIN32_WINNT=0x0601
|
|
|
|
LTM_DESC
|
|
USE_LTM
|
|
LTC_NO_TEST
|
|
LTC_NO_CIPHERS
|
|
LTC_NO_HASHES
|
|
LTC_NO_MACS
|
|
LTC_NO_PRNGS
|
|
LTC_NO_MISC
|
|
LTC_NO_PROTOTYPES
|
|
)
|
|
add_compile_options(
|
|
/EHs
|
|
/MP
|
|
/GF
|
|
/arch:SSE2
|
|
)
|
|
endif()
|
|
|
|
add_compile_definitions(NOMINMAX
|
|
)
|
|
|
|
file (GLOB RESOURCES
|
|
|
|
"${CXBXR_ROOT_DIR}/CONTRIBUTORS"
|
|
"${CXBXR_ROOT_DIR}/COPYING"
|
|
"${CXBXR_ROOT_DIR}/README.md"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/.editorconfig"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/CxbxGUI.rc"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/Cxbx-R.ico"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/resource.h"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/stdafx.h"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/targetver.h"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/Logo.bmp"
|
|
"${CXBXR_ROOT_DIR}/src/gui/resource/Logo-License-CC4.bmp"
|
|
"${CXBXR_ROOT_DIR}/src/.editorconfig"
|
|
)
|
|
|
|
source_group(TREE ${CXBXR_ROOT_DIR}/src PREFIX header FILES
|
|
${CXBXR_HEADER_GUIv1}
|
|
${CXBXR_HEADER_COMMON}
|
|
"${CXBXR_ROOT_DIR}/src/gui/CxbxGUI.h"
|
|
)
|
|
|
|
source_group(TREE ${CXBXR_ROOT_DIR}/src PREFIX source FILES
|
|
${CXBXR_SOURCE_GUIv1}
|
|
${CXBXR_SOURCE_COMMON}
|
|
"${CXBXR_ROOT_DIR}/src/gui/CxbxGUI.cpp"
|
|
"${CXBXR_ROOT_DIR}/src/gui/stdafx.cpp"
|
|
)
|
|
|
|
source_group(TREE ${CXBXR_ROOT_DIR} FILES ${RESOURCES})
|
|
|
|
add_executable(CxbxGUI WIN32 ${RESOURCES}
|
|
# ${CXBXR_HEADER_GUIv1}
|
|
# ${CXBXR_HEADER_COMMON}
|
|
# ${CXBXR_SOURCE_GUIv1}
|
|
# ${CXBXR_SOURCE_COMMON}
|
|
${CXBXR_GIT_VERSION_H}
|
|
"${CXBXR_ROOT_DIR}/src/gui/CxbxGUI.h"
|
|
"${CXBXR_ROOT_DIR}/src/gui/CxbxGUI.cpp"
|
|
"${CXBXR_ROOT_DIR}/src/gui/stdafx.cpp"
|
|
)
|
|
|
|
# Link and compile flags
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
|
|
set_target_properties(CxbxGUI PROPERTIES
|
|
LINK_FLAGS "
|
|
/INCREMENTAL:NO
|
|
/LARGEADDRESSAWARE
|
|
/SAFESEH:NO
|
|
/NODEFAULTLIB:libcmt
|
|
"
|
|
LINK_FLAGS_RELEASE "
|
|
/LTCG
|
|
"
|
|
)
|
|
|
|
# Set optimization options for release build
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}
|
|
/Zi
|
|
/Ob2
|
|
/Oi
|
|
/Ot
|
|
/GL
|
|
|
|
/GS-
|
|
/Gy
|
|
/Qpar
|
|
"
|
|
)
|
|
endif()
|
|
|
|
# Windows libraries
|
|
set(WINS_LIB
|
|
legacy_stdio_definitions
|
|
d3d9
|
|
dinput8
|
|
dxguid
|
|
odbc32
|
|
odbccp32
|
|
Shlwapi
|
|
dxerr9
|
|
ws2_32
|
|
dsound
|
|
winmm
|
|
ddraw
|
|
d3dx9
|
|
dbghelp
|
|
comctl32
|
|
XINPUT9_1_0
|
|
)
|
|
|
|
target_link_libraries(CxbxGUI
|
|
PUBLIC XbSymbolDatabase
|
|
libtomcrypt
|
|
|
|
${WINS_LIB}
|
|
)
|
|
|
|
add_dependencies(CxbxGUI CxbxEmulator cxbxr-debugger)
|