Skip to content

Commit

Permalink
Use CMAKE_* variable to set default properties for issue #15
Browse files Browse the repository at this point in the history
  • Loading branch information
pfultz2 committed Nov 8, 2017
1 parent 3109db5 commit 38c3013
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 7 deletions.
17 changes: 12 additions & 5 deletions share/bcm/cmake/BCMProperties.cmake
Expand Up @@ -31,11 +31,18 @@ foreach(scope GLOBAL DIRECTORY TARGET)
endforeach()
# Set the default for these properties at global scope. If they are not set per target or
# whatever, the next highest scope will be looked up
set_property(GLOBAL PROPERTY CXX_EXCEPTIONS ON)
set_property(GLOBAL PROPERTY CXX_RTTI ON)
set_property(GLOBAL PROPERTY CXX_STATIC_RUNTIME OFF)
set_property(GLOBAL PROPERTY CXX_WARNINGS ON)
set_property(GLOBAL PROPERTY CXX_WARNINGS_AS_ERRORS OFF)
option(CMAKE_CXX_EXCEPTIONS ON)
option(CMAKE_CXX_RTTI ON)
option(CMAKE_CXX_STATIC_RUNTIME OFF)
option(CMAKE_CXX_WARNINGS ON)
option(CMAKE_CXX_WARNINGS_AS_ERRORS OFF)

set_property(GLOBAL PROPERTY CXX_EXCEPTIONS ${CMAKE_CXX_EXCEPTIONS})
set_property(GLOBAL PROPERTY CXX_RTTI ${CMAKE_CXX_RTTI})
set_property(GLOBAL PROPERTY CXX_STATIC_RUNTIME ${CMAKE_CXX_STATIC_RUNTIME})
set_property(GLOBAL PROPERTY CXX_WARNINGS ${CMAKE_CXX_WARNINGS})
set_property(GLOBAL PROPERTY CXX_WARNINGS_AS_ERRORS ${CMAKE_CXX_WARNINGS_AS_ERRORS})

if(MSVC)
# Purge unconditional use of /MDd, /MD and /EHsc.
foreach(flag
Expand Down
12 changes: 12 additions & 0 deletions test/checkprop/CMakeLists.txt
@@ -0,0 +1,12 @@
cmake_minimum_required (VERSION 3.5)
project(checkprop)

find_package(BCM)

include(BCMProperties)

get_property(CURRENT_PROP_VAL GLOBAL PROPERTY ${PROP_NAME})

if(NOT "${CURRENT_PROP_VAL}" STREQUAL "${PROP_VALUE}")
message(FATAL_ERROR "Property ${PROP_NAME} set to ${CURRENT_PROP_VAL}, expected ${PROP_VALUE}")
endif()
15 changes: 15 additions & 0 deletions test/pass/defaultproperties.cmake
@@ -0,0 +1,15 @@
macro(check_prop PROP_NAME VAR_NAME PROP_VALUE)
build_dir(${TEST_DIR}/checkprop CMAKE_ARGS
-D${VAR_NAME}=${PROP_VALUE}
-DPROP_NAME=${PROP_NAME}
-DPROP_VALUE=${PROP_VALUE})
endmacro()

foreach(VALUE On Off 1 0)
check_prop(CXX_EXCEPTIONS CMAKE_CXX_EXCEPTIONS ${VALUE})
check_prop(CXX_RTTI CMAKE_CXX_RTTI ${VALUE})
check_prop(CXX_STATIC_RUNTIME CMAKE_CXX_STATIC_RUNTIME ${VALUE})
check_prop(CXX_WARNINGS CMAKE_CXX_WARNINGS ${VALUE})
check_prop(CXX_WARNINGS_AS_ERRORS CMAKE_CXX_WARNINGS_AS_ERRORS ${VALUE})
endforeach()
check_prop(CXX_WARNINGS CMAKE_CXX_WARNINGS ALL)
10 changes: 8 additions & 2 deletions test/test.cmake
Expand Up @@ -41,7 +41,7 @@ function(test_exec)
endfunction()

function(install_dir DIR)
set(options)
set(options NO_INSTALL)
set(oneValueArgs)
set(multiValueArgs CMAKE_ARGS TARGETS)

Expand All @@ -68,11 +68,17 @@ function(install_dir DIR)
foreach(TARGET ${PARSE_TARGETS})
test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR} --target ${TARGET})
endforeach()
test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR} --target install)
if(NOT PARSE_NO_INSTALL)
test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR} --target install)
endif()

file(REMOVE_RECURSE ${BUILD_DIR})
endfunction()

function(build_dir DIR)
install_dir(${DIR} ${ARGN} NO_INSTALL)
endfunction()

function(test_check_pkgconfig)
set(options)
set(oneValueArgs NAME HEADER)
Expand Down

0 comments on commit 38c3013

Please sign in to comment.