summaryrefslogtreecommitdiffstats
path: root/Tests/CompileDefinitions/compiletest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/CompileDefinitions/compiletest.cpp')
-rw-r--r--Tests/CompileDefinitions/compiletest.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/Tests/CompileDefinitions/compiletest.cpp b/Tests/CompileDefinitions/compiletest.cpp
new file mode 100644
index 0000000..640e7cf
--- /dev/null
+++ b/Tests/CompileDefinitions/compiletest.cpp
@@ -0,0 +1,112 @@
+
+#ifndef CMAKE_IS_FUN
+#error Expect CMAKE_IS_FUN definition
+#endif
+
+#if CMAKE_IS != Fun
+#error Expect CMAKE_IS=Fun definition
+#endif
+
+template <bool test>
+struct CMakeStaticAssert;
+
+template <>
+struct CMakeStaticAssert<true>
+{
+};
+
+static const char fun_string[] = CMAKE_IS_;
+#ifndef NO_SPACES_IN_DEFINE_VALUES
+static const char very_fun_string[] = CMAKE_IS_REALLY;
+#endif
+
+enum
+{
+ StringLiteralTest1 =
+ sizeof(CMakeStaticAssert<sizeof(CMAKE_IS_) == sizeof("Fun")>),
+#ifndef NO_SPACES_IN_DEFINE_VALUES
+ StringLiteralTest2 =
+ sizeof(CMakeStaticAssert<sizeof(CMAKE_IS_REALLY) == sizeof("Very Fun")>),
+#endif
+#ifdef TEST_GENERATOR_EXPRESSIONS
+ StringLiteralTest3 =
+ sizeof(CMakeStaticAssert<sizeof(LETTER_LIST1) == sizeof("A,B,C,D")>),
+ StringLiteralTest4 =
+ sizeof(CMakeStaticAssert<sizeof(LETTER_LIST2) == sizeof("A,,B,,C,,D")>),
+ StringLiteralTest5 =
+ sizeof(CMakeStaticAssert<sizeof(LETTER_LIST3) == sizeof("A,-B,-C,-D")>),
+ StringLiteralTest6 =
+ sizeof(CMakeStaticAssert<sizeof(LETTER_LIST4) == sizeof("A-,-B-,-C-,-D")>),
+ StringLiteralTest7 =
+ sizeof(CMakeStaticAssert<sizeof(LETTER_LIST5) == sizeof("A-,B-,C-,D")>)
+#endif
+};
+
+#ifdef TEST_GENERATOR_EXPRESSIONS
+#ifndef CMAKE_IS_DECLARATIVE
+#error Expect declarative definition
+#endif
+#ifdef GE_NOT_DEFINED
+#error Expect not defined generator expression
+#endif
+
+#ifndef ARGUMENT
+#error Expected define expanded from list
+#endif
+#ifndef LIST
+#error Expected define expanded from list
+#endif
+
+#ifndef PREFIX_DEF1
+#error Expect PREFIX_DEF1
+#endif
+
+#ifndef PREFIX_DEF2
+#error Expect PREFIX_DEF2
+#endif
+
+#ifndef LINK_CXX_DEFINE
+#error Expected LINK_CXX_DEFINE
+#endif
+#ifndef LINK_LANGUAGE_IS_CXX
+#error Expected LINK_LANGUAGE_IS_CXX
+#endif
+
+#ifdef LINK_C_DEFINE
+#error Unexpected LINK_C_DEFINE
+#endif
+#ifdef LINK_LANGUAGE_IS_C
+#error Unexpected LINK_LANGUAGE_IS_C
+#endif
+
+// TEST_GENERATOR_EXPRESSIONS
+#endif
+
+#ifndef BUILD_IS_DEBUG
+#error "BUILD_IS_DEBUG not defined!"
+#endif
+#ifndef BUILD_IS_NOT_DEBUG
+#error "BUILD_IS_NOT_DEBUG not defined!"
+#endif
+
+// Check per-config definitions.
+#ifdef TEST_CONFIG_DEBUG
+#if !BUILD_IS_DEBUG
+#error "BUILD_IS_DEBUG false with TEST_CONFIG_DEBUG!"
+#endif
+#if BUILD_IS_NOT_DEBUG
+#error "BUILD_IS_NOT_DEBUG true with TEST_CONFIG_DEBUG!"
+#endif
+#else
+#if BUILD_IS_DEBUG
+#error "BUILD_IS_DEBUG true without TEST_CONFIG_DEBUG!"
+#endif
+#if !BUILD_IS_NOT_DEBUG
+#error "BUILD_IS_NOT_DEBUG false without TEST_CONFIG_DEBUG!"
+#endif
+#endif
+
+int main(int argc, char** argv)
+{
+ return 0;
+}