Commit 8dc6db47 authored by Bill Hoffman's avatar Bill Hoffman
Browse files

ENH: add new test to make sure c and cxx flags are going to the right files

parent 4f79ce8f
......@@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
# Create exe.
#
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
SET(CMAKE_C_FLAGS "${CMAKE_C} -DTEST_C_FLAGS")
# Link to CMake lib
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
......@@ -14,7 +15,7 @@ SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared
LINK_LIBRARIES(${COMPLEX_LIBS})
ADD_EXECUTABLE(A A.cxx)
ADD_EXECUTABLE(complex complex)
ADD_EXECUTABLE(complex complex testcflags.c)
ADD_EXECUTABLE(complex.file complex.file.cxx)
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib)
IF (UNIX)
......
......@@ -258,6 +258,8 @@ void TestCMGeneratedFileSTream()
cmSystemTools::RemoveFile(file2tmp.c_str());
cmSystemTools::RemoveFile(file3tmp.c_str());
}
// defined in testcflags.c
extern "C" int TestCFlags(char* m);
// ======================================================================
......@@ -372,6 +374,21 @@ int main()
#else
cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
#endif
#ifdef TEST_C_FLAGS
cmFailed("CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
#else
cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
#endif
char msg[1024];
if(TestCFlags(msg))
{
cmPassed(
"CMake CMAKE_C_FLAGS are being passed to c files and CXX flags are not.");
}
else
{
cmFailed(msg);
}
// ----------------------------------------------------------------------
// Test ADD_DEFINITIONS
......
#include <string.h>
int TestCFlags(char* m)
{
// TEST_CXX_FLAGS should not be defined in a c file
#ifdef TEST_CXX_FLAGS
strcpy(m, "CMake CMAKE_CXX_FLAGS (TEST_CXX_FLAGS) found in c file.");
return 0;
#endif
// TEST_C_FLAGS should be defined in a c file
#ifndef TEST_C_FLAGS
strcpy(m, "CMake CMAKE_C_FLAGS (TEST_C_FLAGS) not found in c file.");
return 0;
#endif
return 1;
}
......@@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
# Create exe.
#
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
SET(CMAKE_C_FLAGS "${CMAKE_C} -DTEST_C_FLAGS")
# Link to CMake lib
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
......@@ -14,7 +15,7 @@ SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared
LINK_LIBRARIES(${COMPLEX_LIBS})
ADD_EXECUTABLE(A A.cxx)
ADD_EXECUTABLE(complex complex)
ADD_EXECUTABLE(complex complex testcflags.c)
ADD_EXECUTABLE(complex.file complex.file.cxx)
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib)
IF (UNIX)
......
......@@ -258,6 +258,8 @@ void TestCMGeneratedFileSTream()
cmSystemTools::RemoveFile(file2tmp.c_str());
cmSystemTools::RemoveFile(file3tmp.c_str());
}
// defined in testcflags.c
extern "C" int TestCFlags(char* m);
// ======================================================================
......@@ -372,6 +374,21 @@ int main()
#else
cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
#endif
#ifdef TEST_C_FLAGS
cmFailed("CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
#else
cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
#endif
char msg[1024];
if(TestCFlags(msg))
{
cmPassed(
"CMake CMAKE_C_FLAGS are being passed to c files and CXX flags are not.");
}
else
{
cmFailed(msg);
}
// ----------------------------------------------------------------------
// Test ADD_DEFINITIONS
......
#include <string.h>
int TestCFlags(char* m)
{
// TEST_CXX_FLAGS should not be defined in a c file
#ifdef TEST_CXX_FLAGS
strcpy(m, "CMake CMAKE_CXX_FLAGS (TEST_CXX_FLAGS) found in c file.");
return 0;
#endif
// TEST_C_FLAGS should be defined in a c file
#ifndef TEST_C_FLAGS
strcpy(m, "CMake CMAKE_C_FLAGS (TEST_C_FLAGS) not found in c file.");
return 0;
#endif
return 1;
}
......@@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
# Create exe.
#
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
SET(CMAKE_C_FLAGS "${CMAKE_C} -DTEST_C_FLAGS")
# Link to CMake lib
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
......@@ -14,7 +15,7 @@ SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared
LINK_LIBRARIES(${COMPLEX_LIBS})
ADD_EXECUTABLE(A A.cxx)
ADD_EXECUTABLE(complex complex)
ADD_EXECUTABLE(complex complex testcflags.c)
ADD_EXECUTABLE(complex.file complex.file.cxx)
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib)
IF (UNIX)
......
......@@ -258,6 +258,8 @@ void TestCMGeneratedFileSTream()
cmSystemTools::RemoveFile(file2tmp.c_str());
cmSystemTools::RemoveFile(file3tmp.c_str());
}
// defined in testcflags.c
extern "C" int TestCFlags(char* m);
// ======================================================================
......@@ -372,6 +374,21 @@ int main()
#else
cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
#endif
#ifdef TEST_C_FLAGS
cmFailed("CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
#else
cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
#endif
char msg[1024];
if(TestCFlags(msg))
{
cmPassed(
"CMake CMAKE_C_FLAGS are being passed to c files and CXX flags are not.");
}
else
{
cmFailed(msg);
}
// ----------------------------------------------------------------------
// Test ADD_DEFINITIONS
......
#include <string.h>
int TestCFlags(char* m)
{
// TEST_CXX_FLAGS should not be defined in a c file
#ifdef TEST_CXX_FLAGS
strcpy(m, "CMake CMAKE_CXX_FLAGS (TEST_CXX_FLAGS) found in c file.");
return 0;
#endif
// TEST_C_FLAGS should be defined in a c file
#ifndef TEST_C_FLAGS
strcpy(m, "CMake CMAKE_C_FLAGS (TEST_C_FLAGS) not found in c file.");
return 0;
#endif
return 1;
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment