cmake_minimum_required(VERSION 3.4) ##### Macro definitions # Indent_Include -- macro(Indent_Include SCRIPT_PATH) set(MSG_INDENT "${MSG_INDENT} ") include(${SCRIPT_PATH} NO_POLICY_SCOPE) string(SUBSTRING ${MSG_INDENT} 2 -1 MSG_INDENT) endmacro(Indent_Include) # Std_Header -- macro(Std_Header) get_filename_component(CUR_MAKELIST ${CMAKE_CURRENT_LIST_FILE} ABSOLUTE) get_filename_component(CUR_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) message(STATUS "") message(STATUS "${MSG_INDENT} ---> ${CUR_MAKELIST}") endmacro(Std_Header) # Define_Var_From_Env_Or_Value -- macro(Define_Var_From_Env_Or_Value VAR_NAME VALUE TEST_FILE) if(NOT DEFINED ${VAR_NAME}) if("$ENV{${VAR_NAME}}" STREQUAL "") set(${VAR_NAME} ${VALUE}) message(STATUS "${MSG_INDENT} env(${VAR_NAME}) not defined, attempting: >${${VAR_NAME}}<") else() set(${VAR_NAME} $ENV{${VAR_NAME}}) message(STATUS "${MSG_INDENT} Using env(${VAR_NAME}): >${${VAR_NAME}}<") endif("$ENV{${VAR_NAME}}" STREQUAL "") if(NOT "${TEST_FILE}" STREQUAL "") if(NOT EXISTS "${${VAR_NAME}}/${TEST_FILE}") message(FATAL_ERROR "${MSG_INDENT} test path \"${${VAR_NAME}}/${TEST_FILE}\" does not exists, aborting") else() message(STATUS "${MSG_INDENT} Found \"${${VAR_NAME}}/${TEST_FILE}\"<") endif(NOT EXISTS "${${VAR_NAME}}/${TEST_FILE}") endif(NOT "${TEST_FILE}" STREQUAL "") endif(NOT DEFINED ${VAR_NAME}) endmacro(Define_Var_From_Env_Or_Value) # Define_Var_From_Env_Or_Stop -- macro(Define_Var_From_Env_Or_Stop VAR_NAME) if(NOT DEFINED ${VAR_NAME}) if("$ENV{${VAR_NAME}}" STREQUAL "") message(FATAL_ERROR "${MSG_INDENT} env(${VAR_NAME}) not defined, aborting") else() set(${VAR_NAME} $ENV{${VAR_NAME}}) message(STATUS "${MSG_INDENT} Using env(${VAR_NAME}): >${${VAR_NAME}}<") endif("$ENV{${VAR_NAME}}" STREQUAL "") endif(NOT DEFINED ${VAR_NAME}) endmacro(Define_Var_From_Env_Or_Stop) ##### Identify main cmake file and include it. get_filename_component(MAIN_LISTFILE ${CMAKE_CURRENT_LIST_FILE} PATH) get_filename_component(MAIN_LISTFILE ${MAIN_LISTFILE} NAME) set(MAIN_LISTFILE "../${MAIN_LISTFILE}.cmake") file(GLOB MAIN_LISTFILE_TEST ${MAIN_LISTFILE}) if("${MAIN_LISTFILE_TEST}" STREQUAL "") message(FATAL_ERROR "CMakeLists.txt: no file \"${MAIN_LISTFILE}\", aborting.") endif("${MAIN_LISTFILE_TEST}" STREQUAL "") message(STATUS "") message(STATUS "") message(STATUS "CMakeLists.txt: including main cmake file: \"${MAIN_LISTFILE}\"") set(MSG_INDENT " ") include(${MAIN_LISTFILE} NO_POLICY_SCOPE)