mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-16 14:08:59 +07:00
clean up cmake config
This commit is contained in:
117
CMakeLists.txt
117
CMakeLists.txt
@@ -2,14 +2,7 @@ cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
|
|||||||
project(enduro2d)
|
project(enduro2d)
|
||||||
|
|
||||||
#
|
#
|
||||||
# global warning mode
|
# linking mode
|
||||||
#
|
|
||||||
|
|
||||||
add_compile_options(
|
|
||||||
$<$<PLATFORM_ID:Darwin>:-Wno-deprecated-declarations>)
|
|
||||||
|
|
||||||
#
|
|
||||||
# global linking mode
|
|
||||||
#
|
#
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@@ -36,7 +29,7 @@ if(MSVC)
|
|||||||
endif(MSVC)
|
endif(MSVC)
|
||||||
|
|
||||||
#
|
#
|
||||||
# global coverage mode
|
# coverage mode
|
||||||
#
|
#
|
||||||
|
|
||||||
option(E2D_BUILD_WITH_COVERAGE "Build with coverage" OFF)
|
option(E2D_BUILD_WITH_COVERAGE "Build with coverage" OFF)
|
||||||
@@ -49,26 +42,26 @@ if(E2D_BUILD_WITH_COVERAGE AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
#
|
||||||
# global sanitizer mode
|
# sanitizer modes
|
||||||
#
|
#
|
||||||
|
|
||||||
option(E2D_BUILD_WITH_SANITIZER "Build with sanitizer" OFF)
|
option(E2D_BUILD_WITH_ASAN "Build with address sanitizer" OFF)
|
||||||
if(E2D_BUILD_WITH_SANITIZER AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
if(E2D_BUILD_WITH_ASAN AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||||
add_definitions(-DE2D_BUILD_WITH_SANITIZER)
|
add_definitions(-DE2D_BUILD_WITH_ASAN)
|
||||||
set(E2D_SANITIZER_FLAGS "-fno-omit-frame-pointer -fsanitize=address")
|
set(E2D_SANITIZER_FLAGS "-fno-omit-frame-pointer -fsanitize=address")
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
||||||
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
option(E2D_BUILD_WITH_UBSAN "Build with undefined sanitizer" OFF)
|
||||||
# global compiling mode
|
if(E2D_BUILD_WITH_UBSAN AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||||
#
|
add_definitions(-DE2D_BUILD_WITH_UBSAN)
|
||||||
|
set(E2D_SANITIZER_FLAGS "-fsanitize=undefined")
|
||||||
if(MSVC)
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
||||||
add_definitions(/MP)
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
||||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${E2D_SANITIZER_FLAGS}")
|
||||||
endif(MSVC)
|
endif()
|
||||||
|
|
||||||
#
|
#
|
||||||
# e2d sources
|
# e2d sources
|
||||||
@@ -102,25 +95,17 @@ file(GLOB_RECURSE E2D_3RDPARTY
|
|||||||
# e2d external 3rd party
|
# e2d external 3rd party
|
||||||
#
|
#
|
||||||
|
|
||||||
find_package(OpenGL REQUIRED)
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
find_library(Cocoa Cocoa)
|
|
||||||
find_library(IOKit IOKit)
|
|
||||||
find_library(CoreVideo CoreVideo)
|
|
||||||
find_library(Foundation Foundation)
|
|
||||||
endif(APPLE)
|
|
||||||
|
|
||||||
set(glew-cmake_BUILD_SHARED OFF CACHE BOOL "" FORCE)
|
|
||||||
set(glew-cmake_BUILD_MULTI_CONTEXT OFF CACHE BOOL "" FORCE)
|
|
||||||
add_subdirectory(modules/glew)
|
|
||||||
|
|
||||||
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
|
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
|
||||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
||||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||||
add_subdirectory(modules/glfw)
|
add_subdirectory(modules/glfw)
|
||||||
|
set_target_properties(glfw PROPERTIES FOLDER modules)
|
||||||
|
|
||||||
|
set(glew-cmake_BUILD_SHARED OFF CACHE BOOL "" FORCE)
|
||||||
|
set(glew-cmake_BUILD_MULTI_CONTEXT OFF CACHE BOOL "" FORCE)
|
||||||
|
add_subdirectory(modules/glew)
|
||||||
|
set_target_properties(libglew_static PROPERTIES FOLDER modules)
|
||||||
|
|
||||||
#
|
#
|
||||||
# e2d library target
|
# e2d library target
|
||||||
@@ -136,58 +121,34 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES
|
|||||||
${E2D_SOURCES}
|
${E2D_SOURCES}
|
||||||
${E2D_3RDPARTY})
|
${E2D_3RDPARTY})
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME}
|
target_link_libraries(${PROJECT_NAME}
|
||||||
PRIVATE headers
|
PRIVATE glfw
|
||||||
PRIVATE sources
|
PRIVATE libglew_static
|
||||||
PRIVATE modules/glew/include
|
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:winmm.lib>)
|
||||||
PRIVATE modules/glfw/include)
|
|
||||||
|
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
target_include_directories(${PROJECT_NAME}
|
||||||
CXX_STANDARD 14
|
PUBLIC headers
|
||||||
CXX_STANDARD_REQUIRED YES
|
PRIVATE sources)
|
||||||
CXX_EXTENSIONS NO)
|
|
||||||
|
|
||||||
target_compile_options(${PROJECT_NAME}
|
target_compile_options(${PROJECT_NAME}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<$<CXX_COMPILER_ID:MSVC>:
|
$<$<CXX_COMPILER_ID:MSVC>:
|
||||||
/W4>
|
/W3 /MP>
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
|
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
|
||||||
-Wall -Wextra -Wpedantic>)
|
-Wall -Wextra -Wpedantic>
|
||||||
|
PRIVATE
|
||||||
|
$<$<PLATFORM_ID:Darwin>:
|
||||||
|
-Wno-deprecated-declarations>)
|
||||||
|
|
||||||
#
|
target_compile_features(${PROJECT_NAME}
|
||||||
# e2d public variables
|
PUBLIC cxx_std_14)
|
||||||
#
|
|
||||||
|
|
||||||
set(E2D_LIBRARIES
|
target_compile_definitions(${PROJECT_NAME}
|
||||||
enduro2d
|
PUBLIC
|
||||||
glfw
|
$<$<CXX_COMPILER_ID:MSVC>:
|
||||||
libglew_static
|
-D_CRT_SECURE_NO_WARNINGS
|
||||||
${OPENGL_gl_LIBRARY}
|
-D_SCL_SECURE_NO_WARNINGS>)
|
||||||
${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
list(APPEND E2D_LIBRARIES
|
|
||||||
${Cocoa}
|
|
||||||
${IOKit}
|
|
||||||
${CoreVideo}
|
|
||||||
${Foundation})
|
|
||||||
endif(APPLE)
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
list(APPEND E2D_LIBRARIES
|
|
||||||
winmm.lib)
|
|
||||||
endif(WIN32)
|
|
||||||
|
|
||||||
set(E2D_INCLUDE_DIRS
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/headers)
|
|
||||||
|
|
||||||
get_directory_property(E2D_PARENT_DIRECTORY
|
|
||||||
PARENT_DIRECTORY)
|
|
||||||
if(E2D_PARENT_DIRECTORY)
|
|
||||||
set(E2D_LIBRARIES ${E2D_LIBRARIES} PARENT_SCOPE)
|
|
||||||
set(E2D_INCLUDE_DIRS ${E2D_INCLUDE_DIRS} PARENT_SCOPE)
|
|
||||||
endif(E2D_PARENT_DIRECTORY)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# subdirectories
|
# subdirectories
|
||||||
|
|||||||
@@ -15,16 +15,9 @@ function(add_e2d_sample NAME)
|
|||||||
# executable
|
# executable
|
||||||
#
|
#
|
||||||
|
|
||||||
add_executable(${SAMPLE_NAME}
|
add_executable(${SAMPLE_NAME} ${SAMPLE_SOURCES})
|
||||||
${SAMPLE_SOURCES})
|
target_link_libraries(${SAMPLE_NAME} enduro2d)
|
||||||
target_link_libraries(${SAMPLE_NAME}
|
set_target_properties(${SAMPLE_NAME} PROPERTIES FOLDER samples)
|
||||||
${E2D_LIBRARIES})
|
|
||||||
target_include_directories(${SAMPLE_NAME}
|
|
||||||
PRIVATE ${E2D_INCLUDE_DIRS})
|
|
||||||
set_target_properties(${SAMPLE_NAME} PROPERTIES
|
|
||||||
CXX_STANDARD 14
|
|
||||||
CXX_STANDARD_REQUIRED YES
|
|
||||||
CXX_EXTENSIONS NO)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# resources
|
# resources
|
||||||
|
|||||||
@@ -15,16 +15,9 @@ function(add_e2d_tests NAME)
|
|||||||
# executable
|
# executable
|
||||||
#
|
#
|
||||||
|
|
||||||
add_executable(${TESTS_NAME}
|
add_executable(${TESTS_NAME} ${TESTS_SOURCES})
|
||||||
${TESTS_SOURCES})
|
target_link_libraries(${TESTS_NAME} enduro2d)
|
||||||
target_link_libraries(${TESTS_NAME}
|
set_target_properties(${TESTS_NAME} PROPERTIES FOLDER untests)
|
||||||
${E2D_LIBRARIES})
|
|
||||||
target_include_directories(${TESTS_NAME}
|
|
||||||
PRIVATE ${E2D_INCLUDE_DIRS})
|
|
||||||
set_target_properties(${TESTS_NAME} PROPERTIES
|
|
||||||
CXX_STANDARD 14
|
|
||||||
CXX_STANDARD_REQUIRED YES
|
|
||||||
CXX_EXTENSIONS NO)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# resources
|
# resources
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ TEST_CASE("buffer") {
|
|||||||
REQUIRE((std::memcmp(b1.data(), "hello world", 11) == 0 && b1.size() == 11));
|
REQUIRE((std::memcmp(b1.data(), "hello world", 11) == 0 && b1.size() == 11));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
#ifndef E2D_BUILD_WITH_SANITIZER
|
#ifndef E2D_BUILD_WITH_ASAN
|
||||||
const std::size_t msize = std::numeric_limits<std::size_t>::max();
|
const std::size_t msize = std::numeric_limits<std::size_t>::max();
|
||||||
REQUIRE_THROWS_AS(buffer(msize), std::bad_alloc);
|
REQUIRE_THROWS_AS(buffer(msize), std::bad_alloc);
|
||||||
REQUIRE_THROWS_AS(buffer(nullptr, msize), std::bad_alloc);
|
REQUIRE_THROWS_AS(buffer(nullptr, msize), std::bad_alloc);
|
||||||
|
|||||||
Reference in New Issue
Block a user