clean up cmake config

This commit is contained in:
2019-05-05 14:00:54 +07:00
parent e0c98dfac2
commit 50de1cd6e0
4 changed files with 46 additions and 99 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);