blob: 2b8d180707a00b4068d8b97a5b3e149eae5bdd27 [file]
enable_language(C)
function(assert_prop_undef tgt prop)
unset(actual_value)
get_property(actual_value TARGET ${tgt} PROPERTY ${prop})
if(DEFINED actual_value)
message(SEND_ERROR "${prop} should be undefined, actual value:\n ${actual_value}")
endif()
endfunction()
function(assert_prop_eq tgt prop value)
unset(actual_value)
get_property(actual_value TARGET ${tgt} PROPERTY ${prop})
if(NOT actual_value STREQUAL value)
message(SEND_ERROR "Expected value of ${prop}:\n ${value}\nActual value:\n ${actual_value}")
endif()
endfunction()
add_library(lib1 STATIC)
assert_prop_eq(lib1 SOURCE_SETS "")
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "")
target_sources(lib1 PUBLIC FILE_SET a TYPE SOURCES BASE_DIRS "." FILES lib1.c lib2.c)
assert_prop_eq(lib1 SOURCE_SETS "a")
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "a")
assert_prop_eq(lib1 SOURCE_DIRS_a "${CMAKE_CURRENT_SOURCE_DIR}/.")
assert_prop_eq(lib1 SOURCE_SET_a "${CMAKE_CURRENT_SOURCE_DIR}/lib1.c;${CMAKE_CURRENT_SOURCE_DIR}/lib2.c")
target_sources(lib1 PUBLIC FILE_SET a FILES lib3.c)
assert_prop_eq(lib1 SOURCE_SETS "a")
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "a")
assert_prop_eq(lib1 SOURCE_DIRS_a "${CMAKE_CURRENT_SOURCE_DIR}/.")
assert_prop_eq(lib1 SOURCE_SET_a "${CMAKE_CURRENT_SOURCE_DIR}/lib1.c;${CMAKE_CURRENT_SOURCE_DIR}/lib2.c;${CMAKE_CURRENT_SOURCE_DIR}/lib3.c")
target_sources(lib1 PRIVATE FILE_SET b TYPE SOURCES BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/dir" FILES dir/dir.c)
assert_prop_eq(lib1 SOURCE_SETS "a;b")
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "a")
assert_prop_eq(lib1 SOURCE_DIRS_b "${CMAKE_CURRENT_SOURCE_DIR}/dir")
assert_prop_eq(lib1 SOURCE_SET_b "${CMAKE_CURRENT_SOURCE_DIR}/dir/dir.c")
target_sources(lib1 INTERFACE FILE_SET c TYPE SOURCES FILE_SET d TYPE SOURCES)
assert_prop_eq(lib1 SOURCE_SETS "a;b")
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "a;c;d")
assert_prop_eq(lib1 SOURCE_DIRS_c "${CMAKE_CURRENT_SOURCE_DIR}")
assert_prop_eq(lib1 SOURCE_SET_c "")
assert_prop_eq(lib1 SOURCE_DIRS_d "${CMAKE_CURRENT_SOURCE_DIR}")
assert_prop_eq(lib1 SOURCE_SET_d "")
target_sources(lib1 PUBLIC FILE_SET SOURCES BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES lib4.c)
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "a;c;d;SOURCES")
assert_prop_eq(lib1 SOURCE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
assert_prop_eq(lib1 SOURCE_SET "${CMAKE_CURRENT_SOURCE_DIR}/lib4.c")
assert_prop_eq(lib1 SOURCE_DIRS_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}")
assert_prop_eq(lib1 SOURCE_SET_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/lib4.c")
target_sources(lib1 PUBLIC FILE_SET SOURCES FILES lib5.c)
assert_prop_eq(lib1 INTERFACE_SOURCE_SETS "a;c;d;SOURCES")
assert_prop_eq(lib1 SOURCE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
assert_prop_eq(lib1 SOURCE_SET "${CMAKE_CURRENT_SOURCE_DIR}/lib4.c;${CMAKE_CURRENT_SOURCE_DIR}/lib5.c")
assert_prop_eq(lib1 SOURCE_DIRS_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}")
assert_prop_eq(lib1 SOURCE_SET_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/lib4.c;${CMAKE_CURRENT_SOURCE_DIR}/lib5.c")