From 915c76ded744c0f5f151402b9fa69f3fd8452573 Mon Sep 17 00:00:00 2001 From: MyungJoo Ham Date: Wed, 11 Oct 2017 15:16:57 +0900 Subject: Imported Upstream version 3.9.4 --- Tests/CompatibleInterface/CMakeLists.txt | 50 ++++++++++++++++++++++++++++++-- Tests/CompatibleInterface/bar.cpp | 7 +++++ Tests/CompatibleInterface/foo.cpp | 4 +++ Tests/CompatibleInterface/main.cpp | 28 ++++++++++++++++-- 4 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 Tests/CompatibleInterface/bar.cpp create mode 100644 Tests/CompatibleInterface/foo.cpp (limited to 'Tests/CompatibleInterface') diff --git a/Tests/CompatibleInterface/CMakeLists.txt b/Tests/CompatibleInterface/CMakeLists.txt index ae1d2fa43..668a97b14 100644 --- a/Tests/CompatibleInterface/CMakeLists.txt +++ b/Tests/CompatibleInterface/CMakeLists.txt @@ -1,12 +1,12 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.0) project(CompatibleInterface) include(GenerateExportHeader) set(CMAKE_INCLUDE_CURRENT_DIR ON) -add_library(iface1 empty.cpp) +add_library(iface1 INTERFACE) set_property(TARGET iface1 APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL BOOL_PROP1 @@ -20,19 +20,59 @@ set_property(TARGET iface1 APPEND PROPERTY STRING_PROP2 STRING_PROP3 ) +set_property(TARGET iface1 APPEND PROPERTY + COMPATIBLE_INTERFACE_NUMBER_MIN + NUMBER_MIN_PROP1 + NUMBER_MIN_PROP2 + NUMBER_MIN_PROP3 + NUMBER_MIN_PROP4 +) +set_property(TARGET iface1 APPEND PROPERTY + COMPATIBLE_INTERFACE_NUMBER_MAX + NUMBER_MAX_PROP1 + NUMBER_MAX_PROP2 +) + +set(CMAKE_DEBUG_TARGET_PROPERTIES + BOOL_PROP1 BOOL_PROP2 BOOL_PROP3 BOOL_PROP4 + STRING_PROP1 STRING_PROP2 STRING_PROP3 + NUMBER_MIN_PROP1 NUMBER_MIN_PROP2 NUMBER_MIN_PROP3 NUMBER_MIN_PROP4 + NUMBER_MAX_PROP1 NUMBER_MAX_PROP2 +) set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP1 ON) set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP2 ON) set_property(TARGET iface1 PROPERTY INTERFACE_STRING_PROP1 prop1) set_property(TARGET iface1 PROPERTY INTERFACE_STRING_PROP2 prop2) +set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MIN_PROP1 100) +set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MIN_PROP2 200) +set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MIN_PROP3 0x10) +set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MIN_PROP4 0x10) +set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MAX_PROP1 100) +set_property(TARGET iface1 PROPERTY INTERFACE_NUMBER_MAX_PROP2 200) add_executable(CompatibleInterface main.cpp) target_link_libraries(CompatibleInterface iface1) +add_library(foo STATIC foo.cpp) +add_library(bar SHARED bar.cpp) +set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SOMEPROP) +set_property(TARGET foo PROPERTY INTERFACE_SOMEPROP ON) +# Use LINK_ONLY to suppress usage requirements and allow the check to pass. +set_property(TARGET bar PROPERTY INTERFACE_LINK_LIBRARIES $) +set_property(TARGET CompatibleInterface PROPERTY SOMEPROP OFF) +target_link_libraries(CompatibleInterface bar) + set_property(TARGET CompatibleInterface PROPERTY BOOL_PROP2 ON) set_property(TARGET CompatibleInterface PROPERTY BOOL_PROP3 ON) set_property(TARGET CompatibleInterface PROPERTY STRING_PROP2 prop2) set_property(TARGET CompatibleInterface PROPERTY STRING_PROP3 prop3) +set_property(TARGET CompatibleInterface PROPERTY NUMBER_MIN_PROP1 50) +set_property(TARGET CompatibleInterface PROPERTY NUMBER_MIN_PROP2 250) +set_property(TARGET CompatibleInterface PROPERTY NUMBER_MIN_PROP3 0xa) +set_property(TARGET CompatibleInterface PROPERTY NUMBER_MIN_PROP4 0x1A) +set_property(TARGET CompatibleInterface PROPERTY NUMBER_MAX_PROP1 50) +set_property(TARGET CompatibleInterface PROPERTY NUMBER_MAX_PROP2 250) target_compile_definitions(CompatibleInterface PRIVATE @@ -42,6 +82,12 @@ target_compile_definitions(CompatibleInterface $<$,prop1>:STRING_PROP1> $<$,prop2>:STRING_PROP2> $<$,prop3>:STRING_PROP3> + $<$,50>:NUMBER_MIN_PROP1=50> + $<$,200>:NUMBER_MIN_PROP2=200> + $<$,0xA>:NUMBER_MIN_PROP3=0xA> + $<$,0x10>:NUMBER_MIN_PROP4=0x10> + $<$,100>:NUMBER_MAX_PROP1=100> + $<$,250>:NUMBER_MAX_PROP2=250> ) diff --git a/Tests/CompatibleInterface/bar.cpp b/Tests/CompatibleInterface/bar.cpp new file mode 100644 index 000000000..69b16c35e --- /dev/null +++ b/Tests/CompatibleInterface/bar.cpp @@ -0,0 +1,7 @@ +#ifdef _WIN32 +__declspec(dllexport) +#endif + int bar() +{ + return 0; +} diff --git a/Tests/CompatibleInterface/foo.cpp b/Tests/CompatibleInterface/foo.cpp new file mode 100644 index 000000000..e05eb7e69 --- /dev/null +++ b/Tests/CompatibleInterface/foo.cpp @@ -0,0 +1,4 @@ +int foo() +{ + return 0; +} diff --git a/Tests/CompatibleInterface/main.cpp b/Tests/CompatibleInterface/main.cpp index f5e6e3891..93723afa0 100644 --- a/Tests/CompatibleInterface/main.cpp +++ b/Tests/CompatibleInterface/main.cpp @@ -23,10 +23,34 @@ #error Expected STRING_PROP3 #endif +template +struct CMakeStaticAssert; + +template <> +struct CMakeStaticAssert +{ +}; + +enum +{ + NumericMaxTest1 = sizeof(CMakeStaticAssert), + NumericMaxTest2 = sizeof(CMakeStaticAssert), + NumericMinTest1 = sizeof(CMakeStaticAssert), + NumericMinTest2 = sizeof(CMakeStaticAssert), + NumericMinTest3 = sizeof(CMakeStaticAssert), + NumericMinTest4 = sizeof(CMakeStaticAssert) +}; + #include "iface2.h" -int main(int argc, char **argv) +int foo(); +#ifdef _WIN32 +__declspec(dllimport) +#endif + int bar(); + +int main(int argc, char** argv) { Iface2 if2; - return if2.foo(); + return if2.foo() + foo() + bar(); } -- cgit v1.2.3