Browse Source

ENH: add a SimpleCOnly test, this is needed e.g. for testing sdcc since this
doesn't support C++ and also doesn't have a printf() implementation by
default
-add a test for mingw cross compiler

Alex

Alexander Neundorf 18 years ago
parent
commit
ae47302529

+ 22 - 4
Tests/CMakeLists.txt

@@ -722,14 +722,16 @@ IF(BUILD_TESTING)
     ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
   ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
 
-  # if it's a makefile based generator and sdcc is found, build the SimpleCOnly project with sdcc
+  # add some cross compiler tests, for now only with makefile based generators
   IF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
+
+    # if sdcc is found, build the SimpleCOnly project with sdcc
     FIND_PROGRAM(SDCC_EXECUTABLE sdcc)
     IF(SDCC_EXECUTABLE)
-      ADD_TEST(SimpleCOnly ${CMAKE_CTEST_COMMAND}
+      ADD_TEST(SimpleCOnly_sdcc ${CMAKE_CTEST_COMMAND}
         --build-and-test
         "${CMake_SOURCE_DIR}/Tests/SimpleCOnly"
-        "${CMake_BINARY_DIR}/Tests/SimpleCOnly"
+        "${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc"
         --build-generator ${CMAKE_TEST_GENERATOR}
         --build-project SimpleC
         --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
@@ -737,9 +739,25 @@ IF(BUILD_TESTING)
         "-DCMAKE_SYSTEM_NAME=Generic"
         "-DCMAKE_C_COMPILER=${SDCC_EXECUTABLE}")
     ENDIF(SDCC_EXECUTABLE)
+    
+    
+    FIND_PROGRAM(MINGW_LINUX2WIN_EXECUTABLE i586-mingw32msvc-gcc)
+    IF(MINGW_LINUX2WIN_EXECUTABLE)
+      ADD_TEST(Simple_Mingw_Linux2Win ${CMAKE_CTEST_COMMAND}
+        --build-and-test
+        "${CMake_SOURCE_DIR}/Tests/Simple"
+        "${CMake_BINARY_DIR}/Tests/Simple_Mingw_Linux2Win"
+        --build-generator ${CMAKE_TEST_GENERATOR}
+        --build-project Simple
+        --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
+        --build-options
+        "-DCMAKE_SYSTEM_NAME=Windows"
+        "-DCMAKE_C_COMPILER=${MINGW_LINUX2WIN_EXECUTABLE}")
+    ENDIF(MINGW_LINUX2WIN_EXECUTABLE)
+    
+    
   ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
 
-
   IF(BUILD_WXDialog AND wxWidgets_CONFIG_EXECUTABLE)
     # Will be set if the WX gui is on
     ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND}

+ 17 - 0
Tests/SimpleCOnly/CMakeLists.txt

@@ -0,0 +1,17 @@
+# this enables only C, i.e. disables C++
+project(SimpleCOnly C)
+
+add_library(SimpleCLib STATIC bar.c foo.c)
+
+add_executable(SimpleC main.c)
+target_link_libraries(SimpleC SimpleCLib)
+
+# and some check, just to make sure it works:
+include(CheckTypeSize)
+check_type_size(float SIZE_FLOAT)
+message(STATUS "sizeof(float): ${SIZE_FLOAT}")
+
+# make sure optimized libs are not used by debug builds
+if(CMAKE_BUILD_TYPE MATCHES Debug)
+  target_link_libraries(Simple optimized c:/not/here.lib )
+endif(CMAKE_BUILD_TYPE MATCHES Debug)

+ 1 - 0
Tests/SimpleCOnly/bar.c

@@ -0,0 +1 @@
+int bar() {return 5;}

+ 1 - 0
Tests/SimpleCOnly/foo.c

@@ -0,0 +1 @@
+int foo() { return 12;}

+ 12 - 0
Tests/SimpleCOnly/main.c

@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+extern int foo();
+extern int bar();
+
+int main() 
+{
+   int i=foo();
+   int k=bar();
+   i=i*k;
+   return i;
+}