From 949321762b65f2f35829cb1c141482d25092e8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 3 Jun 2018 22:54:01 +0200 Subject: [PATCH] Verify compilability of headers on Travis v2 Using approach described in https://github.com/OpenRCT2/OpenRCT2/pull/7369#issuecomment-393973857 with updates to ease readability and maintenance. Submitted as different PR, to keep history of the old approach. Supersedes #7369. --- src/openrct2/CMakeLists.txt | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/openrct2/CMakeLists.txt b/src/openrct2/CMakeLists.txt index 1d59906fa2..9235d29131 100644 --- a/src/openrct2/CMakeLists.txt +++ b/src/openrct2/CMakeLists.txt @@ -59,8 +59,8 @@ if (NOT DISABLE_TTF) endif () # Sources -file(GLOB_RECURSE OPENRCT2_CORE_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.cpp" - "${CMAKE_CURRENT_LIST_DIR}/*.h" +file(GLOB_RECURSE OPENRCT2_CORE_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.cpp") +file(GLOB_RECURSE OPENRCT2_CORE_HEADERS "${CMAKE_CURRENT_LIST_DIR}/*.h" "${CMAKE_CURRENT_LIST_DIR}/*.hpp") if (APPLE) file(GLOB_RECURSE OPENRCT2_CORE_MM_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.mm") @@ -179,3 +179,19 @@ if((X86 OR X86_64) AND NOT MSVC) set_source_files_properties(${CMAKE_CURRENT_LIST_DIR}/drawing/SSE41Drawing.cpp PROPERTIES COMPILE_FLAGS -msse4.1) set_source_files_properties(${CMAKE_CURRENT_LIST_DIR}/drawing/AVX2Drawing.cpp PROPERTIES COMPILE_FLAGS -mavx2) endif() + +# Add headers check to verify all headers carry their dependencies. +# Only valid for Clang for now: +# - GCC 8 does not support -Wno-pragma-once-outside-header +# - Other compilers status unknown +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + add_library(${PROJECT}-headers-check ${OPENRCT2_CORE_HEADERS}) + set_target_properties(${PROJECT}-headers-check PROPERTIES LINKER_LANGUAGE CXX) + set_source_files_properties(${OPENRCT2_CORE_HEADERS} PROPERTIES LANGUAGE CXX) + add_definitions("-x c++ -Wno-pragma-once-outside-header -Wno-unused-const-variable") + get_target_property(LIBOPENRCT2_INCLUDE_DIRS ${PROJECT} INCLUDE_DIRECTORIES) + set_target_properties(${PROJECT}-headers-check PROPERTIES INCLUDE_DIRECTORIES ${LIBOPENRCT2_INCLUDE_DIRS}) +else () + # Dummy target to ease invocation + add_custom_target(${PROJECT}-headers-check) +endif ()