76 lines
1.7 KiB
CMake
76 lines
1.7 KiB
CMake
cmake_minimum_required (VERSION 3.12)
|
|
project(cxbxr-ldr)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
# Suppress extra stuff from generated solution
|
|
set(CMAKE_SUPPRESS_REGENERATION true)
|
|
|
|
# Force exclude default libraries being included
|
|
set(CMAKE_CXX_STANDARD_LIBRARIES "")
|
|
|
|
# Force set BasicRunTimeChecks to default
|
|
STRING (REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
add_compile_definitions(
|
|
_CRT_SECURE_NO_WARNINGS
|
|
)
|
|
add_compile_options(
|
|
/sdl-
|
|
)
|
|
endif()
|
|
|
|
file (GLOB HEADERS
|
|
"${CXBXR_ROOT_DIR}/src/common/AddressRanges.h"
|
|
"${CXBXR_ROOT_DIR}/src/common/ReserveAddressRanges.h"
|
|
"${CXBXR_ROOT_DIR}/src/CxbxVersion.h"
|
|
"${CXBXR_ROOT_DIR}/src/version.h"
|
|
)
|
|
|
|
file (GLOB SOURCES
|
|
"${CXBXR_ROOT_DIR}/src/common/AddressRanges.cpp"
|
|
"${CXBXR_ROOT_DIR}/src/common/ReserveAddressRanges.cpp"
|
|
"${CXBXR_ROOT_DIR}/src/CxbxVersion.cpp"
|
|
"${CXBXR_ROOT_DIR}/src/loader/cxbxr-ldr.cpp"
|
|
)
|
|
|
|
source_group(TREE ${CXBXR_ROOT_DIR}/src PREFIX header FILES ${HEADERS})
|
|
|
|
source_group(TREE ${CXBXR_ROOT_DIR}/src PREFIX source FILES ${SOURCES})
|
|
|
|
add_executable(cxbxr-ldr ${HEADERS} ${SOURCES})
|
|
|
|
# Link and compile flags
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
|
|
set_target_properties(cxbxr-ldr PROPERTIES
|
|
LINK_FLAGS "
|
|
/LARGEADDRESSAWARE \
|
|
/FIXED \
|
|
/DYNAMICBASE:NO \
|
|
/BASE:0x10000 \
|
|
/STACK:65536,65536 \
|
|
/NODEFAULTLIB \
|
|
/ENTRY:rawMain \
|
|
"
|
|
)
|
|
|
|
# Set optimization options for release build
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} \
|
|
/Oi \
|
|
"
|
|
)
|
|
endif()
|
|
|
|
target_link_libraries(cxbxr-ldr
|
|
PUBLIC kernel32.lib
|
|
)
|
|
|
|
install(TARGETS ${PROJECT_NAME}
|
|
RUNTIME DESTINATION bin
|
|
)
|
|
|
|
add_dependencies(cxbxr-ldr misc-batch)
|