Initial commit.
[CMakeLuaTailorHgBridge.git] / CMakeLua / Tests / ComplexRelativePaths / Executable / CMakeLists.txt
blob1d56f0c02014ae5acf1cf887c2bdae18e089f783
1 CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
3 # Create exe. 
5 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
6 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DTEST_C_FLAGS")
7 SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
9 IF(COMPLEX_TEST_CMAKELIB)
10   # Link to CMake lib
11   LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
12   LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source/kwsys)
13   LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Utilities/cmexpat)
14   LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Utilities/cmzlib)
15   LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Utilities/cmtar)
16 ENDIF(COMPLEX_TEST_CMAKELIB)
18   # Use LINK_LIBRARIES instead of TARGET_LINK_LIBRARIES to 
19 SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
20 LINK_LIBRARIES(${COMPLEX_LIBS})
22 # Test forcing a .cxx file to not build.
23 SET_SOURCE_FILES_PROPERTIES(complex_nobuild.cxx PROPERTIES
24   HEADER_FILE_ONLY 1)
26 ADD_EXECUTABLE(A A.cxx A.hh A.h A.txt)
27 ADD_EXECUTABLE(complex complex testcflags.c )
28 #  Sub1/NameConflictTest.c Sub2/NameConflictTest.c)
29 ADD_EXECUTABLE(complex.file complex.file.cxx complex_nobuild.cxx)
30 IF(COMPLEX_TEST_CMAKELIB)
31   TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib cmtar)
32 ENDIF(COMPLEX_TEST_CMAKELIB)
34 IF (UNIX)
35   TARGET_LINK_LIBRARIES(complex ${CMAKE_DL_LIBS})
36 ELSE(UNIX)
37   IF (NOT BORLAND)
38     IF(NOT MINGW)
39       TARGET_LINK_LIBRARIES(complex rpcrt4.lib)
40     ENDIF(NOT MINGW)
41   ENDIF(NOT BORLAND)
42 ENDIF (UNIX)
44 # Test linking to static lib when a shared lib has the same name.
45 IF(CMAKE_EXE_LINK_STATIC_CXX_FLAGS)
46   ADD_DEFINITIONS(-DCOMPLEX_TEST_LINK_STATIC)
47   TARGET_LINK_LIBRARIES(complex CMakeTestLinkStatic)
48 ENDIF(CMAKE_EXE_LINK_STATIC_CXX_FLAGS)
50 # can we get the path to a source file
51 GET_SOURCE_FILE_PROPERTY(A_LOCATION A.cxx LOCATION)
52 IF ("${A_LOCATION}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/A.cxx")
53   ADD_DEFINITIONS(-DCMAKE_FOUND_ACXX)
54 ENDIF ("${A_LOCATION}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/A.cxx")
56 # get the directory parent
57 GET_DIRECTORY_PROPERTY(P_VALUE PARENT_DIRECTORY)
58 IF ("${P_VALUE}" STREQUAL "${CMAKE_SOURCE_DIR}")
59   ADD_DEFINITIONS(-DCMAKE_FOUND_PARENT)
60 ENDIF ("${P_VALUE}" STREQUAL "${CMAKE_SOURCE_DIR}")
62 # get the stack of listfiles
63 INCLUDE(Included.cmake)
64 IF ("${LF_VALUE}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt;${CMAKE_CURRENT_SOURCE_DIR}/Included.cmake")
65   ADD_DEFINITIONS(-DCMAKE_FOUND_LISTFILE_STACK)
66 ENDIF ("${LF_VALUE}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt;${CMAKE_CURRENT_SOURCE_DIR}/Included.cmake")
68 # Test add/remove definitions.
69 ADD_DEFINITIONS(
70   -DCOMPLEX_DEFINED_PRE
71   -DCOMPLEX_DEFINED
72   -DCOMPLEX_DEFINED_POST
73   -DCOMPLEX_DEFINED
74   )
75 REMOVE_DEFINITIONS(-DCOMPLEX_DEFINED)
77 # Test pre-build/pre-link/post-build rules for an executable.
78 ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
79                    COMMAND ${CREATE_FILE_EXE}
80                    ARGS "${Complex_BINARY_DIR}/Executable/prebuild.txt")
81 ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
82                    COMMAND ${CREATE_FILE_EXE}
83                    ARGS "${Complex_BINARY_DIR}/Executable/prelink.txt")
84 ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
85                    COMMAND ${CREATE_FILE_EXE}
86                    ARGS "${Complex_BINARY_DIR}/Executable/postbuild.txt")
87 ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
88                    COMMAND ${CMAKE_COMMAND}
89                    ARGS -E copy
90                         "${Complex_BINARY_DIR}/Executable/postbuild.txt"
91                         "${Complex_BINARY_DIR}/Executable/postbuild2.txt")
93 SET_SOURCE_FILES_PROPERTIES(complex
94   COMPILE_FLAGS
95   "-DFILE_HAS_EXTRA_COMPILE_FLAGS"
96   #" -DFILE_DEFINE_STRING=\\\"hello\\\""
97   OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h
99 SET_TARGET_PROPERTIES(complex PROPERTIES COMPILE_FLAGS "-DCOMPLEX_TARGET_FLAG")
100 ADD_CUSTOM_COMMAND(
101   TARGET complex
102   SOURCE ${Complex_SOURCE_DIR}/cmTestGeneratedHeader.h.in
103   COMMAND ${CMAKE_COMMAND}
104   ARGS -E copy ${Complex_SOURCE_DIR}/cmTestGeneratedHeader.h.in
105                ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h
106   OUTPUTS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h
107   DEPENDS ${CMAKE_COMMAND}
110 # Test creating an executable that is not built by default.
111 ADD_EXECUTABLE(notInAllExe EXCLUDE_FROM_ALL notInAllExe.cxx)
112 TARGET_LINK_LIBRARIES(notInAllExe notInAllLib)
114 # Test user-value flag mapping for the VS IDE.
115 IF(MSVC)
116   SET_TARGET_PROPERTIES(notInAllExe PROPERTIES
117     LINK_FLAGS "/NODEFAULTLIB:LIBC;LIBCMT;MSVCRT")
118 ENDIF(MSVC)
120 # Test creating a custom target that builds not-in-all targets.
121 ADD_CUSTOM_TARGET(notInAllCustom)
122 ADD_DEPENDENCIES(notInAllCustom notInAllExe)
125 # Output the files required by 'complex' to a file.
127 # This test has been moved to the 'required' subdir so that it
128 # has no side-effects on the current Makefile (duplicated source file
129 # due to source list expansion done twice).
131 ADD_SUBDIRECTORY(Temp)
133 IF(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_INCLUDE_SYSTEM_FLAG_CXX)
134   ADD_EXECUTABLE(testSystemDir testSystemDir.cxx)
135   SET_TARGET_PROPERTIES(testSystemDir PROPERTIES COMPILE_FLAGS "-Werror")
136 ENDIF(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_INCLUDE_SYSTEM_FLAG_CXX)
139 # Extra coverage.Not used.
141 INSTALL_TARGETS(/tmp complex)
142 INSTALL_PROGRAMS(/tmp complex)
144 CONFIGURE_FILE(
145   ${Complex_SOURCE_DIR}/Executable/cmVersion.h.in
146   ${Complex_BINARY_DIR}/cmVersion.h)
148 SOURCE_GROUP(A_GROUP ".cxx")
149 SOURCE_GROUP(B_GROUP REGULAR_EXPRESSION "cxx")
150 SOURCE_GROUP(C_GROUP FILES complex.cxx)
152 FILE(WRITE ${Complex_BINARY_DIR}/A/libA.a "test")
153 FILE(WRITE ${Complex_BINARY_DIR}/A/libC.a "test")
154 FILE(WRITE ${Complex_BINARY_DIR}/B/libB.a "test")
155 FILE(WRITE ${Complex_BINARY_DIR}/B/libA.a "test")
156 FILE(WRITE ${Complex_BINARY_DIR}/C/libC.a "test")
157 FILE(WRITE ${Complex_BINARY_DIR}/C/libB.a "test")