summaryrefslogtreecommitdiffstats
path: root/Tests/MacroTest
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/MacroTest')
-rw-r--r--Tests/MacroTest/CMakeLists.txt91
-rw-r--r--Tests/MacroTest/context.cmake10
-rw-r--r--Tests/MacroTest/macroTest.c7
3 files changed, 108 insertions, 0 deletions
diff --git a/Tests/MacroTest/CMakeLists.txt b/Tests/MacroTest/CMakeLists.txt
new file mode 100644
index 0000000..6c6dfb6
--- /dev/null
+++ b/Tests/MacroTest/CMakeLists.txt
@@ -0,0 +1,91 @@
+# a simple C only test case
+cmake_minimum_required (VERSION 2.6)
+project (MacroTest)
+
+macro(FAILED testname)
+ message(SEND_ERROR "${testname} failed ${ARGN}")
+endmacro()
+
+macro(PASS testname)
+ message("${testname} passed ${ARGN}")
+endmacro()
+
+# test ARGC
+macro(weird_name)
+ if("${ARGC}" EQUAL "3")
+ PASS("ARGC")
+ else()
+ FAILED("ARGC" "Got: ${ARGC}")
+ endif()
+endmacro()
+WeIrD_nAmE(a1 a2 a3)
+
+# test ARGN
+macro(test_argn_macro argument)
+ if("${ARGN}" EQUAL "3")
+ PASS("ARGN")
+ else()
+ FAILED("ARGN" "Got: ${ARGN}")
+ endif()
+endmacro()
+Test_Argn_Macro(ignored 3)
+
+# case test
+macro(strange_macro m)
+ set("${m}" strange_macro)
+endmacro()
+STRANGE_MACRO(var)
+set(second_var "second_var")
+if("x${var}" STREQUAL "xstrange_macro" AND "x${second_var}" STREQUAL "xsecond_var")
+ PASS("Case Test" "(${var} ${second_var})")
+else()
+ FAILED("Case test" "(${var} ${second_var})")
+endif()
+
+# test backing up command
+macro(ADD_EXECUTABLE exec)
+ _ADD_EXECUTABLE("mini${exec}" ${ARGN})
+endmacro()
+
+include(CheckCSourceCompiles)
+Check_C_Source_Compiles(
+"
+#include <stdio.h>
+#ifdef __CLASSIC_C__
+int main(){
+ int ac;
+ char*av[];
+#else
+int main(int ac, char*av[]){
+#endif
+ if(ac > 1000){return *av[0];}
+ return 0;
+}"
+SOME_CHECK)
+if(SOME_CHECK)
+ message("CheckCSourceCompiles works")
+else()
+ message(FATAL_ERROR "CheckCSourceCompiles does not work")
+endif()
+
+include(CheckCXXSourceCompiles)
+Check_CXX_Source_Compiles(
+"
+#include <stdio.h>
+int main(int ac, char*av[]){
+ if(ac > 1000){return *av[0];}
+ return 0;
+}"
+SOME_CHECK)
+if(SOME_CHECK)
+ message("CheckCXXSourceCompiles works")
+else()
+ message(FATAL_ERROR "CheckCXXSourceCompiles does not work")
+endif()
+
+add_executable(MacroTest macroTest.c)
+
+macro(GET_CURRENT_FILE var)
+ set(${var} ${CMAKE_CURRENT_LIST_FILE})
+endmacro()
+include(context.cmake)
diff --git a/Tests/MacroTest/context.cmake b/Tests/MacroTest/context.cmake
new file mode 100644
index 0000000..f7350d7
--- /dev/null
+++ b/Tests/MacroTest/context.cmake
@@ -0,0 +1,10 @@
+GET_CURRENT_FILE(current_file)
+if(NOT "${current_file}" STREQUAL "${CMAKE_CURRENT_LIST_FILE}")
+ message(FATAL_ERROR
+ "Macro file context is broken. Expected:\n"
+ " ${CMAKE_CURRENT_LIST_FILE}\n"
+ "but got:\n"
+ " ${current_file}\n"
+ "from the macro."
+ )
+endif()
diff --git a/Tests/MacroTest/macroTest.c b/Tests/MacroTest/macroTest.c
new file mode 100644
index 0000000..e0ced6a
--- /dev/null
+++ b/Tests/MacroTest/macroTest.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main(int argc, char* argv[])
+{
+ printf("Running command: %s with %d arguments\n", argv[0], argc);
+ return 0;
+}