mirror of
https://github.com/reactos/CMake.git
synced 2025-03-03 17:39:10 +00:00
Autogen: Tests: Move each rerun test script to a NAME.cmake file
This commit is contained in:
parent
e5c6610aba
commit
04a0daeeed
@ -36,228 +36,17 @@ else()
|
||||
|
||||
endif()
|
||||
|
||||
# -- Test
|
||||
# Dummy test to generate clean target
|
||||
# Dummy executable to generate clean target
|
||||
add_executable(dummy dummy.cpp)
|
||||
|
||||
# -- Test
|
||||
# When a file listed in a .qrc file changes the target must be rebuilt
|
||||
set(timeformat "%Y%j%H%M%S")
|
||||
set(RCC_DEPENDS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/rccDepends")
|
||||
set(RCC_DEPENDS_BIN "${CMAKE_CURRENT_BINARY_DIR}/rccDepends")
|
||||
configure_file(${RCC_DEPENDS_SRC}/res1a.qrc.in ${RCC_DEPENDS_BIN}/res1.qrc COPYONLY)
|
||||
configure_file(${RCC_DEPENDS_SRC}/res2a.qrc.in ${RCC_DEPENDS_BIN}/res2.qrc.in COPYONLY)
|
||||
try_compile(RCC_DEPENDS
|
||||
"${RCC_DEPENDS_BIN}"
|
||||
"${RCC_DEPENDS_SRC}"
|
||||
rccDepends
|
||||
CMAKE_FLAGS "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
if (NOT RCC_DEPENDS)
|
||||
message(SEND_ERROR "Initial build of rccDepends failed. Output: ${output}")
|
||||
endif()
|
||||
# Get name and timestamp of the output binary
|
||||
file(STRINGS "${RCC_DEPENDS_BIN}/target.txt" targetList ENCODING UTF-8)
|
||||
list(GET targetList 0 rccDependsBin)
|
||||
file(TIMESTAMP "${rccDependsBin}" timeBegin "${timeformat}")
|
||||
# Sleep, touch regular qrc input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${RCC_DEPENDS_BIN}/res1/input.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${RCC_DEPENDS_BIN}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Second build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep1 "${timeformat}")
|
||||
if (NOT timeStep1 GREATER timeBegin)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the first step!")
|
||||
endif()
|
||||
# Sleep, update regular qrc file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
configure_file(${RCC_DEPENDS_SRC}/res1b.qrc.in ${RCC_DEPENDS_BIN}/res1.qrc COPYONLY)
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${RCC_DEPENDS_BIN}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Third build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep2 "${timeformat}")
|
||||
if (NOT timeStep2 GREATER timeStep1)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the second step!")
|
||||
endif()
|
||||
# Sleep, touch regular qrc newly added input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${RCC_DEPENDS_BIN}/res1/inputAdded.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${RCC_DEPENDS_BIN}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Fourth build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep3 "${timeformat}")
|
||||
if (NOT timeStep3 GREATER timeStep2)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the third step!")
|
||||
endif()
|
||||
# Sleep, touch generated qrc input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${RCC_DEPENDS_BIN}/res2/input.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${RCC_DEPENDS_BIN}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Fifth build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep4 "${timeformat}")
|
||||
if (NOT timeStep4 GREATER timeStep3)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the fourth step!")
|
||||
endif()
|
||||
# Sleep, update generated qrc file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
configure_file(${RCC_DEPENDS_SRC}/res2b.qrc.in ${RCC_DEPENDS_BIN}/res2.qrc.in COPYONLY)
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${RCC_DEPENDS_BIN}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Sixth build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep5 "${timeformat}")
|
||||
if (NOT timeStep5 GREATER timeStep4)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the fitfh step!")
|
||||
endif()
|
||||
# Sleep, touch generated qrc newly added input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${RCC_DEPENDS_BIN}/res2/inputAdded.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${RCC_DEPENDS_BIN}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Seventh build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep6 "${timeformat}")
|
||||
if (NOT timeStep6 GREATER timeStep5)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the sixth step!")
|
||||
endif()
|
||||
|
||||
|
||||
# -- Test
|
||||
# Ensure a repeated build succeeds when a header containing a QObject changes
|
||||
set(timeformat "%Y%j%H%M%S")
|
||||
configure_file(mocRerun/test1a.h.in mocRerun/test1.h COPYONLY)
|
||||
try_compile(MOC_RERUN
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/mocRerun"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/mocRerun"
|
||||
mocRerun
|
||||
CMAKE_FLAGS "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
if (NOT MOC_RERUN)
|
||||
message(SEND_ERROR "Initial build of mocRerun failed. Output: ${output}")
|
||||
endif()
|
||||
# Get name and timestamp of the output binary
|
||||
file(STRINGS "${CMAKE_CURRENT_BINARY_DIR}/mocRerun/target1.txt" target1List ENCODING UTF-8)
|
||||
list(GET target1List 0 binFile)
|
||||
file(TIMESTAMP "${binFile}" timeBegin "${timeformat}")
|
||||
# Change file content and rebuild
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
|
||||
configure_file(mocRerun/test1b.h.in mocRerun/test1.h COPYONLY)
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build .
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mocRerun"
|
||||
RESULT_VARIABLE mocRerun_result
|
||||
)
|
||||
if (mocRerun_result)
|
||||
message(SEND_ERROR "Second build of mocRerun failed.")
|
||||
endif()
|
||||
# Compare timestamps
|
||||
file(TIMESTAMP "${binFile}" timeStep1 "${timeformat}")
|
||||
if (NOT timeStep1 GREATER timeBegin)
|
||||
message(SEND_ERROR "File (${binFile}) should have changed in the first step!")
|
||||
endif()
|
||||
|
||||
include("mocRerun.cmake")
|
||||
|
||||
# -- Test
|
||||
# Tests Q_PLUGIN_METADATA json file change detection
|
||||
if (NOT QT_TEST_VERSION STREQUAL 4)
|
||||
|
||||
# Utility variables
|
||||
set(timeformat "%Y%j%H%M%S")
|
||||
set(mocPlugSrcDir "${CMAKE_CURRENT_SOURCE_DIR}/mocPlugin")
|
||||
set(mocPlugBinDir "${CMAKE_CURRENT_BINARY_DIR}/mocPlugin")
|
||||
|
||||
# Initial buid
|
||||
try_compile(MOC_PLUGIN
|
||||
"${mocPlugBinDir}"
|
||||
"${mocPlugSrcDir}"
|
||||
mocPlugin
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
if (NOT MOC_PLUGIN)
|
||||
message(SEND_ERROR "Initial build of mocPlugin failed. Output: ${output}")
|
||||
endif()
|
||||
|
||||
find_library(plAFile "PlugA" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plBFile "PlugB" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plCFile "PlugC" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plDFile "PlugD" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plEFile "PlugE" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
|
||||
# - Ensure that the timestamp will change.
|
||||
# - Change the json files referenced by Q_PLUGIN_METADATA
|
||||
# - Rebuild
|
||||
file(TIMESTAMP "${plAFile}" plABefore "${timeformat}")
|
||||
file(TIMESTAMP "${plBFile}" plBBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plCFile}" plCBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEBefore "${timeformat}")
|
||||
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleC.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/StyleE.json")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}")
|
||||
|
||||
file(TIMESTAMP "${plAFile}" plAAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plBFile}" plBAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plCFile}" plCAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEAfter "${timeformat}")
|
||||
|
||||
if (plAAfter GREATER plABefore)
|
||||
message(SEND_ERROR "file (${plAFile}) should not have changed!")
|
||||
endif()
|
||||
if (plBAfter GREATER plBBefore)
|
||||
message(SEND_ERROR "file (${plBFile}) should not have changed!")
|
||||
endif()
|
||||
if (NOT plCAfter GREATER plCBefore)
|
||||
message(SEND_ERROR "file (${plCFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plDAfter GREATER plDBefore)
|
||||
message(SEND_ERROR "file (${plDFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plEAfter GREATER plEBefore)
|
||||
message(SEND_ERROR "file (${plEFile}) should have changed!")
|
||||
endif()
|
||||
|
||||
# - Ensure that the timestamp will change.
|
||||
# - Change the json files referenced by A_CUSTOM_MACRO
|
||||
# - Rebuild
|
||||
file(TIMESTAMP "${plCFile}" plCBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEBefore "${timeformat}")
|
||||
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/StyleC_Custom.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD_Custom.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleE_Custom.json")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}")
|
||||
|
||||
file(TIMESTAMP "${plCFile}" plCAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEAfter "${timeformat}")
|
||||
|
||||
if (NOT plCAfter GREATER plCBefore)
|
||||
message(SEND_ERROR "file (${plCFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plDAfter GREATER plDBefore)
|
||||
message(SEND_ERROR "file (${plDFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plEAfter GREATER plEBefore)
|
||||
message(SEND_ERROR "file (${plEFile}) should have changed!")
|
||||
endif()
|
||||
|
||||
include("mocPlugin.cmake")
|
||||
endif()
|
||||
|
||||
# -- Test
|
||||
include("rccDepends.cmake")
|
||||
|
88
Tests/QtAutogenRerun/mocPlugin.cmake
Normal file
88
Tests/QtAutogenRerun/mocPlugin.cmake
Normal file
@ -0,0 +1,88 @@
|
||||
|
||||
# Utility variables
|
||||
set(timeformat "%Y%j%H%M%S")
|
||||
set(mocPlugSrcDir "${CMAKE_CURRENT_SOURCE_DIR}/mocPlugin")
|
||||
set(mocPlugBinDir "${CMAKE_CURRENT_BINARY_DIR}/mocPlugin")
|
||||
|
||||
# Initial buid
|
||||
try_compile(MOC_PLUGIN
|
||||
"${mocPlugBinDir}"
|
||||
"${mocPlugSrcDir}"
|
||||
mocPlugin
|
||||
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
if (NOT MOC_PLUGIN)
|
||||
message(SEND_ERROR "Initial build of mocPlugin failed. Output: ${output}")
|
||||
endif()
|
||||
|
||||
find_library(plAFile "PlugA" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plBFile "PlugB" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plCFile "PlugC" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plDFile "PlugD" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
find_library(plEFile "PlugE" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH)
|
||||
|
||||
# - Ensure that the timestamp will change.
|
||||
# - Change the json files referenced by Q_PLUGIN_METADATA
|
||||
# - Rebuild
|
||||
file(TIMESTAMP "${plAFile}" plABefore "${timeformat}")
|
||||
file(TIMESTAMP "${plBFile}" plBBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plCFile}" plCBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEBefore "${timeformat}")
|
||||
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleC.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/StyleE.json")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}")
|
||||
|
||||
file(TIMESTAMP "${plAFile}" plAAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plBFile}" plBAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plCFile}" plCAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEAfter "${timeformat}")
|
||||
|
||||
if (plAAfter GREATER plABefore)
|
||||
message(SEND_ERROR "file (${plAFile}) should not have changed!")
|
||||
endif()
|
||||
if (plBAfter GREATER plBBefore)
|
||||
message(SEND_ERROR "file (${plBFile}) should not have changed!")
|
||||
endif()
|
||||
if (NOT plCAfter GREATER plCBefore)
|
||||
message(SEND_ERROR "file (${plCFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plDAfter GREATER plDBefore)
|
||||
message(SEND_ERROR "file (${plDFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plEAfter GREATER plEBefore)
|
||||
message(SEND_ERROR "file (${plEFile}) should have changed!")
|
||||
endif()
|
||||
|
||||
# - Ensure that the timestamp will change.
|
||||
# - Change the json files referenced by A_CUSTOM_MACRO
|
||||
# - Rebuild
|
||||
file(TIMESTAMP "${plCFile}" plCBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDBefore "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEBefore "${timeformat}")
|
||||
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/StyleC_Custom.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD_Custom.json")
|
||||
configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleE_Custom.json")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}")
|
||||
|
||||
file(TIMESTAMP "${plCFile}" plCAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plDFile}" plDAfter "${timeformat}")
|
||||
file(TIMESTAMP "${plEFile}" plEAfter "${timeformat}")
|
||||
|
||||
if (NOT plCAfter GREATER plCBefore)
|
||||
message(SEND_ERROR "file (${plCFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plDAfter GREATER plDBefore)
|
||||
message(SEND_ERROR "file (${plDFile}) should have changed!")
|
||||
endif()
|
||||
if (NOT plEAfter GREATER plEBefore)
|
||||
message(SEND_ERROR "file (${plEFile}) should have changed!")
|
||||
endif()
|
39
Tests/QtAutogenRerun/mocRerun.cmake
Normal file
39
Tests/QtAutogenRerun/mocRerun.cmake
Normal file
@ -0,0 +1,39 @@
|
||||
|
||||
set(timeformat "%Y%j%H%M%S")
|
||||
set(mocRerunSrcDir "${CMAKE_CURRENT_SOURCE_DIR}/mocRerun")
|
||||
set(mocRerunBinDir "${CMAKE_CURRENT_BINARY_DIR}/mocRerun")
|
||||
|
||||
# Initial build
|
||||
configure_file(mocRerun/test1a.h.in mocRerun/test1.h COPYONLY)
|
||||
try_compile(MOC_RERUN
|
||||
"${mocRerunBinDir}"
|
||||
"${mocRerunSrcDir}"
|
||||
mocRerun
|
||||
CMAKE_FLAGS "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
if (NOT MOC_RERUN)
|
||||
message(SEND_ERROR "Initial build of mocRerun failed. Output: ${output}")
|
||||
endif()
|
||||
|
||||
# Get name of the output binary
|
||||
file(STRINGS "${mocRerunBinDir}/target1.txt" target1List ENCODING UTF-8)
|
||||
list(GET target1List 0 binFile)
|
||||
|
||||
file(TIMESTAMP "${binFile}" timeBegin "${timeformat}")
|
||||
|
||||
# Change header file content and rebuild
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
|
||||
configure_file(mocRerun/test1b.h.in mocRerun/test1.h COPYONLY)
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocRerunBinDir}" RESULT_VARIABLE result )
|
||||
if (result)
|
||||
message(SEND_ERROR "Second build of mocRerun failed.")
|
||||
endif()
|
||||
|
||||
file(TIMESTAMP "${binFile}" timeStep1 "${timeformat}")
|
||||
|
||||
if (NOT timeStep1 GREATER timeBegin)
|
||||
message(SEND_ERROR "File (${binFile}) should have changed in the first step!")
|
||||
endif()
|
91
Tests/QtAutogenRerun/rccDepends.cmake
Normal file
91
Tests/QtAutogenRerun/rccDepends.cmake
Normal file
@ -0,0 +1,91 @@
|
||||
# When a file listed in a .qrc file changes the target must be rebuilt
|
||||
set(timeformat "%Y%j%H%M%S")
|
||||
set(rccDependsSrcDir "${CMAKE_CURRENT_SOURCE_DIR}/rccDepends")
|
||||
set(rccDependsBinDir "${CMAKE_CURRENT_BINARY_DIR}/rccDepends")
|
||||
|
||||
# Initial build
|
||||
configure_file(${rccDependsSrcDir}/res1a.qrc.in ${rccDependsBinDir}/res1.qrc COPYONLY)
|
||||
configure_file(${rccDependsSrcDir}/res2a.qrc.in ${rccDependsBinDir}/res2.qrc.in COPYONLY)
|
||||
try_compile(RCC_DEPENDS
|
||||
"${rccDependsBinDir}"
|
||||
"${rccDependsSrcDir}"
|
||||
rccDepends
|
||||
CMAKE_FLAGS "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
||||
"-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
||||
"-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}"
|
||||
OUTPUT_VARIABLE output
|
||||
)
|
||||
if (NOT RCC_DEPENDS)
|
||||
message(SEND_ERROR "Initial build of rccDepends failed. Output: ${output}")
|
||||
endif()
|
||||
# Get name of the output binary
|
||||
file(STRINGS "${rccDependsBinDir}/target.txt" targetList ENCODING UTF-8)
|
||||
list(GET targetList 0 rccDependsBin)
|
||||
|
||||
file(TIMESTAMP "${rccDependsBin}" timeBegin "${timeformat}")
|
||||
# Sleep, touch regular qrc input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDependsBinDir}/res1/input.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDependsBinDir}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Second build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep1 "${timeformat}")
|
||||
if (NOT timeStep1 GREATER timeBegin)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the first step!")
|
||||
endif()
|
||||
# Sleep, update regular qrc file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
configure_file(${rccDependsSrcDir}/res1b.qrc.in ${rccDependsBinDir}/res1.qrc COPYONLY)
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDependsBinDir}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Third build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep2 "${timeformat}")
|
||||
if (NOT timeStep2 GREATER timeStep1)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the second step!")
|
||||
endif()
|
||||
# Sleep, touch regular qrc newly added input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDependsBinDir}/res1/inputAdded.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDependsBinDir}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Fourth build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep3 "${timeformat}")
|
||||
if (NOT timeStep3 GREATER timeStep2)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the third step!")
|
||||
endif()
|
||||
# Sleep, touch generated qrc input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDependsBinDir}/res2/input.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDependsBinDir}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Fifth build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep4 "${timeformat}")
|
||||
if (NOT timeStep4 GREATER timeStep3)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the fourth step!")
|
||||
endif()
|
||||
# Sleep, update generated qrc file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
configure_file(${rccDependsSrcDir}/res2b.qrc.in ${rccDependsBinDir}/res2.qrc.in COPYONLY)
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDependsBinDir}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Sixth build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep5 "${timeformat}")
|
||||
if (NOT timeStep5 GREATER timeStep4)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the fitfh step!")
|
||||
endif()
|
||||
# Sleep, touch generated qrc newly added input file, rebuild and compare timestamp
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) # Ensure that the timestamp will change.
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDependsBinDir}/res2/inputAdded.txt")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDependsBinDir}" RESULT_VARIABLE result)
|
||||
if (result)
|
||||
message(SEND_ERROR "Seventh build of rccDepends failed.")
|
||||
endif()
|
||||
file(TIMESTAMP "${rccDependsBin}" timeStep6 "${timeformat}")
|
||||
if (NOT timeStep6 GREATER timeStep5)
|
||||
message(SEND_ERROR "File (${rccDependsBin}) should have changed in the sixth step!")
|
||||
endif()
|
Loading…
x
Reference in New Issue
Block a user