aboutsummaryrefslogtreecommitdiff
path: root/benchmark/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark/CMakeLists.txt')
-rw-r--r--benchmark/CMakeLists.txt93
1 files changed, 93 insertions, 0 deletions
diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt
new file mode 100644
index 0000000..94bc971
--- /dev/null
+++ b/benchmark/CMakeLists.txt
@@ -0,0 +1,93 @@
+#-------------------------------------------------------------------------------------------
+# 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" "../test/source/EASTLTestAllocator.cpp" "../test/source/EASTLTest.cpp")
+set(SOURCES ${EASTLBENCHMARK_SOURCES})
+
+#-------------------------------------------------------------------------------------------
+# 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(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 ${EASTLBENCHMARK_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")
+