cmake_minimum_required(VERSION 3.16) project(GlobalAutogenTarget) include("../AutogenCoreTest.cmake") # This tests # CMAKE_GLOBAL_AUTOGEN_TARGET, # CMAKE_GLOBAL_AUTORCC_TARGET, # CMAKE_GLOBAL_AUTOGEN_TARGET_NAME and # CMAKE_GLOBAL_AUTORCC_TARGET_NAME # for the latter two with different values in different subdirectories. # Directories set(GAT_SDIR "${CMAKE_CURRENT_SOURCE_DIR}/GAT") set(GAT_BDIR "${CMAKE_CURRENT_BINARY_DIR}/GAT") # Files set(MCA "sda/sda_autogen/mocs_compilation*.cpp") set(MCB "sdb/sdb_autogen/mocs_compilation*.cpp") set(MCC "sdc/sdc_autogen/mocs_compilation*.cpp") set(MCG "gat_autogen/mocs_compilation*.cpp") set(DRA "sda/sda_autogen/*qrc_data.cpp") set(DRB "sdb/sdb_autogen/*qrc_data.cpp") set(DRC "sdc/sdc_autogen/*qrc_data.cpp") set(DRG "gat_autogen/*qrc_data.cpp") # -- Utility macros macro(GAT_FIND_FILES VAR NAME) file(GLOB_RECURSE ${VAR} ${GAT_BDIR}/*${NAME}) endmacro() macro(GAT_FIND_FILE NAME) GAT_FIND_FILES(LST ${NAME}) if(LST) message("Good find ${LST}") else() message(SEND_ERROR "Expected to find ${GAT_BDIR}/${NAME}") endif() unset(LST) endmacro() macro(GAT_FIND_FILE_NOT NAME) GAT_FIND_FILES(LST ${NAME}) if(LST) message(SEND_ERROR "Not expected to find ${GAT_BDIR}/${NAME}") else() message("Good not find ${GAT_BDIR}/${NAME}") endif() unset(LST) endmacro() macro(GAT_BUILD_TARGET NAME) message("___ Building GAT ${NAME} target ___") execute_process( COMMAND "${CMAKE_COMMAND}" --build "${GAT_BDIR}" --target ${NAME} WORKING_DIRECTORY "${GAT_BDIR}" RESULT_VARIABLE result) if (result) message(SEND_ERROR "Building of GAT ${NAME} target failed") endif() endmacro() # -- Remove and recreate build directory file(REMOVE_RECURSE ${GAT_BDIR}) file(MAKE_DIRECTORY ${GAT_BDIR}) # -- Configure project message("___ Configuring GAT project ___") execute_process( COMMAND "${CMAKE_COMMAND}" "${GAT_SDIR}" -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" -T "${CMAKE_GENERATOR_TOOLSET}" "-DQT_TEST_VERSION=${QT_TEST_VERSION}" "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}" "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}" "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}" WORKING_DIRECTORY "${GAT_BDIR}" OUTPUT_VARIABLE output RESULT_VARIABLE result) if (result) message(SEND_ERROR "Configuring of GAT project failed") else() message("Configuring of GAT project succeeded") message("${output}") endif() # -- Build autogen subtargets GAT_BUILD_TARGET("autogen") GAT_FIND_FILE("${MCA}") GAT_FIND_FILE_NOT("${MCB}") GAT_FIND_FILE_NOT("${MCC}") GAT_FIND_FILE("${MCG}") GAT_BUILD_TARGET("global_autogen_sdb") GAT_FIND_FILE("${MCA}") GAT_FIND_FILE("${MCB}") GAT_FIND_FILE_NOT("${MCC}") GAT_FIND_FILE("${MCG}") GAT_BUILD_TARGET("all_autogen") GAT_FIND_FILE("${MCA}") GAT_FIND_FILE("${MCB}") GAT_FIND_FILE("${MCC}") GAT_FIND_FILE("${MCG}") # -- Build autorcc subtargets GAT_BUILD_TARGET("autorcc") GAT_FIND_FILE("${DRA}") GAT_FIND_FILE_NOT("${DRB}") GAT_FIND_FILE_NOT("${DRC}") GAT_FIND_FILE("${DRG}") GAT_BUILD_TARGET("global_autorcc_sdb") GAT_FIND_FILE("${DRA}") GAT_FIND_FILE("${DRB}") GAT_FIND_FILE_NOT("${DRC}") GAT_FIND_FILE("${DRG}") GAT_BUILD_TARGET("all_autorcc") GAT_FIND_FILE("${DRA}") GAT_FIND_FILE("${DRB}") GAT_FIND_FILE("${DRC}") GAT_FIND_FILE("${DRG}")