whoa/CMakeLists.txt

111 lines
2.9 KiB
CMake

cmake_minimum_required(VERSION 3.1...3.5)
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR
"In-source builds not allowed.
Please make a new directory (called a build directory) and run CMake from there.
You may need to remove CMakeCache.txt."
)
endif()
# OS variables
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14" CACHE STRING "macOS Deployment Target" FORCE)
# Project
project(whoa)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "dist" CACHE PATH "Installation prefix" FORCE)
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_CXX_STANDARD 11)
include(lib/system/cmake/system.cmake)
find_package(ZLIB REQUIRED)
find_package(BZip2 REQUIRED)
include(ExternalProject)
set(STORMLIB_SOURCE_DIR ${CMAKE_SOURCE_DIR}/lib/stormlib)
set(STORMLIB_BINARY_DIR ${CMAKE_BINARY_DIR}/stormlib)
set(STORMLIB_LIBRARY ${STORMLIB_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}storm${CMAKE_STATIC_LIBRARY_SUFFIX})
ExternalProject_Add(stormlib_external
SOURCE_DIR ${STORMLIB_SOURCE_DIR}
BINARY_DIR ${STORMLIB_BINARY_DIR}
BUILD_BYPRODUCTS ${STORMLIB_LIBRARY}
INSTALL_COMMAND ""
CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DSTORM_BUILD_TESTS=OFF
-DSTORM_SKIP_INSTALL=ON
-DBUILD_SHARED_LIBS=OFF
-DSTORM_USE_BUNDLED_LIBRARIES=OFF
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
)
add_library(stormlib STATIC IMPORTED)
set_target_properties(stormlib PROPERTIES
IMPORTED_LOCATION ${STORMLIB_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${STORMLIB_SOURCE_DIR}/src
)
add_dependencies(stormlib stormlib_external)
# Some templates abuse offsetof
if(WHOA_SYSTEM_LINUX OR WHOA_SYSTEM_MAC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof")
endif()
# OS defines
if(WHOA_SYSTEM_WIN)
# Avoid win32 header hell
add_compile_definitions(
NOMINMAX
WIN32_LEAN_AND_MEAN
)
# Make DirectXMath boring
add_definitions(
-D_XM_NO_INTRINSICS_
)
# Lua uses various "unsafe" C functions
add_definitions(
-D_CRT_SECURE_NO_WARNINGS
)
endif()
if(WHOA_SYSTEM_MAC)
# Suppress OpenGL deprecation warnings
add_definitions(
-DGL_SILENCE_DEPRECATION
)
endif()
# Threads
if(WHOA_SYSTEM_LINUX OR WHOA_SYSTEM_MAC)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)
endif()
# Library search paths
if(WHOA_SYSTEM_MAC)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH "@executable_path")
elseif(WHOA_SYSTEM_LINUX)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH "$ORIGIN")
endif()
add_subdirectory(lib)
add_subdirectory(src)
add_subdirectory(test)
add_subdirectory(vendor)