# this test creates a static library and an executable
# the source to the library is then changed
# and the build is done on the executable and if things
# are working the executable should relink with the new
# value. The subdir Project contains the CMakelists.txt
# and source files for the test project.
cmake_minimum_required ( VERSION 2.6 )
project ( BuildDepends )
# This entire test takes place during the initial
# configure step. It should not run again when the
# project is built.
set ( CMAKE_SUPPRESS_REGENERATION 1 )
# Xcode needs some help with the fancy dependencies in this test.
if ( XCODE AND XCODE_VERSION VERSION_LESS 5 )
set ( HELP_XCODE 1 )
endif ( )
function ( help_xcode_depends )
if ( HELP_XCODE )
file ( GLOB_RECURSE MACRO_OBJS
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / z o t _ m a c r o _ * . o *
)
if ( MACRO_OBJS )
message ( "Helping Xcode by removing objects [${MACRO_OBJS}]" )
file ( REMOVE ${ MACRO_OBJS } )
endif ( )
endif ( )
endfunction ( )
# The Intel compiler causes the MSVC linker to crash during
# incremental linking, so avoid the /INCREMENTAL:YES flag.
if ( WIN32 AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel" )
set ( _cmake_options "-DCMAKE_EXE_LINKER_FLAGS=" )
endif ( )
if ( "${CMAKE_GENERATOR}" MATCHES "Make|Ninja" )
set ( TEST_LINK_DEPENDS ${ BuildDepends_BINARY_DIR } /Project/linkdep.txt )
file ( WRITE ${ TEST_LINK_DEPENDS } "1" )
endif ( )
list ( APPEND _cmake_options "-DTEST_LINK_DEPENDS=${TEST_LINK_DEPENDS}" )
list ( APPEND _cmake_options "-DCMAKE_FORCE_DEPFILES=1" )
if ( NOT CMAKE_GENERATOR MATCHES "Visual Studio ([^9]|9[0-9])" )
set ( TEST_MULTI3 1 )
list ( APPEND _cmake_options "-DTEST_MULTI3=1" )
endif ( )
file ( MAKE_DIRECTORY ${ BuildDepends_BINARY_DIR } /Project )
message ( "Creating Project/foo.cxx" )
write_file ( ${ BuildDepends_BINARY_DIR } /Project/foo.cxx
" c o n s t c h a r * foo ( ) { r e t u r n \ " f o o \ " ; } " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot.hxx.in
" s t a t i c c o n s t c h a r * z o t = \ " z o t \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/dir/header.txt
" #define HEADER_STRING \"ninja\"\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_custom.hxx.in
" s t a t i c c o n s t c h a r * z o t _ c u s t o m = \ " z o t _ c u s t o m \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_macro_dir.hxx
" s t a t i c c o n s t c h a r * z o t _ m a c r o _ d i r = \ " z o t _ m a c r o _ d i r \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_macro_tgt.hxx
" s t a t i c c o n s t c h a r * z o t _ m a c r o _ t g t = \ " z o t _ m a c r o _ t g t \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_pch.hxx
" #ifndef ZOT_PCH_HXX\n"
" #define ZOT_PCH_HXX\n"
" s t a t i c c o n s t c h a r * z o t _ p c h = \ " z o t _ p c h \ " ; \ n "
" #endif\n"
)
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/link_depends_no_shared_lib.h
" #define link_depends_no_shared_lib_value 1\n")
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/link_depends_no_shared_exe.h
" #define link_depends_no_shared_exe_value 0\n")
set ( link_depends_no_shared_check_txt ${ BuildDepends_BINARY_DIR } /Project/link_depends_no_shared_check.txt )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/object_depends.txt "0\n" )
set ( object_depends_check_txt ${ BuildDepends_BINARY_DIR } /Project/object_depends_check.txt )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/external.in "external original\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/multi1-in.txt "multi1-in original\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/multi2-stamp.txt "multi2-stamp original\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/multi3-stamp.txt "multi3-stamp original\n" )
help_xcode_depends ( )
message ( "Building project first time" )
try_compile ( RESULT
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t
$ { B u i l d D e p e n d s _ S O U R C E _ D I R } / P r o j e c t
t e s t R e b u i l d
C M A K E _ F L A G S $ { _ c m a k e _ o p t i o n s }
O U T P U T _ V A R I A B L E O U T P U T )
if ( HELP_XCODE )
try_compile ( RESULT
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t
$ { B u i l d D e p e n d s _ S O U R C E _ D I R } / P r o j e c t
t e s t R e b u i l d
O U T P U T _ V A R I A B L E O U T P U T )
try_compile ( RESULT
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t
$ { B u i l d D e p e n d s _ S O U R C E _ D I R } / P r o j e c t
t e s t R e b u i l d
O U T P U T _ V A R I A B L E O U T P U T )
endif ( )
message ( "Output from first build:\n${OUTPUT}" )
if ( NOT RESULT )
message ( SEND_ERROR "Could not build test project (1)!" )
endif ( )
# find and save the ninjadep executable
set ( ninjadep ${ BuildDepends_BINARY_DIR } /Project/ninjadep ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( EXISTS
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / n i n j a d e p $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
message ( "found debug" )
set ( ninjadep
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / n i n j a d e p $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
endif ( )
message ( "Running ${ninjadep} " )
execute_process ( COMMAND ${ ninjadep } OUTPUT_VARIABLE out RESULT_VARIABLE runResult )
string ( REGEX REPLACE "[\r\n]" " " out "${out}" )
message ( "Run result: ${runResult} Output: \" ${ out } \"")
if ( "${out}" STREQUAL "HEADER_STRING: ninja " )
message ( "Worked!" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly. Output[${out}]\n"
" e x p e c t e d [ H E A D E R _ S T R I N G : n i n j a ] " )
endif ( )
set ( bar ${ BuildDepends_BINARY_DIR } /Project/bar ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( EXISTS
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / b a r $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
message ( "found debug" )
set ( bar
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / b a r $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
endif ( )
set ( zot ${ BuildDepends_BINARY_DIR } /Project/zot ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( EXISTS
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / z o t $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
message ( "found debug" )
set ( zot
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / z o t $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
endif ( )
message ( "Running ${bar} " )
execute_process ( COMMAND ${ bar } OUTPUT_VARIABLE out RESULT_VARIABLE runResult )
string ( REGEX REPLACE "[\r\n]" " " out "${out}" )
message ( "Run result: ${runResult} Output: \" ${ out } \"")
if ( "${out}" STREQUAL "foo " )
message ( "Worked!" )
else ( )
message ( SEND_ERROR "Project did not initially build properly: ${out}" )
endif ( )
message ( "Running ${zot} " )
execute_process ( COMMAND ${ zot } OUTPUT_VARIABLE out RESULT_VARIABLE runResult )
string ( REGEX REPLACE "[\r\n]" " " out "${out}" )
message ( "Run result: ${runResult} Output: \" ${ out } \"")
set ( VALUE_UNCHANGED "[zot] [zot_custom] [zot_macro_dir] [zot_macro_tgt] [zot_pch] " )
if ( "${out}" STREQUAL "${VALUE_UNCHANGED}" )
message ( "Worked!" )
else ( )
message ( SEND_ERROR "Project did not initially build properly: ${out}" )
endif ( )
if ( EXISTS "${link_depends_no_shared_check_txt}" )
file ( STRINGS "${link_depends_no_shared_check_txt}" link_depends_no_shared_check LIMIT_COUNT 1 )
if ( "${link_depends_no_shared_check}" STREQUAL "1" )
message ( STATUS "link_depends_no_shared_exe is newer than link_depends_no_shared_lib as expected." )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" l i n k _ d e p e n d s _ n o _ s h a r e d _ e x e i s o l d e r t h a n l i n k _ d e p e n d s _ n o _ s h a r e d _ l i b . " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" T a r g e t s l i n k _ d e p e n d s _ n o _ s h a r e d _ l i b a n d l i n k _ d e p e n d s _ n o _ s h a r e d _ e x e n o t b o t h b u i l t . " )
endif ( )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/external.out )
file ( STRINGS ${ BuildDepends_BINARY_DIR } /Project/external.out external_out )
if ( "${external_out}" STREQUAL "external original" )
message ( STATUS "external.out contains '${external_out}'" )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" e x t e r n a l . o u t c o n t a i n s ' $ { e x t e r n a l _ o u t } ' " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" e x t e r n a l . o u t i s m i s s i n g " )
endif ( )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/multi1-out2-copy.txt )
file ( STRINGS ${ BuildDepends_BINARY_DIR } /Project/multi1-out2-copy.txt multi1_out )
if ( "${multi1_out}" STREQUAL "multi1-in original" )
message ( STATUS "multi1-out2-copy.txt contains '${multi1_out}'" )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" m u l t i 1 - o u t 2 - c o p y . t x t c o n t a i n s ' $ { m u l t i 1 _ o u t } ' " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" m u l t i 1 - o u t 2 - c o p y . t x t i s m i s s i n g " )
endif ( )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/multi2-real.txt )
if ( ${ BuildDepends_BINARY_DIR } /Project/multi2-real.txt
I S _ N E W E R _ T H A N $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / m u l t i 2 - s t a m p . t x t )
message ( STATUS "multi2-real.txt is newer than multi2-stamp.txt" )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" m u l t i 2 - r e a l . t x t i s n o t n e w e r t h a n m u l t i 2 - s t a m p . t x t " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" m u l t i 2 - r e a l . t x t i s m i s s i n g " )
endif ( )
if ( TEST_MULTI3 )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/multi3-real.txt )
if ( ${ BuildDepends_BINARY_DIR } /Project/multi3-real.txt
I S _ N E W E R _ T H A N $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / m u l t i 3 - s t a m p . t x t )
message ( STATUS "multi3-real.txt is newer than multi3-stamp.txt" )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" m u l t i 3 - r e a l . t x t i s n o t n e w e r t h a n m u l t i 3 - s t a m p . t x t " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not initially build properly: "
" m u l t i 3 - r e a l . t x t i s m i s s i n g " )
endif ( )
endif ( )
message ( "Waiting 3 seconds..." )
execute_process ( COMMAND ${ CMAKE_COMMAND } -E sleep 3 )
message ( "Modifying Project/foo.cxx" )
write_file ( ${ BuildDepends_BINARY_DIR } /Project/foo.cxx
" c o n s t c h a r * foo ( ) { r e t u r n \ " f o o c h a n g e d \ " ; } " )
file ( WRITE "${BuildDepends_BINARY_DIR}/Project/dir/header.txt"
" #define HEADER_STRING \"ninja changed\"\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot.hxx.in
" s t a t i c c o n s t c h a r * z o t = \ " z o t c h a n g e d \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_custom.hxx.in
" s t a t i c c o n s t c h a r * z o t _ c u s t o m = \ " z o t _ c u s t o m c h a n g e d \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_macro_dir.hxx
" s t a t i c c o n s t c h a r * z o t _ m a c r o _ d i r = \ " z o t _ m a c r o _ d i r c h a n g e d \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_macro_tgt.hxx
" s t a t i c c o n s t c h a r * z o t _ m a c r o _ t g t = \ " z o t _ m a c r o _ t g t c h a n g e d \ " ; \ n " )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/zot_pch.hxx
" #ifndef ZOT_PCH_HXX\n"
" #define ZOT_PCH_HXX\n"
" s t a t i c c o n s t c h a r * z o t _ p c h = \ " z o t _ p c h c h a n g e d \ " ; \ n "
" #endif\n"
)
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/link_depends_no_shared_lib.h
" #define link_depends_no_shared_lib_value 0\n")
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/object_depends.txt "1\n" )
if ( TEST_LINK_DEPENDS )
file ( WRITE ${ TEST_LINK_DEPENDS } "2" )
endif ( )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/external.in "external changed\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/multi1-in.txt "multi1-in changed\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/multi2-stamp.txt "multi2-stamp changed\n" )
file ( WRITE ${ BuildDepends_BINARY_DIR } /Project/multi3-stamp.txt "multi3-stamp changed\n" )
help_xcode_depends ( )
message ( "Building project second time" )
try_compile ( RESULT
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t
$ { B u i l d D e p e n d s _ S O U R C E _ D I R } / P r o j e c t
t e s t R e b u i l d
C M A K E _ F L A G S $ { _ c m a k e _ o p t i o n s }
O U T P U T _ V A R I A B L E O U T P U T )
# Xcode is in serious need of help here
if ( HELP_XCODE )
try_compile ( RESULT
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t
$ { B u i l d D e p e n d s _ S O U R C E _ D I R } / P r o j e c t
t e s t R e b u i l d
O U T P U T _ V A R I A B L E O U T P U T )
try_compile ( RESULT
$ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t
$ { B u i l d D e p e n d s _ S O U R C E _ D I R } / P r o j e c t
t e s t R e b u i l d
O U T P U T _ V A R I A B L E O U T P U T )
endif ( )
message ( "Output from second build:\n${OUTPUT}" )
if ( NOT RESULT )
message ( SEND_ERROR "Could not build test project (2)!" )
endif ( )
if ( EXISTS
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / b a r $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
message ( "found debug" )
endif ( )
if ( EXISTS
" $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / D e b u g / z o t $ { C M A K E _ E X E C U T A B L E _ S U F F I X } " )
message ( "found debug" )
endif ( )
message ( "Running ${ninjadep} " )
execute_process ( COMMAND ${ ninjadep } OUTPUT_VARIABLE out RESULT_VARIABLE runResult )
string ( REGEX REPLACE "[\r\n]" " " out "${out}" )
message ( "Run result: ${runResult} Output: \" ${ out } \"")
if ( "${out}" STREQUAL "HEADER_STRING: ninja changed " )
message ( "Worked!" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly. Output[${out}]\n"
" e x p e c t e d [ H E A D E R _ S T R I N G : n i n j a c h a n g e d ] " )
endif ( )
message ( "Running ${bar} " )
execute_process ( COMMAND ${ bar } OUTPUT_VARIABLE out RESULT_VARIABLE runResult )
string ( REGEX REPLACE "[\r\n]" " " out "${out}" )
message ( "Run result: ${runResult} Output: \" ${ out } \"")
if ( "${out}" STREQUAL "foo changed " )
message ( "Worked!" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly!" )
endif ( )
message ( "Running ${zot} " )
execute_process ( COMMAND ${ zot } OUTPUT_VARIABLE out RESULT_VARIABLE runResult )
string ( REGEX REPLACE "[\r\n]" " " out "${out}" )
message ( "Run result: ${runResult} Output: \" ${ out } \"")
set ( VALUE_CHANGED
" [ z o t c h a n g e d ] [ z o t _ c u s t o m c h a n g e d ] [ z o t _ m a c r o _ d i r c h a n g e d ] [ z o t _ m a c r o _ t g t c h a n g e d ] [ z o t _ p c h c h a n g e d ] "
)
if ( "${out}" STREQUAL "${VALUE_CHANGED}" )
message ( "Worked!" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly!" )
endif ( )
if ( TEST_LINK_DEPENDS )
set ( linkdep ${ BuildDepends_BINARY_DIR } /Project/linkdep ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( ${ linkdep } IS_NEWER_THAN ${ TEST_LINK_DEPENDS } )
message ( "LINK_DEPENDS worked" )
else ( )
message ( SEND_ERROR " LINK_DEPENDS failed. Executable
$ { l i n k d e p }
i s n o t n e w e r t h a n d e p e n d e n c y
$ { T E S T _ L I N K _ D E P E N D S }
" )
endif ( )
set ( linkdep2 ${ BuildDepends_BINARY_DIR } /Project/linkdep2 ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( ${ linkdep2 } IS_NEWER_THAN ${ TEST_LINK_DEPENDS } )
message ( "INTERFACE_LINK_DEPENDS worked" )
else ( )
message ( SEND_ERROR " INTERFACE_LINK_DEPENDS failed. Executable
$ { l i n k d e p 2 }
i s n o t n e w e r t h a n d e p e n d e n c y
$ { T E S T _ L I N K _ D E P E N D S }
" )
endif ( )
set ( linkdep3 ${ BuildDepends_BINARY_DIR } /Project/linkdep3 ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( ${ linkdep3 } IS_NEWER_THAN ${ TEST_LINK_DEPENDS } )
message ( "$<LINK_LANGUAGE> in LINK_DEPENDS worked" )
else ( )
message ( SEND_ERROR " $< LINK_LANGUAGE > in LINK_DEPENDS failed. Executable
$ { l i n k d e p 3 }
i s n o t n e w e r t h a n d e p e n d e n c y
$ { T E S T _ L I N K _ D E P E N D S }
" )
endif ( )
set ( linkdep4 ${ BuildDepends_BINARY_DIR } /Project/linkdep4 ${ CMAKE_EXECUTABLE_SUFFIX } )
if ( ${ linkdep4 } IS_NEWER_THAN ${ TEST_LINK_DEPENDS } )
message ( "$<LINK_LANGUAGE> in INTERFACE_LINK_DEPENDS worked" )
else ( )
message ( SEND_ERROR " $< LINK_LANGUAGE > in INTERFACE_LINK_DEPENDS failed. Executable
$ { l i n k d e p 4 }
i s n o t n e w e r t h a n d e p e n d e n c y
$ { T E S T _ L I N K _ D E P E N D S }
" )
endif ( )
endif ( )
if ( EXISTS "${link_depends_no_shared_check_txt}" )
file ( STRINGS "${link_depends_no_shared_check_txt}" link_depends_no_shared_check LIMIT_COUNT 1 )
if ( "${link_depends_no_shared_check}" STREQUAL "0" )
message ( STATUS "link_depends_no_shared_exe is older than link_depends_no_shared_lib as expected." )
elseif ( XCODE AND NOT XCODE_VERSION VERSION_LESS 5 )
message ( STATUS "Known limitation: link_depends_no_shared_exe is newer than link_depends_no_shared_lib but we cannot stop Xcode ${XCODE_VERSION} from enforcing this dependency." )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: link_depends_no_shared_exe is newer than link_depends_no_shared_lib." )
endif ( )
else ( )
message ( SEND_ERROR "Project did not rebuild properly. "
" T a r g e t s l i n k _ d e p e n d s _ n o _ s h a r e d _ l i b a n d l i n k _ d e p e n d s _ n o _ s h a r e d _ e x e n o t b o t h b u i l t . " )
endif ( )
if ( EXISTS "${object_depends_check_txt}" )
file ( STRINGS "${object_depends_check_txt}" object_depends_check LIMIT_COUNT 1 )
if ( "${object_depends_check}" STREQUAL "1" )
message ( STATUS "object_depends exe is newer than object_depends.txt as expected." )
elseif ( CMAKE_GENERATOR MATCHES "Visual Studio|Xcode" )
message ( STATUS "Known limitation: OBJECT_DEPENDS does not work on ${CMAKE_GENERATOR}" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: object_depends exe is not newer than object_depends.txt." )
endif ( )
else ( )
message ( SEND_ERROR "Project did not rebuild properly. "
" o b j e c t _ d e p e n d s e x e a n d o b j e c t _ d e p e n d s . t x t a r e n o t b o t h p r e s e n t . " )
endif ( )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/external.out )
file ( STRINGS ${ BuildDepends_BINARY_DIR } /Project/external.out external_out )
if ( "${external_out}" STREQUAL "external changed" )
message ( STATUS "external.out contains '${external_out}'" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" e x t e r n a l . o u t c o n t a i n s ' $ { e x t e r n a l _ o u t } ' " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" e x t e r n a l . o u t i s m i s s i n g " )
endif ( )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/multi1-out2-copy.txt )
file ( STRINGS ${ BuildDepends_BINARY_DIR } /Project/multi1-out2-copy.txt multi1_out )
if ( "${multi1_out}" STREQUAL "multi1-in changed" )
message ( STATUS "multi1-out2-copy.txt contains '${multi1_out}'" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" m u l t i 1 - o u t 2 - c o p y . t x t c o n t a i n s ' $ { m u l t i 1 _ o u t } ' " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" m u l t i 1 - o u t 2 - c o p y . t x t i s m i s s i n g " )
endif ( )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/multi2-real.txt )
if ( ${ BuildDepends_BINARY_DIR } /Project/multi2-real.txt
I S _ N E W E R _ T H A N $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / m u l t i 2 - s t a m p . t x t )
message ( STATUS "multi2-real.txt is newer than multi2-stamp.txt" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" m u l t i 2 - r e a l . t x t i s n o t n e w e r t h a n m u l t i 2 - s t a m p . t x t " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" m u l t i 2 - r e a l . t x t i s m i s s i n g " )
endif ( )
if ( TEST_MULTI3 )
if ( EXISTS ${ BuildDepends_BINARY_DIR } /Project/multi3-real.txt )
if ( ${ BuildDepends_BINARY_DIR } /Project/multi3-real.txt
I S _ N E W E R _ T H A N $ { B u i l d D e p e n d s _ B I N A R Y _ D I R } / P r o j e c t / m u l t i 3 - s t a m p . t x t )
message ( STATUS "multi3-real.txt is newer than multi3-stamp.txt" )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" m u l t i 3 - r e a l . t x t i s n o t n e w e r t h a n m u l t i 3 - s t a m p . t x t " )
endif ( )
else ( )
message ( SEND_ERROR "Project did not rebuild properly: "
" m u l t i 3 - r e a l . t x t i s m i s s i n g " )
endif ( )
endif ( )