You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
3.3 KiB

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}")