aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt94
1 files changed, 57 insertions, 37 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8075f23..f868d34 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,61 +1,81 @@
cmake_minimum_required(VERSION 2.8)
project(EntityX)
-include_directories(. ./c++11)
+include_directories(${CMAKE_CURRENT_LIST_DIR})
+include(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
# C++11 feature checks
include(CheckCXX11Features.cmake)
+# Misc features
+CHECK_INCLUDE_FILE("stdint.h" CMAKE_HAVE_STDINT_H)
-MACRO(REQUIRE FEATURE_NAME MESSAGE_STRING)
- if (NOT DEFINED ${FEATURE_NAME})
- message(FATAL_ERROR ${MESSAGE_STRING})
+macro(require FEATURE_NAME MESSAGE_STRING)
+ if (NOT ${${FEATURE_NAME}})
+ message(FATAL_ERROR "${MESSAGE_STRING} required -- ${${FEATURE_NAME}}")
+ else()
+ message("-- ${MESSAGE_STRING} found")
endif()
-ENDMACRO(REQUIRE)
+endmacro(require)
-require(HAS_CXX11_AUTO "C++11 auto support is required")
-require(HAS_CXX11_NULLPTR "C++11 nullptr support is required")
-require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue reference support is required")
-require(HAS_CXX11_CSTDINT_H "C++11 stdint support is required")
-require(HAS_CXX11_VARIADIC_TEMPLATES "C++11 variadic templates required")
+macro(create_test TARGET_NAME SOURCE)
+ add_executable(${TARGET_NAME} ${SOURCE})
+ target_link_libraries(
+ ${TARGET_NAME}
+ entityx
+ glog
+ ${Boost_LIBRARIES}
+ ${GTEST_BOTH_LIBRARIES}
+ )
+ add_test(${TARGET_NAME} ${TARGET_NAME})
+endmacro()
+
+message("-- Checking C++ features")
+require(HAS_CXX11_AUTO "C++11 auto support")
+require(HAS_CXX11_NULLPTR "C++11 nullptr support")
+require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue reference support")
+#require(HAS_CXX11_CSTDINT_H "C++11 stdint support")
+require(HAS_CXX11_VARIADIC_TEMPLATES "C++11 variadic templates")
+require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue references")
+
+message("-- Checking misc features")
+require(CMAKE_HAVE_STDINT_H "stdint.h")
enable_testing()
find_package(GTest REQUIRED)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
-#find_package(Boost REQUIRED COMPONENTS)
-find_package(Boost 1.36.0 REQUIRED COMPONENTS signals)
-
-set(CMAKE_CXX_FLAGS "-ansi -pedantic -Werror -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-variable -std=c++11")
-set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
-set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
-set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+find_package(Boost 1.48.0 REQUIRED COMPONENTS signals)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Werror -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-variable -std=c++11")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g")
+set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g")
-include_directories(
- ${Boost_INCLUDE_DIR}
- ${GTest_INCLUDE_DIR}
- )
-add_executable(
- entityx_test
- entityx/Components_test.cc
- entityx/Entity_test.cc
- entityx/Event_test.cc
- entityx/System_test.cc
- )
-target_link_libraries(
- entityx_test
- entityx
- glog
- ${Boost_LIBRARIES}
- ${GTEST_BOTH_LIBRARIES}
- )
-add_test(AllTestsInentityx_test entityx_test)
add_library(
entityx
+ STATIC SHARED
entityx/Components.cc
entityx/System.cc
entityx/Event.cc
entityx/Entity.cc
entityx/World.cc
)
+
+include_directories(
+ ${Boost_INCLUDE_DIR}
+ ${GTest_INCLUDE_DIR}
+ )
+
+create_test(entity_test entityx/Entity_test.cc)
+create_test(component_test entityx/Components_test.cc)
+create_test(event_test entityx/Event_test.cc)
+create_test(system_test entityx/System_test.cc)
+
+file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/entityx/*.h")
+install(FILES ${headers} DESTINATION "include/entityx")
+
+install(TARGETS entityx
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)