diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index e104dbdd4..461e1b607 100644 --- a/Tests/CMakeLists.txt +++ b/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} diff --git a/Tests/SimpleCOnly/CMakeLists.txt b/Tests/SimpleCOnly/CMakeLists.txt new file mode 100644 index 000000000..d0ed651b1 --- /dev/null +++ b/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) diff --git a/Tests/SimpleCOnly/bar.c b/Tests/SimpleCOnly/bar.c new file mode 100644 index 000000000..5d8eac09f --- /dev/null +++ b/Tests/SimpleCOnly/bar.c @@ -0,0 +1 @@ +int bar() {return 5;} diff --git a/Tests/SimpleCOnly/foo.c b/Tests/SimpleCOnly/foo.c new file mode 100644 index 000000000..b8cdea427 --- /dev/null +++ b/Tests/SimpleCOnly/foo.c @@ -0,0 +1 @@ +int foo() { return 12;} diff --git a/Tests/SimpleCOnly/main.c b/Tests/SimpleCOnly/main.c new file mode 100644 index 000000000..e4df685cb --- /dev/null +++ b/Tests/SimpleCOnly/main.c @@ -0,0 +1,12 @@ +#include + +extern int foo(); +extern int bar(); + +int main() +{ + int i=foo(); + int k=bar(); + i=i*k; + return i; +}