mirror of
https://github.com/electronicarts/EASTL.git
synced 2026-01-18 17:21:19 +01:00
102 lines
4.7 KiB
CMake
102 lines
4.7 KiB
CMake
#-------------------------------------------------------------------------------------------
|
|
# Copyright (C) Electronic Arts Inc. All rights reserved.
|
|
#-------------------------------------------------------------------------------------------
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# CMake info
|
|
#-------------------------------------------------------------------------------------------
|
|
cmake_minimum_required(VERSION 3.1)
|
|
project(EASTLBenchmarks CXX)
|
|
include(CTest)
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Defines
|
|
#-------------------------------------------------------------------------------------------
|
|
add_definitions(-D_CHAR16T)
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Include directories
|
|
#-------------------------------------------------------------------------------------------
|
|
include_directories(source)
|
|
include_directories(../test/source)
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Compiler Flags
|
|
#-------------------------------------------------------------------------------------------
|
|
set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/../scripts/CMake")
|
|
include(CommonCppFlags)
|
|
|
|
# Libstdc++ calls new internally, since DLLs have no weak symbols, runtime symbol resolution fails and EASTL's new is not called.
|
|
# Linking against static libstdc++ fixes this.
|
|
# See https://github.com/electronicarts/EASTL/issues/40 for more info.
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND MINGW)
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -static-libstdc++")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} -static-libstdc++")
|
|
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -static-libstdc++")
|
|
endif()
|
|
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_BUILD_TYPE MATCHES "MinSizeRel" AND MINGW)
|
|
message(FATAL_ERROR "FIXME: MinSizeRel on MingW-w64's Clang fails to link.")
|
|
endif()
|
|
|
|
# The benchmark suite fails to compile if char8_t is enabled, so disable it.
|
|
if (EASTL_NO_CHAR8T_FLAG)
|
|
add_compile_options(${EASTL_NO_CHAR8T_FLAG})
|
|
endif()
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Source files
|
|
#-------------------------------------------------------------------------------------------
|
|
file(GLOB EASTLBENCHMARK_SOURCES "source/*.cpp")
|
|
file(GLOB EASTLTEST_SOURCES "../test/source/EASTLTestAllocator.cpp" "../test/source/EASTLTest.cpp")
|
|
file(GLOB EASTLBENCHMARK_HEADERS "source/*.h")
|
|
set(SOURCES ${EASTLBENCHMARK_SOURCES} ${EASTLTEST_SOURCES} ${EASTLBENCHMARK_HEADERS})
|
|
|
|
# include both source and headers in the files view in Visual Studio
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Header Files" FILES ${EASTLBENCHMARK_HEADERS})
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Defines
|
|
#-------------------------------------------------------------------------------------------
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
|
|
add_definitions(-DEASTL_THREAD_SUPPORT_AVAILABLE=0)
|
|
add_definitions(-DEASTL_OPENSOURCE=1)
|
|
add_definitions(-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS) # silence std::hash_map deprecation warnings
|
|
if (EASTL_STD_ITERATOR_CATEGORY_ENABLED)
|
|
add_definitions(-DEASTL_STD_ITERATOR_CATEGORY_ENABLED=1)
|
|
endif()
|
|
|
|
if(NOT EASTL_BUILD_TESTS)
|
|
add_subdirectory(../test/packages/EAStdC ../test/EAStdC)
|
|
add_subdirectory(../test/packages/EAAssert ../test/EAAssert)
|
|
add_subdirectory(../test/packages/EAThread ../test/EAThread)
|
|
add_subdirectory(../test/packages/EATest ../test/EATest)
|
|
add_subdirectory(../test/packages/EAMain ../test/EAMain)
|
|
endif()
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Executable definition
|
|
#-------------------------------------------------------------------------------------------
|
|
add_executable(EASTLBenchmarks ${SOURCES})
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
find_package(Threads REQUIRED)
|
|
|
|
set(EASTLBenchmark_Libraries
|
|
EABase
|
|
EAAssert
|
|
EAMain
|
|
EAThread
|
|
EAStdC
|
|
EASTL
|
|
EATest)
|
|
target_link_libraries(EASTLBenchmarks ${EASTLBenchmark_Libraries} Threads::Threads)
|
|
|
|
#-------------------------------------------------------------------------------------------
|
|
# Run Unit tests and verify the results.
|
|
#-------------------------------------------------------------------------------------------
|
|
add_test(EASTLBenchmarkRuns EASTLBenchmarks)
|
|
set_tests_properties (EASTLBenchmarkRuns PROPERTIES PASS_REGULAR_EXPRESSION "RETURNCODE=0")
|
|
|