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
This commit is contained in:
parent
25a425ecf0
commit
ae47302529
|
@ -722,14 +722,16 @@ IF(BUILD_TESTING)
|
||||||
ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
|
ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
|
||||||
ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
|
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(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)
|
FIND_PROGRAM(SDCC_EXECUTABLE sdcc)
|
||||||
IF(SDCC_EXECUTABLE)
|
IF(SDCC_EXECUTABLE)
|
||||||
ADD_TEST(SimpleCOnly ${CMAKE_CTEST_COMMAND}
|
ADD_TEST(SimpleCOnly_sdcc ${CMAKE_CTEST_COMMAND}
|
||||||
--build-and-test
|
--build-and-test
|
||||||
"${CMake_SOURCE_DIR}/Tests/SimpleCOnly"
|
"${CMake_SOURCE_DIR}/Tests/SimpleCOnly"
|
||||||
"${CMake_BINARY_DIR}/Tests/SimpleCOnly"
|
"${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc"
|
||||||
--build-generator ${CMAKE_TEST_GENERATOR}
|
--build-generator ${CMAKE_TEST_GENERATOR}
|
||||||
--build-project SimpleC
|
--build-project SimpleC
|
||||||
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
|
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
|
||||||
|
@ -737,9 +739,25 @@ IF(BUILD_TESTING)
|
||||||
"-DCMAKE_SYSTEM_NAME=Generic"
|
"-DCMAKE_SYSTEM_NAME=Generic"
|
||||||
"-DCMAKE_C_COMPILER=${SDCC_EXECUTABLE}")
|
"-DCMAKE_C_COMPILER=${SDCC_EXECUTABLE}")
|
||||||
ENDIF(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")
|
ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
|
||||||
|
|
||||||
|
|
||||||
IF(BUILD_WXDialog AND wxWidgets_CONFIG_EXECUTABLE)
|
IF(BUILD_WXDialog AND wxWidgets_CONFIG_EXECUTABLE)
|
||||||
# Will be set if the WX gui is on
|
# Will be set if the WX gui is on
|
||||||
ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND}
|
ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND}
|
||||||
|
|
|
@ -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)
|
|
@ -0,0 +1 @@
|
||||||
|
int bar() {return 5;}
|
|
@ -0,0 +1 @@
|
||||||
|
int foo() { return 12;}
|
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue