From bdc6879be54beaf2c763ad899d800455a8a5f6a9 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 24 Apr 2020 05:17:06 +0300 Subject: [PATCH 01/54] First version --- cmake/CmakeFlameResolver.cmake | 9 + cmake/Functions.cmake | 7 + cmake/Functions/CommonFunctions.cmake | 24 + cmake/Functions/CompileBinaryFunctions.cmake | 200 ++++++ cmake/Functions/CompileLibraryFunctions.cmake | 448 +++++++++++++ cmake/Functions/HeaderLibraryFunctions.cmake | 148 +++++ cmake/Functions/PrintFunctions.cmake | 99 +++ cmake/Functions/PropertyFunctions.cmake | 80 +++ cmake/Functions/ResolveFunctions.cmake | 599 ++++++++++++++++++ cmake/Macros.cmake | 52 ++ cmake/Options.cmake | 40 ++ cmake/Platform.cmake | 7 + cmake/Platform/Unix.cmake | 21 + cmake/Platform/Windows.cmake | 1 + cmake/Properties.cmake | 2 + cmake/Properties/GlobalProperties.cmake | 22 + cmake/Properties/TargetProperties.cmake | 410 ++++++++++++ cmake/Variables.cmake | 20 + 18 files changed, 2189 insertions(+) create mode 100644 cmake/CmakeFlameResolver.cmake create mode 100644 cmake/Functions.cmake create mode 100644 cmake/Functions/CommonFunctions.cmake create mode 100644 cmake/Functions/CompileBinaryFunctions.cmake create mode 100644 cmake/Functions/CompileLibraryFunctions.cmake create mode 100644 cmake/Functions/HeaderLibraryFunctions.cmake create mode 100644 cmake/Functions/PrintFunctions.cmake create mode 100644 cmake/Functions/PropertyFunctions.cmake create mode 100644 cmake/Functions/ResolveFunctions.cmake create mode 100644 cmake/Macros.cmake create mode 100644 cmake/Options.cmake create mode 100644 cmake/Platform.cmake create mode 100644 cmake/Platform/Unix.cmake create mode 100644 cmake/Platform/Windows.cmake create mode 100644 cmake/Properties.cmake create mode 100644 cmake/Properties/GlobalProperties.cmake create mode 100644 cmake/Properties/TargetProperties.cmake create mode 100644 cmake/Variables.cmake diff --git a/cmake/CmakeFlameResolver.cmake b/cmake/CmakeFlameResolver.cmake new file mode 100644 index 0000000..36b0e89 --- /dev/null +++ b/cmake/CmakeFlameResolver.cmake @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.14) + +include(Macros) + +include(Options) +include(Platform) +include(Variables) +include(Functions) +include(Properties) diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake new file mode 100644 index 0000000..f748e59 --- /dev/null +++ b/cmake/Functions.cmake @@ -0,0 +1,7 @@ +include(Functions/CommonFunctions) +include(Functions/CompileBinaryFunctions) +include(Functions/CompileLibraryFunctions) +include(Functions/HeaderLibraryFunctions) +include(Functions/PrintFunctions) +include(Functions/PropertyFunctions) +include(Functions/ResolveFunctions) diff --git a/cmake/Functions/CommonFunctions.cmake b/cmake/Functions/CommonFunctions.cmake new file mode 100644 index 0000000..8b5fd01 --- /dev/null +++ b/cmake/Functions/CommonFunctions.cmake @@ -0,0 +1,24 @@ +# +# +# +function(remove_source_dir PATH REMOVE_PATH OUT) + string(REPLACE "${REMOVE_PATH}" "" ${OUT} "${PATH}") + set(${OUT} "${${OUT}}" PARENT_SCOPE) +endfunction(remove_source_dir) + +# +# +# +function(get_real_target CURRENT_TARGET_NAME REAL_TARGET_NAME) + if(TARGET ${CURRENT_TARGET_NAME}) + get_target_property(aliased ${CURRENT_TARGET_NAME} ALIASED_TARGET) + if(aliased) + set(${REAL_TARGET_NAME} ${aliased} PARENT_SCOPE) + else() + set(${REAL_TARGET_NAME} ${CURRENT_TARGET_NAME} PARENT_SCOPE) + endif() + else() + message_fatal("-- '${CURRENT_TARGET_NAME}' is not a target") + endif() +endfunction(get_real_target) + diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake new file mode 100644 index 0000000..3057dee --- /dev/null +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -0,0 +1,200 @@ +# +# +# +macro(internal_compile_binary_start_function) + check_internal_use() + start_debug_function(compile_binary) +endmacro(internal_compile_binary_start_function) + +# +# +# +macro(internal_compile_binary_end_function) + check_internal_use() + end_debug_function() +endmacro(internal_compile_binary_end_function) + +# +# +# +macro(ineternal_compile_binary_parse_paramters) + check_internal_use() + + set(OPTIONS + "DEBUG" + ) + set(VALUES + "NAME" + "ALIAS_NAME" + + "SOURCE_LIST_FILE" + "HEADER_LIST_FILE" + + "INSTALL_PATH" + ) + set(LISTS + "INCLUDE_PATHS" + + "SOURCE_LIST" + "HEADER_LIST" + + "COMPILE_FLAGS" + "LINK_FLAGS" + + "DEPENDENCY_TARGET_LIST" + ) + cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") +endmacro(ineternal_compile_binary_parse_paramters) + +# +# +# +macro(ineternal_compile_binary_print_parse_result) + check_internal_use() + + if(BINARY_DEBUG) + print_debug_function_newline("-------- PARSE RESULT -------") + + #print_debug_function_newline("-- OPTIONS --") + + print_debug_function_newline("-- VALUES --") + + print_debug_function_oneline("BINARY_NAME = ") + print_debug_list_newline(${BINARY_NAME}) + + print_debug_function_oneline("BINARY_ALIAS_NAME = ") + print_debug_list_newline(${BINARY_ALIAS_NAME}) + + print_debug_function_oneline("BINARY_SOURCE_LIST_FILE = ") + print_debug_list_newline(${BINARY_SOURCE_LIST_FILE}) + + print_debug_function_oneline("BINARY_HEADER_LIST_FILE = ") + print_debug_list_newline(${BINARY_HEADER_LIST_FILE}) + + print_debug_function_oneline("BINARY_INSTALL_PATH = ") + print_debug_list_newline(${BINARY_INSTALL_PATH}) + + print_debug_function_newline("-- LISTS --") + + print_debug_function_oneline("BINARY_INCLUDE_PATHS = ") + print_debug_list_newline(${BINARY_INCLUDE_PATHS}) + + print_debug_function_oneline("BINARY_SOURCE_LIST = ") + print_debug_list_newline(${BINARY_SOURCE_LIST}) + + print_debug_function_oneline("BINARY_HEADER_LIST = ") + print_debug_list_newline(${BINARY_HEADER_LIST}) + + print_debug_function_oneline("BINARY_COMPILE_FLAGS = ") + print_debug_list_newline(${BINARY_COMPILE_FLAGS}) + + print_debug_function_oneline("BINARY_LINK_FLAGS = ") + print_debug_list_newline(${BINARY_LINK_FLAGS}) + + print_debug_function_oneline("BINARY_DEPENDENCY_TARGET_LIST = ") + print_debug_list_newline(${BINARY_DEPENDENCY_TARGET_LIST}) + + print_debug_function_newline("-------- PARSE RESULT -------") + endif() +endmacro(ineternal_compile_binary_print_parse_result) + +# +# +# +macro(internal_compile_binary_process_paramters) + check_internal_use() + + if(BINARY_SOURCE_LIST_FILE) + include(${BINARY_SOURCE_LIST_FILE}) + endif() + if(BINARY_SOURCE_LIST) + list(APPEND SOURCE_LIST ${BINARY_SOURCE_LIST}) + endif() + if(NOT BINARY_SOURCE_LIST_FILE) + if(NOT BINARY_SOURCE_LIST) + message_fatal("-- " + "Need 'SOURCE_LIST_FILE' or/and 'SOURCE_LIST'.") + endif() + endif() + + if(BINARY_HEADER_LIST_FILE) + include(${BINARY_HEADER_LIST_FILE}) + list(APPEND HEADER_LIST ${BINARY_SOURCE_LIST}) + endif() + if(BINARY_HEADER_LIST) + list(APPEND HEADER_LIST ${BINARY_SOURCE_LIST}) + endif() + + internal_print_warning_not_support("${BINARY_COMPILE_FLAGS}" COMPILE_FLAGS) + internal_print_warning_not_support("${BINARY_LINK_FLAGS}" LINK_FLAGS) + internal_print_warning_not_support("${BINARY_INSTALL_PATH}" INSTALL_PATH) +endmacro(internal_compile_binary_process_paramters) + +# +# +# +macro(ineternal_compile_binary) + check_internal_use() + + print_newline( + "-- Adding binary for ${BINARY_NAME}") + + string(CONCAT TARGET_NAME + "${BINARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_BINARY_MODULE_SUFFIX}") + string(CONCAT TARGET_CUSTOM_PROPERTIES + "${TARGET_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_CUSTOM_TARGET_SUFFIX}") + + #set(DEBUG DEBUG) + internal_add_binary_target_properties( + PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" + REAL_TARGET "${TARGET_NAME}" + OUTPUT_NAME "${BINARY_NAME}" + #INSTALL_PATH "${BINARY_INSTALL_PATH}" + + ADDING_HEADERS "${HEADER_LIST}" + ADDING_SOURCES "${SOURCE_LIST}" + #COMPILE_FLAGS "${BINARY_COMPILE_FLAGS}" + DEPENDENCY_LIBRARIES "${BINARY_DEPENDENCY_TARGET_LIST}" + #LINK_FLAGS "${BINARY_LINK_FLAGS}" + INCLUDE_PATHS "${BINARY_INCLUDE_PATHS}" + + + #DEBUG + ) + + unset(TARGET_CUSTOM_PROPERTIES) + unset(TARGET_NAME) + + print_newline( + "-- Adding binary for ${BINARY_NAME} - done") + +endmacro(ineternal_compile_binary) + +# +# +# +function(compile_binary) + enable_internal_use() + + # Parse paramters + ineternal_compile_binary_parse_paramters(${ARGV}) + + # Start function log + internal_compile_binary_start_function() + + # Print parse result + ineternal_compile_binary_print_parse_result() + + # Check parameters + internal_compile_binary_process_paramters() + + # Add binary to resolve list + ineternal_compile_binary() + + # End function log + internal_compile_binary_end_function() +endfunction(compile_binary) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake new file mode 100644 index 0000000..aca079a --- /dev/null +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -0,0 +1,448 @@ +# +# +# +macro(internal_compile_library_start_function) + check_internal_use() + start_debug_function(compile_library) +endmacro(internal_compile_library_start_function) + +# +# +# +macro(internal_compile_library_end_function) + check_internal_use() + end_debug_function() +endmacro(internal_compile_library_end_function) + +# +# +# +macro(ineternal_compile_library_parse_paramters) + check_internal_use() + + set(OPTIONS + "DEBUG" + "MAKE_STATIC" + "MAKE_SHARED" + "NOT_MAKE_POSITION_DEPEND_OBJECTS" + "NOT_MAKE_POSITION_INDEPEND_OBJECTS" + "HELP" + ) + set(VALUES + "LIBRARY_NAME" + + "OBJECT_ALIAS_NAME" + "INDEPEND_OBJECT_ALIAS_NAME" + "STATIC_ALIAS_NAME" + "SHARED_ALIAS_NAME" + + "SOURCE_LIST_FILE" + "HEADER_LIST_FILE" + + "STATIC_INSTALL_PATH" + "SHARED_INSTALL_PATH" + ) + set(LISTS + "INCLUDE_PATHS" + + "SOURCE_LIST" + "HEADER_LIST" + + "COMMPILE_FLAGS" + "LINK_FLAGS" + + "DEPENDENCY_HEADER_TARGETS" + "DEPENDENCY_TARGETS_FOR_STATIC" + "DEPENDENCY_TARGETS_FOR_SHARED" + ) + cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") +endmacro(ineternal_compile_library_parse_paramters) + +# +# +# +macro(ineternal_compile_library_print_parse_result) + check_internal_use() + + if(COMPILE_DEBUG) + print_debug_function_newline("-------------- PARSE RESULT --------------") + + # options + + print_debug_function_newline("-- OPTIONS --") + + #print_debug_function_oneline("COMPILE_DEBUG = ") + #print_debug_list_newline("${COMPILE_DEBUG}") + + print_debug_function_oneline("COMPILE_MAKE_STATIC = ") + print_debug_list_newline("${COMPILE_MAKE_STATIC}") + + print_debug_function_oneline("COMPILE_MAKE_SHARED = ") + print_debug_list_newline("${COMPILE_MAKE_SHARED}") + + print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS = ") + print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}") + + print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPEND_OBJECTS = ") + print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}") + + print_debug_function_oneline("COMPILE_HELP = ") + print_debug_list_newline("${COMPILE_HELP}") + + # values + + print_debug_function_newline("-- VALUES --") + + print_debug_function_oneline("COMPILE_LIBRARY_NAME = ") + print_debug_list_newline(${COMPILE_LIBRARY_NAME}) + + print_debug_function_oneline("COMPILE_OBJECT_ALIAS_NAME = ") + print_debug_list_newline(${COMPILE_OBJECT_ALIAS_NAME}) + + print_debug_function_oneline("COMPILE_INDEPEND_OBJECT_ALIAS_NAME = ") + print_debug_list_newline(${COMPILE_INDEPEND_OBJECT_ALIAS_NAME}) + + print_debug_function_oneline("COMPILE_STATIC_ALIAS_NAME = ") + print_debug_list_newline(${COMPILE_STATIC_ALIAS_NAME}) + + print_debug_function_oneline("COMPILE_SHARED_ALIAS_NAME = ") + print_debug_list_newline(${COMPILE_SHARED_ALIAS_NAME}) + + print_debug_function_oneline("COMPILE_SOURCE_LIST_FILE = ") + print_debug_list_newline(${COMPILE_SOURCE_LIST_FILE}) + + print_debug_function_oneline("COMPILE_HEADER_LIST_FILE = ") + print_debug_list_newline(${COMPILE_HEADER_LIST_FILE}) + + print_debug_function_oneline("COMPILE_STATIC_INSTALL_PATH = ") + print_debug_list_newline(${COMPILE_STATIC_INSTALL_PATH}) + + print_debug_function_oneline("COMPILE_SHARED_INSTALL_PATH = ") + print_debug_list_newline(${COMPILE_SHARED_INSTALL_PATH}) + + # lists + + print_debug_function_newline("-- LISTS --") + + print_debug_function_oneline("COMPILE_INCLUDE_PATHS = ") + print_debug_list_newline("${COMPILE_INCLUDE_PATHS}") + + print_debug_function_oneline("COMPILE_SOURCE_LIST = ") + print_debug_list_newline(${COMPILE_SOURCE_LIST}) + + print_debug_function_oneline("COMPILE_HEADER_LIST = ") + print_debug_list_newline(${COMPILE_HEADER_LIST}) + + print_debug_function_oneline("COMPILE_COMPILE_FLAGS = ") + print_debug_list_newline("${COMPILE_COMPILE_FLAGS}") + + print_debug_function_oneline("COMPILE_LINK_FLAGS = ") + print_debug_list_newline("${COMPILE_LINK_FLAGS}") + + print_debug_function_oneline("COMPILE_DEPENDENCY_HEADER_TARGETS = ") + print_debug_list_newline("${COMPILE_DEPENDENCY_HEADER_TARGETS}") + + print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_STATIC = ") + print_debug_list_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}") + + print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_SHARED = ") + print_debug_list_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}") + + print_debug_function_newline("-------------- PARSE RESULT --------------") + endif() + + internal_print_warning_not_support("${COMPILE_HELP}" + HELP) + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}" + NOT_MAKE_POSITION_DEPEND_OBJECTS) + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_INDEPEND_OBJECTS}" + NOT_MAKE_INPOSITION_DEPEND_OBJECTS) + internal_print_warning_not_support("${COMPILE_COMPILE_FLAGS}" + COMPILE_FLAGS) + internal_print_warning_not_support("${COMPILE_LINK_FLAGS}" + LINK_FLAGS) + internal_print_warning_not_support("${COMPILE_STATIC_INSTALL_PATH}" + STATIC_INSTALL_PATH) + internal_print_warning_not_support("${COMPILE_SHARED_INSTALL_PATH}" + SHARED_INSTALL_PATH) +endmacro(ineternal_compile_library_print_parse_result) + +# +# +# +macro(internal_compile_library_process_paramters) + check_internal_use() + + if(COMPILE_SOURCE_LIST_FILE) + if(EXISTS ${COMPILE_SOURCE_LIST_FILE}) + include(${COMPILE_SOURCE_LIST_FILE}) + else() + message_fatal("-- " + "Need source list file with defined 'SOURCE_LIST' variable.") + endif() + endif() + if(COMPILE_SOURCE_LIST) + list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) + endif() + if(NOT COMPILE_SOURCE_LIST_FILE) + if(NOT COMPILE_SOURCE_LIST) + message_fatal("-- " + "Need 'SOURCE_LIST_FILE' or/and 'SOURCE_LIST'.") + endif() + endif() + + if(COMPILE_HEADER_LIST_FILE) + if(EXISTS ${COMPILE_HEADER_LIST_FILE}) + include(${COMPILE_HEADER_LIST_FILE}) + list(APPEND SOURCE_LIST "${HEADER_LIST}") + endif() + elseif(COMPILE_HEADER_LIST) + list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) + endif() +endmacro(internal_compile_library_process_paramters) + +# +# +# +macro(internal_compile_library_print_help) + check_internal_use() +endmacro(internal_compile_library_print_help) + +# +# +# +macro(ineternal_compile_independ_object_library) + check_internal_use() + + print_newline( + "-- Adding position independ object library for ${COMPILE_LIBRARY_NAME}") + + string(CONCAT TARGET_NAME_DEPEND + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_MODULE_SUFFIX}") + string(CONCAT TARGET_NAME_INDEPEND + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_MODULE_SUFFIX}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_INDEPEND_MODULE_SUFFIX}") + + if(FLAME_ONLY_POSITION_INDEPEND_OBJECTS) + set(TARGET_NAME ${TARGET_NAME_DEPEND}) + else() + set(TARGET_NAME ${TARGET_NAME_INDEPEND}) + endif() + + string(CONCAT TARGET_CUSTOM_PROPERTIES + "${TARGET_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_CUSTOM_TARGET_SUFFIX}") + set(POSITION_INDEPEND TRUE) + + if(FLAME_ONLY_POSITION_INDEPEND_OBJECTS) + set(OBJECT_ALIASES + "${COMPILE_INDEPEND_OBJECT_ALIAS_NAME}" + "${COMPILE_OBJECT_ALIAS_NAME}" + "${TARGET_NAME_INDEPEND}") + else() + set(OBJECT_ALIASES + "${COMPILE_INDEPEND_OBJECT_ALIAS_NAME}") + endif() + + #set(DEBUG DEBUG) + internal_add_object_target_properties( + PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" + REAL_TARGET "${TARGET_NAME}" + ADDING_SOURCES "${SOURCE_LIST}" + INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" + DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" + COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" + POSITION_INDEPEND + OBJECT_ALIASES "${OBJECT_ALIASES}" + #DEBUG + ) + + unset(POSITION_INDEPEND) + unset(TARGET_CUSTOM_PROPERTIES) + unset(TARGET_NAME) + unset(TARGET_NAME_INDEPEND) + unset(TARGET_NAME_DEPEND) + + print_newline( + "-- Adding position independ object library for ${COMPILE_LIBRARY_NAME} - done") +endmacro(ineternal_compile_independ_object_library) + +# +# +# +macro(ineternal_compile_depend_object_library) + check_internal_use() + + print_newline("-- Adding position depend object library for ${COMPILE_LIBRARY_NAME}") + + string(CONCAT TARGET_NAME + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_MODULE_SUFFIX}") + string(CONCAT TARGET_CUSTOM_PROPERTIES + "${TARGET_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_CUSTOM_TARGET_SUFFIX}") + + #set(DEBUG DEBUG) + internal_add_object_target_properties( + PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" + REAL_TARGET "${TARGET_NAME}" + ADDING_SOURCES "${SOURCE_LIST}" + INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" + DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" + COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" + OBJECT_ALIASES "${COMPILE_OBJECT_ALIAS_NAME}" + #DEBUG + ) + + unset(TARGET_CUSTOM_PROPERTIES) + unset(TARGET_NAME) + + print_newline("-- Adding object library for ${COMPILE_LIBRARY_NAME} - done") +endmacro(ineternal_compile_depend_object_library) + +# +# +# +macro(ineternal_compile_object_library) + check_internal_use() + + ineternal_compile_independ_object_library() + if(NOT FLAME_ONLY_POSITION_INDEPEND_OBJECTS) + ineternal_compile_depend_object_library() + endif() +endmacro(ineternal_compile_object_library) + + +# +# +# +macro(ineternal_compile_static_library) + check_internal_use() + + print_newline("-- Adding static library for ${COMPILE_LIBRARY_NAME}") + + string(CONCAT TARGET_NAME + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_STATIC_MODULE_SUFFIX}") + string(CONCAT TARGET_CUSTOM_PROPERTIES + "${TARGET_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_CUSTOM_TARGET_SUFFIX}") + + string(CONCAT TARGET_DEPEND_OBJECT_LIBRARY + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_MODULE_SUFFIX}" + ) + + #set(DEBUG DEBUG) + internal_add_static_target_properties( + PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" + REAL_TARGET "${TARGET_NAME}" + #ADDING_SOURCES "${}" + ADDING_OBJECTS "${TARGET_DEPEND_OBJECT_LIBRARY}" + DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" + DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}" + #COMPILE_FLAGS "${}" + OUTPUT_NAME "${COMPILE_LIBRARY_NAME}" + LIBRARY_ALIASES "${COMPILE_STATIC_ALIAS_NAME}" + #DEBUG + ) + + unset(TARGET_DEPEND_OBJECT_LIBRARY) + unset(TARGET_CUSTOM_PROPERTIES) + unset(TARGET_NAME) + + print_newline("-- Adding static library for ${COMPILE_LIBRARY_NAME} - done") +endmacro(ineternal_compile_static_library) + +# +# +# +macro(ineternal_compile_shared_library) + check_internal_use() + + print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME}") + + string(CONCAT TARGET_NAME + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_SHARED_MODULE_SUFFIX}") + string(CONCAT TARGET_CUSTOM_PROPERTIES + "${TARGET_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_CUSTOM_TARGET_SUFFIX}") + + string(CONCAT TARGET_INDEPEND_OBJECT_LIBRARY + "${COMPILE_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_MODULE_SUFFIX}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_OBJECT_INDEPEND_MODULE_SUFFIX}" + ) + + #set(DEBUG DEBUG) + internal_add_shared_target_properties( + PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" + REAL_TARGET "${TARGET_NAME}" + #ADDING_SOURCES "${}" + ADDING_OBJECTS "${TARGET_INDEPEND_OBJECT_LIBRARY}" + DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" + DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}" + #COMPILE_FLAGS "${}" + #LINK_FLAGS "${}" + OUTPUT_NAME "${COMPILE_LIBRARY_NAME}" + LIBRARY_ALIASES "${COMPILE_SHARED_ALIAS_NAME}" + #DEBUG + ) + + unset(TARGET_DEPEND_OBJECT_LIBRARY) + unset(TARGET_CUSTOM_PROPERTIES) + unset(TARGET_NAME) + + print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME} - done") +endmacro(ineternal_compile_shared_library) + +# +# +# +function(compile_library) + enable_internal_use() + + # Parse paramters + ineternal_compile_library_parse_paramters(${ARGV}) + + # Start function log + internal_compile_library_start_function() + + # Print parse result + ineternal_compile_library_print_parse_result() + + # Check parameters + internal_compile_library_process_paramters() + + # Add object library/libraries to resolve list + ineternal_compile_object_library() + + # Add static library to resolve list + if(MAKE_STATIC AND FLAME_MAKE_STATIC) + ineternal_compile_static_library() + endif() + + # Add shared library to resolve list + if(MAKE_SHARED AND FLAME_MAKE_SHARED) + ineternal_compile_shared_library() + endif() + + # End function log + internal_compile_library_end_function() +endfunction(compile_library) diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake new file mode 100644 index 0000000..f578fa1 --- /dev/null +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -0,0 +1,148 @@ +# +# +# +macro(internal_header_library_start_function) + check_internal_use() + start_debug_function(header_library) +endmacro(internal_header_library_start_function) + +# +# +# +macro(internal_header_library_end_function) + check_internal_use() + end_debug_function() +endmacro(internal_header_library_end_function) + +# +# +# +macro(internal_header_library_parse_arguments) + check_internal_use() + + set(OPTIONS "DEBUG" "HELP") + set(VALUES "LIBRARY_NAME" "LIBRARY_ALIAS_NAME" "HEADER_LIST_FILE" "INSTALL_PATH") + set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") + + cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") +endmacro(internal_header_library_parse_arguments) + +# +# +# +macro(ineternal_header_library_print_parse_result) + check_internal_use() + + if(HEADER_DEBUG) + print_debug_function_newline("-------- PARSE RESULT --------") + + print_debug_function_oneline("HEADER_HELP = ") + print_debug_list_newline(${HEADER_HELP}) + + print_debug_function_oneline("HEADER_LIBRARY_NAME = ") + print_debug_list_newline(${HEADER_LIBRARY_NAME}) + + print_debug_function_oneline("HEADER_HEADER_LIST_FILE = ") + print_debug_list_newline("${HEADER_HEADER_LIST_FILE}") + + print_debug_function_oneline("HEADER_HEADER_LIST = ") + print_debug_list_newline(${HEADER_HEADER_LIST}) + + print_debug_function_oneline("HEADER_LIBRARY_ALIAS_NAME = ") + print_debug_list_newline(${HEADER_LIBRARY_ALIAS_NAME}) + + print_debug_function_oneline("HEADER_DEPENDENCY_TARGET_LIST = ") + print_debug_list_newline(${HEADER_DEPENDENCY_TARGET_LIST}) + + print_debug_function_oneline("HEADER_INCLUDE_PATHS = ") + print_debug_list_newline(${HEADER_INCLUDE_PATHS}) + + print_debug_function_oneline("HEADER_INSTALL_PATH = ") + print_debug_list_newline(${HEADER_INSTALL_PATH}) + + print_debug_function_newline("-------- PARSE RESULT --------") + endif() + + internal_print_warning_not_support("${HEADER_HELP}" HELP) + internal_print_warning_not_support("${HEADER_INSTALL_PATH}" INSTALL_PATH) +endmacro(ineternal_header_library_print_parse_result) + +# +# +# +macro(internal_header_library_process_paramters) + check_internal_use() + + if(NOT HEADER_LIBRARY_NAME) + message_fatal("-- Need 'LIBRARY_NAME'.") + endif() + + if(HEADER_HEADER_LIST_FILE) + if(EXISTS "${HEADER_HEADER_LIST_FILE}") + include(${HEADER_HEADER_LIST_FILE}) + else() + message_fatal("-- " + "Need header list file with defined 'HEADER_LIST' variable.") + endif() + elseif(HEADER_HEADER_LIST) + set(HEADER_LIST "${HEADER_HEADER_LIST}") + else() + message_fatal("-- " + "Need 'HEADER_LIST_FILE' or 'HEADER_LIST'.") + endif() +endmacro(internal_header_library_process_paramters) + +macro(internal_header_library) + check_internal_use() + + print_newline("-- Adding header library for ${HEADER_LIBRARY_NAME}") + + string(CONCAT TARGET_NAME + "${HEADER_LIBRARY_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_HEADER_MODULE_SUFFIX}") + string(CONCAT TARGET_CUSTOM_PROPERTIES + "${TARGET_NAME}" + "${FLAME_NAME_SEPARATOR}" + "${FLAME_CUSTOM_TARGET_SUFFIX}") + + #set(DEBUG TRUE) + internal_add_header_target_properties( + #DEBUG + PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" + REAL_TARGET "${TARGET_NAME}" + ADDING_HEADERS "${HEADER_LIST}" + DEPENDENCY_HEADERS "${HEADER_DEPENDENCY_TARGET_LIST}" + LIBRARY_ALIASES "${HEADER_LIBRARY_ALIAS_NAME}" + ) + + unset(TARGET_CUSTOM_PROPERTIES) + unset(TARGET_NAME) + + print_newline("-- Adding header library for ${HEADER_LIBRARY_NAME} - done") +endmacro(internal_header_library) + +# +# +# +function(header_library) + enable_internal_use() + + # Parse arguments + internal_header_library_parse_arguments(${ARGV}) + + # Start function log + internal_header_library_start_function() + + # Print results + ineternal_header_library_print_parse_result() + + # Process parameters + internal_header_library_process_paramters() + + # Add header library to resolve list + internal_header_library() + + # End function log + internal_header_library_end_function() +endfunction(header_library) diff --git a/cmake/Functions/PrintFunctions.cmake b/cmake/Functions/PrintFunctions.cmake new file mode 100644 index 0000000..5841ed2 --- /dev/null +++ b/cmake/Functions/PrintFunctions.cmake @@ -0,0 +1,99 @@ +# +# +# +function(message_debug) + if(FLAME_CMAKE_DEBUG) + message(${ARGV}) + endif() +endfunction(message_debug) + +# +# +# +function(message_fatal) + message(FATAL_ERROR ${ARGV}) +endfunction(message_fatal) + +# +# +# +function(message_warning) + message(WARNING ${ARGV}) +endfunction(message_warning) + +# +# +# +function(print_oneline) + if(FLAME_LOGGING) + foreach(str ${ARGV}) + string(CONCAT RESULT_MESSAGE ${RESULT_MESSAGE} ${str}) + endforeach() + execute_process(COMMAND ${CMAKE_COMMAND} -E echo_append "${RESULT_MESSAGE}") + endif() +endfunction(print_oneline) + +# +# +# +function(print_newline) + if(FLAME_LOGGING) + foreach(str ${ARGV}) + string(CONCAT RESULT_MESSAGE ${RESULT_MESSAGE} ${str}) + endforeach() + execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${RESULT_MESSAGE}") + endif() +endfunction(print_newline) + +# +# +# +function(print_debug_oneline) + if(FLAME_CMAKE_DEBUG) + foreach(str ${ARGV}) + string(CONCAT RESULT_MESSAGE ${RESULT_MESSAGE} ${str}) + endforeach() + execute_process(COMMAND ${CMAKE_COMMAND} + -E echo_append "${RESULT_MESSAGE}") + endif() +endfunction(print_debug_oneline) + +# +# +# +function(print_debug_newline) + if(FLAME_CMAKE_DEBUG) + foreach(str ${ARGV}) + string(CONCAT RESULT_MESSAGE ${RESULT_MESSAGE} ${str}) + endforeach() + execute_process(COMMAND ${CMAKE_COMMAND} + -E echo "${RESULT_MESSAGE}") + endif() +endfunction(print_debug_newline) + +# +# +# +function(print_debug_list_newline) + set(ARG_LIST ${ARGV}) + if(ARG_LIST) + list(GET ARG_LIST 0 RESULT) + list(REMOVE_AT ARG_LIST 0) + foreach(arg ${ARG_LIST}) + string(CONCAT RESULT ${RESULT} ", " ${arg}) + endforeach() + endif() + + print_debug_newline("${RESULT}") +endfunction(print_debug_list_newline) + +# +# +# +function(internal_print_warning_not_support VAR_VALUE VAR_NAME) + check_internal_use() + + if(VAR_VALUE) + message_warning("-- '${VAR_NAME}' is not supporting now") + endif() +endfunction(internal_print_warning_not_support) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake new file mode 100644 index 0000000..2a452f8 --- /dev/null +++ b/cmake/Functions/PropertyFunctions.cmake @@ -0,0 +1,80 @@ +# +# +# +function(define_global_property PROPERTY_NAME PROPERTY_INFO PROPERTY_FULL_INFO) + define_property(GLOBAL + PROPERTY ${PROPERTY_NAME} + BRIEF_DOCS "${PROPERTY_INFO}" + FULL_DOCS "${PROPERTY_FULL_INFO}" + ) +endfunction(define_global_property) + + +# +# +# +function(set_global_property PROPERTY_NAME PROPERTY_VALUE) + set_property( + GLOBAL + PROPERTY + ${PROPERTY_NAME} + "${PROPERTY_VALUE}" + ) +endfunction(set_global_property) + + +# +# +# +function(get_global_property PROPERTY_NAME RETURN_PROPERTY_VALUE) + get_property(VALUE + GLOBAL + PROPERTY + ${PROPERTY_NAME} + ) + set(${RETURN_PROPERTY_VALUE} "${VALUE}" PARENT_SCOPE) +endfunction(get_global_property) + + +# +# +# +function(add_to_global_property PROPERTY_NAME ADDITION_VALUE) + get_global_property(${PROPERTY_NAME} VALUE) + list(APPEND VALUE ${ADDITION_VALUE}) + set_global_property(${PROPERTY_NAME} "${VALUE}") +endfunction(add_to_global_property) + + +# +# +# +function(target_property_define PROPERTY_NAME PROPERTY_INFO PROPERTY_FULL_INFO) + define_property(TARGET + PROPERTY ${PROPERTY_NAME} + BRIEF_DOCS "${PROPERTY_INFO}" + FULL_DOCS "${PROPERTY_FULL_INFO}" + ) +endfunction(target_property_define) + + +# +# +# +function(target_property_set TARGET_NAME PROPERTY_NAME PROPERTY_VALUE) + set_target_properties( + ${TARGET_NAME} + PROPERTIES ${PROPERTY_NAME} "${PROPERTY_VALUE}" + ) +endfunction(target_property_set) + +# +# +# +function(target_property_get TARGET_NAME PROPERTY_NAME PROPERTY_VALUE) + get_target_property("${PROPERTY_VALUE}" + ${TARGET_NAME} + ${PROPERTY_NAME} + ) + set(${PROPERTY_VALUE} "${${PROPERTY_VALUE}}" PARENT_SCOPE) +endfunction(target_property_get) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake new file mode 100644 index 0000000..93ebd75 --- /dev/null +++ b/cmake/Functions/ResolveFunctions.cmake @@ -0,0 +1,599 @@ +# +# +# +function(internal_resolve_headers) + check_internal_use() + + start_debug_function(internal_resolve_headers) + + get_global_property(FLAME_HEADER_TARGETS HEADER_TARGETS) + + foreach(target.property ${HEADER_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_ADDING_HEADERS + HEADER_LIST) + target_property_get(${target.property} FLAME_INCLUDE_PATHS + INCLUDE_PATHS) + target_property_get(${target.property} FLAME_LIBRARY_ALIASES + LIBRARY_ALIASES) + + print_oneline("-- Header library ${REAL_TARGET} - ") + + add_library(${REAL_TARGET} INTERFACE) + target_sources(${REAL_TARGET} INTERFACE "$") + if(INCLUDE_PATHS) + target_include_directories(${REAL_TARGET} INTERFACE ${INCLUDE_PATHS}) + endif() + if(LIBRARY_ALIASES) + foreach(alias ${LIBRARY_ALIASES}) + add_library(${alias} ALIAS ${REAL_TARGET}) + endforeach() + endif() + + print_newline("done") + endforeach() + + foreach(target.property ${HEADER_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS + DEPENDENCY_LIST) + + if(DEPENDENCY_LIST) + print_oneline("-- Dependencies for header library ${REAL_TARGET} - ") + + foreach(dependency ${DEPENDENCY_LIST}) + target_link_libraries(${REAL_TARGET} INTERFACE ${dependency}) + endforeach() + + print_newline("done") + endif() + endforeach() + + end_debug_function() +endfunction(internal_resolve_headers) + +# +# +# +function(internal_resolve_object_libraries) + start_debug_function(internal_resolve_object_libraries) + + get_global_property(FLAME_OBJECT_TARGETS OBJECT_TARGETS) + foreach(target.property ${OBJECT_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_ADDING_SOURCES + SOURCE_LIST) + + print_oneline("-- Object library ${REAL_TARGET} - ") + if(NOT SOURCE_LIST) + print_newline("Fail") + endif() + add_library(${REAL_TARGET} OBJECT ${SOURCE_LIST}) + print_newline("done") + endforeach() + + foreach(target.property ${OBJECT_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_OBJECT_ALIASES + OBJECT_ALIASES) + + if(OBJECT_ALIASES) + print_oneline("-- Make aliases for object library ${REAL_TARGET} - ") + + foreach(alias ${OBJECT_ALIASES}) + add_library(${alias} ALIAS ${REAL_TARGET}) + endforeach() + + print_newline("done") + endif() + endforeach() + + foreach(target.property ${OBJECT_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_INCLUDE_PATHS + INCLUDE_PATHS) + + if(INCLUDE_PATHS) + print_oneline("-- " + "Set include paths for object library ${REAL_TARGET} - ") + + target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${OBJECT_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) + #endforeach() + + foreach(target.property ${OBJECT_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_POSITION_INDEPEND + POSITION_INDEPEND) + + if(POSITION_INDEPEND) + print_oneline("-- " + "Position independ code for object library ${REAL_TARGET} - ") + + set_property(TARGET ${REAL_TARGET} PROPERTY + POSITION_INDEPENDENT_CODE ${POSITION_INDEPEND}) + + print_newline("done") + endif() + endforeach() + + foreach(target.property ${OBJECT_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS + HEADER_DEPENDENCIES) + + if(HEADER_DEPENDENCIES) + print_oneline("-- Header dependencies for object library ${REAL_TARGET} - ") + + foreach(dependency ${HEADER_DEPENDENCIES}) + target_link_libraries(${REAL_TARGET} PUBLIC ${dependency}) + endforeach() + + print_newline("done") + endif() + endforeach() + + end_debug_function() +endfunction(internal_resolve_object_libraries) + +# +# +# +function(internal_resolve_static_libraries) + start_debug_function(internal_resolve_static_libraries) + + get_global_property(FLAME_STATIC_TARGETS STATIC_TARGETS) + foreach(target.property ${STATIC_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_ADDING_SOURCES + SOURCE_LIST) + target_property_get(${target.property} FLAME_ADDING_OBJECTS + OBJECT_TARGETS) + + print_oneline("-- Static library ${REAL_TARGET} - ") + + set(SOURCES) + if(SOURCE_LIST) + set(SOURCES ${SOURCE_LIST}) + endif() + if(OBJECT_TARGETS) + foreach(target ${OBJECT_TARGETS}) + list(APPEND SOURCES $) + endforeach() + endif() + if((NOT SOURCE_LIST) AND (NOT OBJECT_TARGETS)) + print_newline("Fail") + endif() + + add_library(${REAL_TARGET} STATIC ${SOURCES}) + + print_newline("done") + endforeach() + + foreach(target.property ${STATIC_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_LIBRARY_ALIASES + LIBRARY_ALIASES) + + if(LIBRARY_ALIASES) + print_oneline("-- " + "Aliases for static library ${REAL_TARGET} - ") + + foreach(alias ${LIBRARY_ALIASES}) + add_library(${alias} ALIAS ${REAL_TARGET}) + endforeach() + + print_newline("done") + endif() + endforeach() + + + foreach(target.property ${STATIC_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS + HEADER_TARGETS) + + if(HEADER_TARGETS) + print_oneline("-- " + "Header dependencies for static library ${REAL_TARGET} - ") + + foreach(target ${HEADER_TARGETS}) + target_link_libraries(${REAL_TARGET} PUBLIC ${target}) + endforeach() + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${STATIC_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) + #endforeach() + + foreach(target.property ${STATIC_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_OUTPUT_NAME + OUTPUT_NAME) + + if(OUTPUT_NAME) + print_oneline("-- " + "Output name for static library ${REAL_TARGET} - ") + + set_target_properties(${REAL_TARGET} PROPERTIES + OUTPUT_NAME "${OUTPUT_NAME}") + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${STATIC_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_INSTALL_PATH + # INSTALL_PATH) + #endforeach() + + foreach(target.property ${STATIC_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES + LIBRARY_TARGETS) + + if(LIBRARY_TARGETS) + print_oneline("-- " + "Compiled dependencies for static library ${REAL_TARGET} - ") + + if(LIBRARY_TARGETS) + foreach(target ${LIBRARY_TARGETS}) + target_link_libraries(${REAL_TARGET} PUBLIC ${target}) + endforeach() + endif() + + print_newline("done") + endif() + endforeach() + + end_debug_function() +endfunction(internal_resolve_static_libraries) + +# +# +# +function(internal_resolve_shared_libraries) + start_debug_function(internal_resolve_shared_libraries) + + get_global_property(FLAME_SHARED_TARGETS SHARED_TARGETS) + foreach(target.property ${SHARED_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_ADDING_SOURCES + SOURCE_LIST) + target_property_get(${target.property} FLAME_ADDING_OBJECTS + OBJECT_TARGETS) + + print_oneline("-- Shared library ${REAL_TARGET} - ") + + set(SOURCES) + if(SOURCE_LIST) + set(SOURCES ${SOURCE_LIST}) + endif() + if(OBJECT_TARGETS) + foreach(target ${OBJECT_TARGETS}) + list(APPEND SOURCES $) + endforeach() + endif() + if((NOT SOURCE_LIST) AND (NOT OBJECT_TARGETS)) + print_newline("Fail") + endif() + + add_library(${REAL_TARGET} SHARED ${SOURCES}) + + print_newline("done") + endforeach() + + foreach(target.property ${SHARED_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_LIBRARY_ALIASES + LIBRARY_ALIASES) + + if(LIBRARY_ALIASES) + print_oneline("-- " + "Aliases for shared library ${REAL_TARGET} - ") + + foreach(alias ${LIBRARY_ALIASES}) + add_library(${alias} ALIAS ${REAL_TARGET}) + endforeach() + + print_newline("done") + endif() + endforeach() + + foreach(target.property ${SHARED_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS + HEADER_TARGETS) + + if(HEADER_TARGETS) + print_oneline("-- " + "Header dependencies for static library ${REAL_TARGET} - ") + + foreach(target ${HEADER_TARGETS}) + target_link_libraries(${REAL_TARGET} PUBLIC ${target}) + endforeach() + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${SHARED_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) + #endforeach() + + # Not support now + #foreach(target.property ${SHARED_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_LINK_FLAGS + # LINK_FLAGS) + #endforeach() + + foreach(target.property ${SHARED_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_OUTPUT_NAME + OUTPUT_NAME) + + if(OUTPUT_NAME) + print_oneline("-- " + "Output name for shared library ${REAL_TARGET} - ") + + set_target_properties(${REAL_TARGET} PROPERTIES + OUTPUT_NAME "${OUTPUT_NAME}") + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${SHARED_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_INSTALL_PATH + # INSTALL_PATH) + #endforeach() + + foreach(target.property ${SHARED_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES + LIBRARY_TARGETS) + + if(LIBRARY_TARGETS) + print_oneline("-- " + "Dependencies for shared library ${REAL_TARGET} - ") + + if(LIBRARY_TARGETS) + foreach(target ${LIBRARY_TARGETS}) + target_link_libraries(${REAL_TARGET} PUBLIC ${target}) + endforeach() + endif() + + print_newline("done") + endif() + endforeach() + + end_debug_function() +endfunction(internal_resolve_shared_libraries) + +# +# +# +function(internal_resolve_binaries) + check_internal_use() + + start_debug_function(internal_resolve_binaries) + + get_global_property(FLAME_BINARY_TARGETS BINARY_TARGETS) + foreach(target.property ${BINARY_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_ADDING_SOURCES + ADDING_SOURCES) + target_property_get(${target.property} FLAME_ADDING_HEADERS + ADDING_HEADERS) + + print_oneline("-- Binary ${REAL_TARGET} - ") + + set(SOURCE_LIST) + if(ADDING_SOURCES) + list(APPEND SOURCE_LIST ${ADDING_SOURCES}) + else() + print_newline("fail") + endif() + if(ADDING_HEADERS) + list(APPEND SOURCE_LIST ${ADDING_HEADERS}) + endif() + + add_executable(${REAL_TARGET} ${SOURCE_LIST}) + + print_newline("done") + endforeach() + + foreach(target.property ${BINARY_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_INCLUDE_PATHS + INCLUDE_PATHS) + + if(INCLUDE_PATHS) + print_oneline("-- Include paths for binary ${REAL_TARGET} - ") + + target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) + + print_newline("done") + endif() + endforeach() + + + foreach(target.property ${BINARY_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES + DEPENDENCY_LIBRARIES) + + if(DEPENDENCY_LIBRARIES) + print_oneline("-- " + "Dependency libraries for binary ${REAL_TARGET} - ") + + foreach(target ${DEPENDENCY_LIBRARIES}) + target_link_libraries(${REAL_TARGET} PUBLIC ${target}) + endforeach() + + print_newline("done") + endif() + endforeach() + + foreach(target.property ${BINARY_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS + DEPENDENCY_HEADERS) + + if(DEPENDENCY_HEADERS) + print_oneline("-- " + "Header libraries for binary ${REAL_TARGET} - ") + + foreach(target ${DEPENDENCY_HEADERS}) + target_link_libraries(${REAL_TARGET} PUBLIC ${target}) + endforeach() + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${BINARY_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) + #endforeach() + + # Not support now + #foreach(target.property ${BINARY_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_LINK_FLAGS + # LINK_FLAGS) + #endforeach() + + foreach(target.property ${BINARY_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_OUTPUT_NAME + OUTPUT_NAME) + + if(OUTPUT_NAME) + print_oneline("-- " + "Output name for binary ${REAL_TARGET} - ") + + set_target_properties(${REAL_TARGET} PROPERTIES + OUTPUT_NAME "${OUTPUT_NAME}") + + print_newline("done") + endif() + endforeach() + + # Not support now + #foreach(target.property ${BINARY_TARGETS}) + # target_property_get(${target.property} FLAME_REAL_TARGET + # REAL_TARGET) + # target_property_get(${target.property} FLAME_INSTALL_PATH + # INSTALL_PATH) + #endforeach() + + foreach(target.property ${BINARY_TARGETS}) + target_property_get(${target.property} FLAME_REAL_TARGET + REAL_TARGET) + target_property_get(${target.property} FLAME_BINARY_ALIASES + BINARY_ALIASES) + + if(BINARY_ALIASES) + print_oneline("-- " + "Aliases for binary ${REAL_TARGET} - ") + + foreach(alias ${BINARY_ALIASES}) + add_executable(${alias} ALIAS ${REAL_TARGET}) + endforeach() + + print_newline("done") + endif() + endforeach() + + end_debug_function() +endfunction(internal_resolve_binaries) + +# +# +# +function(internal_clean_global_properties) + check_internal_use() + + set_global_property(FLAME_HEADER_TARGETS "") + set_global_property(FLAME_OBJECT_TARGETS "") + set_global_property(FLAME_STATIC_TARGETS "") + set_global_property(FLAME_SHARED_TARGETS "") + set_global_property(FLAME_BINARY_TARGETS "") +endfunction(internal_clean_global_properties) + +# +# +# +function(resolve_dependencies) + enable_internal_use() + + message("-- Start resolving") + + internal_resolve_headers() + + internal_resolve_object_libraries() + internal_resolve_static_libraries() + internal_resolve_shared_libraries() + + internal_resolve_binaries() + + internal_clean_global_properties() + + message("-- Resolve finished") +endfunction(resolve_dependencies) diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake new file mode 100644 index 0000000..f2bbd3f --- /dev/null +++ b/cmake/Macros.cmake @@ -0,0 +1,52 @@ +# +# +# +macro(start_debug_function FUNC_NAME) + set(FUNCTION_NAME ${FUNC_NAME}) + message_debug("->>- ${FUNCTION_NAME}()") +endmacro(start_debug_function) + +# +# +# +macro(end_debug_function) + message_debug("-<<- ${FUNCTION_NAME}()") + unset(FUNCTION_NAME) +endmacro(end_debug_function) + +# +# +# +macro(message_debug_function) + message_debug("---| ${FUNCTION_NAME}() : " "${ARGV}") +endmacro(message_debug_function) + +# +# +# +macro(print_debug_function_oneline) + print_debug_oneline("---| ${FUNCTION_NAME}() : " "${ARGV}") +endmacro(print_debug_function_oneline) + +# +# +# +macro(print_debug_function_newline) + print_debug_newline("---| ${FUNCTION_NAME}() : " "${ARGV}") +endmacro(print_debug_function_newline) + +# +# +# +macro(enable_internal_use) + set(INTERNAL_USE TRUE) +endmacro(enable_internal_use) + +# +# +# +macro(check_internal_use) + if(NOT INTERNAL_USE) + message_fatal("-- It's internal function. You can not use it") + endif() +endmacro(check_internal_use) diff --git a/cmake/Options.cmake b/cmake/Options.cmake new file mode 100644 index 0000000..8a4b9b4 --- /dev/null +++ b/cmake/Options.cmake @@ -0,0 +1,40 @@ +# common options + +option(FLAME_CMAKE_DEBUG + "Print debug messages" + OFF +) +option(FLAME_PRINT_COMMON_STATISTIC + "Print statistic about targets. Not support" + OFF +) + +option(FLAME_PRINT_COMMON_STATISTIC + "Print detailed statistic about targets with add files, filags and etc. Not support" + OFF +) + +option(FLAME_LOGGING + "Show log messages" + ON +) + +# code generation options + +option(FLAME_ONLY_POSITION_INDEPEND_OBJECTS + "Static and shared libraries are using one object library" + ON +) +option(FLAME_MAKE_STATIC + "Creating static libraries" + ON +) +option(FLAME_MAKE_SHARED + "Creating shared libraries" + ON +) + +option(FLAME_MAKE_STANDALONE + "Make all modules as standalone. Not support" + OFF +) diff --git a/cmake/Platform.cmake b/cmake/Platform.cmake new file mode 100644 index 0000000..417c234 --- /dev/null +++ b/cmake/Platform.cmake @@ -0,0 +1,7 @@ +if(UNIX) + include(Platform/Unix) +endif(UNIX) + +if(WIN32) + include(Platform/Windows) +endif(WIN32) diff --git a/cmake/Platform/Unix.cmake b/cmake/Platform/Unix.cmake new file mode 100644 index 0000000..e8d311e --- /dev/null +++ b/cmake/Platform/Unix.cmake @@ -0,0 +1,21 @@ +include(CheckIncludeFile) + +set(FLAME_PLATFORM Posix) +set(FLAME_STATIC_LIBRARY_SUFFIX ".a") +set(FLAME_SHARED_LIBRARY_SUFFIX ".so") + +set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_STATIC_LIBRARY_SUFFIX}) +find_library(PTHREAD_STATIC_LIBRARY pthread) +add_library(PTHREAD_STATIC STATIC IMPORTED ${PTHREAD_STATIC_LIBRARY}) + +set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_SHARED_LIBRARY_SUFFIX}) +find_library(PTHREAD_SHARED_LIBRARY pthread) +add_library(PTHREAD_SHARED SHARED IMPORTED ${PTHREAD_SHARED_LIBRARY}) + +set(FLAME_DEPENDENCY_SHARED_LIBRARIES + ${PTHREAD_SHARED_LIBRARY} +) + +set(FLAME_DEPENDENCY_STATIC_LIBRARIES + ${PTHREAD_STATIC_LIBRARY} +) diff --git a/cmake/Platform/Windows.cmake b/cmake/Platform/Windows.cmake new file mode 100644 index 0000000..320dc02 --- /dev/null +++ b/cmake/Platform/Windows.cmake @@ -0,0 +1 @@ +set(FLAME_PLATFORM Windows) diff --git a/cmake/Properties.cmake b/cmake/Properties.cmake new file mode 100644 index 0000000..2341001 --- /dev/null +++ b/cmake/Properties.cmake @@ -0,0 +1,2 @@ +include(Properties/GlobalProperties) +include(Properties/TargetProperties) diff --git a/cmake/Properties/GlobalProperties.cmake b/cmake/Properties/GlobalProperties.cmake new file mode 100644 index 0000000..b441ea1 --- /dev/null +++ b/cmake/Properties/GlobalProperties.cmake @@ -0,0 +1,22 @@ +define_global_property(FLAME_HEADER_TARGETS + "List of header targets" + "List of header targets" +) + +define_global_property(FLAME_OBJECT_TARGETS + "List of object targets" + "List of object targets" +) +define_global_property(FLAME_STATIC_TARGETS + "List of static library targets" + "List of static library targets" +) +define_global_property(FLAME_SHARED_TARGETS + "List of shared library targets" + "List of shared library targets" +) + +define_global_property(FLAME_BINARY_TARGETS + "List of shared library targets" + "List of binary targets" +) diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake new file mode 100644 index 0000000..c241f61 --- /dev/null +++ b/cmake/Properties/TargetProperties.cmake @@ -0,0 +1,410 @@ +# ---- header-target ------- +# FLAME_REAL_TARGET # +# FLAME_ADDING_HEADERS # headers only +# FLAME_INCLUDE_PATHS # +# FLAME_DEPENDENCY_HEADERS # +# FLAME_LIBRARY_ALIASES # +# FLAME_INSTALL_PATH # +# -------------------------- + +# +# +# +function(internal_add_header_target_properties) + check_internal_use() + + set(OPTIONS "DEBUG") + set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "INSTALL_PATH") + set(LISTS "ADDING_HEADERS" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "LIBRARY_ALIASES") + + cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + start_debug_function(internal_add_header_target_properties) + + if(FLAME_DEBUG) + print_debug_function_newline("-------- PARSE RESULT --------") + + print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") + print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + + print_debug_function_oneline("FLAME_REAL_TARGET = ") + print_debug_list_newline(${FLAME_REAL_TARGET}) + + print_debug_function_oneline("FLAME_ADDING_HEADERS = ") + print_debug_list_newline(${FLAME_ADDING_HEADERS}) + + print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") + print_debug_list_newline(${FLAME_INCLUDE_PATHS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") + print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + + print_debug_function_oneline("FLAME_LIBRARY_ALIASES = ") + print_debug_list_newline(${FLAME_LIBRARY_ALIASES}) + + print_debug_function_oneline("FLAME_INSTALL_PATH = ") + print_debug_list_newline(${FLAME_INSTALL_PATH}) + + print_debug_function_newline("-------- PARSE RESULT --------") + endif() + + add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) + add_to_global_property(FLAME_HEADER_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET + "${FLAME_REAL_TARGET}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_HEADERS + "${FLAME_ADDING_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS + "${FLAME_DEPENDENCY_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES + "${FLAME_LIBRARY_ALIASES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH + "${FLAME_INSTALL_PATH}") + + end_debug_function() +endfunction(internal_add_header_target_properties) + +# ---- object-target ------- +# FLAME_REAL_TARGET # +# FLAME_ADDING_SOURCES # headers + sources +# FLAME_INCLUDE_PATHS # +# FLAME_DEPENDENCY_HEADERS # +# FLAME_COMPILE_FLAGS # +# FLAME_POSITION_INDEPEND # +# FLAME_OBJECT_ALIASES # +# -------------------------- + +# +# +# +function(internal_add_object_target_properties) + check_internal_use() + + set(OPTIONS "DEBUG" "POSITION_INDEPEND") + set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET") + set(LISTS "ADDING_SOURCES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "COMPILE_FLAGS" + "OBJECT_ALIASES") + + cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + start_debug_function(internal_add_object_target_properties) + + if(FLAME_DEBUG) + print_debug_function_newline("-------- PARSE RESULT --------") + + print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") + print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + + print_debug_function_oneline("FLAME_REAL_TARGET = ") + print_debug_list_newline(${FLAME_REAL_TARGET}) + + print_debug_function_oneline("FLAME_ADDING_SOURCES = ") + print_debug_list_newline(${FLAME_ADDING_SOURCES}) + + print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") + print_debug_list_newline(${FLAME_INCLUDE_PATHS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") + print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + + print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") + print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + + print_debug_function_oneline("FLAME_POSITION_INDEPEND = ") + print_debug_list_newline(${FLAME_POSITION_INDEPEND}) + + print_debug_function_oneline("FLAME_OBJECT_ALIASES = ") + print_debug_list_newline(${FLAME_OBJECT_ALIASES}) + + print_debug_function_newline("-------- PARSE RESULT --------") + endif() + + add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) + add_to_global_property(FLAME_OBJECT_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET + "${FLAME_REAL_TARGET}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES + "${FLAME_ADDING_SOURCES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS + "${FLAME_INCLUDE_PATHS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS + "${FLAME_DEPENDENCY_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS + "${FLAME_COMPILE_FLAGS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_POSITION_INDEPEND + "${FLAME_POSITION_INDEPEND}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OBJECT_ALIASES + "${FLAME_OBJECT_ALIASES}") + + end_debug_function() +endfunction(internal_add_object_target_properties) + +# ---- static-library-target - +# FLAME_REAL_TARGET # +# FLAME_ADDING_SOURCES # headers + sources +# FLAME_ADDING_OBJECTS # +# FLAME_DEPENDENCY_HEADERS # +# FLAME_DEPENDENCY_LIBRARIES # +# FLAME_COMPILE_FLAGS # need for adding sources +# FLAME_OUTPUT_NAME # +# FLAME_LIBRARY_ALIASES # +# FLAME_INSTALL_PATH # +# ---------------------------- + +# +# +# +function(internal_add_static_target_properties) + check_internal_use() + + set(OPTIONS "DEBUG") + set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") + set(LISTS "ADDING_SOURCES" "ADDING_OBJECTS" "DEPENDENCY_HEADERS" + "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LIBRARY_ALIASES") + + cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + start_debug_function(internal_add_static_target_properties) + + if(FLAME_DEBUG) + print_debug_function_newline("-------- PARSE RESULT --------") + + print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") + print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + + print_debug_function_oneline("FLAME_REAL_TARGET = ") + print_debug_list_newline(${FLAME_REAL_TARGET}) + + print_debug_function_oneline("FLAME_ADDING_SOURCES = ") + print_debug_list_newline(${FLAME_ADDING_SOURCES}) + + print_debug_function_oneline("FLAME_ADDING_OBJECTS = ") + print_debug_list_newline(${FLAME_ADDING_OBJECTS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") + print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_LIBRARIES = ") + print_debug_list_newline(${FLAME_DEPENDENCY_LIBRARIES}) + + print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") + print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + + print_debug_function_oneline("FLAME_OUTPUT_NAME = ") + print_debug_list_newline(${FLAME_OUTPUT_NAME}) + + print_debug_function_oneline("FLAME_LIBRARY_ALIASES = ") + print_debug_list_newline(${FLAME_LIBRARY_ALIASES}) + + print_debug_function_oneline("FLAME_INSTALL_PATH = ") + print_debug_list_newline(${FLAME_INSTALL_PATH}) + + print_debug_function_newline("-------- PARSE RESULT --------") + endif() + + add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) + add_to_global_property(FLAME_STATIC_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET + "${FLAME_REAL_TARGET}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES + "${FLAME_ADDING_SOURCES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_OBJECTS + "${FLAME_ADDING_OBJECTS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS + "${FLAME_DEPENDENCY_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_LIBRARIES + "${FLAME_DEPENDENCY_LIBRARIES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS + "${FLAME_COMPILE_FLAGS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OUTPUT_NAME + "${FLAME_OUTPUT_NAME}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES + "${FLAME_LIBRARY_ALIASES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH + "${FLAME_INSTALL_PATH}") + + end_debug_function() +endfunction(internal_add_static_target_properties) + +# ---- shared-library-target - +# FLAME_REAL_TARGET # +# FLAME_ADDING_SOURCES # headers + sources +# FLAME_ADDING_OBJECTS # +# FLAME_DEPENDENCY_HEADERS # +# FLAME_DEPENDENCY_LIBRARIES # +# FLAME_COMPILE_FLAGS # need for adding sources +# FLAME_LINK_FLAGS # +# FLAME_OUTPUT_NAME # +# FLAME_LIBRARY_ALIASES # +# FLAME_INSTALL_PATH # +# ---------------------------- + +# +# +# +function(internal_add_shared_target_properties) + check_internal_use() + + set(OPTIONS "DEBUG") + set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") + set(LISTS "ADDING_SOURCES" "ADDING_OBJECTS" "DEPENDENCY_HEADERS" + "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" "LIBRARY_ALIASES") + + cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + start_debug_function(internal_add_shared_target_properties) + + if(FLAME_DEBUG) + print_debug_function_newline("-------- PARSE RESULT --------") + + print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") + print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + + print_debug_function_oneline("FLAME_REAL_TARGET = ") + print_debug_list_newline(${FLAME_REAL_TARGET}) + + print_debug_function_oneline("FLAME_ADDING_SOURCES = ") + print_debug_list_newline(${FLAME_ADDING_SOURCES}) + + print_debug_function_oneline("FLAME_ADDING_OBJECTS = ") + print_debug_list_newline(${FLAME_ADDING_OBJECTS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") + print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_LIBRARIES = ") + print_debug_list_newline(${FLAME_DEPENDENCY_LIBRARIES}) + + print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") + print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + + print_debug_function_oneline("FLAME_LINK_FLAGS = ") + print_debug_list_newline(${FLAME_LINK_FLAGS}) + + print_debug_function_oneline("FLAME_OUTPUT_NAME = ") + print_debug_list_newline(${FLAME_OUTPUT_NAME}) + + print_debug_function_oneline("FLAME_LIBRARY_ALIASES = ") + print_debug_list_newline(${FLAME_LIBRARY_ALIASES}) + + print_debug_function_oneline("FLAME_INSTALL_PATH = ") + print_debug_list_newline(${FLAME_INSTALL_PATH}) + + print_debug_function_newline("-------- PARSE RESULT --------") + endif() + + add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) + add_to_global_property(FLAME_SHARED_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET + "${FLAME_REAL_TARGET}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES + "${FLAME_ADDING_SOURCES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_OBJECTS + "${FLAME_ADDING_OBJECTS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS + "${FLAME_DEPENDENCY_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_LIBRARIES + "${FLAME_DEPENDENCY_LIBRARIES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS + "${FLAME_COMPILE_FLAGS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OUTPUT_NAME + "${FLAME_OUTPUT_NAME}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES + "${FLAME_LIBRARY_ALIASES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH + "${FLAME_INSTALL_PATH}") + + end_debug_function() +endfunction(internal_add_shared_target_properties) + +# ---- binary-target --------- +# FLAME_REAL_TARGET # +# FLAME_ADDING_HEADERS # +# FLAME_ADDING_SOURCES # +# FLAME_INCLUDE_PATHS # +# FLAME_DEPENDENCY_HEADERS # +# FLAME_DEPENDENCY_LIBRARIES # +# FLAME_COMPILE_FLAGS # +# FLAME_LINK_FLAGS # +# FLAME_OUTPUT_NAME # +# FLAME_INSTALL_PATH # +# ---------------------------- + +# +# +# +function(internal_add_binary_target_properties) + enable_internal_use() + + set(OPTIONS "DEBUG") + set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") + set(LISTS "ADDING_HEADERS" "ADDING_SOURCES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" + "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" ) + + cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + start_debug_function(internal_add_binary_target_properties) + + if(FLAME_DEBUG) + print_debug_function_newline("-------- PARSE RESULT --------") + + print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") + print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + + print_debug_function_oneline("FLAME_REAL_TARGET = ") + print_debug_list_newline(${FLAME_REAL_TARGET}) + + print_debug_function_oneline("FLAME_ADDING_SOURCES = ") + print_debug_list_newline(${FLAME_ADDING_SOURCES}) + + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") + print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + + print_debug_function_oneline("FLAME_DEPENDENCY_LIBRARIES = ") + print_debug_list_newline(${FLAME_DEPENDENCY_LIBRARIES}) + + print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") + print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + + print_debug_function_oneline("FLAME_LINK_FLAGS = ") + print_debug_list_newline(${FLAME_LINK_FLAGS}) + + print_debug_function_oneline("FLAME_OUTPUT_NAME = ") + print_debug_list_newline(${FLAME_OUTPUT_NAME}) + + print_debug_function_oneline("FLAME_INSTALL_PATH = ") + print_debug_list_newline(${FLAME_INSTALL_PATH}) + + print_debug_function_newline("-------- PARSE RESULT --------") + endif() + + add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) + add_to_global_property(FLAME_BINARY_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET + "${FLAME_REAL_TARGET}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_HEADERS + "${FLAME_ADDING_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES + "${FLAME_ADDING_SOURCES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS + "${FLAME_INCLUDE_PATHS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS + "${FLAME_DEPENDENCY_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_LIBRARIES + "${FLAME_DEPENDENCY_LIBRARIES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS + "${FLAME_COMPILE_FLAGS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LINK_FLAGS + "${FLAME_LINK_FLAGS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OUTPUT_NAME + "${FLAME_OUTPUT_NAME}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH + "${FLAME_INSTALL_PATH}") + + end_debug_function() +endfunction(internal_add_binary_target_properties) diff --git a/cmake/Variables.cmake b/cmake/Variables.cmake new file mode 100644 index 0000000..b176d74 --- /dev/null +++ b/cmake/Variables.cmake @@ -0,0 +1,20 @@ +set(FLAME_NAMESPACE ${PROJECT_NAME}) + +set(FLAME_FAKE_HEADER_MODULE_SUFFIX hpp) +set(FLAME_HEADER_MODULE_SUFFIX header) +set(FLAME_OBJECT_MODULE_SUFFIX object) +set(FLAME_OBJECT_INDEPEND_MODULE_SUFFIX independ) +set(FLAME_STATIC_MODULE_SUFFIX static) +set(FLAME_SHARED_MODULE_SUFFIX shared) +set(FLAME_BINARY_MODULE_SUFFIX binary) +set(FLAME_CUSTOM_TARGET_SUFFIX property) + +set(FLAME_NAME_SEPARATOR ".") +set(FLAME_ALIAS_SEPARATOR "::") + +set(FLAME_OBJECT_INDEPEND_ALIASED_MODULE_SUFFIX Independ) + +#if(CMAKE_INSTALL_PREFIX) +# set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install) +# message(FATAL_ERROR "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}") +#endif() From eb514bc1c6d4de2b1679d112fa83ba439314ec2e Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 24 Apr 2020 15:48:57 +0300 Subject: [PATCH 02/54] Fix comments --- cmake/Functions/ResolveFunctions.cmake | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 93ebd75..ccc5977 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -108,7 +108,7 @@ function(internal_resolve_object_libraries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${OBJECT_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -225,7 +225,7 @@ function(internal_resolve_static_libraries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${STATIC_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -250,7 +250,7 @@ function(internal_resolve_static_libraries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${STATIC_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -352,7 +352,7 @@ function(internal_resolve_shared_libraries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${SHARED_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -360,7 +360,7 @@ function(internal_resolve_shared_libraries) # COMPILE_FLAGS) #endforeach() - # Not support now + # Not supported now #foreach(target.property ${SHARED_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -385,7 +385,7 @@ function(internal_resolve_shared_libraries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${SHARED_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -502,7 +502,7 @@ function(internal_resolve_binaries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${BINARY_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -510,7 +510,7 @@ function(internal_resolve_binaries) # COMPILE_FLAGS) #endforeach() - # Not support now + # Not supported now #foreach(target.property ${BINARY_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) @@ -535,7 +535,7 @@ function(internal_resolve_binaries) endif() endforeach() - # Not support now + # Not supported now #foreach(target.property ${BINARY_TARGETS}) # target_property_get(${target.property} FLAME_REAL_TARGET # REAL_TARGET) From 6408a14c48c35ef181fbb36435c82e593b60e16f Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 24 Apr 2020 15:50:42 +0300 Subject: [PATCH 03/54] Fix variable check position. --- cmake/Functions/CompileLibraryFunctions.cmake | 30 +++++++++---------- cmake/Functions/HeaderLibraryFunctions.cmake | 6 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index aca079a..2fea99f 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -150,21 +150,6 @@ macro(ineternal_compile_library_print_parse_result) print_debug_function_newline("-------------- PARSE RESULT --------------") endif() - - internal_print_warning_not_support("${COMPILE_HELP}" - HELP) - internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}" - NOT_MAKE_POSITION_DEPEND_OBJECTS) - internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_INDEPEND_OBJECTS}" - NOT_MAKE_INPOSITION_DEPEND_OBJECTS) - internal_print_warning_not_support("${COMPILE_COMPILE_FLAGS}" - COMPILE_FLAGS) - internal_print_warning_not_support("${COMPILE_LINK_FLAGS}" - LINK_FLAGS) - internal_print_warning_not_support("${COMPILE_STATIC_INSTALL_PATH}" - STATIC_INSTALL_PATH) - internal_print_warning_not_support("${COMPILE_SHARED_INSTALL_PATH}" - SHARED_INSTALL_PATH) endmacro(ineternal_compile_library_print_parse_result) # @@ -199,6 +184,21 @@ macro(internal_compile_library_process_paramters) elseif(COMPILE_HEADER_LIST) list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) endif() + + internal_print_warning_not_support("${COMPILE_HELP}" + HELP) + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}" + NOT_MAKE_POSITION_DEPEND_OBJECTS) + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_INDEPEND_OBJECTS}" + NOT_MAKE_INPOSITION_DEPEND_OBJECTS) + internal_print_warning_not_support("${COMPILE_COMPILE_FLAGS}" + COMPILE_FLAGS) + internal_print_warning_not_support("${COMPILE_LINK_FLAGS}" + LINK_FLAGS) + internal_print_warning_not_support("${COMPILE_STATIC_INSTALL_PATH}" + STATIC_INSTALL_PATH) + internal_print_warning_not_support("${COMPILE_SHARED_INSTALL_PATH}" + SHARED_INSTALL_PATH) endmacro(internal_compile_library_process_paramters) # diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index f578fa1..22fc852 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -62,9 +62,6 @@ macro(ineternal_header_library_print_parse_result) print_debug_function_newline("-------- PARSE RESULT --------") endif() - - internal_print_warning_not_support("${HEADER_HELP}" HELP) - internal_print_warning_not_support("${HEADER_INSTALL_PATH}" INSTALL_PATH) endmacro(ineternal_header_library_print_parse_result) # @@ -90,6 +87,9 @@ macro(internal_header_library_process_paramters) message_fatal("-- " "Need 'HEADER_LIST_FILE' or 'HEADER_LIST'.") endif() + + internal_print_warning_not_support("${HEADER_HELP}" HELP) + internal_print_warning_not_support("${HEADER_INSTALL_PATH}" INSTALL_PATH) endmacro(internal_header_library_process_paramters) macro(internal_header_library) From 46831c214891aed5c3bfbaa6cf5d948b591e1b38 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 00:10:37 +0300 Subject: [PATCH 04/54] Fix mistake ('ineternal' -> 'ineternal') --- cmake/Functions/CompileBinaryFunctions.cmake | 18 ++++---- cmake/Functions/CompileLibraryFunctions.cmake | 42 +++++++++---------- cmake/Functions/HeaderLibraryFunctions.cmake | 6 +-- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 3057dee..7d37220 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -17,7 +17,7 @@ endmacro(internal_compile_binary_end_function) # # # -macro(ineternal_compile_binary_parse_paramters) +macro(internal_compile_binary_parse_paramters) check_internal_use() set(OPTIONS @@ -44,12 +44,12 @@ macro(ineternal_compile_binary_parse_paramters) "DEPENDENCY_TARGET_LIST" ) cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(ineternal_compile_binary_parse_paramters) +endmacro(internal_compile_binary_parse_paramters) # # # -macro(ineternal_compile_binary_print_parse_result) +macro(internal_compile_binary_print_parse_result) check_internal_use() if(BINARY_DEBUG) @@ -96,7 +96,7 @@ macro(ineternal_compile_binary_print_parse_result) print_debug_function_newline("-------- PARSE RESULT -------") endif() -endmacro(ineternal_compile_binary_print_parse_result) +endmacro(internal_compile_binary_print_parse_result) # # @@ -133,7 +133,7 @@ endmacro(internal_compile_binary_process_paramters) # # # -macro(ineternal_compile_binary) +macro(internal_compile_binary) check_internal_use() print_newline( @@ -172,7 +172,7 @@ macro(ineternal_compile_binary) print_newline( "-- Adding binary for ${BINARY_NAME} - done") -endmacro(ineternal_compile_binary) +endmacro(internal_compile_binary) # # @@ -181,19 +181,19 @@ function(compile_binary) enable_internal_use() # Parse paramters - ineternal_compile_binary_parse_paramters(${ARGV}) + internal_compile_binary_parse_paramters(${ARGV}) # Start function log internal_compile_binary_start_function() # Print parse result - ineternal_compile_binary_print_parse_result() + internal_compile_binary_print_parse_result() # Check parameters internal_compile_binary_process_paramters() # Add binary to resolve list - ineternal_compile_binary() + internal_compile_binary() # End function log internal_compile_binary_end_function() diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 2fea99f..6f8f90b 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -17,7 +17,7 @@ endmacro(internal_compile_library_end_function) # # # -macro(ineternal_compile_library_parse_paramters) +macro(internal_compile_library_parse_paramters) check_internal_use() set(OPTIONS @@ -56,12 +56,12 @@ macro(ineternal_compile_library_parse_paramters) "DEPENDENCY_TARGETS_FOR_SHARED" ) cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(ineternal_compile_library_parse_paramters) +endmacro(internal_compile_library_parse_paramters) # # # -macro(ineternal_compile_library_print_parse_result) +macro(internal_compile_library_print_parse_result) check_internal_use() if(COMPILE_DEBUG) @@ -150,7 +150,7 @@ macro(ineternal_compile_library_print_parse_result) print_debug_function_newline("-------------- PARSE RESULT --------------") endif() -endmacro(ineternal_compile_library_print_parse_result) +endmacro(internal_compile_library_print_parse_result) # # @@ -211,7 +211,7 @@ endmacro(internal_compile_library_print_help) # # # -macro(ineternal_compile_independ_object_library) +macro(internal_compile_independ_object_library) check_internal_use() print_newline( @@ -271,12 +271,12 @@ macro(ineternal_compile_independ_object_library) print_newline( "-- Adding position independ object library for ${COMPILE_LIBRARY_NAME} - done") -endmacro(ineternal_compile_independ_object_library) +endmacro(internal_compile_independ_object_library) # # # -macro(ineternal_compile_depend_object_library) +macro(internal_compile_depend_object_library) check_internal_use() print_newline("-- Adding position depend object library for ${COMPILE_LIBRARY_NAME}") @@ -306,25 +306,25 @@ macro(ineternal_compile_depend_object_library) unset(TARGET_NAME) print_newline("-- Adding object library for ${COMPILE_LIBRARY_NAME} - done") -endmacro(ineternal_compile_depend_object_library) +endmacro(internal_compile_depend_object_library) # # # -macro(ineternal_compile_object_library) +macro(internal_compile_object_library) check_internal_use() - ineternal_compile_independ_object_library() + internal_compile_independ_object_library() if(NOT FLAME_ONLY_POSITION_INDEPEND_OBJECTS) - ineternal_compile_depend_object_library() + internal_compile_depend_object_library() endif() -endmacro(ineternal_compile_object_library) +endmacro(internal_compile_object_library) # # # -macro(ineternal_compile_static_library) +macro(internal_compile_static_library) check_internal_use() print_newline("-- Adding static library for ${COMPILE_LIBRARY_NAME}") @@ -363,12 +363,12 @@ macro(ineternal_compile_static_library) unset(TARGET_NAME) print_newline("-- Adding static library for ${COMPILE_LIBRARY_NAME} - done") -endmacro(ineternal_compile_static_library) +endmacro(internal_compile_static_library) # # # -macro(ineternal_compile_shared_library) +macro(internal_compile_shared_library) check_internal_use() print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME}") @@ -410,7 +410,7 @@ macro(ineternal_compile_shared_library) unset(TARGET_NAME) print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME} - done") -endmacro(ineternal_compile_shared_library) +endmacro(internal_compile_shared_library) # # @@ -419,28 +419,28 @@ function(compile_library) enable_internal_use() # Parse paramters - ineternal_compile_library_parse_paramters(${ARGV}) + internal_compile_library_parse_paramters(${ARGV}) # Start function log internal_compile_library_start_function() # Print parse result - ineternal_compile_library_print_parse_result() + internal_compile_library_print_parse_result() # Check parameters internal_compile_library_process_paramters() # Add object library/libraries to resolve list - ineternal_compile_object_library() + internal_compile_object_library() # Add static library to resolve list if(MAKE_STATIC AND FLAME_MAKE_STATIC) - ineternal_compile_static_library() + internal_compile_static_library() endif() # Add shared library to resolve list if(MAKE_SHARED AND FLAME_MAKE_SHARED) - ineternal_compile_shared_library() + internal_compile_shared_library() endif() # End function log diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 22fc852..18a25cc 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -30,7 +30,7 @@ endmacro(internal_header_library_parse_arguments) # # # -macro(ineternal_header_library_print_parse_result) +macro(internal_header_library_print_parse_result) check_internal_use() if(HEADER_DEBUG) @@ -62,7 +62,7 @@ macro(ineternal_header_library_print_parse_result) print_debug_function_newline("-------- PARSE RESULT --------") endif() -endmacro(ineternal_header_library_print_parse_result) +endmacro(internal_header_library_print_parse_result) # # @@ -135,7 +135,7 @@ function(header_library) internal_header_library_start_function() # Print results - ineternal_header_library_print_parse_result() + internal_header_library_print_parse_result() # Process parameters internal_header_library_process_paramters() From 20c9ea53fd8c23babf9927d3ed6eca8ec8b47bfd Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 00:15:13 +0300 Subject: [PATCH 05/54] Fix mistakes ('*depend' -> '*dependent') --- cmake/Functions/CompileLibraryFunctions.cmake | 52 +++++++++---------- cmake/Functions/HeaderLibraryFunctions.cmake | 50 +++++++++--------- cmake/Options.cmake | 2 +- cmake/Variables.cmake | 4 +- 4 files changed, 54 insertions(+), 54 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 6f8f90b..c95956b 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -24,15 +24,15 @@ macro(internal_compile_library_parse_paramters) "DEBUG" "MAKE_STATIC" "MAKE_SHARED" - "NOT_MAKE_POSITION_DEPEND_OBJECTS" - "NOT_MAKE_POSITION_INDEPEND_OBJECTS" + "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" + "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" "HELP" ) set(VALUES "LIBRARY_NAME" "OBJECT_ALIAS_NAME" - "INDEPEND_OBJECT_ALIAS_NAME" + "INDEPENDENT_OBJECT_ALIAS_NAME" "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" @@ -80,11 +80,11 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_MAKE_SHARED = ") print_debug_list_newline("${COMPILE_MAKE_SHARED}") - print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS = ") - print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}") + print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS = ") + print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") - print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPEND_OBJECTS = ") - print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}") + print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS = ") + print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") print_debug_function_oneline("COMPILE_HELP = ") print_debug_list_newline("${COMPILE_HELP}") @@ -99,8 +99,8 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_OBJECT_ALIAS_NAME = ") print_debug_list_newline(${COMPILE_OBJECT_ALIAS_NAME}) - print_debug_function_oneline("COMPILE_INDEPEND_OBJECT_ALIAS_NAME = ") - print_debug_list_newline(${COMPILE_INDEPEND_OBJECT_ALIAS_NAME}) + print_debug_function_oneline("COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME = ") + print_debug_list_newline(${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}) print_debug_function_oneline("COMPILE_STATIC_ALIAS_NAME = ") print_debug_list_newline(${COMPILE_STATIC_ALIAS_NAME}) @@ -187,10 +187,10 @@ macro(internal_compile_library_process_paramters) internal_print_warning_not_support("${COMPILE_HELP}" HELP) - internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPEND_OBJECTS}" - NOT_MAKE_POSITION_DEPEND_OBJECTS) - internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_INDEPEND_OBJECTS}" - NOT_MAKE_INPOSITION_DEPEND_OBJECTS) + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}" + NOT_MAKE_POSITION_DEPENDENT_OBJECTS) + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS}" + NOT_MAKE_INPOSITION_DEPENDENT_OBJECTS) internal_print_warning_not_support("${COMPILE_COMPILE_FLAGS}" COMPILE_FLAGS) internal_print_warning_not_support("${COMPILE_LINK_FLAGS}" @@ -226,9 +226,9 @@ macro(internal_compile_independ_object_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" "${FLAME_NAME_SEPARATOR}" - "${FLAME_OBJECT_INDEPEND_MODULE_SUFFIX}") + "${FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX}") - if(FLAME_ONLY_POSITION_INDEPEND_OBJECTS) + if(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) set(TARGET_NAME ${TARGET_NAME_DEPEND}) else() set(TARGET_NAME ${TARGET_NAME_INDEPEND}) @@ -240,14 +240,14 @@ macro(internal_compile_independ_object_library) "${FLAME_CUSTOM_TARGET_SUFFIX}") set(POSITION_INDEPEND TRUE) - if(FLAME_ONLY_POSITION_INDEPEND_OBJECTS) + if(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) set(OBJECT_ALIASES - "${COMPILE_INDEPEND_OBJECT_ALIAS_NAME}" + "${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}" "${COMPILE_OBJECT_ALIAS_NAME}" "${TARGET_NAME_INDEPEND}") else() set(OBJECT_ALIASES - "${COMPILE_INDEPEND_OBJECT_ALIAS_NAME}") + "${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}") endif() #set(DEBUG DEBUG) @@ -315,7 +315,7 @@ macro(internal_compile_object_library) check_internal_use() internal_compile_independ_object_library() - if(NOT FLAME_ONLY_POSITION_INDEPEND_OBJECTS) + if(NOT FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) internal_compile_depend_object_library() endif() endmacro(internal_compile_object_library) @@ -338,7 +338,7 @@ macro(internal_compile_static_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") - string(CONCAT TARGET_DEPEND_OBJECT_LIBRARY + string(CONCAT TARGET_DEPENDENT_OBJECT_LIBRARY "${COMPILE_LIBRARY_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" @@ -349,7 +349,7 @@ macro(internal_compile_static_library) PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" #ADDING_SOURCES "${}" - ADDING_OBJECTS "${TARGET_DEPEND_OBJECT_LIBRARY}" + ADDING_OBJECTS "${TARGET_DEPENDENT_OBJECT_LIBRARY}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}" #COMPILE_FLAGS "${}" @@ -358,7 +358,7 @@ macro(internal_compile_static_library) #DEBUG ) - unset(TARGET_DEPEND_OBJECT_LIBRARY) + unset(TARGET_DEPENDENT_OBJECT_LIBRARY) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) @@ -382,12 +382,12 @@ macro(internal_compile_shared_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") - string(CONCAT TARGET_INDEPEND_OBJECT_LIBRARY + string(CONCAT TARGET_INDEPENDENT_OBJECT_LIBRARY "${COMPILE_LIBRARY_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" "${FLAME_NAME_SEPARATOR}" - "${FLAME_OBJECT_INDEPEND_MODULE_SUFFIX}" + "${FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX}" ) #set(DEBUG DEBUG) @@ -395,7 +395,7 @@ macro(internal_compile_shared_library) PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" #ADDING_SOURCES "${}" - ADDING_OBJECTS "${TARGET_INDEPEND_OBJECT_LIBRARY}" + ADDING_OBJECTS "${TARGET_INDEPENDENT_OBJECT_LIBRARY}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}" #COMPILE_FLAGS "${}" @@ -405,7 +405,7 @@ macro(internal_compile_shared_library) #DEBUG ) - unset(TARGET_DEPEND_OBJECT_LIBRARY) + unset(TARGET_DEPENDENT_OBJECT_LIBRARY) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 18a25cc..9847cb7 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -1,3 +1,28 @@ +# +# +# +function(header_library) + enable_internal_use() + + # Parse arguments + internal_header_library_parse_arguments(${ARGV}) + + # Start function log + internal_header_library_start_function() + + # Print results + internal_header_library_print_parse_result() + + # Process parameters + internal_header_library_process_paramters() + + # Add header library to resolve list + internal_header_library() + + # End function log + internal_header_library_end_function() +endfunction(header_library) + # # # @@ -121,28 +146,3 @@ macro(internal_header_library) print_newline("-- Adding header library for ${HEADER_LIBRARY_NAME} - done") endmacro(internal_header_library) - -# -# -# -function(header_library) - enable_internal_use() - - # Parse arguments - internal_header_library_parse_arguments(${ARGV}) - - # Start function log - internal_header_library_start_function() - - # Print results - internal_header_library_print_parse_result() - - # Process parameters - internal_header_library_process_paramters() - - # Add header library to resolve list - internal_header_library() - - # End function log - internal_header_library_end_function() -endfunction(header_library) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index 8a4b9b4..fd09bba 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -21,7 +21,7 @@ option(FLAME_LOGGING # code generation options -option(FLAME_ONLY_POSITION_INDEPEND_OBJECTS +option(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS "Static and shared libraries are using one object library" ON ) diff --git a/cmake/Variables.cmake b/cmake/Variables.cmake index b176d74..4204d1a 100644 --- a/cmake/Variables.cmake +++ b/cmake/Variables.cmake @@ -3,7 +3,7 @@ set(FLAME_NAMESPACE ${PROJECT_NAME}) set(FLAME_FAKE_HEADER_MODULE_SUFFIX hpp) set(FLAME_HEADER_MODULE_SUFFIX header) set(FLAME_OBJECT_MODULE_SUFFIX object) -set(FLAME_OBJECT_INDEPEND_MODULE_SUFFIX independ) +set(FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX independent) set(FLAME_STATIC_MODULE_SUFFIX static) set(FLAME_SHARED_MODULE_SUFFIX shared) set(FLAME_BINARY_MODULE_SUFFIX binary) @@ -12,7 +12,7 @@ set(FLAME_CUSTOM_TARGET_SUFFIX property) set(FLAME_NAME_SEPARATOR ".") set(FLAME_ALIAS_SEPARATOR "::") -set(FLAME_OBJECT_INDEPEND_ALIASED_MODULE_SUFFIX Independ) +set(FLAME_OBJECT_INDEPENDENT_ALIASED_MODULE_SUFFIX Independent) #if(CMAKE_INSTALL_PREFIX) # set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install) From f8f30cf3c0711a9887eab482b9184d3b6a520dda Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 00:27:56 +0300 Subject: [PATCH 06/54] Fix mistake ('paramters' -> 'parameters') --- cmake/Functions/CompileBinaryFunctions.cmake | 14 +++++++------- cmake/Functions/CompileLibraryFunctions.cmake | 14 +++++++------- cmake/Functions/HeaderLibraryFunctions.cmake | 6 +++--- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 7d37220..935b3e4 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -17,7 +17,7 @@ endmacro(internal_compile_binary_end_function) # # # -macro(internal_compile_binary_parse_paramters) +macro(internal_compile_binary_parse_parameters) check_internal_use() set(OPTIONS @@ -44,7 +44,7 @@ macro(internal_compile_binary_parse_paramters) "DEPENDENCY_TARGET_LIST" ) cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(internal_compile_binary_parse_paramters) +endmacro(internal_compile_binary_parse_parameters) # # @@ -101,7 +101,7 @@ endmacro(internal_compile_binary_print_parse_result) # # # -macro(internal_compile_binary_process_paramters) +macro(internal_compile_binary_process_parameters) check_internal_use() if(BINARY_SOURCE_LIST_FILE) @@ -128,7 +128,7 @@ macro(internal_compile_binary_process_paramters) internal_print_warning_not_support("${BINARY_COMPILE_FLAGS}" COMPILE_FLAGS) internal_print_warning_not_support("${BINARY_LINK_FLAGS}" LINK_FLAGS) internal_print_warning_not_support("${BINARY_INSTALL_PATH}" INSTALL_PATH) -endmacro(internal_compile_binary_process_paramters) +endmacro(internal_compile_binary_process_parameters) # # @@ -180,8 +180,8 @@ endmacro(internal_compile_binary) function(compile_binary) enable_internal_use() - # Parse paramters - internal_compile_binary_parse_paramters(${ARGV}) + # Parse parameters + internal_compile_binary_parse_parameters(${ARGV}) # Start function log internal_compile_binary_start_function() @@ -190,7 +190,7 @@ function(compile_binary) internal_compile_binary_print_parse_result() # Check parameters - internal_compile_binary_process_paramters() + internal_compile_binary_process_parameters() # Add binary to resolve list internal_compile_binary() diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index c95956b..bda55e4 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -17,7 +17,7 @@ endmacro(internal_compile_library_end_function) # # # -macro(internal_compile_library_parse_paramters) +macro(internal_compile_library_parse_parameters) check_internal_use() set(OPTIONS @@ -56,7 +56,7 @@ macro(internal_compile_library_parse_paramters) "DEPENDENCY_TARGETS_FOR_SHARED" ) cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(internal_compile_library_parse_paramters) +endmacro(internal_compile_library_parse_parameters) # # @@ -155,7 +155,7 @@ endmacro(internal_compile_library_print_parse_result) # # # -macro(internal_compile_library_process_paramters) +macro(internal_compile_library_process_parameters) check_internal_use() if(COMPILE_SOURCE_LIST_FILE) @@ -199,7 +199,7 @@ macro(internal_compile_library_process_paramters) STATIC_INSTALL_PATH) internal_print_warning_not_support("${COMPILE_SHARED_INSTALL_PATH}" SHARED_INSTALL_PATH) -endmacro(internal_compile_library_process_paramters) +endmacro(internal_compile_library_process_parameters) # # @@ -418,8 +418,8 @@ endmacro(internal_compile_shared_library) function(compile_library) enable_internal_use() - # Parse paramters - internal_compile_library_parse_paramters(${ARGV}) + # Parse parameters + internal_compile_library_parse_parameters(${ARGV}) # Start function log internal_compile_library_start_function() @@ -428,7 +428,7 @@ function(compile_library) internal_compile_library_print_parse_result() # Check parameters - internal_compile_library_process_paramters() + internal_compile_library_process_parameters() # Add object library/libraries to resolve list internal_compile_object_library() diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 9847cb7..290f726 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -14,7 +14,7 @@ function(header_library) internal_header_library_print_parse_result() # Process parameters - internal_header_library_process_paramters() + internal_header_library_process_parameters() # Add header library to resolve list internal_header_library() @@ -92,7 +92,7 @@ endmacro(internal_header_library_print_parse_result) # # # -macro(internal_header_library_process_paramters) +macro(internal_header_library_process_parameters) check_internal_use() if(NOT HEADER_LIBRARY_NAME) @@ -115,7 +115,7 @@ macro(internal_header_library_process_paramters) internal_print_warning_not_support("${HEADER_HELP}" HELP) internal_print_warning_not_support("${HEADER_INSTALL_PATH}" INSTALL_PATH) -endmacro(internal_header_library_process_paramters) +endmacro(internal_header_library_process_parameters) macro(internal_header_library) check_internal_use() From 71495bc14d46d79204dac6798ae1e0e5a725f1e0 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 01:54:44 +0300 Subject: [PATCH 07/54] Add option for 'threading'. --- cmake/Options.cmake | 5 +++++ cmake/Platform/Unix.cmake | 27 ++++++++++++--------------- cmake/Platform/Windows.cmake | 3 +++ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index fd09bba..4cd4996 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -19,6 +19,11 @@ option(FLAME_LOGGING ON ) +option(FLAME_THREADING + "Use native threads" + ON +) + # code generation options option(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS diff --git a/cmake/Platform/Unix.cmake b/cmake/Platform/Unix.cmake index e8d311e..082fcf0 100644 --- a/cmake/Platform/Unix.cmake +++ b/cmake/Platform/Unix.cmake @@ -1,21 +1,18 @@ -include(CheckIncludeFile) - set(FLAME_PLATFORM Posix) set(FLAME_STATIC_LIBRARY_SUFFIX ".a") set(FLAME_SHARED_LIBRARY_SUFFIX ".so") -set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_STATIC_LIBRARY_SUFFIX}) -find_library(PTHREAD_STATIC_LIBRARY pthread) -add_library(PTHREAD_STATIC STATIC IMPORTED ${PTHREAD_STATIC_LIBRARY}) - -set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_SHARED_LIBRARY_SUFFIX}) -find_library(PTHREAD_SHARED_LIBRARY pthread) -add_library(PTHREAD_SHARED SHARED IMPORTED ${PTHREAD_SHARED_LIBRARY}) +if(FLAME_THREADING) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_STATIC_LIBRARY_SUFFIX}) + find_library(PTHREAD_STATIC_LIBRARY pthread) + add_library(PTHREAD_STATIC STATIC IMPORTED ${PTHREAD_STATIC_LIBRARY}) + unset(PTHREAD_STATIC_LIBRARY) -set(FLAME_DEPENDENCY_SHARED_LIBRARIES - ${PTHREAD_SHARED_LIBRARY} -) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_SHARED_LIBRARY_SUFFIX}) + find_library(PTHREAD_SHARED_LIBRARY pthread) + add_library(PTHREAD_SHARED SHARED IMPORTED ${PTHREAD_SHARED_LIBRARY}) + unset(PTHREAD_SHARED_LIBRARY) -set(FLAME_DEPENDENCY_STATIC_LIBRARIES - ${PTHREAD_STATIC_LIBRARY} -) + set(FLAME_DEPENDENCY_SHARED_LIBRARIES ${PTHREAD_SHARED_LIBRARY}) + set(FLAME_DEPENDENCY_STATIC_LIBRARIES ${PTHREAD_STATIC_LIBRARY}) +endif() diff --git a/cmake/Platform/Windows.cmake b/cmake/Platform/Windows.cmake index 320dc02..e5c2109 100644 --- a/cmake/Platform/Windows.cmake +++ b/cmake/Platform/Windows.cmake @@ -1 +1,4 @@ set(FLAME_PLATFORM Windows) + +set(FLAME_STATIC_LIBRARY_SUFFIX ".lib") +set(FLAME_SHARED_LIBRARY_SUFFIX ".dll") From 96de101a4310eb49aa3f51478050cc81d42a0b65 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 01:57:19 +0300 Subject: [PATCH 08/54] Rename function ('print_debug_list_newline' -> 'print_debug_value_newline') --- cmake/Functions/CompileBinaryFunctions.cmake | 22 ++--- cmake/Functions/CompileLibraryFunctions.cmake | 46 +++++----- cmake/Functions/HeaderLibraryFunctions.cmake | 16 ++-- cmake/Functions/PrintFunctions.cmake | 4 +- cmake/Properties/TargetProperties.cmake | 90 +++++++++---------- 5 files changed, 89 insertions(+), 89 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 935b3e4..b2cb55c 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -60,39 +60,39 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_newline("-- VALUES --") print_debug_function_oneline("BINARY_NAME = ") - print_debug_list_newline(${BINARY_NAME}) + print_debug_value_newline(${BINARY_NAME}) print_debug_function_oneline("BINARY_ALIAS_NAME = ") - print_debug_list_newline(${BINARY_ALIAS_NAME}) + print_debug_value_newline(${BINARY_ALIAS_NAME}) print_debug_function_oneline("BINARY_SOURCE_LIST_FILE = ") - print_debug_list_newline(${BINARY_SOURCE_LIST_FILE}) + print_debug_value_newline(${BINARY_SOURCE_LIST_FILE}) print_debug_function_oneline("BINARY_HEADER_LIST_FILE = ") - print_debug_list_newline(${BINARY_HEADER_LIST_FILE}) + print_debug_value_newline(${BINARY_HEADER_LIST_FILE}) print_debug_function_oneline("BINARY_INSTALL_PATH = ") - print_debug_list_newline(${BINARY_INSTALL_PATH}) + print_debug_value_newline(${BINARY_INSTALL_PATH}) print_debug_function_newline("-- LISTS --") print_debug_function_oneline("BINARY_INCLUDE_PATHS = ") - print_debug_list_newline(${BINARY_INCLUDE_PATHS}) + print_debug_value_newline(${BINARY_INCLUDE_PATHS}) print_debug_function_oneline("BINARY_SOURCE_LIST = ") - print_debug_list_newline(${BINARY_SOURCE_LIST}) + print_debug_value_newline(${BINARY_SOURCE_LIST}) print_debug_function_oneline("BINARY_HEADER_LIST = ") - print_debug_list_newline(${BINARY_HEADER_LIST}) + print_debug_value_newline(${BINARY_HEADER_LIST}) print_debug_function_oneline("BINARY_COMPILE_FLAGS = ") - print_debug_list_newline(${BINARY_COMPILE_FLAGS}) + print_debug_value_newline(${BINARY_COMPILE_FLAGS}) print_debug_function_oneline("BINARY_LINK_FLAGS = ") - print_debug_list_newline(${BINARY_LINK_FLAGS}) + print_debug_value_newline(${BINARY_LINK_FLAGS}) print_debug_function_oneline("BINARY_DEPENDENCY_TARGET_LIST = ") - print_debug_list_newline(${BINARY_DEPENDENCY_TARGET_LIST}) + print_debug_value_newline(${BINARY_DEPENDENCY_TARGET_LIST}) print_debug_function_newline("-------- PARSE RESULT -------") endif() diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index bda55e4..e2c4232 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -72,81 +72,81 @@ macro(internal_compile_library_print_parse_result) print_debug_function_newline("-- OPTIONS --") #print_debug_function_oneline("COMPILE_DEBUG = ") - #print_debug_list_newline("${COMPILE_DEBUG}") + #print_debug_value_newline("${COMPILE_DEBUG}") print_debug_function_oneline("COMPILE_MAKE_STATIC = ") - print_debug_list_newline("${COMPILE_MAKE_STATIC}") + print_debug_value_newline("${COMPILE_MAKE_STATIC}") print_debug_function_oneline("COMPILE_MAKE_SHARED = ") - print_debug_list_newline("${COMPILE_MAKE_SHARED}") + print_debug_value_newline("${COMPILE_MAKE_SHARED}") print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS = ") - print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") + print_debug_value_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS = ") - print_debug_list_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") + print_debug_value_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") print_debug_function_oneline("COMPILE_HELP = ") - print_debug_list_newline("${COMPILE_HELP}") + print_debug_value_newline("${COMPILE_HELP}") # values print_debug_function_newline("-- VALUES --") print_debug_function_oneline("COMPILE_LIBRARY_NAME = ") - print_debug_list_newline(${COMPILE_LIBRARY_NAME}) + print_debug_value_newline(${COMPILE_LIBRARY_NAME}) print_debug_function_oneline("COMPILE_OBJECT_ALIAS_NAME = ") - print_debug_list_newline(${COMPILE_OBJECT_ALIAS_NAME}) + print_debug_value_newline(${COMPILE_OBJECT_ALIAS_NAME}) print_debug_function_oneline("COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME = ") - print_debug_list_newline(${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}) + print_debug_value_newline(${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}) print_debug_function_oneline("COMPILE_STATIC_ALIAS_NAME = ") - print_debug_list_newline(${COMPILE_STATIC_ALIAS_NAME}) + print_debug_value_newline(${COMPILE_STATIC_ALIAS_NAME}) print_debug_function_oneline("COMPILE_SHARED_ALIAS_NAME = ") - print_debug_list_newline(${COMPILE_SHARED_ALIAS_NAME}) + print_debug_value_newline(${COMPILE_SHARED_ALIAS_NAME}) print_debug_function_oneline("COMPILE_SOURCE_LIST_FILE = ") - print_debug_list_newline(${COMPILE_SOURCE_LIST_FILE}) + print_debug_value_newline(${COMPILE_SOURCE_LIST_FILE}) print_debug_function_oneline("COMPILE_HEADER_LIST_FILE = ") - print_debug_list_newline(${COMPILE_HEADER_LIST_FILE}) + print_debug_value_newline(${COMPILE_HEADER_LIST_FILE}) print_debug_function_oneline("COMPILE_STATIC_INSTALL_PATH = ") - print_debug_list_newline(${COMPILE_STATIC_INSTALL_PATH}) + print_debug_value_newline(${COMPILE_STATIC_INSTALL_PATH}) print_debug_function_oneline("COMPILE_SHARED_INSTALL_PATH = ") - print_debug_list_newline(${COMPILE_SHARED_INSTALL_PATH}) + print_debug_value_newline(${COMPILE_SHARED_INSTALL_PATH}) # lists print_debug_function_newline("-- LISTS --") print_debug_function_oneline("COMPILE_INCLUDE_PATHS = ") - print_debug_list_newline("${COMPILE_INCLUDE_PATHS}") + print_debug_value_newline("${COMPILE_INCLUDE_PATHS}") print_debug_function_oneline("COMPILE_SOURCE_LIST = ") - print_debug_list_newline(${COMPILE_SOURCE_LIST}) + print_debug_value_newline(${COMPILE_SOURCE_LIST}) print_debug_function_oneline("COMPILE_HEADER_LIST = ") - print_debug_list_newline(${COMPILE_HEADER_LIST}) + print_debug_value_newline(${COMPILE_HEADER_LIST}) print_debug_function_oneline("COMPILE_COMPILE_FLAGS = ") - print_debug_list_newline("${COMPILE_COMPILE_FLAGS}") + print_debug_value_newline("${COMPILE_COMPILE_FLAGS}") print_debug_function_oneline("COMPILE_LINK_FLAGS = ") - print_debug_list_newline("${COMPILE_LINK_FLAGS}") + print_debug_value_newline("${COMPILE_LINK_FLAGS}") print_debug_function_oneline("COMPILE_DEPENDENCY_HEADER_TARGETS = ") - print_debug_list_newline("${COMPILE_DEPENDENCY_HEADER_TARGETS}") + print_debug_value_newline("${COMPILE_DEPENDENCY_HEADER_TARGETS}") print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_STATIC = ") - print_debug_list_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}") + print_debug_value_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}") print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_SHARED = ") - print_debug_list_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}") + print_debug_value_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}") print_debug_function_newline("-------------- PARSE RESULT --------------") endif() diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 290f726..5c85aa5 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -62,28 +62,28 @@ macro(internal_header_library_print_parse_result) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("HEADER_HELP = ") - print_debug_list_newline(${HEADER_HELP}) + print_debug_value_newline(${HEADER_HELP}) print_debug_function_oneline("HEADER_LIBRARY_NAME = ") - print_debug_list_newline(${HEADER_LIBRARY_NAME}) + print_debug_value_newline(${HEADER_LIBRARY_NAME}) print_debug_function_oneline("HEADER_HEADER_LIST_FILE = ") - print_debug_list_newline("${HEADER_HEADER_LIST_FILE}") + print_debug_value_newline("${HEADER_HEADER_LIST_FILE}") print_debug_function_oneline("HEADER_HEADER_LIST = ") - print_debug_list_newline(${HEADER_HEADER_LIST}) + print_debug_value_newline(${HEADER_HEADER_LIST}) print_debug_function_oneline("HEADER_LIBRARY_ALIAS_NAME = ") - print_debug_list_newline(${HEADER_LIBRARY_ALIAS_NAME}) + print_debug_value_newline(${HEADER_LIBRARY_ALIAS_NAME}) print_debug_function_oneline("HEADER_DEPENDENCY_TARGET_LIST = ") - print_debug_list_newline(${HEADER_DEPENDENCY_TARGET_LIST}) + print_debug_value_newline(${HEADER_DEPENDENCY_TARGET_LIST}) print_debug_function_oneline("HEADER_INCLUDE_PATHS = ") - print_debug_list_newline(${HEADER_INCLUDE_PATHS}) + print_debug_value_newline(${HEADER_INCLUDE_PATHS}) print_debug_function_oneline("HEADER_INSTALL_PATH = ") - print_debug_list_newline(${HEADER_INSTALL_PATH}) + print_debug_value_newline(${HEADER_INSTALL_PATH}) print_debug_function_newline("-------- PARSE RESULT --------") endif() diff --git a/cmake/Functions/PrintFunctions.cmake b/cmake/Functions/PrintFunctions.cmake index 5841ed2..87ebdc2 100644 --- a/cmake/Functions/PrintFunctions.cmake +++ b/cmake/Functions/PrintFunctions.cmake @@ -74,7 +74,7 @@ endfunction(print_debug_newline) # # # -function(print_debug_list_newline) +function(print_debug_value_newline) set(ARG_LIST ${ARGV}) if(ARG_LIST) list(GET ARG_LIST 0 RESULT) @@ -85,7 +85,7 @@ function(print_debug_list_newline) endif() print_debug_newline("${RESULT}") -endfunction(print_debug_list_newline) +endfunction(print_debug_value_newline) # # diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index c241f61..17afebb 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -25,25 +25,25 @@ function(internal_add_header_target_properties) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") - print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + print_debug_value_newline(${FLAME_PROPERTY_CONTAINER_NAME}) print_debug_function_oneline("FLAME_REAL_TARGET = ") - print_debug_list_newline(${FLAME_REAL_TARGET}) + print_debug_value_newline(${FLAME_REAL_TARGET}) print_debug_function_oneline("FLAME_ADDING_HEADERS = ") - print_debug_list_newline(${FLAME_ADDING_HEADERS}) + print_debug_value_newline(${FLAME_ADDING_HEADERS}) print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") - print_debug_list_newline(${FLAME_INCLUDE_PATHS}) + print_debug_value_newline(${FLAME_INCLUDE_PATHS}) print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") - print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) print_debug_function_oneline("FLAME_LIBRARY_ALIASES = ") - print_debug_list_newline(${FLAME_LIBRARY_ALIASES}) + print_debug_value_newline(${FLAME_LIBRARY_ALIASES}) print_debug_function_oneline("FLAME_INSTALL_PATH = ") - print_debug_list_newline(${FLAME_INSTALL_PATH}) + print_debug_value_newline(${FLAME_INSTALL_PATH}) print_debug_function_newline("-------- PARSE RESULT --------") endif() @@ -94,28 +94,28 @@ function(internal_add_object_target_properties) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") - print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + print_debug_value_newline(${FLAME_PROPERTY_CONTAINER_NAME}) print_debug_function_oneline("FLAME_REAL_TARGET = ") - print_debug_list_newline(${FLAME_REAL_TARGET}) + print_debug_value_newline(${FLAME_REAL_TARGET}) print_debug_function_oneline("FLAME_ADDING_SOURCES = ") - print_debug_list_newline(${FLAME_ADDING_SOURCES}) + print_debug_value_newline(${FLAME_ADDING_SOURCES}) print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") - print_debug_list_newline(${FLAME_INCLUDE_PATHS}) + print_debug_value_newline(${FLAME_INCLUDE_PATHS}) print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") - print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") - print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + print_debug_value_newline(${FLAME_COMPILE_FLAGS}) print_debug_function_oneline("FLAME_POSITION_INDEPEND = ") - print_debug_list_newline(${FLAME_POSITION_INDEPEND}) + print_debug_value_newline(${FLAME_POSITION_INDEPEND}) print_debug_function_oneline("FLAME_OBJECT_ALIASES = ") - print_debug_list_newline(${FLAME_OBJECT_ALIASES}) + print_debug_value_newline(${FLAME_OBJECT_ALIASES}) print_debug_function_newline("-------- PARSE RESULT --------") endif() @@ -172,34 +172,34 @@ function(internal_add_static_target_properties) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") - print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + print_debug_value_newline(${FLAME_PROPERTY_CONTAINER_NAME}) print_debug_function_oneline("FLAME_REAL_TARGET = ") - print_debug_list_newline(${FLAME_REAL_TARGET}) + print_debug_value_newline(${FLAME_REAL_TARGET}) print_debug_function_oneline("FLAME_ADDING_SOURCES = ") - print_debug_list_newline(${FLAME_ADDING_SOURCES}) + print_debug_value_newline(${FLAME_ADDING_SOURCES}) print_debug_function_oneline("FLAME_ADDING_OBJECTS = ") - print_debug_list_newline(${FLAME_ADDING_OBJECTS}) + print_debug_value_newline(${FLAME_ADDING_OBJECTS}) print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") - print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) print_debug_function_oneline("FLAME_DEPENDENCY_LIBRARIES = ") - print_debug_list_newline(${FLAME_DEPENDENCY_LIBRARIES}) + print_debug_value_newline(${FLAME_DEPENDENCY_LIBRARIES}) print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") - print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + print_debug_value_newline(${FLAME_COMPILE_FLAGS}) print_debug_function_oneline("FLAME_OUTPUT_NAME = ") - print_debug_list_newline(${FLAME_OUTPUT_NAME}) + print_debug_value_newline(${FLAME_OUTPUT_NAME}) print_debug_function_oneline("FLAME_LIBRARY_ALIASES = ") - print_debug_list_newline(${FLAME_LIBRARY_ALIASES}) + print_debug_value_newline(${FLAME_LIBRARY_ALIASES}) print_debug_function_oneline("FLAME_INSTALL_PATH = ") - print_debug_list_newline(${FLAME_INSTALL_PATH}) + print_debug_value_newline(${FLAME_INSTALL_PATH}) print_debug_function_newline("-------- PARSE RESULT --------") endif() @@ -261,37 +261,37 @@ function(internal_add_shared_target_properties) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") - print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + print_debug_value_newline(${FLAME_PROPERTY_CONTAINER_NAME}) print_debug_function_oneline("FLAME_REAL_TARGET = ") - print_debug_list_newline(${FLAME_REAL_TARGET}) + print_debug_value_newline(${FLAME_REAL_TARGET}) print_debug_function_oneline("FLAME_ADDING_SOURCES = ") - print_debug_list_newline(${FLAME_ADDING_SOURCES}) + print_debug_value_newline(${FLAME_ADDING_SOURCES}) print_debug_function_oneline("FLAME_ADDING_OBJECTS = ") - print_debug_list_newline(${FLAME_ADDING_OBJECTS}) + print_debug_value_newline(${FLAME_ADDING_OBJECTS}) print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") - print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) print_debug_function_oneline("FLAME_DEPENDENCY_LIBRARIES = ") - print_debug_list_newline(${FLAME_DEPENDENCY_LIBRARIES}) + print_debug_value_newline(${FLAME_DEPENDENCY_LIBRARIES}) print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") - print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + print_debug_value_newline(${FLAME_COMPILE_FLAGS}) print_debug_function_oneline("FLAME_LINK_FLAGS = ") - print_debug_list_newline(${FLAME_LINK_FLAGS}) + print_debug_value_newline(${FLAME_LINK_FLAGS}) print_debug_function_oneline("FLAME_OUTPUT_NAME = ") - print_debug_list_newline(${FLAME_OUTPUT_NAME}) + print_debug_value_newline(${FLAME_OUTPUT_NAME}) print_debug_function_oneline("FLAME_LIBRARY_ALIASES = ") - print_debug_list_newline(${FLAME_LIBRARY_ALIASES}) + print_debug_value_newline(${FLAME_LIBRARY_ALIASES}) print_debug_function_oneline("FLAME_INSTALL_PATH = ") - print_debug_list_newline(${FLAME_INSTALL_PATH}) + print_debug_value_newline(${FLAME_INSTALL_PATH}) print_debug_function_newline("-------- PARSE RESULT --------") endif() @@ -353,31 +353,31 @@ function(internal_add_binary_target_properties) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") - print_debug_list_newline(${FLAME_PROPERTY_CONTAINER_NAME}) + print_debug_value_newline(${FLAME_PROPERTY_CONTAINER_NAME}) print_debug_function_oneline("FLAME_REAL_TARGET = ") - print_debug_list_newline(${FLAME_REAL_TARGET}) + print_debug_value_newline(${FLAME_REAL_TARGET}) print_debug_function_oneline("FLAME_ADDING_SOURCES = ") - print_debug_list_newline(${FLAME_ADDING_SOURCES}) + print_debug_value_newline(${FLAME_ADDING_SOURCES}) print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") - print_debug_list_newline(${FLAME_DEPENDENCY_HEADERS}) + print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) print_debug_function_oneline("FLAME_DEPENDENCY_LIBRARIES = ") - print_debug_list_newline(${FLAME_DEPENDENCY_LIBRARIES}) + print_debug_value_newline(${FLAME_DEPENDENCY_LIBRARIES}) print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") - print_debug_list_newline(${FLAME_COMPILE_FLAGS}) + print_debug_value_newline(${FLAME_COMPILE_FLAGS}) print_debug_function_oneline("FLAME_LINK_FLAGS = ") - print_debug_list_newline(${FLAME_LINK_FLAGS}) + print_debug_value_newline(${FLAME_LINK_FLAGS}) print_debug_function_oneline("FLAME_OUTPUT_NAME = ") - print_debug_list_newline(${FLAME_OUTPUT_NAME}) + print_debug_value_newline(${FLAME_OUTPUT_NAME}) print_debug_function_oneline("FLAME_INSTALL_PATH = ") - print_debug_list_newline(${FLAME_INSTALL_PATH}) + print_debug_value_newline(${FLAME_INSTALL_PATH}) print_debug_function_newline("-------- PARSE RESULT --------") endif() From 35d87ea2fffb9959b2f1065412927b77631c3e5d Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 02:05:56 +0300 Subject: [PATCH 09/54] Remove unused variable. --- cmake/Functions/CompileLibraryFunctions.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index e2c4232..51ce4a0 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -238,7 +238,6 @@ macro(internal_compile_independ_object_library) "${TARGET_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") - set(POSITION_INDEPEND TRUE) if(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) set(OBJECT_ALIASES @@ -263,7 +262,6 @@ macro(internal_compile_independ_object_library) #DEBUG ) - unset(POSITION_INDEPEND) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) unset(TARGET_NAME_INDEPEND) From 714ae99bb4f24690c86d592505605a2a3f0aad5d Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 02:06:53 +0300 Subject: [PATCH 10/54] Fix logic. --- cmake/Functions/CompileLibraryFunctions.cmake | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 51ce4a0..b5dc6b6 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -181,7 +181,8 @@ macro(internal_compile_library_process_parameters) include(${COMPILE_HEADER_LIST_FILE}) list(APPEND SOURCE_LIST "${HEADER_LIST}") endif() - elseif(COMPILE_HEADER_LIST) + endif() + if(COMPILE_HEADER_LIST) list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) endif() @@ -339,8 +340,7 @@ macro(internal_compile_static_library) string(CONCAT TARGET_DEPENDENT_OBJECT_LIBRARY "${COMPILE_LIBRARY_NAME}" "${FLAME_NAME_SEPARATOR}" - "${FLAME_OBJECT_MODULE_SUFFIX}" - ) + "${FLAME_OBJECT_MODULE_SUFFIX}") #set(DEBUG DEBUG) internal_add_static_target_properties( @@ -385,8 +385,7 @@ macro(internal_compile_shared_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" "${FLAME_NAME_SEPARATOR}" - "${FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX}" - ) + "${FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX}") #set(DEBUG DEBUG) internal_add_shared_target_properties( From 1bb0a7a292e373c535e04f166da50879a19754c2 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 02:15:48 +0300 Subject: [PATCH 11/54] Add lost renames '*depend' -> '*dependent'. --- cmake/Functions/CompileLibraryFunctions.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index b5dc6b6..f84c7b7 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -212,7 +212,7 @@ endmacro(internal_compile_library_print_help) # # # -macro(internal_compile_independ_object_library) +macro(internal_compile_independent_object_library) check_internal_use() print_newline( @@ -270,12 +270,12 @@ macro(internal_compile_independ_object_library) print_newline( "-- Adding position independ object library for ${COMPILE_LIBRARY_NAME} - done") -endmacro(internal_compile_independ_object_library) +endmacro(internal_compile_independent_object_library) # # # -macro(internal_compile_depend_object_library) +macro(internal_compile_dependent_object_library) check_internal_use() print_newline("-- Adding position depend object library for ${COMPILE_LIBRARY_NAME}") @@ -305,7 +305,7 @@ macro(internal_compile_depend_object_library) unset(TARGET_NAME) print_newline("-- Adding object library for ${COMPILE_LIBRARY_NAME} - done") -endmacro(internal_compile_depend_object_library) +endmacro(internal_compile_dependent_object_library) # # @@ -313,9 +313,9 @@ endmacro(internal_compile_depend_object_library) macro(internal_compile_object_library) check_internal_use() - internal_compile_independ_object_library() + internal_compile_independent_object_library() if(NOT FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) - internal_compile_depend_object_library() + internal_compile_dependent_object_library() endif() endmacro(internal_compile_object_library) From f489dcbac0286af0f2047ac60894ace42be4774c Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 02:28:43 +0300 Subject: [PATCH 12/54] Small fix --- cmake/Functions/CompileLibraryFunctions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index f84c7b7..a704e3f 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -402,7 +402,7 @@ macro(internal_compile_shared_library) #DEBUG ) - unset(TARGET_DEPENDENT_OBJECT_LIBRARY) + unset(TARGET_INDEPENDENT_OBJECT_LIBRARY) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) From 1d1e67969e5447e75e39c7bd9bd916e36296cb43 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 02:30:24 +0300 Subject: [PATCH 13/54] Print log message about inconsistent options --- cmake/Functions/CompileLibraryFunctions.cmake | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index a704e3f..1684274 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -431,13 +431,21 @@ function(compile_library) internal_compile_object_library() # Add static library to resolve list - if(MAKE_STATIC AND FLAME_MAKE_STATIC) - internal_compile_static_library() + if(MAKE_STATIC) + if(FLAME_MAKE_STATIC) + internal_compile_static_library() + else() + print_newline( + "-- Need 'MAKE_STATIC', but making static libraries are disabled") endif() # Add shared library to resolve list - if(MAKE_SHARED AND FLAME_MAKE_SHARED) - internal_compile_shared_library() + if(MAKE_SHARED) + if(FLAME_MAKE_SHARED) + internal_compile_shared_library() + else() + print_newline( + "-- Need 'MAKE_SHARED', but making shared libraries are disabled") endif() # End function log From 0077dbb8e66011da329d1d38a4fdec8c7f4f8842 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 15:36:56 +0300 Subject: [PATCH 14/54] Add lost 'endif()'s --- cmake/Functions/CompileLibraryFunctions.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 1684274..7e4a9b1 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -437,6 +437,7 @@ function(compile_library) else() print_newline( "-- Need 'MAKE_STATIC', but making static libraries are disabled") + endif() endif() # Add shared library to resolve list @@ -446,6 +447,7 @@ function(compile_library) else() print_newline( "-- Need 'MAKE_SHARED', but making shared libraries are disabled") + endif() endif() # End function log From 6969b2747f58c55a0613d927e2a92b78585d2b0b Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 16:03:41 +0300 Subject: [PATCH 15/54] Move base functions to beginning of file. Remove parse macros --- cmake/Functions/CompileBinaryFunctions.cmake | 86 ++++------- cmake/Functions/CompileLibraryFunctions.cmake | 142 +++++++----------- cmake/Functions/HeaderLibraryFunctions.cmake | 18 +-- 3 files changed, 86 insertions(+), 160 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index b2cb55c..c7dd240 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -1,3 +1,32 @@ +# +# +# +function(compile_binary) + enable_internal_use() + + # Parse parameters + set(OPTIONS "DEBUG" "HELP") + set(VALUES "NAME" "ALIAS_NAME" "SOURCE_LIST_FILE" "HEADER_LIST_FILE" "INSTALL_PATH") + set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "HEADER_LIST" "COMPILE_FLAGS" "LINK_FLAGS" + "DEPENDENCY_TARGET_LIST") + cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + # Start function log + internal_compile_binary_start_function() + + # Print parse result + internal_compile_binary_print_parse_result() + + # Check parameters + internal_compile_binary_process_parameters() + + # Add binary to resolve list + internal_compile_binary() + + # End function log + internal_compile_binary_end_function() +endfunction(compile_binary) + # # # @@ -14,38 +43,6 @@ macro(internal_compile_binary_end_function) end_debug_function() endmacro(internal_compile_binary_end_function) -# -# -# -macro(internal_compile_binary_parse_parameters) - check_internal_use() - - set(OPTIONS - "DEBUG" - ) - set(VALUES - "NAME" - "ALIAS_NAME" - - "SOURCE_LIST_FILE" - "HEADER_LIST_FILE" - - "INSTALL_PATH" - ) - set(LISTS - "INCLUDE_PATHS" - - "SOURCE_LIST" - "HEADER_LIST" - - "COMPILE_FLAGS" - "LINK_FLAGS" - - "DEPENDENCY_TARGET_LIST" - ) - cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(internal_compile_binary_parse_parameters) - # # # @@ -173,28 +170,3 @@ macro(internal_compile_binary) "-- Adding binary for ${BINARY_NAME} - done") endmacro(internal_compile_binary) - -# -# -# -function(compile_binary) - enable_internal_use() - - # Parse parameters - internal_compile_binary_parse_parameters(${ARGV}) - - # Start function log - internal_compile_binary_start_function() - - # Print parse result - internal_compile_binary_print_parse_result() - - # Check parameters - internal_compile_binary_process_parameters() - - # Add binary to resolve list - internal_compile_binary() - - # End function log - internal_compile_binary_end_function() -endfunction(compile_binary) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 7e4a9b1..3859bbc 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -1,3 +1,56 @@ +# +# +# +function(compile_library) + enable_internal_use() + + # Parse parameters + set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" + "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" "HELP") + set(VALUES "LIBRARY_NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" + "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "SOURCE_LIST_FILE" "HEADER_LIST_FILE" + "STATIC_INSTALL_PATH" "SHARED_INSTALL_PATH") + set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "HEADER_LIST" "COMMPILE_FLAGS" "LINK_FLAGS" + "DEPENDENCY_HEADER_TARGETS" "DEPENDENCY_TARGETS_FOR_STATIC" + "DEPENDENCY_TARGETS_FOR_SHARED") + cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") + + # Start function log + internal_compile_library_start_function() + + # Print parse result + internal_compile_library_print_parse_result() + + # Check parameters + internal_compile_library_process_parameters() + + # Add object library/libraries to resolve list + internal_compile_object_library() + + # Add static library to resolve list + if(MAKE_STATIC) + if(FLAME_MAKE_STATIC) + internal_compile_static_library() + else() + print_newline( + "-- Need 'MAKE_STATIC', but making static libraries are disabled") + endif() + endif() + + # Add shared library to resolve list + if(MAKE_SHARED) + if(FLAME_MAKE_SHARED) + internal_compile_shared_library() + else() + print_newline( + "-- Need 'MAKE_SHARED', but making shared libraries are disabled") + endif() + endif() + + # End function log + internal_compile_library_end_function() +endfunction(compile_library) + # # # @@ -14,50 +67,6 @@ macro(internal_compile_library_end_function) end_debug_function() endmacro(internal_compile_library_end_function) -# -# -# -macro(internal_compile_library_parse_parameters) - check_internal_use() - - set(OPTIONS - "DEBUG" - "MAKE_STATIC" - "MAKE_SHARED" - "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" - "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" - "HELP" - ) - set(VALUES - "LIBRARY_NAME" - - "OBJECT_ALIAS_NAME" - "INDEPENDENT_OBJECT_ALIAS_NAME" - "STATIC_ALIAS_NAME" - "SHARED_ALIAS_NAME" - - "SOURCE_LIST_FILE" - "HEADER_LIST_FILE" - - "STATIC_INSTALL_PATH" - "SHARED_INSTALL_PATH" - ) - set(LISTS - "INCLUDE_PATHS" - - "SOURCE_LIST" - "HEADER_LIST" - - "COMMPILE_FLAGS" - "LINK_FLAGS" - - "DEPENDENCY_HEADER_TARGETS" - "DEPENDENCY_TARGETS_FOR_STATIC" - "DEPENDENCY_TARGETS_FOR_SHARED" - ) - cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(internal_compile_library_parse_parameters) - # # # @@ -408,48 +417,3 @@ macro(internal_compile_shared_library) print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME} - done") endmacro(internal_compile_shared_library) - -# -# -# -function(compile_library) - enable_internal_use() - - # Parse parameters - internal_compile_library_parse_parameters(${ARGV}) - - # Start function log - internal_compile_library_start_function() - - # Print parse result - internal_compile_library_print_parse_result() - - # Check parameters - internal_compile_library_process_parameters() - - # Add object library/libraries to resolve list - internal_compile_object_library() - - # Add static library to resolve list - if(MAKE_STATIC) - if(FLAME_MAKE_STATIC) - internal_compile_static_library() - else() - print_newline( - "-- Need 'MAKE_STATIC', but making static libraries are disabled") - endif() - endif() - - # Add shared library to resolve list - if(MAKE_SHARED) - if(FLAME_MAKE_SHARED) - internal_compile_shared_library() - else() - print_newline( - "-- Need 'MAKE_SHARED', but making shared libraries are disabled") - endif() - endif() - - # End function log - internal_compile_library_end_function() -endfunction(compile_library) diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 5c85aa5..16a3393 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -5,7 +5,10 @@ function(header_library) enable_internal_use() # Parse arguments - internal_header_library_parse_arguments(${ARGV}) + set(OPTIONS "DEBUG" "HELP") + set(VALUES "LIBRARY_NAME" "LIBRARY_ALIAS_NAME" "HEADER_LIST_FILE" "INSTALL_PATH") + set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") + cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") # Start function log internal_header_library_start_function() @@ -39,19 +42,6 @@ macro(internal_header_library_end_function) end_debug_function() endmacro(internal_header_library_end_function) -# -# -# -macro(internal_header_library_parse_arguments) - check_internal_use() - - set(OPTIONS "DEBUG" "HELP") - set(VALUES "LIBRARY_NAME" "LIBRARY_ALIAS_NAME" "HEADER_LIST_FILE" "INSTALL_PATH") - set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") - - cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") -endmacro(internal_header_library_parse_arguments) - # # # From 1bf2b00f4ae523ee437273293d2ecd3d24970f50 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 16:21:59 +0300 Subject: [PATCH 16/54] Fix output align. Add checks for existing 'NAME' --- cmake/Functions/CompileBinaryFunctions.cmake | 3 + cmake/Functions/CompileLibraryFunctions.cmake | 81 ++++++++++--------- cmake/Functions/HeaderLibraryFunctions.cmake | 17 ++-- 3 files changed, 53 insertions(+), 48 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index c7dd240..1a81151 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -101,6 +101,9 @@ endmacro(internal_compile_binary_print_parse_result) macro(internal_compile_binary_process_parameters) check_internal_use() + if(NOT BINARY_NAME) + message_fatal("-- Need 'NAME'.") + endif() if(BINARY_SOURCE_LIST_FILE) include(${BINARY_SOURCE_LIST_FILE}) endif() diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 3859bbc..a304b32 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -7,7 +7,7 @@ function(compile_library) # Parse parameters set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" "HELP") - set(VALUES "LIBRARY_NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" + set(VALUES "NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "SOURCE_LIST_FILE" "HEADER_LIST_FILE" "STATIC_INSTALL_PATH" "SHARED_INSTALL_PATH") set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "HEADER_LIST" "COMMPILE_FLAGS" "LINK_FLAGS" @@ -80,13 +80,13 @@ macro(internal_compile_library_print_parse_result) print_debug_function_newline("-- OPTIONS --") - #print_debug_function_oneline("COMPILE_DEBUG = ") + #print_debug_function_oneline("COMPILE_DEBUG = ") #print_debug_value_newline("${COMPILE_DEBUG}") - print_debug_function_oneline("COMPILE_MAKE_STATIC = ") + print_debug_function_oneline("COMPILE_MAKE_STATIC = ") print_debug_value_newline("${COMPILE_MAKE_STATIC}") - print_debug_function_oneline("COMPILE_MAKE_SHARED = ") + print_debug_function_oneline("COMPILE_MAKE_SHARED = ") print_debug_value_newline("${COMPILE_MAKE_SHARED}") print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS = ") @@ -95,66 +95,66 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS = ") print_debug_value_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") - print_debug_function_oneline("COMPILE_HELP = ") + print_debug_function_oneline("COMPILE_HELP = ") print_debug_value_newline("${COMPILE_HELP}") # values print_debug_function_newline("-- VALUES --") - print_debug_function_oneline("COMPILE_LIBRARY_NAME = ") - print_debug_value_newline(${COMPILE_LIBRARY_NAME}) + print_debug_function_oneline("COMPILE_NAME = ") + print_debug_value_newline(${COMPILE_NAME}) - print_debug_function_oneline("COMPILE_OBJECT_ALIAS_NAME = ") + print_debug_function_oneline("COMPILE_OBJECT_ALIAS_NAME = ") print_debug_value_newline(${COMPILE_OBJECT_ALIAS_NAME}) print_debug_function_oneline("COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME = ") print_debug_value_newline(${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}) - print_debug_function_oneline("COMPILE_STATIC_ALIAS_NAME = ") + print_debug_function_oneline("COMPILE_STATIC_ALIAS_NAME = ") print_debug_value_newline(${COMPILE_STATIC_ALIAS_NAME}) - print_debug_function_oneline("COMPILE_SHARED_ALIAS_NAME = ") + print_debug_function_oneline("COMPILE_SHARED_ALIAS_NAME = ") print_debug_value_newline(${COMPILE_SHARED_ALIAS_NAME}) - print_debug_function_oneline("COMPILE_SOURCE_LIST_FILE = ") + print_debug_function_oneline("COMPILE_SOURCE_LIST_FILE = ") print_debug_value_newline(${COMPILE_SOURCE_LIST_FILE}) - print_debug_function_oneline("COMPILE_HEADER_LIST_FILE = ") + print_debug_function_oneline("COMPILE_HEADER_LIST_FILE = ") print_debug_value_newline(${COMPILE_HEADER_LIST_FILE}) - print_debug_function_oneline("COMPILE_STATIC_INSTALL_PATH = ") + print_debug_function_oneline("COMPILE_STATIC_INSTALL_PATH = ") print_debug_value_newline(${COMPILE_STATIC_INSTALL_PATH}) - print_debug_function_oneline("COMPILE_SHARED_INSTALL_PATH = ") + print_debug_function_oneline("COMPILE_SHARED_INSTALL_PATH = ") print_debug_value_newline(${COMPILE_SHARED_INSTALL_PATH}) # lists print_debug_function_newline("-- LISTS --") - print_debug_function_oneline("COMPILE_INCLUDE_PATHS = ") + print_debug_function_oneline("COMPILE_INCLUDE_PATHS = ") print_debug_value_newline("${COMPILE_INCLUDE_PATHS}") - print_debug_function_oneline("COMPILE_SOURCE_LIST = ") + print_debug_function_oneline("COMPILE_SOURCE_LIST = ") print_debug_value_newline(${COMPILE_SOURCE_LIST}) - print_debug_function_oneline("COMPILE_HEADER_LIST = ") + print_debug_function_oneline("COMPILE_HEADER_LIST = ") print_debug_value_newline(${COMPILE_HEADER_LIST}) - print_debug_function_oneline("COMPILE_COMPILE_FLAGS = ") + print_debug_function_oneline("COMPILE_COMPILE_FLAGS = ") print_debug_value_newline("${COMPILE_COMPILE_FLAGS}") - print_debug_function_oneline("COMPILE_LINK_FLAGS = ") + print_debug_function_oneline("COMPILE_LINK_FLAGS = ") print_debug_value_newline("${COMPILE_LINK_FLAGS}") - print_debug_function_oneline("COMPILE_DEPENDENCY_HEADER_TARGETS = ") + print_debug_function_oneline("COMPILE_DEPENDENCY_HEADER_TARGETS = ") print_debug_value_newline("${COMPILE_DEPENDENCY_HEADER_TARGETS}") - print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_STATIC = ") + print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_STATIC = ") print_debug_value_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}") - print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_SHARED = ") + print_debug_function_oneline("COMPILE_DEPENDENCY_TARGETS_FOR_SHARED = ") print_debug_value_newline("${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}") print_debug_function_newline("-------------- PARSE RESULT --------------") @@ -167,6 +167,9 @@ endmacro(internal_compile_library_print_parse_result) macro(internal_compile_library_process_parameters) check_internal_use() + if(NOT COMPILE_NAME) + message_fatal("-- Need 'NAME'.") + endif() if(COMPILE_SOURCE_LIST_FILE) if(EXISTS ${COMPILE_SOURCE_LIST_FILE}) include(${COMPILE_SOURCE_LIST_FILE}) @@ -225,14 +228,14 @@ macro(internal_compile_independent_object_library) check_internal_use() print_newline( - "-- Adding position independ object library for ${COMPILE_LIBRARY_NAME}") + "-- Adding position independ object library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME_DEPEND - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}") string(CONCAT TARGET_NAME_INDEPEND - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" "${FLAME_NAME_SEPARATOR}" @@ -278,7 +281,7 @@ macro(internal_compile_independent_object_library) unset(TARGET_NAME_DEPEND) print_newline( - "-- Adding position independ object library for ${COMPILE_LIBRARY_NAME} - done") + "-- Adding position independ object library for ${COMPILE_NAME} - done") endmacro(internal_compile_independent_object_library) # @@ -287,10 +290,10 @@ endmacro(internal_compile_independent_object_library) macro(internal_compile_dependent_object_library) check_internal_use() - print_newline("-- Adding position depend object library for ${COMPILE_LIBRARY_NAME}") + print_newline("-- Adding position depend object library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}") string(CONCAT TARGET_CUSTOM_PROPERTIES @@ -313,7 +316,7 @@ macro(internal_compile_dependent_object_library) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - print_newline("-- Adding object library for ${COMPILE_LIBRARY_NAME} - done") + print_newline("-- Adding object library for ${COMPILE_NAME} - done") endmacro(internal_compile_dependent_object_library) # @@ -335,10 +338,10 @@ endmacro(internal_compile_object_library) macro(internal_compile_static_library) check_internal_use() - print_newline("-- Adding static library for ${COMPILE_LIBRARY_NAME}") + print_newline("-- Adding static library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_STATIC_MODULE_SUFFIX}") string(CONCAT TARGET_CUSTOM_PROPERTIES @@ -347,7 +350,7 @@ macro(internal_compile_static_library) "${FLAME_CUSTOM_TARGET_SUFFIX}") string(CONCAT TARGET_DEPENDENT_OBJECT_LIBRARY - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}") @@ -360,7 +363,7 @@ macro(internal_compile_static_library) DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}" #COMPILE_FLAGS "${}" - OUTPUT_NAME "${COMPILE_LIBRARY_NAME}" + OUTPUT_NAME "${COMPILE_NAME}" LIBRARY_ALIASES "${COMPILE_STATIC_ALIAS_NAME}" #DEBUG ) @@ -369,7 +372,7 @@ macro(internal_compile_static_library) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - print_newline("-- Adding static library for ${COMPILE_LIBRARY_NAME} - done") + print_newline("-- Adding static library for ${COMPILE_NAME} - done") endmacro(internal_compile_static_library) # @@ -378,10 +381,10 @@ endmacro(internal_compile_static_library) macro(internal_compile_shared_library) check_internal_use() - print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME}") + print_newline("-- Adding shared library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_SHARED_MODULE_SUFFIX}") string(CONCAT TARGET_CUSTOM_PROPERTIES @@ -390,7 +393,7 @@ macro(internal_compile_shared_library) "${FLAME_CUSTOM_TARGET_SUFFIX}") string(CONCAT TARGET_INDEPENDENT_OBJECT_LIBRARY - "${COMPILE_LIBRARY_NAME}" + "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" "${FLAME_NAME_SEPARATOR}" @@ -406,7 +409,7 @@ macro(internal_compile_shared_library) DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_SHARED}" #COMPILE_FLAGS "${}" #LINK_FLAGS "${}" - OUTPUT_NAME "${COMPILE_LIBRARY_NAME}" + OUTPUT_NAME "${COMPILE_NAME}" LIBRARY_ALIASES "${COMPILE_SHARED_ALIAS_NAME}" #DEBUG ) @@ -415,5 +418,5 @@ macro(internal_compile_shared_library) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - print_newline("-- Adding shared library for ${COMPILE_LIBRARY_NAME} - done") + print_newline("-- Adding shared library for ${COMPILE_NAME} - done") endmacro(internal_compile_shared_library) diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 16a3393..dfcc4ad 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -6,7 +6,7 @@ function(header_library) # Parse arguments set(OPTIONS "DEBUG" "HELP") - set(VALUES "LIBRARY_NAME" "LIBRARY_ALIAS_NAME" "HEADER_LIST_FILE" "INSTALL_PATH") + set(VALUES "NAME" "LIBRARY_ALIAS_NAME" "HEADER_LIST_FILE" "INSTALL_PATH") set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -54,8 +54,8 @@ macro(internal_header_library_print_parse_result) print_debug_function_oneline("HEADER_HELP = ") print_debug_value_newline(${HEADER_HELP}) - print_debug_function_oneline("HEADER_LIBRARY_NAME = ") - print_debug_value_newline(${HEADER_LIBRARY_NAME}) + print_debug_function_oneline("HEADER_NAME = ") + print_debug_value_newline(${HEADER_NAME}) print_debug_function_oneline("HEADER_HEADER_LIST_FILE = ") print_debug_value_newline("${HEADER_HEADER_LIST_FILE}") @@ -85,10 +85,9 @@ endmacro(internal_header_library_print_parse_result) macro(internal_header_library_process_parameters) check_internal_use() - if(NOT HEADER_LIBRARY_NAME) - message_fatal("-- Need 'LIBRARY_NAME'.") + if(NOT HEADER_NAME) + message_fatal("-- Need 'NAME'.") endif() - if(HEADER_HEADER_LIST_FILE) if(EXISTS "${HEADER_HEADER_LIST_FILE}") include(${HEADER_HEADER_LIST_FILE}) @@ -110,10 +109,10 @@ endmacro(internal_header_library_process_parameters) macro(internal_header_library) check_internal_use() - print_newline("-- Adding header library for ${HEADER_LIBRARY_NAME}") + print_newline("-- Adding header library for ${HEADER_NAME}") string(CONCAT TARGET_NAME - "${HEADER_LIBRARY_NAME}" + "${HEADER_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_HEADER_MODULE_SUFFIX}") string(CONCAT TARGET_CUSTOM_PROPERTIES @@ -134,5 +133,5 @@ macro(internal_header_library) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - print_newline("-- Adding header library for ${HEADER_LIBRARY_NAME} - done") + print_newline("-- Adding header library for ${HEADER_NAME} - done") endmacro(internal_header_library) From ec06cf53719b48d254cd8347fe5672703433f2b6 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 25 Apr 2020 16:54:34 +0300 Subject: [PATCH 17/54] Lost '*depend' -> '*dependent' --- cmake/Functions/CompileLibraryFunctions.cmake | 25 +++++++++-------- cmake/Functions/ResolveFunctions.cmake | 10 +++---- cmake/Properties/TargetProperties.cmake | 28 +++++++++---------- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index a304b32..b400998 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -228,13 +228,13 @@ macro(internal_compile_independent_object_library) check_internal_use() print_newline( - "-- Adding position independ object library for ${COMPILE_NAME}") + "-- Adding position independent object library for ${COMPILE_NAME}") - string(CONCAT TARGET_NAME_DEPEND + string(CONCAT TARGET_NAME_DEPENDENT "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}") - string(CONCAT TARGET_NAME_INDEPEND + string(CONCAT TARGET_NAME_INDEPENDENT "${COMPILE_NAME}" "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}" @@ -242,9 +242,9 @@ macro(internal_compile_independent_object_library) "${FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX}") if(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) - set(TARGET_NAME ${TARGET_NAME_DEPEND}) + set(TARGET_NAME ${TARGET_NAME_DEPENDENT}) else() - set(TARGET_NAME ${TARGET_NAME_INDEPEND}) + set(TARGET_NAME ${TARGET_NAME_INDEPENDENT}) endif() string(CONCAT TARGET_CUSTOM_PROPERTIES @@ -256,7 +256,7 @@ macro(internal_compile_independent_object_library) set(OBJECT_ALIASES "${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}" "${COMPILE_OBJECT_ALIAS_NAME}" - "${TARGET_NAME_INDEPEND}") + "${TARGET_NAME_INDEPENDENT}") else() set(OBJECT_ALIASES "${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}") @@ -270,18 +270,18 @@ macro(internal_compile_independent_object_library) INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" - POSITION_INDEPEND + POSITION_INDEPENDENT OBJECT_ALIASES "${OBJECT_ALIASES}" #DEBUG ) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - unset(TARGET_NAME_INDEPEND) - unset(TARGET_NAME_DEPEND) + unset(TARGET_NAME_INDEPENDENT) + unset(TARGET_NAME_DEPENDENT) print_newline( - "-- Adding position independ object library for ${COMPILE_NAME} - done") + "-- Adding position independent object library for ${COMPILE_NAME} - done") endmacro(internal_compile_independent_object_library) # @@ -290,7 +290,7 @@ endmacro(internal_compile_independent_object_library) macro(internal_compile_dependent_object_library) check_internal_use() - print_newline("-- Adding position depend object library for ${COMPILE_NAME}") + print_newline("-- Adding position dependent object library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME "${COMPILE_NAME}" @@ -316,7 +316,8 @@ macro(internal_compile_dependent_object_library) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - print_newline("-- Adding object library for ${COMPILE_NAME} - done") + print_newline( + "-- Adding position dependent object library for ${COMPILE_NAME} - done") endmacro(internal_compile_dependent_object_library) # diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index ccc5977..72dfdae 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -119,15 +119,15 @@ function(internal_resolve_object_libraries) foreach(target.property ${OBJECT_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) - target_property_get(${target.property} FLAME_POSITION_INDEPEND - POSITION_INDEPEND) + target_property_get(${target.property} FLAME_POSITION_INDEPENDENT + POSITION_INDEPENDENT) - if(POSITION_INDEPEND) + if(POSITION_INDEPENDENT) print_oneline("-- " - "Position independ code for object library ${REAL_TARGET} - ") + "Position independent code for object library ${REAL_TARGET} - ") set_property(TARGET ${REAL_TARGET} PROPERTY - POSITION_INDEPENDENT_CODE ${POSITION_INDEPEND}) + POSITION_INDEPENDENT_CODE ${POSITION_INDEPENDENT}) print_newline("done") endif() diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index 17afebb..150c94a 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -65,15 +65,15 @@ function(internal_add_header_target_properties) end_debug_function() endfunction(internal_add_header_target_properties) -# ---- object-target ------- -# FLAME_REAL_TARGET # -# FLAME_ADDING_SOURCES # headers + sources -# FLAME_INCLUDE_PATHS # -# FLAME_DEPENDENCY_HEADERS # -# FLAME_COMPILE_FLAGS # -# FLAME_POSITION_INDEPEND # -# FLAME_OBJECT_ALIASES # -# -------------------------- +# ------ object-target ------- +# FLAME_REAL_TARGET # +# FLAME_ADDING_SOURCES # headers + sources +# FLAME_INCLUDE_PATHS # +# FLAME_DEPENDENCY_HEADERS # +# FLAME_COMPILE_FLAGS # +# FLAME_POSITION_INDEPENDENT # +# FLAME_OBJECT_ALIASES # +# ---------------------------- # # @@ -81,7 +81,7 @@ endfunction(internal_add_header_target_properties) function(internal_add_object_target_properties) check_internal_use() - set(OPTIONS "DEBUG" "POSITION_INDEPEND") + set(OPTIONS "DEBUG" "POSITION_INDEPENDENT") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET") set(LISTS "ADDING_SOURCES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "COMPILE_FLAGS" "OBJECT_ALIASES") @@ -111,8 +111,8 @@ function(internal_add_object_target_properties) print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") print_debug_value_newline(${FLAME_COMPILE_FLAGS}) - print_debug_function_oneline("FLAME_POSITION_INDEPEND = ") - print_debug_value_newline(${FLAME_POSITION_INDEPEND}) + print_debug_function_oneline("FLAME_POSITION_INDEPENDENT = ") + print_debug_value_newline(${FLAME_POSITION_INDEPENDENT}) print_debug_function_oneline("FLAME_OBJECT_ALIASES = ") print_debug_value_newline(${FLAME_OBJECT_ALIASES}) @@ -133,8 +133,8 @@ function(internal_add_object_target_properties) "${FLAME_DEPENDENCY_HEADERS}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_POSITION_INDEPEND - "${FLAME_POSITION_INDEPEND}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_POSITION_INDEPENDENT + "${FLAME_POSITION_INDEPENDENT}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OBJECT_ALIASES "${FLAME_OBJECT_ALIASES}") From fbe2c6589432f920e4e2eb924f0f236271c2705a Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Thu, 30 Apr 2020 03:40:47 +0300 Subject: [PATCH 18/54] Refactor resolve functions --- cmake/Functions/ResolveFunctions.cmake | 364 +++++-------------------- 1 file changed, 74 insertions(+), 290 deletions(-) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 72dfdae..6658cfe 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -11,20 +11,22 @@ function(internal_resolve_headers) foreach(target.property ${HEADER_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) - target_property_get(${target.property} FLAME_ADDING_HEADERS - HEADER_LIST) - target_property_get(${target.property} FLAME_INCLUDE_PATHS - INCLUDE_PATHS) - target_property_get(${target.property} FLAME_LIBRARY_ALIASES - LIBRARY_ALIASES) print_oneline("-- Header library ${REAL_TARGET} - ") + target_property_get(${target.property} FLAME_ADDING_HEADERS + HEADER_LIST) add_library(${REAL_TARGET} INTERFACE) target_sources(${REAL_TARGET} INTERFACE "$") + + target_property_get(${target.property} FLAME_INCLUDE_PATHS + INCLUDE_PATHS) if(INCLUDE_PATHS) target_include_directories(${REAL_TARGET} INTERFACE ${INCLUDE_PATHS}) endif() + + target_property_get(${target.property} FLAME_LIBRARY_ALIASES + LIBRARY_ALIASES) if(LIBRARY_ALIASES) foreach(alias ${LIBRARY_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) @@ -37,15 +39,13 @@ function(internal_resolve_headers) foreach(target.property ${HEADER_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS DEPENDENCY_LIST) - if(DEPENDENCY_LIST) print_oneline("-- Dependencies for header library ${REAL_TARGET} - ") - foreach(dependency ${DEPENDENCY_LIST}) - target_link_libraries(${REAL_TARGET} INTERFACE ${dependency}) - endforeach() + target_link_libraries(${REAL_TARGET} INTERFACE ${DEPENDENCY_LIST}) print_newline("done") endif() @@ -64,90 +64,48 @@ function(internal_resolve_object_libraries) foreach(target.property ${OBJECT_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) - target_property_get(${target.property} FLAME_ADDING_SOURCES - SOURCE_LIST) print_oneline("-- Object library ${REAL_TARGET} - ") + + target_property_get(${target.property} FLAME_ADDING_SOURCES + SOURCE_LIST) if(NOT SOURCE_LIST) - print_newline("Fail") + print_newline("fail") endif() add_library(${REAL_TARGET} OBJECT ${SOURCE_LIST}) - print_newline("done") - endforeach() - foreach(target.property ${OBJECT_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_OBJECT_ALIASES OBJECT_ALIASES) - if(OBJECT_ALIASES) - print_oneline("-- Make aliases for object library ${REAL_TARGET} - ") - foreach(alias ${OBJECT_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) endforeach() - - print_newline("done") endif() - endforeach() - foreach(target.property ${OBJECT_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_INCLUDE_PATHS INCLUDE_PATHS) - if(INCLUDE_PATHS) - print_oneline("-- " - "Set include paths for object library ${REAL_TARGET} - ") - target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) - - print_newline("done") endif() - endforeach() - # Not supported now - #foreach(target.property ${OBJECT_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) - #endforeach() - - foreach(target.property ${OBJECT_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_POSITION_INDEPENDENT POSITION_INDEPENDENT) - if(POSITION_INDEPENDENT) - print_oneline("-- " - "Position independent code for object library ${REAL_TARGET} - ") - set_property(TARGET ${REAL_TARGET} PROPERTY POSITION_INDEPENDENT_CODE ${POSITION_INDEPENDENT}) - - print_newline("done") endif() - endforeach() - foreach(target.property ${OBJECT_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS HEADER_DEPENDENCIES) - if(HEADER_DEPENDENCIES) - print_oneline("-- Header dependencies for object library ${REAL_TARGET} - ") + target_link_libraries(${REAL_TARGET} PUBLIC ${dependency}) + endif() - foreach(dependency ${HEADER_DEPENDENCIES}) - target_link_libraries(${REAL_TARGET} PUBLIC ${dependency}) - endforeach() + # Not supported now + #target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) - print_newline("done") - endif() + print_newline("done") endforeach() end_debug_function() @@ -163,100 +121,55 @@ function(internal_resolve_static_libraries) foreach(target.property ${STATIC_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) + + print_oneline("-- Static library ${REAL_TARGET} - ") + target_property_get(${target.property} FLAME_ADDING_SOURCES SOURCE_LIST) + target_property_get(${target.property} FLAME_ADDING_OBJECTS OBJECT_TARGETS) - - print_oneline("-- Static library ${REAL_TARGET} - ") - - set(SOURCES) - if(SOURCE_LIST) - set(SOURCES ${SOURCE_LIST}) - endif() if(OBJECT_TARGETS) foreach(target ${OBJECT_TARGETS}) - list(APPEND SOURCES $) + list(APPEND SOURCE_LIST $) endforeach() endif() if((NOT SOURCE_LIST) AND (NOT OBJECT_TARGETS)) - print_newline("Fail") + print_newline("fail") endif() + add_library(${REAL_TARGET} STATIC ${SOURCE_LIST}) - add_library(${REAL_TARGET} STATIC ${SOURCES}) - - print_newline("done") - endforeach() - - foreach(target.property ${STATIC_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_LIBRARY_ALIASES LIBRARY_ALIASES) - if(LIBRARY_ALIASES) - print_oneline("-- " - "Aliases for static library ${REAL_TARGET} - ") - foreach(alias ${LIBRARY_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) endforeach() - - print_newline("done") endif() - endforeach() - - foreach(target.property ${STATIC_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS HEADER_TARGETS) - if(HEADER_TARGETS) - print_oneline("-- " - "Header dependencies for static library ${REAL_TARGET} - ") - - foreach(target ${HEADER_TARGETS}) - target_link_libraries(${REAL_TARGET} PUBLIC ${target}) - endforeach() - - print_newline("done") + target_link_libraries(${REAL_TARGET} PUBLIC ${HEADER_TARGETS}) endif() - endforeach() - # Not supported now - #foreach(target.property ${STATIC_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) - #endforeach() + # Not supported now + #target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) - foreach(target.property ${STATIC_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_OUTPUT_NAME OUTPUT_NAME) - if(OUTPUT_NAME) - print_oneline("-- " - "Output name for static library ${REAL_TARGET} - ") - set_target_properties(${REAL_TARGET} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}") - - print_newline("done") endif() - endforeach() - # Not supported now - #foreach(target.property ${STATIC_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_INSTALL_PATH - # INSTALL_PATH) - #endforeach() + # Not supported now + #target_property_get(${target.property} FLAME_INSTALL_PATH + # INSTALL_PATH) + + print_newline("done") + endforeach() foreach(target.property ${STATIC_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET @@ -268,11 +181,7 @@ function(internal_resolve_static_libraries) print_oneline("-- " "Compiled dependencies for static library ${REAL_TARGET} - ") - if(LIBRARY_TARGETS) - foreach(target ${LIBRARY_TARGETS}) - target_link_libraries(${REAL_TARGET} PUBLIC ${target}) - endforeach() - endif() + target_link_libraries(${REAL_TARGET} PUBLIC ${LIBRARY_TARGETS}) print_newline("done") endif() @@ -291,117 +200,65 @@ function(internal_resolve_shared_libraries) foreach(target.property ${SHARED_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) + + print_oneline("-- Shared library ${REAL_TARGET} - ") + target_property_get(${target.property} FLAME_ADDING_SOURCES SOURCE_LIST) + target_property_get(${target.property} FLAME_ADDING_OBJECTS OBJECT_TARGETS) - - print_oneline("-- Shared library ${REAL_TARGET} - ") - - set(SOURCES) - if(SOURCE_LIST) - set(SOURCES ${SOURCE_LIST}) - endif() if(OBJECT_TARGETS) foreach(target ${OBJECT_TARGETS}) - list(APPEND SOURCES $) + list(APPEND SOURCE_LIST $) endforeach() endif() if((NOT SOURCE_LIST) AND (NOT OBJECT_TARGETS)) - print_newline("Fail") + print_newline("fail") endif() + add_library(${REAL_TARGET} SHARED ${SOURCE_LIST}) - add_library(${REAL_TARGET} SHARED ${SOURCES}) - - print_newline("done") - endforeach() - - foreach(target.property ${SHARED_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_LIBRARY_ALIASES LIBRARY_ALIASES) - if(LIBRARY_ALIASES) - print_oneline("-- " - "Aliases for shared library ${REAL_TARGET} - ") - foreach(alias ${LIBRARY_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) endforeach() - - print_newline("done") endif() - endforeach() - foreach(target.property ${SHARED_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS HEADER_TARGETS) - if(HEADER_TARGETS) - print_oneline("-- " - "Header dependencies for static library ${REAL_TARGET} - ") - - foreach(target ${HEADER_TARGETS}) - target_link_libraries(${REAL_TARGET} PUBLIC ${target}) - endforeach() - - print_newline("done") + target_link_libraries(${REAL_TARGET} PUBLIC ${HEADER_TARGETS}) endif() - endforeach() - # Not supported now - #foreach(target.property ${SHARED_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) - #endforeach() - - # Not supported now - #foreach(target.property ${SHARED_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_LINK_FLAGS - # LINK_FLAGS) - #endforeach() + # Not supported now + #target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) + + # Not supported now + #target_property_get(${target.property} FLAME_LINK_FLAGS + # LINK_FLAGS) - foreach(target.property ${SHARED_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_OUTPUT_NAME OUTPUT_NAME) - if(OUTPUT_NAME) - print_oneline("-- " - "Output name for shared library ${REAL_TARGET} - ") - set_target_properties(${REAL_TARGET} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}") - - print_newline("done") endif() - endforeach() - # Not supported now - #foreach(target.property ${SHARED_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_INSTALL_PATH - # INSTALL_PATH) - #endforeach() + print_newline("done") + endforeach() foreach(target.property ${SHARED_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) + target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES LIBRARY_TARGETS) - if(LIBRARY_TARGETS) print_oneline("-- " - "Dependencies for shared library ${REAL_TARGET} - ") + "Compiled dependencies for shared library ${REAL_TARGET} - ") if(LIBRARY_TARGETS) foreach(target ${LIBRARY_TARGETS}) @@ -428,137 +285,64 @@ function(internal_resolve_binaries) foreach(target.property ${BINARY_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) - target_property_get(${target.property} FLAME_ADDING_SOURCES - ADDING_SOURCES) - target_property_get(${target.property} FLAME_ADDING_HEADERS - ADDING_HEADERS) print_oneline("-- Binary ${REAL_TARGET} - ") - set(SOURCE_LIST) - if(ADDING_SOURCES) + target_property_get(${target.property} FLAME_ADDING_SOURCES + SOURCE_LIST) + if(SOURCE_LIST) list(APPEND SOURCE_LIST ${ADDING_SOURCES}) else() print_newline("fail") endif() - if(ADDING_HEADERS) - list(APPEND SOURCE_LIST ${ADDING_HEADERS}) - endif() - add_executable(${REAL_TARGET} ${SOURCE_LIST}) - print_newline("done") - endforeach() - - foreach(target.property ${BINARY_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_INCLUDE_PATHS INCLUDE_PATHS) - if(INCLUDE_PATHS) - print_oneline("-- Include paths for binary ${REAL_TARGET} - ") - target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) - - print_newline("done") endif() - endforeach() - - foreach(target.property ${BINARY_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES DEPENDENCY_LIBRARIES) - if(DEPENDENCY_LIBRARIES) - print_oneline("-- " - "Dependency libraries for binary ${REAL_TARGET} - ") - - foreach(target ${DEPENDENCY_LIBRARIES}) - target_link_libraries(${REAL_TARGET} PUBLIC ${target}) - endforeach() - - print_newline("done") + target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_LIBRARIES}) endif() - endforeach() - foreach(target.property ${BINARY_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS DEPENDENCY_HEADERS) - if(DEPENDENCY_HEADERS) - print_oneline("-- " - "Header libraries for binary ${REAL_TARGET} - ") - - foreach(target ${DEPENDENCY_HEADERS}) - target_link_libraries(${REAL_TARGET} PUBLIC ${target}) - endforeach() - - print_newline("done") + target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_HEADERS}) endif() - endforeach() - # Not supported now - #foreach(target.property ${BINARY_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) - #endforeach() - - # Not supported now - #foreach(target.property ${BINARY_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_LINK_FLAGS - # LINK_FLAGS) - #endforeach() + # Not supported now + #target_property_get(${target.property} FLAME_COMPILE_FLAGS + # COMPILE_FLAGS) + + # Not supported now + #target_property_get(${target.property} FLAME_LINK_FLAGS + # LINK_FLAGS) - foreach(target.property ${BINARY_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_OUTPUT_NAME OUTPUT_NAME) - if(OUTPUT_NAME) - print_oneline("-- " - "Output name for binary ${REAL_TARGET} - ") - set_target_properties(${REAL_TARGET} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}") - - print_newline("done") endif() - endforeach() - # Not supported now - #foreach(target.property ${BINARY_TARGETS}) - # target_property_get(${target.property} FLAME_REAL_TARGET - # REAL_TARGET) - # target_property_get(${target.property} FLAME_INSTALL_PATH - # INSTALL_PATH) - #endforeach() + # Not supported now + #target_property_get(${target.property} FLAME_INSTALL_PATH + # INSTALL_PATH) - foreach(target.property ${BINARY_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) target_property_get(${target.property} FLAME_BINARY_ALIASES BINARY_ALIASES) - if(BINARY_ALIASES) - print_oneline("-- " - "Aliases for binary ${REAL_TARGET} - ") - foreach(alias ${BINARY_ALIASES}) add_executable(${alias} ALIAS ${REAL_TARGET}) endforeach() - - print_newline("done") endif() + + print_newline("done") endforeach() end_debug_function() From d22495e11e494fbc39b5a28a98ac74470b93f8ac Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 8 May 2020 21:41:23 +0300 Subject: [PATCH 19/54] Refactor. Add Api.cmake file for show main module API --- cmake/Api.cmake | 19 ++++++++++++ cmake/CmakeFlameResolver.cmake | 2 ++ cmake/Functions/CompileBinaryFunctions.cmake | 27 ++++++----------- cmake/Functions/CompileLibraryFunctions.cmake | 29 +++---------------- cmake/Functions/HeaderLibraryFunctions.cmake | 27 +++++------------ cmake/Functions/ResolveFunctions.cmake | 6 ++-- 6 files changed, 44 insertions(+), 66 deletions(-) create mode 100644 cmake/Api.cmake diff --git a/cmake/Api.cmake b/cmake/Api.cmake new file mode 100644 index 0000000..b2b8903 --- /dev/null +++ b/cmake/Api.cmake @@ -0,0 +1,19 @@ +function(flame_header_library) + enable_internal_use() + internal_header_library(${ARGN}) +endfunction(flame_header_library) + +function(flame_compile_library) + enable_internal_use() + internal_compile_library(${ARGN}) +endfunction(flame_compile_library) + +function(flame_compile_binary) + enable_internal_use() + internal_compile_binary(${ARGN}) +endfunction(flame_compile_binary) + +function(flame_resolve_targets) + enable_internal_use() + internal_resolve_targets() +endfunction(flame_resolve_targets) diff --git a/cmake/CmakeFlameResolver.cmake b/cmake/CmakeFlameResolver.cmake index 36b0e89..8a84ec4 100644 --- a/cmake/CmakeFlameResolver.cmake +++ b/cmake/CmakeFlameResolver.cmake @@ -7,3 +7,5 @@ include(Platform) include(Variables) include(Functions) include(Properties) + +include(Api) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 1a81151..456bf61 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -1,8 +1,8 @@ # # # -function(compile_binary) - enable_internal_use() +function(internal_compile_binary) + check_internal_use() # Parse parameters set(OPTIONS "DEBUG" "HELP") @@ -21,25 +21,23 @@ function(compile_binary) internal_compile_binary_process_parameters() # Add binary to resolve list - internal_compile_binary() + internal_compile_binary_add() # End function log internal_compile_binary_end_function() -endfunction(compile_binary) +endfunction(internal_compile_binary) # # # macro(internal_compile_binary_start_function) - check_internal_use() - start_debug_function(compile_binary) + start_debug_function(internal_compile_binary) endmacro(internal_compile_binary_start_function) # # # macro(internal_compile_binary_end_function) - check_internal_use() end_debug_function() endmacro(internal_compile_binary_end_function) @@ -99,8 +97,6 @@ endmacro(internal_compile_binary_print_parse_result) # # macro(internal_compile_binary_process_parameters) - check_internal_use() - if(NOT BINARY_NAME) message_fatal("-- Need 'NAME'.") endif() @@ -133,11 +129,8 @@ endmacro(internal_compile_binary_process_parameters) # # # -macro(internal_compile_binary) - check_internal_use() - - print_newline( - "-- Adding binary for ${BINARY_NAME}") +macro(internal_compile_binary_add) + print_newline("-- Adding binary for ${BINARY_NAME}") string(CONCAT TARGET_NAME "${BINARY_NAME}" @@ -169,7 +162,5 @@ macro(internal_compile_binary) unset(TARGET_CUSTOM_PROPERTIES) unset(TARGET_NAME) - print_newline( - "-- Adding binary for ${BINARY_NAME} - done") - -endmacro(internal_compile_binary) + print_newline("-- Adding binary for ${BINARY_NAME} - done") +endmacro(internal_compile_binary_add) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index b400998..4218095 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -1,8 +1,8 @@ # # # -function(compile_library) - enable_internal_use() +function(internal_compile_library) + check_internal_use() # Parse parameters set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" @@ -15,19 +15,12 @@ function(compile_library) "DEPENDENCY_TARGETS_FOR_SHARED") cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") - # Start function log internal_compile_library_start_function() - # Print parse result internal_compile_library_print_parse_result() - - # Check parameters internal_compile_library_process_parameters() - - # Add object library/libraries to resolve list internal_compile_object_library() - # Add static library to resolve list if(MAKE_STATIC) if(FLAME_MAKE_STATIC) internal_compile_static_library() @@ -37,7 +30,6 @@ function(compile_library) endif() endif() - # Add shared library to resolve list if(MAKE_SHARED) if(FLAME_MAKE_SHARED) internal_compile_shared_library() @@ -47,23 +39,20 @@ function(compile_library) endif() endif() - # End function log internal_compile_library_end_function() -endfunction(compile_library) +endfunction(internal_compile_library) # # # macro(internal_compile_library_start_function) - check_internal_use() - start_debug_function(compile_library) + start_debug_function(internal_ompile_library) endmacro(internal_compile_library_start_function) # # # macro(internal_compile_library_end_function) - check_internal_use() end_debug_function() endmacro(internal_compile_library_end_function) @@ -71,8 +60,6 @@ endmacro(internal_compile_library_end_function) # # macro(internal_compile_library_print_parse_result) - check_internal_use() - if(COMPILE_DEBUG) print_debug_function_newline("-------------- PARSE RESULT --------------") @@ -165,8 +152,6 @@ endmacro(internal_compile_library_print_parse_result) # # macro(internal_compile_library_process_parameters) - check_internal_use() - if(NOT COMPILE_NAME) message_fatal("-- Need 'NAME'.") endif() @@ -324,8 +309,6 @@ endmacro(internal_compile_dependent_object_library) # # macro(internal_compile_object_library) - check_internal_use() - internal_compile_independent_object_library() if(NOT FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS) internal_compile_dependent_object_library() @@ -337,8 +320,6 @@ endmacro(internal_compile_object_library) # # macro(internal_compile_static_library) - check_internal_use() - print_newline("-- Adding static library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME @@ -380,8 +361,6 @@ endmacro(internal_compile_static_library) # # macro(internal_compile_shared_library) - check_internal_use() - print_newline("-- Adding shared library for ${COMPILE_NAME}") string(CONCAT TARGET_NAME diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index dfcc4ad..60a215f 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -1,8 +1,8 @@ # # # -function(header_library) - enable_internal_use() +function(internal_header_library) + check_internal_use() # Parse arguments set(OPTIONS "DEBUG" "HELP") @@ -10,35 +10,26 @@ function(header_library) set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") - # Start function log internal_header_library_start_function() - # Print results internal_header_library_print_parse_result() - - # Process parameters internal_header_library_process_parameters() + internal_header_library_add() - # Add header library to resolve list - internal_header_library() - - # End function log internal_header_library_end_function() -endfunction(header_library) +endfunction(internal_header_library) # # # macro(internal_header_library_start_function) - check_internal_use() - start_debug_function(header_library) + start_debug_function(internal_header_library) endmacro(internal_header_library_start_function) # # # macro(internal_header_library_end_function) - check_internal_use() end_debug_function() endmacro(internal_header_library_end_function) @@ -46,8 +37,6 @@ endmacro(internal_header_library_end_function) # # macro(internal_header_library_print_parse_result) - check_internal_use() - if(HEADER_DEBUG) print_debug_function_newline("-------- PARSE RESULT --------") @@ -106,9 +95,7 @@ macro(internal_header_library_process_parameters) internal_print_warning_not_support("${HEADER_INSTALL_PATH}" INSTALL_PATH) endmacro(internal_header_library_process_parameters) -macro(internal_header_library) - check_internal_use() - +macro(internal_header_library_add) print_newline("-- Adding header library for ${HEADER_NAME}") string(CONCAT TARGET_NAME @@ -134,4 +121,4 @@ macro(internal_header_library) unset(TARGET_NAME) print_newline("-- Adding header library for ${HEADER_NAME} - done") -endmacro(internal_header_library) +endmacro(internal_header_library_add) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 6658cfe..58e8532 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -364,8 +364,8 @@ endfunction(internal_clean_global_properties) # # # -function(resolve_dependencies) - enable_internal_use() +function(internal_resolve_targets) + check_internal_use() message("-- Start resolving") @@ -380,4 +380,4 @@ function(resolve_dependencies) internal_clean_global_properties() message("-- Resolve finished") -endfunction(resolve_dependencies) +endfunction(internal_resolve_targets) From 82892ffa38074584bd5a9a604179ea8f48e639bc Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 12 May 2020 21:24:37 +0300 Subject: [PATCH 20/54] Remove useless comments --- cmake/Functions/CompileBinaryFunctions.cmake | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 456bf61..c777e34 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -4,26 +4,18 @@ function(internal_compile_binary) check_internal_use() - # Parse parameters set(OPTIONS "DEBUG" "HELP") set(VALUES "NAME" "ALIAS_NAME" "SOURCE_LIST_FILE" "HEADER_LIST_FILE" "INSTALL_PATH") set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "HEADER_LIST" "COMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_TARGET_LIST") cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") - # Start function log internal_compile_binary_start_function() - # Print parse result internal_compile_binary_print_parse_result() - - # Check parameters internal_compile_binary_process_parameters() - - # Add binary to resolve list internal_compile_binary_add() - # End function log internal_compile_binary_end_function() endfunction(internal_compile_binary) @@ -45,8 +37,6 @@ endmacro(internal_compile_binary_end_function) # # macro(internal_compile_binary_print_parse_result) - check_internal_use() - if(BINARY_DEBUG) print_debug_function_newline("-------- PARSE RESULT -------") From a827111d223801498d3d7570393622755f48f389 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Mon, 25 May 2020 00:47:38 +0300 Subject: [PATCH 21/54] Rename 'adding_headers' -> 'adding_files' for header libraries --- cmake/Functions/HeaderLibraryFunctions.cmake | 2 +- cmake/Functions/ResolveFunctions.cmake | 4 ++-- cmake/Properties/TargetProperties.cmake | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 60a215f..2ef2ef2 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -112,7 +112,7 @@ macro(internal_header_library_add) #DEBUG PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" - ADDING_HEADERS "${HEADER_LIST}" + ADDING_FILES "${HEADER_LIST}" DEPENDENCY_HEADERS "${HEADER_DEPENDENCY_TARGET_LIST}" LIBRARY_ALIASES "${HEADER_LIBRARY_ALIAS_NAME}" ) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 58e8532..b6f0eb6 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -14,7 +14,7 @@ function(internal_resolve_headers) print_oneline("-- Header library ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_HEADERS + target_property_get(${target.property} FLAME_ADDING_FILES HEADER_LIST) add_library(${REAL_TARGET} INTERFACE) target_sources(${REAL_TARGET} INTERFACE "$") @@ -67,7 +67,7 @@ function(internal_resolve_object_libraries) print_oneline("-- Object library ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_SOURCES + target_property_get(${target.property} FLAME_ADDING_FILES SOURCE_LIST) if(NOT SOURCE_LIST) print_newline("fail") diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index 150c94a..5ed9713 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -1,6 +1,6 @@ # ---- header-target ------- # FLAME_REAL_TARGET # -# FLAME_ADDING_HEADERS # headers only +# FLAME_ADDING_FILES # headers only # FLAME_INCLUDE_PATHS # # FLAME_DEPENDENCY_HEADERS # # FLAME_LIBRARY_ALIASES # @@ -15,7 +15,7 @@ function(internal_add_header_target_properties) set(OPTIONS "DEBUG") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "INSTALL_PATH") - set(LISTS "ADDING_HEADERS" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "LIBRARY_ALIASES") + set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "LIBRARY_ALIASES") cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -30,8 +30,8 @@ function(internal_add_header_target_properties) print_debug_function_oneline("FLAME_REAL_TARGET = ") print_debug_value_newline(${FLAME_REAL_TARGET}) - print_debug_function_oneline("FLAME_ADDING_HEADERS = ") - print_debug_value_newline(${FLAME_ADDING_HEADERS}) + print_debug_function_oneline("FLAME_ADDING_FILES = ") + print_debug_value_newline(${FLAME_ADDING_FILES}) print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") print_debug_value_newline(${FLAME_INCLUDE_PATHS}) @@ -53,8 +53,8 @@ function(internal_add_header_target_properties) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_HEADERS - "${FLAME_ADDING_HEADERS}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES + "${FLAME_ADDING_FILES}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES From 8d1d03a29e549149d263852f56d2c0c1cb6e5fad Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 29 May 2020 20:19:09 +0300 Subject: [PATCH 22/54] Remove '*_LIST_FILE' and 'HEADER_LIST' paramters on internal_compile_binary() and internal_compile_library() functions. Rename 'FLAME_ADDING_SOURCES' -> 'FLAME_ADDING_FILES' on internal_add_header_target_properties() and internal_add_binary_target_properties() functions. --- cmake/Functions/CompileBinaryFunctions.cmake | 4 +-- cmake/Functions/CompileLibraryFunctions.cmake | 30 ++++++------------- cmake/Properties/TargetProperties.cmake | 25 ++++++++-------- 3 files changed, 23 insertions(+), 36 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index c777e34..bbc1f20 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -5,8 +5,8 @@ function(internal_compile_binary) check_internal_use() set(OPTIONS "DEBUG" "HELP") - set(VALUES "NAME" "ALIAS_NAME" "SOURCE_LIST_FILE" "HEADER_LIST_FILE" "INSTALL_PATH") - set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "HEADER_LIST" "COMPILE_FLAGS" "LINK_FLAGS" + set(VALUES "NAME" "ALIAS_NAME" "INSTALL_PATH") + set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_TARGET_LIST") cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 4218095..7cd1fcf 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -8,9 +8,9 @@ function(internal_compile_library) set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" "HELP") set(VALUES "NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" - "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "SOURCE_LIST_FILE" "HEADER_LIST_FILE" - "STATIC_INSTALL_PATH" "SHARED_INSTALL_PATH") - set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "HEADER_LIST" "COMMPILE_FLAGS" "LINK_FLAGS" + "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "STATIC_INSTALL_PATH" + "SHARED_INSTALL_PATH") + set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_HEADER_TARGETS" "DEPENDENCY_TARGETS_FOR_STATIC" "DEPENDENCY_TARGETS_FOR_SHARED") cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -46,7 +46,7 @@ endfunction(internal_compile_library) # # macro(internal_compile_library_start_function) - start_debug_function(internal_ompile_library) + start_debug_function("internal_compile_library") endmacro(internal_compile_library_start_function) # @@ -155,22 +155,10 @@ macro(internal_compile_library_process_parameters) if(NOT COMPILE_NAME) message_fatal("-- Need 'NAME'.") endif() - if(COMPILE_SOURCE_LIST_FILE) - if(EXISTS ${COMPILE_SOURCE_LIST_FILE}) - include(${COMPILE_SOURCE_LIST_FILE}) - else() - message_fatal("-- " - "Need source list file with defined 'SOURCE_LIST' variable.") - endif() - endif() if(COMPILE_SOURCE_LIST) list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) - endif() - if(NOT COMPILE_SOURCE_LIST_FILE) - if(NOT COMPILE_SOURCE_LIST) - message_fatal("-- " - "Need 'SOURCE_LIST_FILE' or/and 'SOURCE_LIST'.") - endif() + else() + message_fatal("-- Need 'SOURCE_LIST'.") endif() if(COMPILE_HEADER_LIST_FILE) @@ -180,7 +168,7 @@ macro(internal_compile_library_process_parameters) endif() endif() if(COMPILE_HEADER_LIST) - list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) + list(APPEND SOURCE_LIST ${COMPILE_HEADER_LIST}) endif() internal_print_warning_not_support("${COMPILE_HELP}" @@ -251,7 +239,7 @@ macro(internal_compile_independent_object_library) internal_add_object_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" - ADDING_SOURCES "${SOURCE_LIST}" + ADDING_FILES "${SOURCE_LIST}" INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" @@ -290,7 +278,7 @@ macro(internal_compile_dependent_object_library) internal_add_object_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" - ADDING_SOURCES "${SOURCE_LIST}" + ADDING_FILES "${SOURCE_LIST}" INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index 5ed9713..94d9e1a 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -67,7 +67,7 @@ endfunction(internal_add_header_target_properties) # ------ object-target ------- # FLAME_REAL_TARGET # -# FLAME_ADDING_SOURCES # headers + sources +# FLAME_ADDING_FILES # headers + sources # FLAME_INCLUDE_PATHS # # FLAME_DEPENDENCY_HEADERS # # FLAME_COMPILE_FLAGS # @@ -83,7 +83,7 @@ function(internal_add_object_target_properties) set(OPTIONS "DEBUG" "POSITION_INDEPENDENT") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET") - set(LISTS "ADDING_SOURCES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "COMPILE_FLAGS" + set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "COMPILE_FLAGS" "OBJECT_ALIASES") cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -99,8 +99,8 @@ function(internal_add_object_target_properties) print_debug_function_oneline("FLAME_REAL_TARGET = ") print_debug_value_newline(${FLAME_REAL_TARGET}) - print_debug_function_oneline("FLAME_ADDING_SOURCES = ") - print_debug_value_newline(${FLAME_ADDING_SOURCES}) + print_debug_function_oneline("FLAME_ADDING_FILES = ") + print_debug_value_newline(${FLAME_ADDING_FILES}) print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") print_debug_value_newline(${FLAME_INCLUDE_PATHS}) @@ -125,8 +125,8 @@ function(internal_add_object_target_properties) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES - "${FLAME_ADDING_SOURCES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES + "${FLAME_ADDING_FILES}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS "${FLAME_INCLUDE_PATHS}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS @@ -323,8 +323,7 @@ endfunction(internal_add_shared_target_properties) # ---- binary-target --------- # FLAME_REAL_TARGET # -# FLAME_ADDING_HEADERS # -# FLAME_ADDING_SOURCES # +# FLAME_ADDING_FILES # # FLAME_INCLUDE_PATHS # # FLAME_DEPENDENCY_HEADERS # # FLAME_DEPENDENCY_LIBRARIES # @@ -342,7 +341,7 @@ function(internal_add_binary_target_properties) set(OPTIONS "DEBUG") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") - set(LISTS "ADDING_HEADERS" "ADDING_SOURCES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" + set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" ) cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -358,8 +357,8 @@ function(internal_add_binary_target_properties) print_debug_function_oneline("FLAME_REAL_TARGET = ") print_debug_value_newline(${FLAME_REAL_TARGET}) - print_debug_function_oneline("FLAME_ADDING_SOURCES = ") - print_debug_value_newline(${FLAME_ADDING_SOURCES}) + print_debug_function_oneline("FLAME_ADDING_FILES = ") + print_debug_value_newline(${FLAME_ADDING_FILES}) print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) @@ -389,8 +388,8 @@ function(internal_add_binary_target_properties) "${FLAME_REAL_TARGET}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_HEADERS "${FLAME_ADDING_HEADERS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES - "${FLAME_ADDING_SOURCES}") + target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES + "${FLAME_ADDING_FILES}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS "${FLAME_INCLUDE_PATHS}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS From 7f22aaf9994e225909867d9f464b6446f428118d Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 29 May 2020 20:20:20 +0300 Subject: [PATCH 23/54] Fix message on Options.cmake. Add new options for tests and local install. --- cmake/Options.cmake | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index 4cd4996..a721799 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -10,7 +10,7 @@ option(FLAME_PRINT_COMMON_STATISTIC ) option(FLAME_PRINT_COMMON_STATISTIC - "Print detailed statistic about targets with add files, filags and etc. Not support" + "Print detailed statistic about targets with add files, flags and etc. Not support" OFF ) @@ -24,6 +24,16 @@ option(FLAME_THREADING ON ) +option(FLAME_TESTING + "Enable testing. Not support" + ON +) + +option(FLAME_LOCAL_INSTALL + "Installing to local directory (/install). Not support" + OFF +) + # code generation options option(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS From ca305a3a935b82510fd17ae861faf46366974e0c Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sun, 12 Jul 2020 01:26:16 +0300 Subject: [PATCH 24/54] Fix adding binary --- cmake/Functions/CompileBinaryFunctions.cmake | 3 +-- cmake/Functions/ResolveFunctions.cmake | 2 +- cmake/Properties/TargetProperties.cmake | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index bbc1f20..7c955b4 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -138,8 +138,7 @@ macro(internal_compile_binary_add) OUTPUT_NAME "${BINARY_NAME}" #INSTALL_PATH "${BINARY_INSTALL_PATH}" - ADDING_HEADERS "${HEADER_LIST}" - ADDING_SOURCES "${SOURCE_LIST}" + ADDING_FILES "${HEADER_LIST};${SOURCE_LIST}" #COMPILE_FLAGS "${BINARY_COMPILE_FLAGS}" DEPENDENCY_LIBRARIES "${BINARY_DEPENDENCY_TARGET_LIST}" #LINK_FLAGS "${BINARY_LINK_FLAGS}" diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index b6f0eb6..842dd08 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -288,7 +288,7 @@ function(internal_resolve_binaries) print_oneline("-- Binary ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_SOURCES + target_property_get(${target.property} FLAME_ADDING_FILES SOURCE_LIST) if(SOURCE_LIST) list(APPEND SOURCE_LIST ${ADDING_SOURCES}) diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index 94d9e1a..eb63b91 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -386,8 +386,6 @@ function(internal_add_binary_target_properties) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_HEADERS - "${FLAME_ADDING_HEADERS}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES "${FLAME_ADDING_FILES}") target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS From 61b14c6182464dc3193b2b92c23b1c6b20d77672 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Thu, 10 Dec 2020 03:04:35 +0300 Subject: [PATCH 25/54] cmake/Api.cmake: add usage comments without info --- cmake/Api.cmake | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/cmake/Api.cmake b/cmake/Api.cmake index b2b8903..a0f641e 100644 --- a/cmake/Api.cmake +++ b/cmake/Api.cmake @@ -1,19 +1,82 @@ +# Usage: +# Options: +# DEBUG - +# HELP - +# Values: +# NAME - +# LIBRARY_ALIAS_NAME - +# HEADER_LIST_FILE - +# INSTALL_PATH - +# Lists: +# DEPENDENCY_TARGET_LIST - +# HEADER_LIST - +# INCLUDE_PATHS - function(flame_header_library) enable_internal_use() internal_header_library(${ARGN}) endfunction(flame_header_library) +# Usage: +# Options: +# DEBUG - +# HELP - +# MAKE_STATIC - +# MAKE_SHARED - +# NOT_MAKE_POSITION_DEPENDENT_OBJECTS - +# NOT_MAKE_POSITION_INDEPENDENT_OBJECTS - +# Values: +# NAME - +# OBJECT_ALIAS_NAME - +# INDEPENDENT_OBJECT_ALIAS_NAME - +# STATIC_ALIAS_NAME - +# SHARED_ALIAS_NAME - +# STATIC_INSTALL_PATH - +# SHARED_INSTALL_PATH - +# Lists: +# INCLUDE_PATHS - +# SOURCE_LIST - +# COMMPILE_FLAGS - +# LINK_FLAGS - +# DEPENDENCY_HEADER_TARGETS - +# DEPENDENCY_TARGETS_FOR_STATIC - +# DEPENDENCY_TARGETS_FOR_SHARED - function(flame_compile_library) enable_internal_use() internal_compile_library(${ARGN}) endfunction(flame_compile_library) +# Usage: +# Options: +# DEBUG - +# HELP - +# Values: +# NAME - +# ALIAS_NAME - +# INSTALL_PATH - +# Lists: +# INCLUDE_PATHS - +# SOURCE_LIST - +# COMPILE_FLAGS - +# LINK_FLAGS - +# DEPENDENCY_HEADER_TARGETS - +# DEPENDENCY_TARGETS_FOR_STATIC - +# DEPENDENCY_TARGETS_FOR_SHARED - function(flame_compile_binary) enable_internal_use() internal_compile_binary(${ARGN}) endfunction(flame_compile_binary) +# Usage: function(flame_resolve_targets) enable_internal_use() internal_resolve_targets() endfunction(flame_resolve_targets) + +# Usage: +# Options: +# Values: +# Lists: +function(flame_target_add_property) + enable_internal_use() + internal_target_add_property(${ARGN}) +endfunction(flame_target_add_property) From 35d4909cdff1e6eb9ba22e7489cb082e80c7aa15 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Thu, 10 Dec 2020 03:24:42 +0300 Subject: [PATCH 26/54] cmake/Functions/*.cmake: remove *_FILE_LIST names --- cmake/Api.cmake | 1 - cmake/Functions/CompileBinaryFunctions.cmake | 30 +++---------------- cmake/Functions/CompileLibraryFunctions.cmake | 26 +++------------- cmake/Functions/HeaderLibraryFunctions.cmake | 16 ++-------- 4 files changed, 11 insertions(+), 62 deletions(-) diff --git a/cmake/Api.cmake b/cmake/Api.cmake index a0f641e..27f46f5 100644 --- a/cmake/Api.cmake +++ b/cmake/Api.cmake @@ -5,7 +5,6 @@ # Values: # NAME - # LIBRARY_ALIAS_NAME - -# HEADER_LIST_FILE - # INSTALL_PATH - # Lists: # DEPENDENCY_TARGET_LIST - diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 7c955b4..f6dc2c9 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -50,12 +50,6 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_oneline("BINARY_ALIAS_NAME = ") print_debug_value_newline(${BINARY_ALIAS_NAME}) - print_debug_function_oneline("BINARY_SOURCE_LIST_FILE = ") - print_debug_value_newline(${BINARY_SOURCE_LIST_FILE}) - - print_debug_function_oneline("BINARY_HEADER_LIST_FILE = ") - print_debug_value_newline(${BINARY_HEADER_LIST_FILE}) - print_debug_function_oneline("BINARY_INSTALL_PATH = ") print_debug_value_newline(${BINARY_INSTALL_PATH}) @@ -67,9 +61,6 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_oneline("BINARY_SOURCE_LIST = ") print_debug_value_newline(${BINARY_SOURCE_LIST}) - print_debug_function_oneline("BINARY_HEADER_LIST = ") - print_debug_value_newline(${BINARY_HEADER_LIST}) - print_debug_function_oneline("BINARY_COMPILE_FLAGS = ") print_debug_value_newline(${BINARY_COMPILE_FLAGS}) @@ -90,25 +81,12 @@ macro(internal_compile_binary_process_parameters) if(NOT BINARY_NAME) message_fatal("-- Need 'NAME'.") endif() - if(BINARY_SOURCE_LIST_FILE) - include(${BINARY_SOURCE_LIST_FILE}) - endif() if(BINARY_SOURCE_LIST) list(APPEND SOURCE_LIST ${BINARY_SOURCE_LIST}) endif() - if(NOT BINARY_SOURCE_LIST_FILE) - if(NOT BINARY_SOURCE_LIST) - message_fatal("-- " - "Need 'SOURCE_LIST_FILE' or/and 'SOURCE_LIST'.") - endif() - endif() - - if(BINARY_HEADER_LIST_FILE) - include(${BINARY_HEADER_LIST_FILE}) - list(APPEND HEADER_LIST ${BINARY_SOURCE_LIST}) - endif() - if(BINARY_HEADER_LIST) - list(APPEND HEADER_LIST ${BINARY_SOURCE_LIST}) + if(NOT BINARY_SOURCE_LIST) + message_fatal("-- " + "Need 'SOURCE_LIST'.") endif() internal_print_warning_not_support("${BINARY_COMPILE_FLAGS}" COMPILE_FLAGS) @@ -138,7 +116,7 @@ macro(internal_compile_binary_add) OUTPUT_NAME "${BINARY_NAME}" #INSTALL_PATH "${BINARY_INSTALL_PATH}" - ADDING_FILES "${HEADER_LIST};${SOURCE_LIST}" + ADDING_FILES "${SOURCE_LIST}" #COMPILE_FLAGS "${BINARY_COMPILE_FLAGS}" DEPENDENCY_LIBRARIES "${BINARY_DEPENDENCY_TARGET_LIST}" #LINK_FLAGS "${BINARY_LINK_FLAGS}" diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 7cd1fcf..28620ea 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -5,12 +5,13 @@ function(internal_compile_library) check_internal_use() # Parse parameters - set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" - "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" "HELP") + set(OPTIONS "DEBUG" "HELP" "MAKE_STATIC" "MAKE_SHARED" + "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" + "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS") set(VALUES "NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "STATIC_INSTALL_PATH" "SHARED_INSTALL_PATH") - set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMMPILE_FLAGS" "LINK_FLAGS" + set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_HEADER_TARGETS" "DEPENDENCY_TARGETS_FOR_STATIC" "DEPENDENCY_TARGETS_FOR_SHARED") cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -104,12 +105,6 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_SHARED_ALIAS_NAME = ") print_debug_value_newline(${COMPILE_SHARED_ALIAS_NAME}) - print_debug_function_oneline("COMPILE_SOURCE_LIST_FILE = ") - print_debug_value_newline(${COMPILE_SOURCE_LIST_FILE}) - - print_debug_function_oneline("COMPILE_HEADER_LIST_FILE = ") - print_debug_value_newline(${COMPILE_HEADER_LIST_FILE}) - print_debug_function_oneline("COMPILE_STATIC_INSTALL_PATH = ") print_debug_value_newline(${COMPILE_STATIC_INSTALL_PATH}) @@ -126,9 +121,6 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_SOURCE_LIST = ") print_debug_value_newline(${COMPILE_SOURCE_LIST}) - print_debug_function_oneline("COMPILE_HEADER_LIST = ") - print_debug_value_newline(${COMPILE_HEADER_LIST}) - print_debug_function_oneline("COMPILE_COMPILE_FLAGS = ") print_debug_value_newline("${COMPILE_COMPILE_FLAGS}") @@ -161,16 +153,6 @@ macro(internal_compile_library_process_parameters) message_fatal("-- Need 'SOURCE_LIST'.") endif() - if(COMPILE_HEADER_LIST_FILE) - if(EXISTS ${COMPILE_HEADER_LIST_FILE}) - include(${COMPILE_HEADER_LIST_FILE}) - list(APPEND SOURCE_LIST "${HEADER_LIST}") - endif() - endif() - if(COMPILE_HEADER_LIST) - list(APPEND SOURCE_LIST ${COMPILE_HEADER_LIST}) - endif() - internal_print_warning_not_support("${COMPILE_HELP}" HELP) internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}" diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 2ef2ef2..067a686 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -6,7 +6,7 @@ function(internal_header_library) # Parse arguments set(OPTIONS "DEBUG" "HELP") - set(VALUES "NAME" "LIBRARY_ALIAS_NAME" "HEADER_LIST_FILE" "INSTALL_PATH") + set(VALUES "NAME" "LIBRARY_ALIAS_NAME" "INSTALL_PATH") set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -46,9 +46,6 @@ macro(internal_header_library_print_parse_result) print_debug_function_oneline("HEADER_NAME = ") print_debug_value_newline(${HEADER_NAME}) - print_debug_function_oneline("HEADER_HEADER_LIST_FILE = ") - print_debug_value_newline("${HEADER_HEADER_LIST_FILE}") - print_debug_function_oneline("HEADER_HEADER_LIST = ") print_debug_value_newline(${HEADER_HEADER_LIST}) @@ -77,18 +74,11 @@ macro(internal_header_library_process_parameters) if(NOT HEADER_NAME) message_fatal("-- Need 'NAME'.") endif() - if(HEADER_HEADER_LIST_FILE) - if(EXISTS "${HEADER_HEADER_LIST_FILE}") - include(${HEADER_HEADER_LIST_FILE}) - else() - message_fatal("-- " - "Need header list file with defined 'HEADER_LIST' variable.") - endif() - elseif(HEADER_HEADER_LIST) + if(HEADER_HEADER_LIST) set(HEADER_LIST "${HEADER_HEADER_LIST}") else() message_fatal("-- " - "Need 'HEADER_LIST_FILE' or 'HEADER_LIST'.") + "Need 'HEADER_LIST'.") endif() internal_print_warning_not_support("${HEADER_HELP}" HELP) From f0973daa490fd6b5c5e37c5ab1ca4f3016f4a1c4 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 01:44:34 +0300 Subject: [PATCH 27/54] Remove Api.cmake; move main public function to CmakeResolver.cmake --- cmake/Api.cmake | 81 ---------------------------------- cmake/CmakeFlameResolver.cmake | 81 +++++++++++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 82 deletions(-) delete mode 100644 cmake/Api.cmake diff --git a/cmake/Api.cmake b/cmake/Api.cmake deleted file mode 100644 index 27f46f5..0000000 --- a/cmake/Api.cmake +++ /dev/null @@ -1,81 +0,0 @@ -# Usage: -# Options: -# DEBUG - -# HELP - -# Values: -# NAME - -# LIBRARY_ALIAS_NAME - -# INSTALL_PATH - -# Lists: -# DEPENDENCY_TARGET_LIST - -# HEADER_LIST - -# INCLUDE_PATHS - -function(flame_header_library) - enable_internal_use() - internal_header_library(${ARGN}) -endfunction(flame_header_library) - -# Usage: -# Options: -# DEBUG - -# HELP - -# MAKE_STATIC - -# MAKE_SHARED - -# NOT_MAKE_POSITION_DEPENDENT_OBJECTS - -# NOT_MAKE_POSITION_INDEPENDENT_OBJECTS - -# Values: -# NAME - -# OBJECT_ALIAS_NAME - -# INDEPENDENT_OBJECT_ALIAS_NAME - -# STATIC_ALIAS_NAME - -# SHARED_ALIAS_NAME - -# STATIC_INSTALL_PATH - -# SHARED_INSTALL_PATH - -# Lists: -# INCLUDE_PATHS - -# SOURCE_LIST - -# COMMPILE_FLAGS - -# LINK_FLAGS - -# DEPENDENCY_HEADER_TARGETS - -# DEPENDENCY_TARGETS_FOR_STATIC - -# DEPENDENCY_TARGETS_FOR_SHARED - -function(flame_compile_library) - enable_internal_use() - internal_compile_library(${ARGN}) -endfunction(flame_compile_library) - -# Usage: -# Options: -# DEBUG - -# HELP - -# Values: -# NAME - -# ALIAS_NAME - -# INSTALL_PATH - -# Lists: -# INCLUDE_PATHS - -# SOURCE_LIST - -# COMPILE_FLAGS - -# LINK_FLAGS - -# DEPENDENCY_HEADER_TARGETS - -# DEPENDENCY_TARGETS_FOR_STATIC - -# DEPENDENCY_TARGETS_FOR_SHARED - -function(flame_compile_binary) - enable_internal_use() - internal_compile_binary(${ARGN}) -endfunction(flame_compile_binary) - -# Usage: -function(flame_resolve_targets) - enable_internal_use() - internal_resolve_targets() -endfunction(flame_resolve_targets) - -# Usage: -# Options: -# Values: -# Lists: -function(flame_target_add_property) - enable_internal_use() - internal_target_add_property(${ARGN}) -endfunction(flame_target_add_property) diff --git a/cmake/CmakeFlameResolver.cmake b/cmake/CmakeFlameResolver.cmake index 8a84ec4..e11c7c4 100644 --- a/cmake/CmakeFlameResolver.cmake +++ b/cmake/CmakeFlameResolver.cmake @@ -8,4 +8,83 @@ include(Variables) include(Functions) include(Properties) -include(Api) +# Public API: + +# Options: +# DEBUG - +# HELP - +# Values: +# NAME - +# LIBRARY_ALIAS_NAME - +# INSTALL_PATH - +# Lists: +# DEPENDENCY_TARGET_LIST - +# HEADER_LIST - +# INCLUDE_PATHS - +function(flame_header_library) + enable_internal_use() + internal_header_library(${ARGN}) +endfunction(flame_header_library) + +# Options: +# DEBUG - +# HELP - +# MAKE_STATIC - +# MAKE_SHARED - +# NOT_MAKE_POSITION_DEPENDENT_OBJECTS - +# NOT_MAKE_POSITION_INDEPENDENT_OBJECTS - +# Values: +# NAME - +# OBJECT_ALIAS_NAME - +# INDEPENDENT_OBJECT_ALIAS_NAME - +# STATIC_ALIAS_NAME - +# SHARED_ALIAS_NAME - +# STATIC_INSTALL_PATH - +# SHARED_INSTALL_PATH - +# Lists: +# INCLUDE_PATHS - +# SOURCE_LIST - +# COMMPILE_FLAGS - +# LINK_FLAGS - +# DEPENDENCY_HEADER_TARGETS - +# DEPENDENCY_TARGETS_FOR_STATIC - +# DEPENDENCY_TARGETS_FOR_SHARED - +# see CompileLibraryFunctions.cmake +function(flame_compile_library) + enable_internal_use() + internal_compile_library(${ARGN}) +endfunction(flame_compile_library) + +# Options: +# DEBUG - +# HELP - +# Values: +# NAME - +# ALIAS_NAME - +# INSTALL_PATH - +# Lists: +# INCLUDE_PATHS - +# SOURCE_LIST - +# COMPILE_FLAGS - +# LINK_FLAGS - +# DEPENDENCY_HEADER_TARGETS - +# DEPENDENCY_TARGETS_FOR_STATIC - +# DEPENDENCY_TARGETS_FOR_SHARED - +function(flame_compile_binary) + enable_internal_use() + internal_compile_binary(${ARGN}) +endfunction(flame_compile_binary) + +function(flame_resolve_targets) + enable_internal_use() + internal_resolve_targets() +endfunction(flame_resolve_targets) + +# NAME - Name of taget +# TARGET_TYPE - Target type (HEADER, OBJECT, STATIC or SHARED) +# PROPERTY_NAME - Name of property +# PROPERTY_VALUE - Value of +function(flame_target_add_property) + enable_internal_use() + internal_target_add_property(${ARGN}) +endfunction(flame_target_add_property) From 342db40d5523c06582eca8f405fc8298b68121d3 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 01:46:54 +0300 Subject: [PATCH 28/54] cmake/Functions/CommonFunctions.cmake: Remove useless 'remove_source_dir()' --- cmake/Functions/CommonFunctions.cmake | 9 --------- 1 file changed, 9 deletions(-) diff --git a/cmake/Functions/CommonFunctions.cmake b/cmake/Functions/CommonFunctions.cmake index 8b5fd01..57b5d80 100644 --- a/cmake/Functions/CommonFunctions.cmake +++ b/cmake/Functions/CommonFunctions.cmake @@ -1,11 +1,3 @@ -# -# -# -function(remove_source_dir PATH REMOVE_PATH OUT) - string(REPLACE "${REMOVE_PATH}" "" ${OUT} "${PATH}") - set(${OUT} "${${OUT}}" PARENT_SCOPE) -endfunction(remove_source_dir) - # # # @@ -21,4 +13,3 @@ function(get_real_target CURRENT_TARGET_NAME REAL_TARGET_NAME) message_fatal("-- '${CURRENT_TARGET_NAME}' is not a target") endif() endfunction(get_real_target) - From a92a6b6bffa7e5eb44364f098c1b5df563557298 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 01:48:30 +0300 Subject: [PATCH 29/54] cmake/Variables.cmake: add prefixes for debug and simple output; remove 'FLAME_NAMESPACE' variable --- cmake/Variables.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/Variables.cmake b/cmake/Variables.cmake index 4204d1a..863133f 100644 --- a/cmake/Variables.cmake +++ b/cmake/Variables.cmake @@ -1,5 +1,3 @@ -set(FLAME_NAMESPACE ${PROJECT_NAME}) - set(FLAME_FAKE_HEADER_MODULE_SUFFIX hpp) set(FLAME_HEADER_MODULE_SUFFIX header) set(FLAME_OBJECT_MODULE_SUFFIX object) @@ -14,6 +12,9 @@ set(FLAME_ALIAS_SEPARATOR "::") set(FLAME_OBJECT_INDEPENDENT_ALIASED_MODULE_SUFFIX Independent) +set(FLAME_SIMPLE_PREFIX "--") +set(FLAME_DEBUG_PREFIX "${FLAME_SIMPLE_PREFIX} DEBUG --") + #if(CMAKE_INSTALL_PREFIX) # set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install) # message(FATAL_ERROR "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}") From 809d7f2575eab50149bac24a4148fcf516c6fa20 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 01:49:13 +0300 Subject: [PATCH 30/54] cmake/Macros.cmake: integrate 'FLAME_DEBUG_PREFIX' and 'FLAME_SIMPLE' prefixes --- cmake/Macros.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake index f2bbd3f..dab972a 100644 --- a/cmake/Macros.cmake +++ b/cmake/Macros.cmake @@ -3,14 +3,14 @@ # macro(start_debug_function FUNC_NAME) set(FUNCTION_NAME ${FUNC_NAME}) - message_debug("->>- ${FUNCTION_NAME}()") + message_debug("${FLAME_DEBUG_PREFIX} ${FUNCTION_NAME}() - begin") endmacro(start_debug_function) # # # macro(end_debug_function) - message_debug("-<<- ${FUNCTION_NAME}()") + message_debug("${FLAME_DEBUG_PREFIX} ${FUNCTION_NAME}() - end") unset(FUNCTION_NAME) endmacro(end_debug_function) @@ -18,21 +18,21 @@ endmacro(end_debug_function) # # macro(message_debug_function) - message_debug("---| ${FUNCTION_NAME}() : " "${ARGV}") + message_debug("${FLAME_DEBUG_PREFIX} ${FUNCTION_NAME}() : " "${ARGV}") endmacro(message_debug_function) # # # macro(print_debug_function_oneline) - print_debug_oneline("---| ${FUNCTION_NAME}() : " "${ARGV}") + print_debug_oneline("${FLAME_DEBUG_PREFIX} ${FUNCTION_NAME}() : " "${ARGV}") endmacro(print_debug_function_oneline) # # # macro(print_debug_function_newline) - print_debug_newline("---| ${FUNCTION_NAME}() : " "${ARGV}") + print_debug_newline("${FLAME_DEBUG_PREFIX} ${FUNCTION_NAME}() : " "${ARGV}") endmacro(print_debug_function_newline) # @@ -47,6 +47,6 @@ endmacro(enable_internal_use) # macro(check_internal_use) if(NOT INTERNAL_USE) - message_fatal("-- It's internal function. You can not use it") + message_fatal("${FLAME_SIMPLE_PREFIX} It's internal function. You can not use it") endif() endmacro(check_internal_use) From f4354270b79b379d11f304c9cb1ddc6c16b5742b Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 01:50:17 +0300 Subject: [PATCH 31/54] cmake/Macros.cmake: add option 'FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS' for showing parse results on debug mode --- cmake/Options.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index a721799..54b4915 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -4,6 +4,12 @@ option(FLAME_CMAKE_DEBUG "Print debug messages" OFF ) + +option(FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS + "Print debug messages with parse results" + OFF +) + option(FLAME_PRINT_COMMON_STATISTIC "Print statistic about targets. Not support" OFF From 59a5af9f1dd3a7f769fd2116bff8310bbc68ae82 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 01:51:31 +0300 Subject: [PATCH 32/54] cmake/Properties/TargetProperties.cmake: remove strange comments; add usage comments; integrate 'FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS' option --- cmake/Properties/TargetProperties.cmake | 170 +++++++++++++----------- 1 file changed, 93 insertions(+), 77 deletions(-) diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index eb63b91..07ee563 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -1,15 +1,16 @@ -# ---- header-target ------- -# FLAME_REAL_TARGET # -# FLAME_ADDING_FILES # headers only -# FLAME_INCLUDE_PATHS # -# FLAME_DEPENDENCY_HEADERS # -# FLAME_LIBRARY_ALIASES # -# FLAME_INSTALL_PATH # -# -------------------------- - -# -# -# +# TargetProperties.cmake + +# Options: +# DEBUG - +# Values: +# PROPERTY_CONTAINER_NAME - +# REAL_TARGET - +# INSTALL_PATH - +# Lists: +# ADDING_FILES - Sources and headers +# INCLUDE_PATHS - +# DEPENDENCY_HEADERS - +# LIBRARY_ALIASES - function(internal_add_header_target_properties) check_internal_use() @@ -21,7 +22,7 @@ function(internal_add_header_target_properties) start_debug_function(internal_add_header_target_properties) - if(FLAME_DEBUG) + if(FLAME_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") @@ -65,19 +66,18 @@ function(internal_add_header_target_properties) end_debug_function() endfunction(internal_add_header_target_properties) -# ------ object-target ------- -# FLAME_REAL_TARGET # -# FLAME_ADDING_FILES # headers + sources -# FLAME_INCLUDE_PATHS # -# FLAME_DEPENDENCY_HEADERS # -# FLAME_COMPILE_FLAGS # -# FLAME_POSITION_INDEPENDENT # -# FLAME_OBJECT_ALIASES # -# ---------------------------- - -# -# -# +# Options: +# DEBUG - +# POSITION_INDEPENDENT - +# Values: +# PROPERTY_CONTAINER_NAME - +# REAL_TARGET - +# Lists: +# ADDING_FILES - +# INCLUDE_PATHS - +# DEPENDENCY_HEADERS - +# COMPILE_FLAGS - +# OBJECT_ALIASES - function(internal_add_object_target_properties) check_internal_use() @@ -90,7 +90,7 @@ function(internal_add_object_target_properties) start_debug_function(internal_add_object_target_properties) - if(FLAME_DEBUG) + if(FLAME_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") @@ -141,21 +141,20 @@ function(internal_add_object_target_properties) end_debug_function() endfunction(internal_add_object_target_properties) -# ---- static-library-target - -# FLAME_REAL_TARGET # -# FLAME_ADDING_SOURCES # headers + sources -# FLAME_ADDING_OBJECTS # -# FLAME_DEPENDENCY_HEADERS # -# FLAME_DEPENDENCY_LIBRARIES # -# FLAME_COMPILE_FLAGS # need for adding sources -# FLAME_OUTPUT_NAME # -# FLAME_LIBRARY_ALIASES # -# FLAME_INSTALL_PATH # -# ---------------------------- - -# -# -# +# Options: +# DEBUG - +# Values: +# PROPERTY_CONTAINER_NAME - +# REAL_TARGET - +# OUTPUT_NAME - +# INSTALL_PATH - +# Lists: +# ADDING_SOURCES - +# ADDING_OBJECTS - +# DEPENDENCY_HEADERS - +# DEPENDENCY_LIBRARIES - +# COMPILE_FLAGS - +# LIBRARY_ALIASES - function(internal_add_static_target_properties) check_internal_use() @@ -168,7 +167,7 @@ function(internal_add_static_target_properties) start_debug_function(internal_add_static_target_properties) - if(FLAME_DEBUG) + if(FLAME_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") @@ -229,22 +228,21 @@ function(internal_add_static_target_properties) end_debug_function() endfunction(internal_add_static_target_properties) -# ---- shared-library-target - -# FLAME_REAL_TARGET # -# FLAME_ADDING_SOURCES # headers + sources -# FLAME_ADDING_OBJECTS # -# FLAME_DEPENDENCY_HEADERS # -# FLAME_DEPENDENCY_LIBRARIES # -# FLAME_COMPILE_FLAGS # need for adding sources -# FLAME_LINK_FLAGS # -# FLAME_OUTPUT_NAME # -# FLAME_LIBRARY_ALIASES # -# FLAME_INSTALL_PATH # -# ---------------------------- - -# -# -# +# Options: +# DEBUG - +# Values: +# PROPERTY_CONTAINER_NAME - +# REAL_TARGET - +# OUTPUT_NAME - +# INSTALL_PATH - +# Lists: +# ADDING_SOURCES - +# ADDING_OBJECTS - +# DEPENDENCY_HEADERS - +# DEPENDENCY_LIBRARIES - +# COMPILE_FLAGS - +# LINK_FLAGS - +# LIBRARY_ALIASES - function(internal_add_shared_target_properties) check_internal_use() @@ -257,7 +255,7 @@ function(internal_add_shared_target_properties) start_debug_function(internal_add_shared_target_properties) - if(FLAME_DEBUG) + if(FLAME_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") @@ -321,34 +319,33 @@ function(internal_add_shared_target_properties) end_debug_function() endfunction(internal_add_shared_target_properties) -# ---- binary-target --------- -# FLAME_REAL_TARGET # -# FLAME_ADDING_FILES # -# FLAME_INCLUDE_PATHS # -# FLAME_DEPENDENCY_HEADERS # -# FLAME_DEPENDENCY_LIBRARIES # -# FLAME_COMPILE_FLAGS # -# FLAME_LINK_FLAGS # -# FLAME_OUTPUT_NAME # -# FLAME_INSTALL_PATH # -# ---------------------------- - -# -# -# +# Options: +# DEBUG - +# Values: +# PROPERTY_CONTAINER_NAME - +# REAL_TARGET - +# OUTPUT_NAME - +# INSTALL_PATH - +# Lists: +# ADDING_FILES - +# INCLUDE_PATHS - +# DEPENDENCY_HEADERS - +# DEPENDENCY_LIBRARIES - +# COMPILE_FLAGS - +# LINK_FLAGS - function(internal_add_binary_target_properties) enable_internal_use() set(OPTIONS "DEBUG") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" - "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" ) + "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS") cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") start_debug_function(internal_add_binary_target_properties) - if(FLAME_DEBUG) + if(FLAME_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("FLAME_PROPERTY_CONTAINER_NAME = ") @@ -405,3 +402,22 @@ function(internal_add_binary_target_properties) end_debug_function() endfunction(internal_add_binary_target_properties) + +# NAME - +# TARGET_TYPE - +# PROPERTY_NAME - +# PROPERTY_VALUE - +function(internal_target_add_property NAME TARGET_TYPE PROPERTY_NAME PROPERTY_VALUE) + check_internal_use() + string(TOUPPER "${TARGET_TYPE}" TARGET_TYPE) + if (NOT( + ("${TARGET_TYPE}" STREQUAL "HEADER") + OR ("${TARGET_TYPE}" STREQUAL "OBJECT") + OR ("${TARGET_TYPE}" STREQUAL "STATIC") + OR ("${TARGET_TYPE}" STREQUAL "SHARED") + OR ("${TARGET_TYPE}" STREQUAL "BINARY") + )) + message_fatal("-- Invalid 'TARGET_TYPE'") + endif() +endfunction(internal_target_add_property) + From fd8288e155e8e4f6d7e70ad4571771eb7d2c1f55 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:17:43 +0300 Subject: [PATCH 33/54] cmake/Properties/GlobalProperties.cmake: use CMake function for defining global proprties --- cmake/Properties/GlobalProperties.cmake | 45 ++++++++++++++++--------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/cmake/Properties/GlobalProperties.cmake b/cmake/Properties/GlobalProperties.cmake index b441ea1..c152407 100644 --- a/cmake/Properties/GlobalProperties.cmake +++ b/cmake/Properties/GlobalProperties.cmake @@ -1,22 +1,37 @@ -define_global_property(FLAME_HEADER_TARGETS - "List of header targets" - "List of header targets" +define_property(GLOBAL + PROPERTY "FLAME_HEADER_TARGETS" + BRIEF_DOCS "List of header targets" + FULL_DOCS "List of header targets" ) -define_global_property(FLAME_OBJECT_TARGETS - "List of object targets" - "List of object targets" +define_property(GLOBAL + PROPERTY "FLAME_OBJECT_TARGETS" + BRIEF_DOCS "List of object targets" + FULL_DOCS "List of object targets" ) -define_global_property(FLAME_STATIC_TARGETS - "List of static library targets" - "List of static library targets" + +define_property(GLOBAL + PROPERTY "FLAME_STATIC_TARGETS" + BRIEF_DOCS "List of static library targets" + FULL_DOCS "List of static library targets" +) + +define_property(GLOBAL + PROPERTY "FLAME_SHARED_TARGETS" + BRIEF_DOCS "List of shared library targets" + FULL_DOCS "List of shared library targets" ) -define_global_property(FLAME_SHARED_TARGETS - "List of shared library targets" - "List of shared library targets" + +define_property(GLOBAL + PROPERTY "FLAME_BINARY_TARGETS" + BRIEF_DOCS "List of binary targets" + FULL_DOCS "List of binary targets" ) -define_global_property(FLAME_BINARY_TARGETS - "List of shared library targets" - "List of binary targets" +set(FLAME_GLOBAL_PROPERTY_LIST + "FLAME_HEADER_TARGETS" + "FLAME_OBJECT_TARGETS" + "FLAME_STATIC_TARGETS" + "FLAME_SHARED_TARGETS" + "FLAME_BINARY_TARGETS" ) From 4e4b72bff3e4e83cd26004730684881c2b727157 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:18:07 +0300 Subject: [PATCH 34/54] cmake/Functions/PropertyFunctions.cmake: remove 'define_global_property()' --- cmake/Functions/PropertyFunctions.cmake | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake index 2a452f8..395f7be 100644 --- a/cmake/Functions/PropertyFunctions.cmake +++ b/cmake/Functions/PropertyFunctions.cmake @@ -1,15 +1,3 @@ -# -# -# -function(define_global_property PROPERTY_NAME PROPERTY_INFO PROPERTY_FULL_INFO) - define_property(GLOBAL - PROPERTY ${PROPERTY_NAME} - BRIEF_DOCS "${PROPERTY_INFO}" - FULL_DOCS "${PROPERTY_FULL_INFO}" - ) -endfunction(define_global_property) - - # # # From 766afeefd62d5ea8b695fb6f36635353d8293f3f Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:24:59 +0300 Subject: [PATCH 35/54] cmake/Properties/GlobalProperties.cmake: remove quotes --- cmake/Properties/GlobalProperties.cmake | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cmake/Properties/GlobalProperties.cmake b/cmake/Properties/GlobalProperties.cmake index c152407..e7df431 100644 --- a/cmake/Properties/GlobalProperties.cmake +++ b/cmake/Properties/GlobalProperties.cmake @@ -1,37 +1,37 @@ define_property(GLOBAL - PROPERTY "FLAME_HEADER_TARGETS" + PROPERTY FLAME_HEADER_TARGETS BRIEF_DOCS "List of header targets" FULL_DOCS "List of header targets" ) define_property(GLOBAL - PROPERTY "FLAME_OBJECT_TARGETS" + PROPERTY FLAME_OBJECT_TARGETS BRIEF_DOCS "List of object targets" FULL_DOCS "List of object targets" ) define_property(GLOBAL - PROPERTY "FLAME_STATIC_TARGETS" + PROPERTY FLAME_STATIC_TARGETS BRIEF_DOCS "List of static library targets" FULL_DOCS "List of static library targets" ) define_property(GLOBAL - PROPERTY "FLAME_SHARED_TARGETS" + PROPERTY FLAME_SHARED_TARGETS BRIEF_DOCS "List of shared library targets" FULL_DOCS "List of shared library targets" ) define_property(GLOBAL - PROPERTY "FLAME_BINARY_TARGETS" + PROPERTY FLAME_BINARY_TARGETS BRIEF_DOCS "List of binary targets" FULL_DOCS "List of binary targets" ) set(FLAME_GLOBAL_PROPERTY_LIST - "FLAME_HEADER_TARGETS" - "FLAME_OBJECT_TARGETS" - "FLAME_STATIC_TARGETS" - "FLAME_SHARED_TARGETS" - "FLAME_BINARY_TARGETS" + FLAME_HEADER_TARGETS + FLAME_OBJECT_TARGETS + FLAME_STATIC_TARGETS + FLAME_SHARED_TARGETS + FLAME_BINARY_TARGETS ) From c3a603d5dadc6c0b305b0a1b07d8be6948e30209 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:26:24 +0300 Subject: [PATCH 36/54] cmake/Options.cmake: add option for cleaning global properties after resove --- cmake/Options.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index 54b4915..6e7e0c1 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -25,6 +25,11 @@ option(FLAME_LOGGING ON ) +option(FLAME_CLEAN_AFTER_RESOLVE + "Clean global properties after resove dependencies" + ON +) + option(FLAME_THREADING "Use native threads" ON From b383fbabba01d046d8aa27ebc1b4439b059cf665 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:27:20 +0300 Subject: [PATCH 37/54] Remove 'set_global_property()' --- cmake/Functions/PropertyFunctions.cmake | 22 ++++++---------------- cmake/Functions/ResolveFunctions.cmake | 11 +++++------ 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake index 395f7be..b5d396a 100644 --- a/cmake/Functions/PropertyFunctions.cmake +++ b/cmake/Functions/PropertyFunctions.cmake @@ -1,16 +1,3 @@ -# -# -# -function(set_global_property PROPERTY_NAME PROPERTY_VALUE) - set_property( - GLOBAL - PROPERTY - ${PROPERTY_NAME} - "${PROPERTY_VALUE}" - ) -endfunction(set_global_property) - - # # # @@ -28,9 +15,12 @@ endfunction(get_global_property) # # function(add_to_global_property PROPERTY_NAME ADDITION_VALUE) - get_global_property(${PROPERTY_NAME} VALUE) - list(APPEND VALUE ${ADDITION_VALUE}) - set_global_property(${PROPERTY_NAME} "${VALUE}") + set_property( + GLOBAL APPEND + PROPERTY + "${PROPERTY_NAME}" + "${ADDITION_VALUE}" + ) endfunction(add_to_global_property) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 842dd08..dc27c9b 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -353,12 +353,11 @@ endfunction(internal_resolve_binaries) # function(internal_clean_global_properties) check_internal_use() - - set_global_property(FLAME_HEADER_TARGETS "") - set_global_property(FLAME_OBJECT_TARGETS "") - set_global_property(FLAME_STATIC_TARGETS "") - set_global_property(FLAME_SHARED_TARGETS "") - set_global_property(FLAME_BINARY_TARGETS "") + if(FLAME_CLEAN_AFTER_RESOLVE) + foreach(property ${FLAME_GLOBAL_PROPERTY_LIST}) + set_property(GLOBAL PROPERTY ${property} "") + endforeach() + endif() endfunction(internal_clean_global_properties) # From f367b5f538e858c1af5b3c4624fb75550dc909a1 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:34:45 +0300 Subject: [PATCH 38/54] Remove 'get_global_property()' --- cmake/Functions/PropertyFunctions.cmake | 13 ------------- cmake/Functions/ResolveFunctions.cmake | 11 +++++------ 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake index b5d396a..23c8270 100644 --- a/cmake/Functions/PropertyFunctions.cmake +++ b/cmake/Functions/PropertyFunctions.cmake @@ -1,16 +1,3 @@ -# -# -# -function(get_global_property PROPERTY_NAME RETURN_PROPERTY_VALUE) - get_property(VALUE - GLOBAL - PROPERTY - ${PROPERTY_NAME} - ) - set(${RETURN_PROPERTY_VALUE} "${VALUE}" PARENT_SCOPE) -endfunction(get_global_property) - - # # # diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index dc27c9b..e9962f8 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -6,8 +6,7 @@ function(internal_resolve_headers) start_debug_function(internal_resolve_headers) - get_global_property(FLAME_HEADER_TARGETS HEADER_TARGETS) - + get_property(HEADER_TARGETS GLOBAL PROPERTY FLAME_HEADER_TARGETS) foreach(target.property ${HEADER_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) @@ -60,7 +59,7 @@ endfunction(internal_resolve_headers) function(internal_resolve_object_libraries) start_debug_function(internal_resolve_object_libraries) - get_global_property(FLAME_OBJECT_TARGETS OBJECT_TARGETS) + get_property(OBJECT_TARGETS GLOBAL PROPERTY FLAME_OBJECT_TARGETS) foreach(target.property ${OBJECT_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) @@ -117,7 +116,7 @@ endfunction(internal_resolve_object_libraries) function(internal_resolve_static_libraries) start_debug_function(internal_resolve_static_libraries) - get_global_property(FLAME_STATIC_TARGETS STATIC_TARGETS) + get_property(STATIC_TARGETS GLOBAL PROPERTY FLAME_STATIC_TARGETS) foreach(target.property ${STATIC_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) @@ -196,7 +195,7 @@ endfunction(internal_resolve_static_libraries) function(internal_resolve_shared_libraries) start_debug_function(internal_resolve_shared_libraries) - get_global_property(FLAME_SHARED_TARGETS SHARED_TARGETS) + get_property(SHARED_TARGETS GLOBAL PROPERTY FLAME_SHARED_TARGETS) foreach(target.property ${SHARED_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) @@ -281,7 +280,7 @@ function(internal_resolve_binaries) start_debug_function(internal_resolve_binaries) - get_global_property(FLAME_BINARY_TARGETS BINARY_TARGETS) + get_property(BINARY_TARGETS GLOBAL PROPERTY FLAME_BINARY_TARGETS) foreach(target.property ${BINARY_TARGETS}) target_property_get(${target.property} FLAME_REAL_TARGET REAL_TARGET) From 07e48cb4e57fd44d552d1dc2749dec5d10cfd582 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:49:49 +0300 Subject: [PATCH 39/54] Remove 'add_to_global_property()' --- cmake/Functions/PropertyFunctions.cmake | 13 ------------- cmake/Properties/TargetProperties.cmake | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake index 23c8270..dba2e58 100644 --- a/cmake/Functions/PropertyFunctions.cmake +++ b/cmake/Functions/PropertyFunctions.cmake @@ -1,16 +1,3 @@ -# -# -# -function(add_to_global_property PROPERTY_NAME ADDITION_VALUE) - set_property( - GLOBAL APPEND - PROPERTY - "${PROPERTY_NAME}" - "${ADDITION_VALUE}" - ) -endfunction(add_to_global_property) - - # # # diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index 07ee563..c4774c3 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -50,7 +50,9 @@ function(internal_add_header_target_properties) endif() add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) - add_to_global_property(FLAME_HEADER_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + set_property(GLOBAL APPEND PROPERTY FLAME_HEADER_TARGETS + ${FLAME_PROPERTY_CONTAINER_NAME} + ) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") @@ -121,7 +123,9 @@ function(internal_add_object_target_properties) endif() add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) - add_to_global_property(FLAME_OBJECT_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + set_property(GLOBAL APPEND PROPERTY FLAME_OBJECT_TARGETS + ${FLAME_PROPERTY_CONTAINER_NAME} + ) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") @@ -204,7 +208,9 @@ function(internal_add_static_target_properties) endif() add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) - add_to_global_property(FLAME_STATIC_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + set_property(GLOBAL APPEND PROPERTY FLAME_STATIC_TARGETS + ${FLAME_PROPERTY_CONTAINER_NAME} + ) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") @@ -295,7 +301,9 @@ function(internal_add_shared_target_properties) endif() add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) - add_to_global_property(FLAME_SHARED_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + set_property(GLOBAL APPEND PROPERTY FLAME_SHARED_TARGETS + ${FLAME_PROPERTY_CONTAINER_NAME} + ) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") @@ -379,7 +387,9 @@ function(internal_add_binary_target_properties) endif() add_custom_target(${FLAME_PROPERTY_CONTAINER_NAME}) - add_to_global_property(FLAME_BINARY_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME}) + set_property(GLOBAL APPEND PROPERTY FLAME_BINARY_TARGETS + ${FLAME_PROPERTY_CONTAINER_NAME} + ) target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET "${FLAME_REAL_TARGET}") From 941514d9c6d71f40db44be7bd2d2191dc128cd31 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 06:50:38 +0300 Subject: [PATCH 40/54] cmake/Functions/PropertyFunctions.cmake: remove 'target_property_define()' --- cmake/Functions/PropertyFunctions.cmake | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake index dba2e58..6cbf48d 100644 --- a/cmake/Functions/PropertyFunctions.cmake +++ b/cmake/Functions/PropertyFunctions.cmake @@ -1,15 +1,3 @@ -# -# -# -function(target_property_define PROPERTY_NAME PROPERTY_INFO PROPERTY_FULL_INFO) - define_property(TARGET - PROPERTY ${PROPERTY_NAME} - BRIEF_DOCS "${PROPERTY_INFO}" - FULL_DOCS "${PROPERTY_FULL_INFO}" - ) -endfunction(target_property_define) - - # # # From 6d297e5f7eaa7c7069e2ad98696f938bcfdc3252 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 07:12:38 +0300 Subject: [PATCH 41/54] Remove 'target_property_set()' --- cmake/Functions/PropertyFunctions.cmake | 10 -- cmake/Properties/TargetProperties.cmake | 136 ++++++++++-------------- 2 files changed, 54 insertions(+), 92 deletions(-) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake index 6cbf48d..b1e2de3 100644 --- a/cmake/Functions/PropertyFunctions.cmake +++ b/cmake/Functions/PropertyFunctions.cmake @@ -1,13 +1,3 @@ -# -# -# -function(target_property_set TARGET_NAME PROPERTY_NAME PROPERTY_VALUE) - set_target_properties( - ${TARGET_NAME} - PROPERTIES ${PROPERTY_NAME} "${PROPERTY_VALUE}" - ) -endfunction(target_property_set) - # # # diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index c4774c3..d892ebd 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -53,17 +53,14 @@ function(internal_add_header_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_HEADER_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) - - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET - "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES - "${FLAME_ADDING_FILES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS - "${FLAME_DEPENDENCY_HEADERS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES - "${FLAME_LIBRARY_ALIASES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH - "${FLAME_INSTALL_PATH}") + set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} + PROPERTIES + FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" + FLAME_ADDING_FILES "${FLAME_ADDING_FILES}" + FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" + FLAME_LIBRARY_ALIASES "${FLAME_LIBRARY_ALIASES}" + FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" + ) end_debug_function() endfunction(internal_add_header_target_properties) @@ -126,21 +123,16 @@ function(internal_add_object_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_OBJECT_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) - - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET - "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES - "${FLAME_ADDING_FILES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS - "${FLAME_INCLUDE_PATHS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS - "${FLAME_DEPENDENCY_HEADERS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS - "${FLAME_COMPILE_FLAGS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_POSITION_INDEPENDENT - "${FLAME_POSITION_INDEPENDENT}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OBJECT_ALIASES - "${FLAME_OBJECT_ALIASES}") + set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} + PROPERTIES + FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" + FLAME_ADDING_FILES "${FLAME_ADDING_FILES}" + FLAME_INCLUDE_PATHS "${FLAME_INCLUDE_PATHS}" + FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" + FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" + FLAME_POSITION_INDEPENDENT "${FLAME_POSITION_INDEPENDENT}" + FLAME_OBJECT_ALIASES "${FLAME_OBJECT_ALIASES}" + ) end_debug_function() endfunction(internal_add_object_target_properties) @@ -211,25 +203,19 @@ function(internal_add_static_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_STATIC_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) + set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} + PROPERTIES + FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" + FLAME_ADDING_SOURCES "${FLAME_ADDING_SOURCES}" + FLAME_ADDING_OBJECTS "${FLAME_ADDING_OBJECTS}" + FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" + FLAME_DEPENDENCY_LIBRARIES "${FLAME_DEPENDENCY_LIBRARIES}" + FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" + FLAME_OUTPUT_NAME "${FLAME_OUTPUT_NAME}" + FLAME_LIBRARY_ALIASES "${FLAME_LIBRARY_ALIASES}" + FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" + ) - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET - "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES - "${FLAME_ADDING_SOURCES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_OBJECTS - "${FLAME_ADDING_OBJECTS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS - "${FLAME_DEPENDENCY_HEADERS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_LIBRARIES - "${FLAME_DEPENDENCY_LIBRARIES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS - "${FLAME_COMPILE_FLAGS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OUTPUT_NAME - "${FLAME_OUTPUT_NAME}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES - "${FLAME_LIBRARY_ALIASES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH - "${FLAME_INSTALL_PATH}") end_debug_function() endfunction(internal_add_static_target_properties) @@ -304,25 +290,18 @@ function(internal_add_shared_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_SHARED_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) - - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET - "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_SOURCES - "${FLAME_ADDING_SOURCES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_OBJECTS - "${FLAME_ADDING_OBJECTS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS - "${FLAME_DEPENDENCY_HEADERS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_LIBRARIES - "${FLAME_DEPENDENCY_LIBRARIES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS - "${FLAME_COMPILE_FLAGS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OUTPUT_NAME - "${FLAME_OUTPUT_NAME}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LIBRARY_ALIASES - "${FLAME_LIBRARY_ALIASES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH - "${FLAME_INSTALL_PATH}") + set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} + PROPERTIES + FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" + FLAME_ADDING_SOURCES "${FLAME_ADDING_SOURCES}" + FLAME_ADDING_OBJECTS "${FLAME_ADDING_OBJECTS}" + FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" + FLAME_DEPENDENCY_LIBRARIES "${FLAME_DEPENDENCY_LIBRARIES}" + FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" + FLAME_OUTPUT_NAME "${FLAME_OUTPUT_NAME}" + FLAME_LIBRARY_ALIASES "${FLAME_LIBRARY_ALIASES}" + FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" + ) end_debug_function() endfunction(internal_add_shared_target_properties) @@ -390,25 +369,18 @@ function(internal_add_binary_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_BINARY_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) - - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_REAL_TARGET - "${FLAME_REAL_TARGET}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_ADDING_FILES - "${FLAME_ADDING_FILES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INCLUDE_PATHS - "${FLAME_INCLUDE_PATHS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_HEADERS - "${FLAME_DEPENDENCY_HEADERS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_DEPENDENCY_LIBRARIES - "${FLAME_DEPENDENCY_LIBRARIES}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_COMPILE_FLAGS - "${FLAME_COMPILE_FLAGS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_LINK_FLAGS - "${FLAME_LINK_FLAGS}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_OUTPUT_NAME - "${FLAME_OUTPUT_NAME}") - target_property_set(${FLAME_PROPERTY_CONTAINER_NAME} FLAME_INSTALL_PATH - "${FLAME_INSTALL_PATH}") + set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} + PROPERTIES + FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" + FLAME_ADDING_FILES "${FLAME_ADDING_FILES}" + FLAME_INCLUDE_PATHS "${FLAME_INCLUDE_PATHS}" + FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" + FLAME_DEPENDENCY_LIBRARIES "${FLAME_DEPENDENCY_LIBRARIES}" + FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" + FLAME_LINK_FLAGS "${FLAME_LINK_FLAGS}" + FLAME_OUTPUT_NAME "${FLAME_OUTPUT_NAME}" + FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" + ) end_debug_function() endfunction(internal_add_binary_target_properties) From 05ff8e87eabf5de05266536d3c23defa3a2af64d Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 07:20:14 +0300 Subject: [PATCH 42/54] Integrate 'FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS' option to header, library and binary functions --- cmake/Functions/CompileBinaryFunctions.cmake | 2 +- cmake/Functions/CompileLibraryFunctions.cmake | 2 +- cmake/Functions/HeaderLibraryFunctions.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index f6dc2c9..af4903a 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -37,7 +37,7 @@ endmacro(internal_compile_binary_end_function) # # macro(internal_compile_binary_print_parse_result) - if(BINARY_DEBUG) + if(BINARY_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT -------") #print_debug_function_newline("-- OPTIONS --") diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 28620ea..7e2d9ae 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -61,7 +61,7 @@ endmacro(internal_compile_library_end_function) # # macro(internal_compile_library_print_parse_result) - if(COMPILE_DEBUG) + if(COMPILE_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------------- PARSE RESULT --------------") # options diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 067a686..1b19e54 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -37,7 +37,7 @@ endmacro(internal_header_library_end_function) # # macro(internal_header_library_print_parse_result) - if(HEADER_DEBUG) + if(HEADER_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") print_debug_function_oneline("HEADER_HELP = ") From 0fb4bf465054c03c68934f4ae1b813f27871c516 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 21:18:40 +0300 Subject: [PATCH 43/54] Remove 'target_property_get()' function --- cmake/Functions.cmake | 1 - cmake/Functions/PropertyFunctions.cmake | 10 -- cmake/Functions/ResolveFunctions.cmake | 134 ++++++++---------------- 3 files changed, 43 insertions(+), 102 deletions(-) delete mode 100644 cmake/Functions/PropertyFunctions.cmake diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake index f748e59..af22f81 100644 --- a/cmake/Functions.cmake +++ b/cmake/Functions.cmake @@ -3,5 +3,4 @@ include(Functions/CompileBinaryFunctions) include(Functions/CompileLibraryFunctions) include(Functions/HeaderLibraryFunctions) include(Functions/PrintFunctions) -include(Functions/PropertyFunctions) include(Functions/ResolveFunctions) diff --git a/cmake/Functions/PropertyFunctions.cmake b/cmake/Functions/PropertyFunctions.cmake deleted file mode 100644 index b1e2de3..0000000 --- a/cmake/Functions/PropertyFunctions.cmake +++ /dev/null @@ -1,10 +0,0 @@ -# -# -# -function(target_property_get TARGET_NAME PROPERTY_NAME PROPERTY_VALUE) - get_target_property("${PROPERTY_VALUE}" - ${TARGET_NAME} - ${PROPERTY_NAME} - ) - set(${PROPERTY_VALUE} "${${PROPERTY_VALUE}}" PARENT_SCOPE) -endfunction(target_property_get) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index e9962f8..e74f769 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -8,24 +8,20 @@ function(internal_resolve_headers) get_property(HEADER_TARGETS GLOBAL PROPERTY FLAME_HEADER_TARGETS) foreach(target.property ${HEADER_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) print_oneline("-- Header library ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_FILES - HEADER_LIST) + get_target_property(HEADER_LIST ${target.property} FLAME_ADDING_FILES) add_library(${REAL_TARGET} INTERFACE) target_sources(${REAL_TARGET} INTERFACE "$") - target_property_get(${target.property} FLAME_INCLUDE_PATHS - INCLUDE_PATHS) + get_target_property(INCLUDE_PATHS ${target.property} FLAME_INCLUDE_PATHS) if(INCLUDE_PATHS) target_include_directories(${REAL_TARGET} INTERFACE ${INCLUDE_PATHS}) endif() - target_property_get(${target.property} FLAME_LIBRARY_ALIASES - LIBRARY_ALIASES) + get_target_property(LIBRARY_ALIASES ${target.property} FLAME_LIBRARY_ALIASES) if(LIBRARY_ALIASES) foreach(alias ${LIBRARY_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) @@ -36,11 +32,8 @@ function(internal_resolve_headers) endforeach() foreach(target.property ${HEADER_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) - - target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS - DEPENDENCY_LIST) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) + get_target_property(DEPENDENCY_LIST ${target.property} FLAME_DEPENDENCY_HEADERS) if(DEPENDENCY_LIST) print_oneline("-- Dependencies for header library ${REAL_TARGET} - ") @@ -61,48 +54,41 @@ function(internal_resolve_object_libraries) get_property(OBJECT_TARGETS GLOBAL PROPERTY FLAME_OBJECT_TARGETS) foreach(target.property ${OBJECT_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) print_oneline("-- Object library ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_FILES - SOURCE_LIST) + get_target_property(SOURCE_LIST ${target.property} FLAME_ADDING_FILES) if(NOT SOURCE_LIST) print_newline("fail") endif() add_library(${REAL_TARGET} OBJECT ${SOURCE_LIST}) - target_property_get(${target.property} FLAME_OBJECT_ALIASES - OBJECT_ALIASES) + get_target_property(OBJECT_ALIASES ${target.property} FLAME_OBJECT_ALIASES) if(OBJECT_ALIASES) foreach(alias ${OBJECT_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) endforeach() endif() - target_property_get(${target.property} FLAME_INCLUDE_PATHS - INCLUDE_PATHS) + get_target_property(INCLUDE_PATHS ${target.property} FLAME_INCLUDE_PATHS) if(INCLUDE_PATHS) target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) endif() - target_property_get(${target.property} FLAME_POSITION_INDEPENDENT - POSITION_INDEPENDENT) + get_target_property(POSITION_INDEPENDENT ${target.property} FLAME_POSITION_INDEPENDENT) if(POSITION_INDEPENDENT) set_property(TARGET ${REAL_TARGET} PROPERTY POSITION_INDEPENDENT_CODE ${POSITION_INDEPENDENT}) endif() - target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS - HEADER_DEPENDENCIES) + get_target_property(HEADER_DEPENDENCIES ${target.property} FLAME_DEPENDENCY_HEADERS) if(HEADER_DEPENDENCIES) target_link_libraries(${REAL_TARGET} PUBLIC ${dependency}) endif() # Not supported now - #target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) + #get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) print_newline("done") endforeach() @@ -118,16 +104,12 @@ function(internal_resolve_static_libraries) get_property(STATIC_TARGETS GLOBAL PROPERTY FLAME_STATIC_TARGETS) foreach(target.property ${STATIC_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) print_oneline("-- Static library ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_SOURCES - SOURCE_LIST) - - target_property_get(${target.property} FLAME_ADDING_OBJECTS - OBJECT_TARGETS) + get_target_property(SOURCE_LIST ${target.property} FLAME_ADDING_SOURCES) + get_target_property(OBJECT_TARGETS ${target.property} FLAME_ADDING_OBJECTS) if(OBJECT_TARGETS) foreach(target ${OBJECT_TARGETS}) list(APPEND SOURCE_LIST $) @@ -138,44 +120,36 @@ function(internal_resolve_static_libraries) endif() add_library(${REAL_TARGET} STATIC ${SOURCE_LIST}) - target_property_get(${target.property} FLAME_LIBRARY_ALIASES - LIBRARY_ALIASES) + get_target_property(LIBRARY_ALIASES ${target.property} FLAME_LIBRARY_ALIASES) if(LIBRARY_ALIASES) foreach(alias ${LIBRARY_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) endforeach() endif() - target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS - HEADER_TARGETS) + get_target_property(HEADER_TARGETS ${target.property} FLAME_DEPENDENCY_HEADERS) if(HEADER_TARGETS) target_link_libraries(${REAL_TARGET} PUBLIC ${HEADER_TARGETS}) endif() # Not supported now - #target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) + #get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) - target_property_get(${target.property} FLAME_OUTPUT_NAME - OUTPUT_NAME) + get_target_property(OUTPUT_NAME ${target.property} FLAME_OUTPUT_NAME) if(OUTPUT_NAME) set_target_properties(${REAL_TARGET} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}") endif() # Not supported now - #target_property_get(${target.property} FLAME_INSTALL_PATH - # INSTALL_PATH) + #get_target_property(INSTALL_PATH ${target.property} FLAME_INSTALL_PATH) print_newline("done") endforeach() foreach(target.property ${STATIC_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) - target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES - LIBRARY_TARGETS) - + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) + get_target_property(LIBRARY_TARGETS ${target.property} FLAME_DEPENDENCY_LIBRARIES) if(LIBRARY_TARGETS) print_oneline("-- " "Compiled dependencies for static library ${REAL_TARGET} - ") @@ -197,16 +171,12 @@ function(internal_resolve_shared_libraries) get_property(SHARED_TARGETS GLOBAL PROPERTY FLAME_SHARED_TARGETS) foreach(target.property ${SHARED_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) print_oneline("-- Shared library ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_SOURCES - SOURCE_LIST) - - target_property_get(${target.property} FLAME_ADDING_OBJECTS - OBJECT_TARGETS) + get_target_property(SOURCE_LIST ${target.property} FLAME_ADDING_SOURCES) + get_target_property(OBJECT_TARGETS ${target.property} FLAME_ADDING_OBJECTS) if(OBJECT_TARGETS) foreach(target ${OBJECT_TARGETS}) list(APPEND SOURCE_LIST $) @@ -217,30 +187,25 @@ function(internal_resolve_shared_libraries) endif() add_library(${REAL_TARGET} SHARED ${SOURCE_LIST}) - target_property_get(${target.property} FLAME_LIBRARY_ALIASES - LIBRARY_ALIASES) + get_target_property(LIBRARY_ALIASES ${target.property} FLAME_LIBRARY_ALIASES) if(LIBRARY_ALIASES) foreach(alias ${LIBRARY_ALIASES}) add_library(${alias} ALIAS ${REAL_TARGET}) endforeach() endif() - target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS - HEADER_TARGETS) + get_target_property(HEADER_TARGETS ${target.property} FLAME_DEPENDENCY_HEADERS) if(HEADER_TARGETS) target_link_libraries(${REAL_TARGET} PUBLIC ${HEADER_TARGETS}) endif() # Not supported now - #target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) + #get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) # Not supported now - #target_property_get(${target.property} FLAME_LINK_FLAGS - # LINK_FLAGS) + #get_target_property(LINK_FLAGS ${target.property} FLAME_LINK_FLAGS) - target_property_get(${target.property} FLAME_OUTPUT_NAME - OUTPUT_NAME) + get_target_property(OUTPUT_NAME ${target.property} FLAME_OUTPUT_NAME) if(OUTPUT_NAME) set_target_properties(${REAL_TARGET} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}") @@ -250,11 +215,8 @@ function(internal_resolve_shared_libraries) endforeach() foreach(target.property ${SHARED_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) - - target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES - LIBRARY_TARGETS) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) + get_target_property(LIBRARY_TARGETS ${target.property} FLAME_DEPENDENCY_LIBRARIES) if(LIBRARY_TARGETS) print_oneline("-- " "Compiled dependencies for shared library ${REAL_TARGET} - ") @@ -282,13 +244,11 @@ function(internal_resolve_binaries) get_property(BINARY_TARGETS GLOBAL PROPERTY FLAME_BINARY_TARGETS) foreach(target.property ${BINARY_TARGETS}) - target_property_get(${target.property} FLAME_REAL_TARGET - REAL_TARGET) + get_target_property(REAL_TARGET ${target.property} FLAME_REAL_TARGET) print_oneline("-- Binary ${REAL_TARGET} - ") - target_property_get(${target.property} FLAME_ADDING_FILES - SOURCE_LIST) + get_target_property(SOURCE_LIST ${target.property} FLAME_ADDING_FILES) if(SOURCE_LIST) list(APPEND SOURCE_LIST ${ADDING_SOURCES}) else() @@ -296,45 +256,37 @@ function(internal_resolve_binaries) endif() add_executable(${REAL_TARGET} ${SOURCE_LIST}) - target_property_get(${target.property} FLAME_INCLUDE_PATHS - INCLUDE_PATHS) + get_target_property(INCLUDE_PATHS ${target.property} FLAME_INCLUDE_PATHS) if(INCLUDE_PATHS) target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) endif() - target_property_get(${target.property} FLAME_DEPENDENCY_LIBRARIES - DEPENDENCY_LIBRARIES) + get_target_property(DEPENDENCY_LIBRARIES ${target.property} FLAME_DEPENDENCY_LIBRARIES) if(DEPENDENCY_LIBRARIES) target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_LIBRARIES}) endif() - target_property_get(${target.property} FLAME_DEPENDENCY_HEADERS - DEPENDENCY_HEADERS) + get_target_property(DEPENDENCY_HEADERS ${target.property} FLAME_DEPENDENCY_HEADERS) if(DEPENDENCY_HEADERS) target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_HEADERS}) endif() # Not supported now - #target_property_get(${target.property} FLAME_COMPILE_FLAGS - # COMPILE_FLAGS) + #get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) # Not supported now - #target_property_get(${target.property} FLAME_LINK_FLAGS - # LINK_FLAGS) + #get_target_property(LINK_FLAGS ${target.property} FLAME_LINK_FLAGS) - target_property_get(${target.property} FLAME_OUTPUT_NAME - OUTPUT_NAME) + get_target_property(OUTPUT_NAME ${target.property} FLAME_OUTPUT_NAME) if(OUTPUT_NAME) set_target_properties(${REAL_TARGET} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}") endif() # Not supported now - #target_property_get(${target.property} FLAME_INSTALL_PATH - # INSTALL_PATH) + #get_target_property(INSTALL_PATH ${target.property} FLAME_INSTALL_PATH) - target_property_get(${target.property} FLAME_BINARY_ALIASES - BINARY_ALIASES) + get_target_property(BINARY_ALIASES ${target.property} FLAME_BINARY_ALIASES) if(BINARY_ALIASES) foreach(alias ${BINARY_ALIASES}) add_executable(${alias} ALIAS ${REAL_TARGET}) From ed0214e2c12cf24e7a0b6cbe4f2e8e9014a74c4b Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 22:06:42 +0300 Subject: [PATCH 44/54] Remove 'HELP' options --- cmake/Functions/CompileBinaryFunctions.cmake | 38 +++---------- cmake/Functions/CompileLibraryFunctions.cmake | 56 ++++--------------- cmake/Functions/HeaderLibraryFunctions.cmake | 30 +++------- 3 files changed, 30 insertions(+), 94 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index af4903a..8e8057e 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -4,7 +4,7 @@ function(internal_compile_binary) check_internal_use() - set(OPTIONS "DEBUG" "HELP") + set(OPTIONS "DEBUG") set(VALUES "NAME" "ALIAS_NAME" "INSTALL_PATH") set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_TARGET_LIST") @@ -19,31 +19,20 @@ function(internal_compile_binary) internal_compile_binary_end_function() endfunction(internal_compile_binary) -# -# -# +# macros + macro(internal_compile_binary_start_function) start_debug_function(internal_compile_binary) endmacro(internal_compile_binary_start_function) -# -# -# macro(internal_compile_binary_end_function) end_debug_function() endmacro(internal_compile_binary_end_function) -# -# -# macro(internal_compile_binary_print_parse_result) if(BINARY_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT -------") - #print_debug_function_newline("-- OPTIONS --") - - print_debug_function_newline("-- VALUES --") - print_debug_function_oneline("BINARY_NAME = ") print_debug_value_newline(${BINARY_NAME}) @@ -53,8 +42,6 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_oneline("BINARY_INSTALL_PATH = ") print_debug_value_newline(${BINARY_INSTALL_PATH}) - print_debug_function_newline("-- LISTS --") - print_debug_function_oneline("BINARY_INCLUDE_PATHS = ") print_debug_value_newline(${BINARY_INCLUDE_PATHS}) @@ -72,21 +59,20 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_newline("-------- PARSE RESULT -------") endif() + if (BINARY_DEBUG) + set(BINARY_DEBUG DEBUG) + endif() endmacro(internal_compile_binary_print_parse_result) -# -# -# macro(internal_compile_binary_process_parameters) if(NOT BINARY_NAME) - message_fatal("-- Need 'NAME'.") + message_fatal("Need 'NAME'.") endif() if(BINARY_SOURCE_LIST) list(APPEND SOURCE_LIST ${BINARY_SOURCE_LIST}) endif() if(NOT BINARY_SOURCE_LIST) - message_fatal("-- " - "Need 'SOURCE_LIST'.") + message_fatal("Need 'SOURCE_LIST'.") endif() internal_print_warning_not_support("${BINARY_COMPILE_FLAGS}" COMPILE_FLAGS) @@ -94,9 +80,6 @@ macro(internal_compile_binary_process_parameters) internal_print_warning_not_support("${BINARY_INSTALL_PATH}" INSTALL_PATH) endmacro(internal_compile_binary_process_parameters) -# -# -# macro(internal_compile_binary_add) print_newline("-- Adding binary for ${BINARY_NAME}") @@ -109,7 +92,6 @@ macro(internal_compile_binary_add) "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") - #set(DEBUG DEBUG) internal_add_binary_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" @@ -121,9 +103,7 @@ macro(internal_compile_binary_add) DEPENDENCY_LIBRARIES "${BINARY_DEPENDENCY_TARGET_LIST}" #LINK_FLAGS "${BINARY_LINK_FLAGS}" INCLUDE_PATHS "${BINARY_INCLUDE_PATHS}" - - - #DEBUG + ${BINARY_DEBUG} ) unset(TARGET_CUSTOM_PROPERTIES) diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index 7e2d9ae..e91ef1e 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -5,7 +5,7 @@ function(internal_compile_library) check_internal_use() # Parse parameters - set(OPTIONS "DEBUG" "HELP" "MAKE_STATIC" "MAKE_SHARED" + set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS") set(VALUES "NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" @@ -43,34 +43,22 @@ function(internal_compile_library) internal_compile_library_end_function() endfunction(internal_compile_library) -# -# -# +# macros + macro(internal_compile_library_start_function) start_debug_function("internal_compile_library") endmacro(internal_compile_library_start_function) -# -# -# macro(internal_compile_library_end_function) end_debug_function() endmacro(internal_compile_library_end_function) -# -# -# macro(internal_compile_library_print_parse_result) if(COMPILE_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------------- PARSE RESULT --------------") # options - print_debug_function_newline("-- OPTIONS --") - - #print_debug_function_oneline("COMPILE_DEBUG = ") - #print_debug_value_newline("${COMPILE_DEBUG}") - print_debug_function_oneline("COMPILE_MAKE_STATIC = ") print_debug_value_newline("${COMPILE_MAKE_STATIC}") @@ -83,13 +71,8 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS = ") print_debug_value_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") - print_debug_function_oneline("COMPILE_HELP = ") - print_debug_value_newline("${COMPILE_HELP}") - # values - print_debug_function_newline("-- VALUES --") - print_debug_function_oneline("COMPILE_NAME = ") print_debug_value_newline(${COMPILE_NAME}) @@ -113,8 +96,6 @@ macro(internal_compile_library_print_parse_result) # lists - print_debug_function_newline("-- LISTS --") - print_debug_function_oneline("COMPILE_INCLUDE_PATHS = ") print_debug_value_newline("${COMPILE_INCLUDE_PATHS}") @@ -138,19 +119,19 @@ macro(internal_compile_library_print_parse_result) print_debug_function_newline("-------------- PARSE RESULT --------------") endif() + if (COMPILE_DEBUG) + set(COMPILE_DEBUG DEBUG) + endif() endmacro(internal_compile_library_print_parse_result) -# -# -# macro(internal_compile_library_process_parameters) if(NOT COMPILE_NAME) - message_fatal("-- Need 'NAME'.") + message_fatal("Need 'NAME'.") endif() if(COMPILE_SOURCE_LIST) list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) else() - message_fatal("-- Need 'SOURCE_LIST'.") + message_fatal("Need 'SOURCE_LIST'.") endif() internal_print_warning_not_support("${COMPILE_HELP}" @@ -169,16 +150,6 @@ macro(internal_compile_library_process_parameters) SHARED_INSTALL_PATH) endmacro(internal_compile_library_process_parameters) -# -# -# -macro(internal_compile_library_print_help) - check_internal_use() -endmacro(internal_compile_library_print_help) - -# -# -# macro(internal_compile_independent_object_library) check_internal_use() @@ -217,7 +188,6 @@ macro(internal_compile_independent_object_library) "${COMPILE_INDEPENDENT_OBJECT_ALIAS_NAME}") endif() - #set(DEBUG DEBUG) internal_add_object_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" @@ -227,7 +197,7 @@ macro(internal_compile_independent_object_library) COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" POSITION_INDEPENDENT OBJECT_ALIASES "${OBJECT_ALIASES}" - #DEBUG + ${COMPILE_DEBUG} ) unset(TARGET_CUSTOM_PROPERTIES) @@ -256,7 +226,6 @@ macro(internal_compile_dependent_object_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") - #set(DEBUG DEBUG) internal_add_object_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" @@ -265,7 +234,7 @@ macro(internal_compile_dependent_object_library) DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" OBJECT_ALIASES "${COMPILE_OBJECT_ALIAS_NAME}" - #DEBUG + ${COMPILE_DEBUG} ) unset(TARGET_CUSTOM_PROPERTIES) @@ -306,7 +275,6 @@ macro(internal_compile_static_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_MODULE_SUFFIX}") - #set(DEBUG DEBUG) internal_add_static_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" @@ -317,7 +285,7 @@ macro(internal_compile_static_library) #COMPILE_FLAGS "${}" OUTPUT_NAME "${COMPILE_NAME}" LIBRARY_ALIASES "${COMPILE_STATIC_ALIAS_NAME}" - #DEBUG + ${COMPILE_DEBUG} ) unset(TARGET_DEPENDENT_OBJECT_LIBRARY) @@ -361,7 +329,7 @@ macro(internal_compile_shared_library) #LINK_FLAGS "${}" OUTPUT_NAME "${COMPILE_NAME}" LIBRARY_ALIASES "${COMPILE_SHARED_ALIAS_NAME}" - #DEBUG + ${COMPILE_DEBUG} ) unset(TARGET_INDEPENDENT_OBJECT_LIBRARY) diff --git a/cmake/Functions/HeaderLibraryFunctions.cmake b/cmake/Functions/HeaderLibraryFunctions.cmake index 1b19e54..f5de12f 100644 --- a/cmake/Functions/HeaderLibraryFunctions.cmake +++ b/cmake/Functions/HeaderLibraryFunctions.cmake @@ -5,7 +5,7 @@ function(internal_header_library) check_internal_use() # Parse arguments - set(OPTIONS "DEBUG" "HELP") + set(OPTIONS "DEBUG") set(VALUES "NAME" "LIBRARY_ALIAS_NAME" "INSTALL_PATH") set(LISTS "DEPENDENCY_TARGET_LIST" "HEADER_LIST" "INCLUDE_PATHS") cmake_parse_arguments("HEADER" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -19,30 +19,20 @@ function(internal_header_library) internal_header_library_end_function() endfunction(internal_header_library) -# -# -# +# macros + macro(internal_header_library_start_function) start_debug_function(internal_header_library) endmacro(internal_header_library_start_function) -# -# -# macro(internal_header_library_end_function) end_debug_function() endmacro(internal_header_library_end_function) -# -# -# macro(internal_header_library_print_parse_result) if(HEADER_DEBUG OR (FLAME_CMAKE_DEBUG AND FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS)) print_debug_function_newline("-------- PARSE RESULT --------") - print_debug_function_oneline("HEADER_HELP = ") - print_debug_value_newline(${HEADER_HELP}) - print_debug_function_oneline("HEADER_NAME = ") print_debug_value_newline(${HEADER_NAME}) @@ -63,22 +53,21 @@ macro(internal_header_library_print_parse_result) print_debug_function_newline("-------- PARSE RESULT --------") endif() + if (HEADER_DEBUG) + set(HEADER_DEBUG DEBUG) + endif() endmacro(internal_header_library_print_parse_result) -# -# -# macro(internal_header_library_process_parameters) check_internal_use() if(NOT HEADER_NAME) - message_fatal("-- Need 'NAME'.") + message_fatal("Need 'NAME'.") endif() if(HEADER_HEADER_LIST) set(HEADER_LIST "${HEADER_HEADER_LIST}") else() - message_fatal("-- " - "Need 'HEADER_LIST'.") + message_fatal("Need 'HEADER_LIST'.") endif() internal_print_warning_not_support("${HEADER_HELP}" HELP) @@ -97,14 +86,13 @@ macro(internal_header_library_add) "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") - #set(DEBUG TRUE) internal_add_header_target_properties( - #DEBUG PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" ADDING_FILES "${HEADER_LIST}" DEPENDENCY_HEADERS "${HEADER_DEPENDENCY_TARGET_LIST}" LIBRARY_ALIASES "${HEADER_LIBRARY_ALIAS_NAME}" + ${HEADER_DEBUG} ) unset(TARGET_CUSTOM_PROPERTIES) From 2611fbbc7d3948201c6d1e4aa598316d1d71b81c Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 22:07:22 +0300 Subject: [PATCH 45/54] cmake/Functions/ResolveFunctions.cmake: add comment to install path --- cmake/Functions/ResolveFunctions.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index e74f769..4cedd94 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -28,6 +28,9 @@ function(internal_resolve_headers) endforeach() endif() + # Not supported now + #get_target_property(INSTALL_PATH ${target.property} FLAME_INSTALL_PATH) + print_newline("done") endforeach() From 073bfed0079e991bdd6f990d48a843032fe183e6 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 22:08:04 +0300 Subject: [PATCH 46/54] cmake/Options.cmake: rename 'FLAME_PRINT_COMMON_STATISTIC' -> 'FLAME_PRINT_DETAILED_STATISTIC' --- cmake/Options.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index 6e7e0c1..f50fd78 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -15,7 +15,7 @@ option(FLAME_PRINT_COMMON_STATISTIC OFF ) -option(FLAME_PRINT_COMMON_STATISTIC +option(FLAME_PRINT_DETAILED_STATISTIC "Print detailed statistic about targets with add files, flags and etc. Not support" OFF ) From e574774f2dd6215b91c05c285b672baf0267e63a Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 15 Dec 2020 22:19:41 +0300 Subject: [PATCH 47/54] cmake/Options.cmake: fix comment --- cmake/Options.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index f50fd78..4244690 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -45,7 +45,7 @@ option(FLAME_LOCAL_INSTALL OFF ) -# code generation options +# code generation and install options option(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS "Static and shared libraries are using one object library" From 32c02a10271c9f5c3243351307355704c3cb9ba4 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Sat, 20 Feb 2021 00:59:59 +0300 Subject: [PATCH 48/54] Add support custom compile flags (#2) * Move options to other files; sort by categogies * Add turning on/off exceptions and RTTI for GCC, Clang and MSVC * Add detecting 'Thread::Thread' target * Add status function for printing status messages * Add supporting custom compile flags * Fix: finding 'Thread' with 'REQURED' option --- cmake/Functions/CompileLibraryFunctions.cmake | 68 ++++++++++++++++-- cmake/Functions/PrintFunctions.cmake | 7 ++ cmake/Functions/ResolveFunctions.cmake | 8 ++- cmake/Options.cmake | 69 +------------------ cmake/Options/CodeGenerationOptions.cmake | 19 +++++ cmake/Options/CommonOptions.cmake | 46 +++++++++++++ cmake/Options/FlagOptions.cmake | 11 +++ cmake/Platform.cmake | 29 ++++++++ cmake/Platform/Unix.cmake | 16 +---- 9 files changed, 183 insertions(+), 90 deletions(-) create mode 100644 cmake/Options/CodeGenerationOptions.cmake create mode 100644 cmake/Options/CommonOptions.cmake create mode 100644 cmake/Options/FlagOptions.cmake diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index e91ef1e..d5ce01f 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -7,7 +7,8 @@ function(internal_compile_library) # Parse parameters set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" - "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS") + "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" + "RTTI" "NO_RTTI" "EXCEPTIONS" "NO_EXCEPTIONS") set(VALUES "NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "STATIC_INSTALL_PATH" "SHARED_INSTALL_PATH") @@ -71,6 +72,18 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS = ") print_debug_value_newline("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}") + print_debug_function_oneline("COMPILE_NO_RTTI = ") + print_debug_value_newline("${COMPILE_NO_RTTI}") + + print_debug_function_oneline("COMPILE_RTTI = ") + print_debug_value_newline("${COMPILE_RTTI}") + + print_debug_function_oneline("COMPILE_NO_EXCEPTIONS = ") + print_debug_value_newline("${COMPILE_NO_EXCEPTIONS}") + + print_debug_function_oneline("COMPILE_EXCEPTIONS = ") + print_debug_value_newline("${COMPILE_EXCEPTIONS}") + # values print_debug_function_oneline("COMPILE_NAME = ") @@ -131,17 +144,59 @@ macro(internal_compile_library_process_parameters) if(COMPILE_SOURCE_LIST) list(APPEND SOURCE_LIST ${COMPILE_SOURCE_LIST}) else() - message_fatal("Need 'SOURCE_LIST'.") + message_fatal("${COMPILE_NAME}: need 'SOURCE_LIST'.") + endif() + + if(COMPILE_RTTI AND COMPILE_NO_RTTI) + message_fatal( + "internal_compile_library.${COMPILE_NAME}: options 'RTTI' and 'NO_RTTI' cannot be used simultaneously." + ) + elseif((NOT COMPILE_RTTI) AND (NOT COMPILE_NO_RTTI)) + if(FLAME_CXX_NO_RTTI) + set(MESSAGE_OPTION "NO_RTTI") + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_RTTI}") + else() + set(MESSAGE_OPTION "RTTI") + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_RTTI}") + endif() + message_status( + "internal_compile_library.${COMPILE_NAME}: not set 'RTTI' or 'NO_RTTI'. Used '${MESSAGE_OPTION}'." + ) + unset(MESSAGE_OPTION) + elseif(COMPILE_RTTI) + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_RTTI}") + elseif(COMPILE_NO_RTTI) + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_RTTI}") endif() - internal_print_warning_not_support("${COMPILE_HELP}" - HELP) + if(COMPILE_EXCEPTIONS AND COMPILE_NO_EXCEPTIONS) + message_fatal( + "internal_compile_library.${COMPILE_NAME}: options 'EXCEPTIONS' and 'NO_EXCEPTIONS' cannot be used simultaneously." + ) + elseif((NOT COMPILE_EXCEPTIONS) AND (NOT COMPILE_NO_EXCEPTIONS)) + if(FLAME_CXX_NO_EXCEPTIONS) + set(MESSAGE_OPTION "NO_EXCEPTIONS") + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") + else() + set(MESSAGE_OPTION "EXCEPTIONS") + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_EXCEPTIONS}") + endif() + message_status( + "internal_compile_library.${COMPILE_NAME}: not set 'EXCEPTIONS' or 'NO_EXCEPTIONS'. Used '${MESSAGE_OPTION}'." + ) + unset(MESSAGE_OPTION) + elseif(COMPILE_EXCEPTIONS) + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_EXCEPTIONS}") + elseif(COMPILE_NO_EXCEPTIONS) + list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") + endif() + + message_status("internal_compile_library.${COMPILE_NAME}: COMPILE_COMPILE_FLAGS = ${COMPILE_COMPILE_FLAGS}") + internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}" NOT_MAKE_POSITION_DEPENDENT_OBJECTS) internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_INDEPENDENT_OBJECTS}" NOT_MAKE_INPOSITION_DEPENDENT_OBJECTS) - internal_print_warning_not_support("${COMPILE_COMPILE_FLAGS}" - COMPILE_FLAGS) internal_print_warning_not_support("${COMPILE_LINK_FLAGS}" LINK_FLAGS) internal_print_warning_not_support("${COMPILE_STATIC_INSTALL_PATH}" @@ -282,7 +337,6 @@ macro(internal_compile_static_library) ADDING_OBJECTS "${TARGET_DEPENDENT_OBJECT_LIBRARY}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" DEPENDENCY_LIBRARIES "${COMPILE_DEPENDENCY_TARGETS_FOR_STATIC}" - #COMPILE_FLAGS "${}" OUTPUT_NAME "${COMPILE_NAME}" LIBRARY_ALIASES "${COMPILE_STATIC_ALIAS_NAME}" ${COMPILE_DEBUG} diff --git a/cmake/Functions/PrintFunctions.cmake b/cmake/Functions/PrintFunctions.cmake index 87ebdc2..0a13f55 100644 --- a/cmake/Functions/PrintFunctions.cmake +++ b/cmake/Functions/PrintFunctions.cmake @@ -21,6 +21,13 @@ function(message_warning) message(WARNING ${ARGV}) endfunction(message_warning) +# +# +# +function(message_status) + message(STATUS ${ARGV}) +endfunction(message_status) + # # # diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 4cedd94..b2d9f29 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -90,8 +90,12 @@ function(internal_resolve_object_libraries) target_link_libraries(${REAL_TARGET} PUBLIC ${dependency}) endif() - # Not supported now - #get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) + get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) + if(COMPILE_FLAGS) + foreach(flag ${COMPILE_FLAGS}) + target_compile_options(${REAL_TARGET} PUBLIC ${flag}) + endforeach() + endif() print_newline("done") endforeach() diff --git a/cmake/Options.cmake b/cmake/Options.cmake index 4244690..28b2737 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -1,66 +1,3 @@ -# common options - -option(FLAME_CMAKE_DEBUG - "Print debug messages" - OFF -) - -option(FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS - "Print debug messages with parse results" - OFF -) - -option(FLAME_PRINT_COMMON_STATISTIC - "Print statistic about targets. Not support" - OFF -) - -option(FLAME_PRINT_DETAILED_STATISTIC - "Print detailed statistic about targets with add files, flags and etc. Not support" - OFF -) - -option(FLAME_LOGGING - "Show log messages" - ON -) - -option(FLAME_CLEAN_AFTER_RESOLVE - "Clean global properties after resove dependencies" - ON -) - -option(FLAME_THREADING - "Use native threads" - ON -) - -option(FLAME_TESTING - "Enable testing. Not support" - ON -) - -option(FLAME_LOCAL_INSTALL - "Installing to local directory (/install). Not support" - OFF -) - -# code generation and install options - -option(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS - "Static and shared libraries are using one object library" - ON -) -option(FLAME_MAKE_STATIC - "Creating static libraries" - ON -) -option(FLAME_MAKE_SHARED - "Creating shared libraries" - ON -) - -option(FLAME_MAKE_STANDALONE - "Make all modules as standalone. Not support" - OFF -) +include(Options/CodeGenerationOptions) +include(Options/CommonOptions) +include(Options/FlagOptions) diff --git a/cmake/Options/CodeGenerationOptions.cmake b/cmake/Options/CodeGenerationOptions.cmake new file mode 100644 index 0000000..b07ffbe --- /dev/null +++ b/cmake/Options/CodeGenerationOptions.cmake @@ -0,0 +1,19 @@ +# code generation and install options + +option(FLAME_ONLY_POSITION_INDEPENDENT_OBJECTS + "Static and shared libraries are using one object library" + ON +) +option(FLAME_MAKE_STATIC + "Creating static libraries" + ON +) +option(FLAME_MAKE_SHARED + "Creating shared libraries" + ON +) + +option(FLAME_MAKE_STANDALONE + "Make all modules as standalone. Not support" + OFF +) diff --git a/cmake/Options/CommonOptions.cmake b/cmake/Options/CommonOptions.cmake new file mode 100644 index 0000000..c204ae8 --- /dev/null +++ b/cmake/Options/CommonOptions.cmake @@ -0,0 +1,46 @@ +# common options + +option(FLAME_CMAKE_DEBUG + "Print debug messages" + OFF +) + +option(FLAME_CMAKE_DEBUG_SHOW_PARSE_RESULTS + "Print debug messages with parse results" + OFF +) + +option(FLAME_PRINT_COMMON_STATISTIC + "Print statistic about targets. Not support" + OFF +) + +option(FLAME_PRINT_DETAILED_STATISTIC + "Print detailed statistic about targets with add files, flags and etc. Not support" + OFF +) + +option(FLAME_LOGGING + "Show log messages" + ON +) + +option(FLAME_CLEAN_AFTER_RESOLVE + "Clean global properties after resove dependencies" + ON +) + +option(FLAME_THREADING + "Use native threads" + ON +) + +option(FLAME_TESTING + "Enable testing. Not support" + ON +) + +option(FLAME_LOCAL_INSTALL + "Installing to local directory (/install). Not support" + OFF +) diff --git a/cmake/Options/FlagOptions.cmake b/cmake/Options/FlagOptions.cmake new file mode 100644 index 0000000..7936bfb --- /dev/null +++ b/cmake/Options/FlagOptions.cmake @@ -0,0 +1,11 @@ +# flags + +option(FLAME_CXX_NO_RTTI + "Turn off Run-time Type Identification (RTTI). Not support" + OFF +) + +option(FLAME_CXX_NO_EXCEPTIONS + "Turn off exception support. Not support" + OFF +) diff --git a/cmake/Platform.cmake b/cmake/Platform.cmake index 417c234..1e04542 100644 --- a/cmake/Platform.cmake +++ b/cmake/Platform.cmake @@ -5,3 +5,32 @@ endif(UNIX) if(WIN32) include(Platform/Windows) endif(WIN32) + +if(FLAME_THREADING) + find_package(Threads REQUIRED) + if(NOT (TARGET Threads::Threads)) + message(FATAL_ERROR "Target 'Threads::Threads' not found") + endif() +endif() + +if(CMAKE_CXX_COMPILER) + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(FLAME_CXX_FLAG_NO_RTTI "-fno-rtti") + set(FLAME_CXX_FLAG_RTTI "-frtti") + + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "-fno-cxx-exceptions") + set(FLAME_CXX_FLAG_EXCEPTIONS "-fcxx-exceptions") + elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(FLAME_CXX_FLAG_NO_RTTI "-fno-rtti") + set(FLAME_CXX_FLAG_RTTI "") + + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "-fno-exceptions") + set(FLAME_CXX_FLAG_EXCEPTIONS "-fexceptions") + elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + set(FLAME_CXX_FLAG_NO_RTTI "/GR") + set(FLAME_CXX_FLAG_RTTI "/GR-") + + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "/EHs-") + set(FLAME_CXX_FLAG_EXCEPTIONS "/EHs") + endif() +endif() diff --git a/cmake/Platform/Unix.cmake b/cmake/Platform/Unix.cmake index 082fcf0..4aaefa4 100644 --- a/cmake/Platform/Unix.cmake +++ b/cmake/Platform/Unix.cmake @@ -1,18 +1,4 @@ set(FLAME_PLATFORM Posix) + set(FLAME_STATIC_LIBRARY_SUFFIX ".a") set(FLAME_SHARED_LIBRARY_SUFFIX ".so") - -if(FLAME_THREADING) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_STATIC_LIBRARY_SUFFIX}) - find_library(PTHREAD_STATIC_LIBRARY pthread) - add_library(PTHREAD_STATIC STATIC IMPORTED ${PTHREAD_STATIC_LIBRARY}) - unset(PTHREAD_STATIC_LIBRARY) - - set(CMAKE_FIND_LIBRARY_SUFFIXES ${FLAME_SHARED_LIBRARY_SUFFIX}) - find_library(PTHREAD_SHARED_LIBRARY pthread) - add_library(PTHREAD_SHARED SHARED IMPORTED ${PTHREAD_SHARED_LIBRARY}) - unset(PTHREAD_SHARED_LIBRARY) - - set(FLAME_DEPENDENCY_SHARED_LIBRARIES ${PTHREAD_SHARED_LIBRARY}) - set(FLAME_DEPENDENCY_STATIC_LIBRARIES ${PTHREAD_STATIC_LIBRARY}) -endif() From d5a35f05272766798f00bd3c2ccbad5491502900 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Fri, 5 Mar 2021 17:46:47 +0300 Subject: [PATCH 49/54] Add function for finding static and shared functions --- cmake/Functions/CommonFunctions.cmake | 38 +++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/cmake/Functions/CommonFunctions.cmake b/cmake/Functions/CommonFunctions.cmake index 57b5d80..17f0851 100644 --- a/cmake/Functions/CommonFunctions.cmake +++ b/cmake/Functions/CommonFunctions.cmake @@ -1,7 +1,7 @@ # # # -function(get_real_target CURRENT_TARGET_NAME REAL_TARGET_NAME) +function(flame_get_real_target CURRENT_TARGET_NAME REAL_TARGET_NAME) if(TARGET ${CURRENT_TARGET_NAME}) get_target_property(aliased ${CURRENT_TARGET_NAME} ALIASED_TARGET) if(aliased) @@ -12,4 +12,38 @@ function(get_real_target CURRENT_TARGET_NAME REAL_TARGET_NAME) else() message_fatal("-- '${CURRENT_TARGET_NAME}' is not a target") endif() -endfunction(get_real_target) +endfunction(flame_get_real_target) + +# +# +# +function(internal_flame_find_lib NAME) + check_internal_use() + find_library(LIBRARY_${CMAKE_FIND_LIBRARY_SUFFIXES} ${NAME}) + if (NOT LIBRARY_${CMAKE_FIND_LIBRARY_SUFFIXES}) + message("NAME ('${CMAKE_FIND_LIBRARY_SUFFIXES}') not found") + endif() + set(LIBRARY_${CMAKE_FIND_LIBRARY_SUFFIXES} + "${LIBRARY_${CMAKE_FIND_LIBRARY_SUFFIXES}}" + PARENT_SCOPE) +endfunction() + +# +# +# +function(flame_find_static_lib NAME LOCATION) + enable_internal_use() + set(CMAKE_FIND_LIBRARY_SUFFIXES "${FLAME_STATIC_LIBRARY_SUFFIX}") + internal_flame_find_lib(${NAME}) + set(${LOCATION} ${LIBRARY_${CMAKE_FIND_LIBRARY_SUFFIXES}} PARENT_SCOPE) +endfunction() + +# +# +# +function(flame_find_shared_lib NAME LOCATION) + enable_internal_use() + set(CMAKE_FIND_LIBRARY_SUFFIXES "${FLAME_SHARED_LIBRARY_SUFFIX}") + internal_flame_find_lib(${NAME}) + set(${LOCATION} ${LIBRARY_${CMAKE_FIND_LIBRARY_SUFFIXES}} PARENT_SCOPE) +endfunction() From e51ecb65929e1bbdd91f0ee8694290523185f2ab Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Mon, 8 Mar 2021 20:36:04 +0300 Subject: [PATCH 50/54] Add implib suffix for shared libraries --- cmake/Functions/ResolveFunctions.cmake | 5 +++++ cmake/Platform/Windows.cmake | 2 ++ 2 files changed, 7 insertions(+) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 4cedd94..bc72df7 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -214,6 +214,11 @@ function(internal_resolve_shared_libraries) OUTPUT_NAME "${OUTPUT_NAME}") endif() + if(FLAME_IMPLIB_LIBRARY_SUFFIX) + set_target_properties(${REAL_TARGET} PROPERTIES + IMPORT_SUFFIX "${FLAME_IMPLIB_LIBRARY_SUFFIX}") + endif() + print_newline("done") endforeach() diff --git a/cmake/Platform/Windows.cmake b/cmake/Platform/Windows.cmake index e5c2109..f8ceece 100644 --- a/cmake/Platform/Windows.cmake +++ b/cmake/Platform/Windows.cmake @@ -2,3 +2,5 @@ set(FLAME_PLATFORM Windows) set(FLAME_STATIC_LIBRARY_SUFFIX ".lib") set(FLAME_SHARED_LIBRARY_SUFFIX ".dll") +set(FLAME_IMPLIB_LIBRARY_SUFFIX + "${FLAME_SHARED_LIBRARY_SUFFIX}${FLAME_STATIC_LIBRARY_SUFFIX}") From fc5a63feb6aac7d62e38261f7e58fb09a8cdcf7f Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 9 Mar 2021 01:17:54 +0300 Subject: [PATCH 51/54] Add removing flags from CMAKE_CXX_FLAGS --- cmake/Platform.cmake | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/cmake/Platform.cmake b/cmake/Platform.cmake index 4fe4eb7..59898d9 100644 --- a/cmake/Platform.cmake +++ b/cmake/Platform.cmake @@ -22,10 +22,27 @@ if(CMAKE_CXX_COMPILER) set(FLAME_CXX_FLAG_NO_RTTI "/GR") set(FLAME_CXX_FLAG_RTTI "/GR-") - set(FLAME_CXX_FLAG_NO_EXCEPTIONS "/EHs-") - set(FLAME_CXX_FLAG_EXCEPTIONS "/EHs") + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "/EHsc-") + set(FLAME_CXX_FLAG_EXCEPTIONS "/EHsc") endif() endif() +string(REPLACE + "${FLAME_CXX_FLAG_NO_RTTI}" "" + CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} +) +string(REPLACE + "${FLAME_CXX_FLAG_RTTI}" "" + CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS}" +) +string(REPLACE + "${FLAME_CXX_FLAG_NO_EXCEPTIONS}" "" + CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} +) +string(REPLACE + "${FLAME_CXX_FLAG_EXCEPTIONS}" "" + CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} +) if(UNIX) include(Platform/Unix) From 8265d9c766b8be0ad0c4b1a92f16c1f131350209 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Tue, 9 Mar 2021 02:39:03 +0300 Subject: [PATCH 52/54] Add compile flags for binaries and using CTest --- cmake/Functions/CompileBinaryFunctions.cmake | 93 ++++++++++++++++++-- cmake/Functions/ResolveFunctions.cmake | 17 +++- cmake/Properties/TargetProperties.cmake | 19 +++- 3 files changed, 119 insertions(+), 10 deletions(-) diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 8e8057e..222cb1a 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -4,10 +4,10 @@ function(internal_compile_binary) check_internal_use() - set(OPTIONS "DEBUG") + set(OPTIONS "DEBUG" "TEST" "RTTI" "NO_RTTI" "EXCEPTIONS" "NO_EXCEPTIONS") set(VALUES "NAME" "ALIAS_NAME" "INSTALL_PATH") set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" - "DEPENDENCY_TARGET_LIST") + "DEPENDENCY_TARGET_LIST" "TEST_ARGUMENTS") cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") internal_compile_binary_start_function() @@ -36,6 +36,24 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_oneline("BINARY_NAME = ") print_debug_value_newline(${BINARY_NAME}) + print_debug_function_oneline("BINARY_TEST = ") + print_debug_value_newline(${BINARY_TEST}) + + print_debug_function_oneline("BINARY_TEST_ARGUMENTS = ") + print_debug_value_newline(${BINARY_TEST_ARGUMENTS}) + + print_debug_function_oneline("BINARY_NO_RTTI = ") + print_debug_value_newline("${BINARY_NO_RTTI}") + + print_debug_function_oneline("BINARY_RTTI = ") + print_debug_value_newline("${BINARY_RTTI}") + + print_debug_function_oneline("BINARY_NO_EXCEPTIONS = ") + print_debug_value_newline("${BINARY_NO_EXCEPTIONS}") + + print_debug_function_oneline("BINARY_EXCEPTIONS = ") + print_debug_value_newline("${BINARY_EXCEPTIONS}") + print_debug_function_oneline("BINARY_ALIAS_NAME = ") print_debug_value_newline(${BINARY_ALIAS_NAME}) @@ -65,9 +83,17 @@ macro(internal_compile_binary_print_parse_result) endmacro(internal_compile_binary_print_parse_result) macro(internal_compile_binary_process_parameters) + internal_print_warning_not_support("${BINARY_LINK_FLAGS}" LINK_FLAGS) + internal_print_warning_not_support("${BINARY_INSTALL_PATH}" INSTALL_PATH) + + # BINARY_NAME + if(NOT BINARY_NAME) message_fatal("Need 'NAME'.") endif() + + # BINARY_SOURCE_LIST + if(BINARY_SOURCE_LIST) list(APPEND SOURCE_LIST ${BINARY_SOURCE_LIST}) endif() @@ -75,9 +101,57 @@ macro(internal_compile_binary_process_parameters) message_fatal("Need 'SOURCE_LIST'.") endif() - internal_print_warning_not_support("${BINARY_COMPILE_FLAGS}" COMPILE_FLAGS) - internal_print_warning_not_support("${BINARY_LINK_FLAGS}" LINK_FLAGS) - internal_print_warning_not_support("${BINARY_INSTALL_PATH}" INSTALL_PATH) + # BINARY_RTTI & BINARY_NO_RTTI + + if(BINARY_RTTI AND BINARY_NO_RTTI) + set(MESSAGE_STRING "options 'RTTI' and 'NO_RTTI' cannot be used simultaneously") + message_fatal("${FUNCTION_NAME}.${BINARY_NAME}: ${MESSAGE_STRING}") + endif() + + if((NOT BINARY_RTTI) AND (NOT BINARY_NO_RTTI)) + if(FLAME_CXX_NO_RTTI) + set(MESSAGE_OPTION "NO_RTTI") + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_RTTI}") + else() + set(MESSAGE_OPTION "RTTI") + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_RTTI}") + endif() + set(MESSAGE_STRING "not set 'RTTI' or 'NO_RTTI'. Used '${MESSAGE_OPTION}'") + message_status("${FUNCTION_NAME}.${BINARY_NAME}: ${MESSAGE_STRING}") + unset(MESSAGE_STRING) + unset(MESSAGE_OPTION) + elseif(BINARY_RTTI) + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_RTTI}") + elseif(BINARY_NO_RTTI) + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_RTTI}") + endif() + + # BINARY_EXCEPTIONS & BINARY_NO_EXCEPTIONS + + if(BINARY_EXCEPTIONS AND BINARY_NO_EXCEPTIONS) + set(MESSAGE_STRING "options 'EXCEPTIONS' and 'NO_EXCEPTIONS' cannot be used simultaneously") + message_fatal("${FUNCTION_NAME}.${BINARY_NAME}: ${MESSAGE_STRING}") + endif() + + if((NOT BINARY_EXCEPTIONS) AND (NOT BINARY_NO_EXCEPTIONS)) + if(FLAME_CXX_NO_EXCEPTIONS) + set(MESSAGE_OPTION "NO_EXCEPTIONS") + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") + else() + set(MESSAGE_OPTION "EXCEPTIONS") + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_EXCEPTIONS}") + endif() + + set(MESSAGE_STRING "not set 'EXCEPTIONS' or 'NO_EXCEPTIONS'. Used '${MESSAGE_OPTION}'") + message_status("${FUNCTION_NAME}.${BINARY_NAME}: ${MESSAGE_STRING}") + + unset(MESSAGE_STRING) + unset(MESSAGE_OPTION) + elseif(BINARY_EXCEPTIONS) + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_EXCEPTIONS}") + elseif(BINARY_NO_EXCEPTIONS) + list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") + endif() endmacro(internal_compile_binary_process_parameters) macro(internal_compile_binary_add) @@ -92,6 +166,9 @@ macro(internal_compile_binary_add) "${FLAME_NAME_SEPARATOR}" "${FLAME_CUSTOM_TARGET_SUFFIX}") + if (BINARY_TEST) + set(BINARY_TEST TEST) + endif() internal_add_binary_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" REAL_TARGET "${TARGET_NAME}" @@ -99,10 +176,14 @@ macro(internal_compile_binary_add) #INSTALL_PATH "${BINARY_INSTALL_PATH}" ADDING_FILES "${SOURCE_LIST}" - #COMPILE_FLAGS "${BINARY_COMPILE_FLAGS}" + COMPILE_FLAGS "${BINARY_COMPILE_FLAGS}" DEPENDENCY_LIBRARIES "${BINARY_DEPENDENCY_TARGET_LIST}" #LINK_FLAGS "${BINARY_LINK_FLAGS}" INCLUDE_PATHS "${BINARY_INCLUDE_PATHS}" + + ${BINARY_TEST} + TEST_ARGUMENTS "${BINARY_TEST_ARGUMENTS}" + ${BINARY_DEBUG} ) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index b2d9f29..0f7d86d 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -278,8 +278,12 @@ function(internal_resolve_binaries) target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_HEADERS}) endif() - # Not supported now - #get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) + get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) + if(COMPILE_FLAGS) + foreach(flag ${COMPILE_FLAGS}) + target_compile_options(${REAL_TARGET} PUBLIC ${flag}) + endforeach() + endif() # Not supported now #get_target_property(LINK_FLAGS ${target.property} FLAME_LINK_FLAGS) @@ -300,6 +304,15 @@ function(internal_resolve_binaries) endforeach() endif() + get_target_property(IS_TEST ${target.property} FLAME_TEST) + if(IS_TEST) + get_target_property(TEST_ARGUMENTS ${target.property} FLAME_TEST_ARGUMENTS) + add_test( + NAME "${REAL_TARGET}" + COMMAND ${OUTPUT_NAME} ${TEST_ARGUMENTS} + ) + endif() + print_newline("done") endforeach() diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index d892ebd..9c3e112 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -308,6 +308,7 @@ endfunction(internal_add_shared_target_properties) # Options: # DEBUG - +# TEST - # Values: # PROPERTY_CONTAINER_NAME - # REAL_TARGET - @@ -320,13 +321,14 @@ endfunction(internal_add_shared_target_properties) # DEPENDENCY_LIBRARIES - # COMPILE_FLAGS - # LINK_FLAGS - +# TEST_ARGUMENTS - function(internal_add_binary_target_properties) enable_internal_use() - set(OPTIONS "DEBUG") + set(OPTIONS "DEBUG" "TEST") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" - "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS") + "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" "TEST_ARGUMENTS") cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -362,6 +364,12 @@ function(internal_add_binary_target_properties) print_debug_function_oneline("FLAME_INSTALL_PATH = ") print_debug_value_newline(${FLAME_INSTALL_PATH}) + print_debug_function_oneline("FLAME_TEST = ") + print_debug_value_newline(${FLAME_TEST}) + + print_debug_function_oneline("FLAME_TEST_ARGUMENTS = ") + print_debug_value_newline(${FLAME_TEST_ARGUMENTS}) + print_debug_function_newline("-------- PARSE RESULT --------") endif() @@ -369,6 +377,11 @@ function(internal_add_binary_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_BINARY_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) + if(FLAME_TEST) + set(TEST TRUE) + else() + set(TEST FALSE) + endif() set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} PROPERTIES FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" @@ -380,6 +393,8 @@ function(internal_add_binary_target_properties) FLAME_LINK_FLAGS "${FLAME_LINK_FLAGS}" FLAME_OUTPUT_NAME "${FLAME_OUTPUT_NAME}" FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" + FLAME_TEST "${TEST}" + FLAME_TEST_ARGUMENTS "${FLAME_TEST_ARGUMENTS}" ) end_debug_function() From 6f39e6a6a5c0ff44a12cc5fe6f1bb9c33a4d95d4 Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Wed, 17 Mar 2021 02:24:21 +0300 Subject: [PATCH 53/54] Update include orider of modules and comments for 'NO_RTTI' and 'NO_EXCEPTIONS' options --- cmake/CmakeFlameResolver.cmake | 6 ++++-- cmake/Options/FlagOptions.cmake | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cmake/CmakeFlameResolver.cmake b/cmake/CmakeFlameResolver.cmake index e11c7c4..71082a6 100644 --- a/cmake/CmakeFlameResolver.cmake +++ b/cmake/CmakeFlameResolver.cmake @@ -3,10 +3,12 @@ cmake_minimum_required(VERSION 3.14) include(Macros) include(Options) -include(Platform) +include(Properties) include(Variables) include(Functions) -include(Properties) +include(Platform) + +include(Checks) # Public API: diff --git a/cmake/Options/FlagOptions.cmake b/cmake/Options/FlagOptions.cmake index 7936bfb..a6b0215 100644 --- a/cmake/Options/FlagOptions.cmake +++ b/cmake/Options/FlagOptions.cmake @@ -1,11 +1,13 @@ # flags option(FLAME_CXX_NO_RTTI - "Turn off Run-time Type Identification (RTTI). Not support" + "Turn off Run-time Type Identification (RTTI)" OFF ) option(FLAME_CXX_NO_EXCEPTIONS - "Turn off exception support. Not support" + "Turn off exception support" + OFF +) OFF ) From a7dbe1c1cbf943faacc674dcbbf6aa5845b583ba Mon Sep 17 00:00:00 2001 From: Anton Kashcheev Date: Mon, 22 Mar 2021 04:19:04 +0300 Subject: [PATCH 54/54] Add support flags for export all symbols and platform defines from Resolver module (#11) --- cmake/CmakeFlameResolver.cmake | 14 +++- cmake/Compilers.cmake | 73 +++++++++++++++++++ cmake/Compilers/Clang.cmake | 28 +++++++ cmake/Compilers/Gcc.cmake | 28 +++++++ cmake/Compilers/Msvc.cmake | 30 ++++++++ cmake/Functions/CompileBinaryFunctions.cmake | 32 +++++++- cmake/Functions/CompileLibraryFunctions.cmake | 46 +++++++++++- cmake/Functions/ResolveFunctions.cmake | 42 ++++++++--- cmake/Macros.cmake | 9 +++ cmake/Options/CodeGenerationOptions.cmake | 5 ++ cmake/Options/FlagOptions.cmake | 3 + cmake/Platform.cmake | 39 ---------- cmake/Properties/TargetProperties.cmake | 43 +++++++++-- 13 files changed, 326 insertions(+), 66 deletions(-) create mode 100644 cmake/Compilers.cmake create mode 100644 cmake/Compilers/Clang.cmake create mode 100644 cmake/Compilers/Gcc.cmake create mode 100644 cmake/Compilers/Msvc.cmake diff --git a/cmake/CmakeFlameResolver.cmake b/cmake/CmakeFlameResolver.cmake index 71082a6..82e7397 100644 --- a/cmake/CmakeFlameResolver.cmake +++ b/cmake/CmakeFlameResolver.cmake @@ -6,10 +6,9 @@ include(Options) include(Properties) include(Variables) include(Functions) +include(Compilers) include(Platform) -include(Checks) - # Public API: # Options: @@ -35,6 +34,8 @@ endfunction(flame_header_library) # MAKE_SHARED - # NOT_MAKE_POSITION_DEPENDENT_OBJECTS - # NOT_MAKE_POSITION_INDEPENDENT_OBJECTS - +# EXPORT_ALL - +# USE_RESOLVER_DEFINES - # Values: # NAME - # OBJECT_ALIAS_NAME - @@ -45,7 +46,10 @@ endfunction(flame_header_library) # SHARED_INSTALL_PATH - # Lists: # INCLUDE_PATHS - +# DEFINES - # SOURCE_LIST - +# SOURCE_LIST_STATIC - +# SOURCE_LIST_SHARED - # COMMPILE_FLAGS - # LINK_FLAGS - # DEPENDENCY_HEADER_TARGETS - @@ -58,8 +62,9 @@ function(flame_compile_library) endfunction(flame_compile_library) # Options: -# DEBUG - -# HELP - +# DEBUG - +# HELP - +# USE_RESOLVER_DEFINES - # Values: # NAME - # ALIAS_NAME - @@ -67,6 +72,7 @@ endfunction(flame_compile_library) # Lists: # INCLUDE_PATHS - # SOURCE_LIST - +# DEFINES - # COMPILE_FLAGS - # LINK_FLAGS - # DEPENDENCY_HEADER_TARGETS - diff --git a/cmake/Compilers.cmake b/cmake/Compilers.cmake new file mode 100644 index 0000000..d1baeaa --- /dev/null +++ b/cmake/Compilers.cmake @@ -0,0 +1,73 @@ +if((NOT CMAKE_CXX_COMPILER) AND (NOT CMAKE_C_COMPILER)) + message(FATAL_ERROR "Only for C and/or C++") +endif() + +include(Compilers/Gcc) +include(Compilers/Clang) +include(Compilers/Msvc) + +if(NOT CMAKE_RESOLVER_COMPILER_CURRENT_ID) + message(FATAL_ERROR "Compiler is not supported") +endif() + +set(FLAME_DEFINE_COMPILER_CURRENT + CMAKE_RESOLVER_COMPILER_CURRENT=${CMAKE_RESOLVER_COMPILER_CURRENT_ID}) + +set(FLAME_FLAGS + ${FLAME_CXX_FLAG_NO_RTTI} + ${FLAME_CXX_FLAG_RTTI} + ${FLAME_CXX_FLAG_NO_EXCEPTIONS} + ${FLAME_CXX_FLAG_EXCEPTIONS} +) +foreach(flag ${FLAME_FLAGS}) + string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +endforeach() + +function(flame_shared_set_export_symbols TARGET_NAME) + if(CMAKE_RESOLVER_COMPILER_CURRENT_ID EQUAL CMAKE_RESOLVER_COMPILER_GCC_ID) + flame_shared_set_export_symbols_gcc(${TARGET_NAME}) + elseif(CMAKE_RESOLVER_COMPILER_CURRENT_ID EQUAL CMAKE_RESOLVER_COMPILER_CLANG_ID) + flame_shared_set_export_symbols_clang(${TARGET_NAME}) + elseif(CMAKE_RESOLVER_COMPILER_CURRENT_ID EQUAL CMAKE_RESOLVER_COMPILER_MSVC_ID) + flame_shared_set_export_symbols_msvc(${TARGET_NAME}) + endif() +endfunction() + +function(flame_get_platform_defines OUT_LIST) + set(FLAME_PLATFORM_FLAGS + ${FLAME_DEFINE_COMPILER_CURRENT} + ${FLAME_DEFINE_COMPILER_GCC} + ${FLAME_DEFINE_COMPILER_CLANG} + ${FLAME_DEFINE_COMPILER_MSVC} + ${FLAME_DEFINE_EXPORT} + ) + set(${OUT_LIST} ${FLAME_PLATFORM_FLAGS} PARENT_SCOPE) +endfunction() + +function(flame_get_rtti_defines RTTI_ON OUT_LIST) + if(RTTI_ON) + set(DEFINE_RTTI + CMAKE_RESOLVER_RTTI_ENABLED=1 + CMAKE_RESOLVER_RTTI_DISABLED=0) + else() + set(DEFINE_RTTI + CMAKE_RESOLVER_RTTI_ENABLED=0 + CMAKE_RESOLVER_RTTI_DISABLED=1) + endif() + + set(${OUT_LIST} ${DEFINE_RTTI} PARENT_SCOPE) +endfunction() + +function(flame_get_exception_defines EXCEPTIONS_ON OUT_LIST) + if(EXCEPTIONS_ON) + set(DEFINE_EXCEPTIONS + CMAKE_RESOLVER_EXCEPTIONS_ENABLED=1 + CMAKE_RESOLVER_EXCEPTIONS_DISABLED=0) + else() + set(DEFINE_EXCEPTIONS + CMAKE_RESOLVER_EXCEPTIONS_ENABLED=0 + CMAKE_RESOLVER_EXCEPTIONS_DISABLED=1) + endif() + + set(${OUT_LIST} ${DEFINE_EXCEPTIONS} PARENT_SCOPE) +endfunction() diff --git a/cmake/Compilers/Clang.cmake b/cmake/Compilers/Clang.cmake new file mode 100644 index 0000000..842f2c7 --- /dev/null +++ b/cmake/Compilers/Clang.cmake @@ -0,0 +1,28 @@ +generate_random_id(CMAKE_RESOLVER_COMPILER_CLANG_ID) + +set(FLAME_DEFINE_COMPILER_CLANG + CMAKE_RESOLVER_COMPILER_CLANG=${CMAKE_RESOLVER_COMPILER_CLANG_ID}) + +if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) + message(STATUS "Detect clang") + + set(FLAME_DEFINE_EXPORT "CMAKE_RESOLVER_EXPORT=__attribute__((visibility(default)))") + + set(CMAKE_RESOLVER_COMPILER_CURRENT_ID ${CMAKE_RESOLVER_COMPILER_CLANG_ID}) + + set(FLAME_FLAG_ALL_EXPORT "-fvisibility=default") + set(FLAME_FLAG_NO_EXPORT "-fvisibility=hidden") + + if(CMAKE_CXX_COMPILER) + set(FLAME_CXX_FLAG_NO_RTTI "-fno-rtti") + set(FLAME_CXX_FLAG_RTTI "-frtti") + + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "-fno-cxx-exceptions") + set(FLAME_CXX_FLAG_EXCEPTIONS "-fcxx-exceptions") + endif() +endif() + +function(flame_shared_set_export_symbols_clang TARGET_NAME) + flame_shared_set_export_symbols_gcc(${TARGET_NAME}) +endfunction() diff --git a/cmake/Compilers/Gcc.cmake b/cmake/Compilers/Gcc.cmake new file mode 100644 index 0000000..f8b1941 --- /dev/null +++ b/cmake/Compilers/Gcc.cmake @@ -0,0 +1,28 @@ +generate_random_id(CMAKE_RESOLVER_COMPILER_GCC_ID) + +set(FLAME_DEFINE_COMPILER_GCC + CMAKE_RESOLVER_COMPILER_GCC=${CMAKE_RESOLVER_COMPILER_GCC_ID}) + +if(("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")) + message(STATUS "Detect GCC") + + set(FLAME_DEFINE_EXPORT "CMAKE_RESOLVER_EXPORT=__attribute__((visibility(\"default\")))") + + set(CMAKE_RESOLVER_COMPILER_CURRENT_ID ${CMAKE_RESOLVER_COMPILER_GCC_ID}) + + set(FLAME_FLAG_ALL_EXPORT "-fvisibility=default") + set(FLAME_FLAG_NO_EXPORT "-fvisibility=hidden") + + if(CMAKE_CXX_COMPILER) + set(FLAME_CXX_FLAG_NO_RTTI "-fno-rtti") + set(FLAME_CXX_FLAG_RTTI "") + + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "-fno-exceptions") + set(FLAME_CXX_FLAG_EXCEPTIONS "-fexceptions") + endif() +endif() + +function(flame_shared_set_export_symbols_gcc TARGET_NAME) + target_compile_options(${TARGET_NAME} PRIVATE ${FLAME_FLAG_ALL_EXPORT}) +endfunction() diff --git a/cmake/Compilers/Msvc.cmake b/cmake/Compilers/Msvc.cmake new file mode 100644 index 0000000..00efa79 --- /dev/null +++ b/cmake/Compilers/Msvc.cmake @@ -0,0 +1,30 @@ +generate_random_id(CMAKE_RESOLVER_COMPILER_MSVC_ID) + +set(FLAME_DEFINE_COMPILER_MSVC + CMAKE_RESOLVER_COMPILER_MSVC=${CMAKE_RESOLVER_COMPILER_MSVC_ID}) + +if(("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") + OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")) + message(STATUS "Detect CL.EXE") + + set(FLAME_DEFINE_EXPORT "CMAKE_RESOLVER_EXPORT=__declspec(dllexport)") + + set(CMAKE_RESOLVER_COMPILER_CURRENT_ID ${CMAKE_RESOLVER_COMPILER_MSVC_ID}) + + set(FLAME_FLAG_BIG_OBJECT "/bigobj") + + if(CMAKE_CXX_COMPILER) + set(FLAME_CXX_FLAG_NO_RTTI "/GR") + set(FLAME_CXX_FLAG_RTTI "/GR-") + + set(FLAME_CXX_FLAG_NO_EXCEPTIONS "/EHsc-") + set(FLAME_CXX_FLAG_EXCEPTIONS "/EHsc") + endif() +endif() + +function(flame_shared_set_export_symbols_msvc TARGET_NAME) + target_compile_options(${TARGET_NAME} PRIVATE ${FLAME_FLAG_BIG_OBJECT}) + set_target_properties(${TARGET_NAME} + PROPERTIES + WINDOWS_EXPORT_ALL_SYMBOLS ON) +endfunction() diff --git a/cmake/Functions/CompileBinaryFunctions.cmake b/cmake/Functions/CompileBinaryFunctions.cmake index 222cb1a..aee8cb1 100644 --- a/cmake/Functions/CompileBinaryFunctions.cmake +++ b/cmake/Functions/CompileBinaryFunctions.cmake @@ -4,9 +4,10 @@ function(internal_compile_binary) check_internal_use() - set(OPTIONS "DEBUG" "TEST" "RTTI" "NO_RTTI" "EXCEPTIONS" "NO_EXCEPTIONS") + set(OPTIONS "DEBUG" "TEST" "RTTI" "NO_RTTI" "EXCEPTIONS" "NO_EXCEPTIONS" + "USE_RESOLVER_DEFINES") set(VALUES "NAME" "ALIAS_NAME" "INSTALL_PATH") - set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" + set(LISTS "DEFINES" "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_TARGET_LIST" "TEST_ARGUMENTS") cmake_parse_arguments("BINARY" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -60,6 +61,12 @@ macro(internal_compile_binary_print_parse_result) print_debug_function_oneline("BINARY_INSTALL_PATH = ") print_debug_value_newline(${BINARY_INSTALL_PATH}) + print_debug_function_oneline("BINARY_USE_RESOLVER_DEFINES = ") + print_debug_value_newline(${BINARY_USE_RESOLVER_DEFINES}) + + print_debug_function_oneline("BINARY_DEFINES = ") + print_debug_value_newline(${BINARY_DEFINES}) + print_debug_function_oneline("BINARY_INCLUDE_PATHS = ") print_debug_value_newline(${BINARY_INCLUDE_PATHS}) @@ -111,9 +118,11 @@ macro(internal_compile_binary_process_parameters) if((NOT BINARY_RTTI) AND (NOT BINARY_NO_RTTI)) if(FLAME_CXX_NO_RTTI) set(MESSAGE_OPTION "NO_RTTI") + set(BINARY_RTTI OFF) list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_RTTI}") else() set(MESSAGE_OPTION "RTTI") + set(BINARY_RTTI ON) list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_RTTI}") endif() set(MESSAGE_STRING "not set 'RTTI' or 'NO_RTTI'. Used '${MESSAGE_OPTION}'") @@ -136,9 +145,11 @@ macro(internal_compile_binary_process_parameters) if((NOT BINARY_EXCEPTIONS) AND (NOT BINARY_NO_EXCEPTIONS)) if(FLAME_CXX_NO_EXCEPTIONS) set(MESSAGE_OPTION "NO_EXCEPTIONS") + set(BINARY_EXCEPTIONS OFF) list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") else() set(MESSAGE_OPTION "EXCEPTIONS") + set(BINARY_EXCEPTIONS ON) list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_EXCEPTIONS}") endif() @@ -152,6 +163,22 @@ macro(internal_compile_binary_process_parameters) elseif(BINARY_NO_EXCEPTIONS) list(APPEND BINARY_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") endif() + + if(BINARY_USE_RESOLVER_DEFINES) + flame_get_platform_defines(PLATFORM_DEFINES) + list(APPEND BINARY_DEFINES ${PLATFORM_DEFINES}) + + if(CMAKE_CXX_COMPILER) + flame_get_rtti_defines(${BINARY_RTTI} DEFINE_RTTI) + flame_get_exception_defines(${BINARY_EXCEPTIONS} DEFINE_EXCEPTIONS) + list(APPEND BINARY_DEFINES ${DEFINE_RTTI} ${DEFINE_EXCEPTIONS}) + + unset(DEFINE_RTTI) + unset(DEFINE_EXCEPTIONS) + endif() + + unset(PLATFORM_DEFINES) + endif() endmacro(internal_compile_binary_process_parameters) macro(internal_compile_binary_add) @@ -180,6 +207,7 @@ macro(internal_compile_binary_add) DEPENDENCY_LIBRARIES "${BINARY_DEPENDENCY_TARGET_LIST}" #LINK_FLAGS "${BINARY_LINK_FLAGS}" INCLUDE_PATHS "${BINARY_INCLUDE_PATHS}" + DEFINES "${BINARY_DEFINES}" ${BINARY_TEST} TEST_ARGUMENTS "${BINARY_TEST_ARGUMENTS}" diff --git a/cmake/Functions/CompileLibraryFunctions.cmake b/cmake/Functions/CompileLibraryFunctions.cmake index d5ce01f..2099430 100644 --- a/cmake/Functions/CompileLibraryFunctions.cmake +++ b/cmake/Functions/CompileLibraryFunctions.cmake @@ -8,13 +8,14 @@ function(internal_compile_library) set(OPTIONS "DEBUG" "MAKE_STATIC" "MAKE_SHARED" "NOT_MAKE_POSITION_DEPENDENT_OBJECTS" "NOT_MAKE_POSITION_INDEPENDENT_OBJECTS" - "RTTI" "NO_RTTI" "EXCEPTIONS" "NO_EXCEPTIONS") + "RTTI" "NO_RTTI" "EXCEPTIONS" "NO_EXCEPTIONS" + "EXPORT_ALL" "USE_RESOLVER_DEFINES") set(VALUES "NAME" "OBJECT_ALIAS_NAME" "INDEPENDENT_OBJECT_ALIAS_NAME" "STATIC_ALIAS_NAME" "SHARED_ALIAS_NAME" "STATIC_INSTALL_PATH" "SHARED_INSTALL_PATH") - set(LISTS "INCLUDE_PATHS" "SOURCE_LIST" "COMPILE_FLAGS" "LINK_FLAGS" - "DEPENDENCY_HEADER_TARGETS" "DEPENDENCY_TARGETS_FOR_STATIC" - "DEPENDENCY_TARGETS_FOR_SHARED") + set(LISTS "DEFINES" "INCLUDE_PATHS" "SOURCE_LIST" "SOURCE_LIST_STATIC" + "SOURCE_LIST_SHARED" "COMPILE_FLAGS" "LINK_FLAGS" "DEPENDENCY_HEADER_TARGETS" + "DEPENDENCY_TARGETS_FOR_STATIC" "DEPENDENCY_TARGETS_FOR_SHARED") cmake_parse_arguments("COMPILE" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") internal_compile_library_start_function() @@ -84,6 +85,12 @@ macro(internal_compile_library_print_parse_result) print_debug_function_oneline("COMPILE_EXCEPTIONS = ") print_debug_value_newline("${COMPILE_EXCEPTIONS}") + print_debug_function_oneline("COMPILE_EXPORT_ALL = ") + print_debug_value_newline("${COMPILE_EXCEPTIONS}") + + print_debug_function_oneline("COMPILE_USE_RESOLVER_DEFINES = ") + print_debug_value_newline("${COMPILE_USE_RESOLVER_DEFINES}") + # values print_debug_function_oneline("COMPILE_NAME = ") @@ -109,6 +116,9 @@ macro(internal_compile_library_print_parse_result) # lists + print_debug_function_oneline("COMPILE_DEFINES = ") + print_debug_value_newline("${COMPILE_DEFINES}") + print_debug_function_oneline("COMPILE_INCLUDE_PATHS = ") print_debug_value_newline("${COMPILE_INCLUDE_PATHS}") @@ -154,9 +164,11 @@ macro(internal_compile_library_process_parameters) elseif((NOT COMPILE_RTTI) AND (NOT COMPILE_NO_RTTI)) if(FLAME_CXX_NO_RTTI) set(MESSAGE_OPTION "NO_RTTI") + set(COMPILE_RTTI OFF) list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_RTTI}") else() set(MESSAGE_OPTION "RTTI") + set(COMPILE_RTTI ON) list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_RTTI}") endif() message_status( @@ -176,9 +188,11 @@ macro(internal_compile_library_process_parameters) elseif((NOT COMPILE_EXCEPTIONS) AND (NOT COMPILE_NO_EXCEPTIONS)) if(FLAME_CXX_NO_EXCEPTIONS) set(MESSAGE_OPTION "NO_EXCEPTIONS") + set(COMPILE_EXCEPTIONS OFF) list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") else() set(MESSAGE_OPTION "EXCEPTIONS") + set(COMPILE_EXCEPTIONS ON) list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_EXCEPTIONS}") endif() message_status( @@ -191,6 +205,22 @@ macro(internal_compile_library_process_parameters) list(APPEND COMPILE_COMPILE_FLAGS "${FLAME_CXX_FLAG_NO_EXCEPTIONS}") endif() + if(COMPILE_USE_RESOLVER_DEFINES) + flame_get_platform_defines(PLATFORM_DEFINES) + list(APPEND COMPILE_DEFINES ${PLATFORM_DEFINES}) + + if(CMAKE_CXX_COMPILER) + flame_get_rtti_defines(${COMPILE_RTTI} DEFINE_RTTI) + flame_get_exception_defines(${COMPILE_EXCEPTIONS} DEFINE_EXCEPTIONS) + list(APPEND COMPILE_DEFINES ${DEFINE_RTTI} ${DEFINE_EXCEPTIONS}) + + unset(DEFINE_RTTI) + unset(DEFINE_EXCEPTIONS) + endif() + + unset(PLATFORM_DEFINES) + endif() + message_status("internal_compile_library.${COMPILE_NAME}: COMPILE_COMPILE_FLAGS = ${COMPILE_COMPILE_FLAGS}") internal_print_warning_not_support("${COMPILE_NOT_MAKE_POSITION_DEPENDENT_OBJECTS}" @@ -248,6 +278,7 @@ macro(internal_compile_independent_object_library) REAL_TARGET "${TARGET_NAME}" ADDING_FILES "${SOURCE_LIST}" INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" + DEFINES "${COMPILE_DEFINES}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" POSITION_INDEPENDENT @@ -286,6 +317,7 @@ macro(internal_compile_dependent_object_library) REAL_TARGET "${TARGET_NAME}" ADDING_FILES "${SOURCE_LIST}" INCLUDE_PATHS "${COMPILE_INCLUDE_PATHS}" + DEFINES "${COMPILE_DEFINES}" DEPENDENCY_HEADERS "${COMPILE_DEPENDENCY_HEADER_TARGETS}" COMPILE_FLAGS "${COMPILE_COMPILE_FLAGS}" OBJECT_ALIASES "${COMPILE_OBJECT_ALIAS_NAME}" @@ -371,6 +403,10 @@ macro(internal_compile_shared_library) "${FLAME_NAME_SEPARATOR}" "${FLAME_OBJECT_INDEPENDENT_MODULE_SUFFIX}") + if(COMPILE_EXPORT_ALL) + set(COMPILE_EXPORT_ALL EXPORT_ALL) + endif() + #set(DEBUG DEBUG) internal_add_shared_target_properties( PROPERTY_CONTAINER_NAME "${TARGET_CUSTOM_PROPERTIES}" @@ -383,6 +419,8 @@ macro(internal_compile_shared_library) #LINK_FLAGS "${}" OUTPUT_NAME "${COMPILE_NAME}" LIBRARY_ALIASES "${COMPILE_SHARED_ALIAS_NAME}" + ${COMPILE_EXPORT_ALL} + ${COMPILE_DEBUG} ) diff --git a/cmake/Functions/ResolveFunctions.cmake b/cmake/Functions/ResolveFunctions.cmake index 8670c86..629b412 100644 --- a/cmake/Functions/ResolveFunctions.cmake +++ b/cmake/Functions/ResolveFunctions.cmake @@ -76,24 +76,37 @@ function(internal_resolve_object_libraries) get_target_property(INCLUDE_PATHS ${target.property} FLAME_INCLUDE_PATHS) if(INCLUDE_PATHS) - target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) + target_include_directories(${REAL_TARGET} PRIVATE ${INCLUDE_PATHS}) + endif() + + get_target_property(DEFINES ${target.property} FLAME_DEFINES) + if(DEFINES) + target_compile_definitions(${REAL_TARGET} PRIVATE ${DEFINES}) endif() - get_target_property(POSITION_INDEPENDENT ${target.property} FLAME_POSITION_INDEPENDENT) + get_target_property(POSITION_INDEPENDENT ${target.property} + FLAME_POSITION_INDEPENDENT) if(POSITION_INDEPENDENT) set_property(TARGET ${REAL_TARGET} PROPERTY POSITION_INDEPENDENT_CODE ${POSITION_INDEPENDENT}) + + get_target_property(EXPORT_ALL_SYMBOLS ${target.property} + FLAME_EXPORT_ALL_SYMBOLS) + if(EXPORT_ALL_SYMBOLS) + flame_shared_set_export_symbols("${REAL_TARGET}") + endif() endif() - get_target_property(HEADER_DEPENDENCIES ${target.property} FLAME_DEPENDENCY_HEADERS) + get_target_property(HEADER_DEPENDENCIES ${target.property} + FLAME_DEPENDENCY_HEADERS) if(HEADER_DEPENDENCIES) - target_link_libraries(${REAL_TARGET} PUBLIC ${dependency}) + target_link_libraries(${REAL_TARGET} PRIVATE ${dependency}) endif() get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) if(COMPILE_FLAGS) foreach(flag ${COMPILE_FLAGS}) - target_compile_options(${REAL_TARGET} PUBLIC ${flag}) + target_compile_options(${REAL_TARGET} PRIVATE ${flag}) endforeach() endif() @@ -136,7 +149,7 @@ function(internal_resolve_static_libraries) get_target_property(HEADER_TARGETS ${target.property} FLAME_DEPENDENCY_HEADERS) if(HEADER_TARGETS) - target_link_libraries(${REAL_TARGET} PUBLIC ${HEADER_TARGETS}) + target_link_libraries(${REAL_TARGET} PRIVATE ${HEADER_TARGETS}) endif() # Not supported now @@ -203,7 +216,7 @@ function(internal_resolve_shared_libraries) get_target_property(HEADER_TARGETS ${target.property} FLAME_DEPENDENCY_HEADERS) if(HEADER_TARGETS) - target_link_libraries(${REAL_TARGET} PUBLIC ${HEADER_TARGETS}) + target_link_libraries(${REAL_TARGET} PRIVATE ${HEADER_TARGETS}) endif() # Not supported now @@ -218,6 +231,12 @@ function(internal_resolve_shared_libraries) OUTPUT_NAME "${OUTPUT_NAME}") endif() + get_target_property(EXPORT_ALL_SYMBOLS ${target.property} + FLAME_EXPORT_ALL) + if(EXPORT_ALL_SYMBOLS) + flame_shared_set_export_symbols("${REAL_TARGET}") + endif() + if(FLAME_IMPLIB_LIBRARY_SUFFIX) set_target_properties(${REAL_TARGET} PROPERTIES IMPORT_SUFFIX "${FLAME_IMPLIB_LIBRARY_SUFFIX}") @@ -273,6 +292,11 @@ function(internal_resolve_binaries) target_include_directories(${REAL_TARGET} PUBLIC ${INCLUDE_PATHS}) endif() + get_target_property(DEFINES ${target.property} FLAME_DEFINES) + if(DEFINES) + target_compile_definitions(${REAL_TARGET} PRIVATE ${DEFINES}) + endif() + get_target_property(DEPENDENCY_LIBRARIES ${target.property} FLAME_DEPENDENCY_LIBRARIES) if(DEPENDENCY_LIBRARIES) target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_LIBRARIES}) @@ -280,13 +304,13 @@ function(internal_resolve_binaries) get_target_property(DEPENDENCY_HEADERS ${target.property} FLAME_DEPENDENCY_HEADERS) if(DEPENDENCY_HEADERS) - target_link_libraries(${REAL_TARGET} PUBLIC ${DEPENDENCY_HEADERS}) + target_link_libraries(${REAL_TARGET} PRIVATE ${DEPENDENCY_HEADERS}) endif() get_target_property(COMPILE_FLAGS ${target.property} FLAME_COMPILE_FLAGS) if(COMPILE_FLAGS) foreach(flag ${COMPILE_FLAGS}) - target_compile_options(${REAL_TARGET} PUBLIC ${flag}) + target_compile_options(${REAL_TARGET} PRIVATE ${flag}) endforeach() endif() diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake index dab972a..8377ea2 100644 --- a/cmake/Macros.cmake +++ b/cmake/Macros.cmake @@ -50,3 +50,12 @@ macro(check_internal_use) message_fatal("${FLAME_SIMPLE_PREFIX} It's internal function. You can not use it") endif() endmacro(check_internal_use) + +# +# +# +macro(generate_random_id OUT_VAR) + string(RANDOM LENGTH 8 ALPHABET 0123456789ABCDEF TMP) + set(${OUT_VAR} 0x${TMP}) + unset(TMP) +endmacro() diff --git a/cmake/Options/CodeGenerationOptions.cmake b/cmake/Options/CodeGenerationOptions.cmake index b07ffbe..64cf520 100644 --- a/cmake/Options/CodeGenerationOptions.cmake +++ b/cmake/Options/CodeGenerationOptions.cmake @@ -17,3 +17,8 @@ option(FLAME_MAKE_STANDALONE "Make all modules as standalone. Not support" OFF ) + +option(FLAME_EXPORT_ALL_SYMBOLS + "Export all symbols from shared libraries" + ON +) diff --git a/cmake/Options/FlagOptions.cmake b/cmake/Options/FlagOptions.cmake index a6b0215..3eb21d8 100644 --- a/cmake/Options/FlagOptions.cmake +++ b/cmake/Options/FlagOptions.cmake @@ -9,5 +9,8 @@ option(FLAME_CXX_NO_EXCEPTIONS "Turn off exception support" OFF ) + +option(FLAME_PLATFORM_DEFINES + "Turn on platform defines" OFF ) diff --git a/cmake/Platform.cmake b/cmake/Platform.cmake index 59898d9..316eb35 100644 --- a/cmake/Platform.cmake +++ b/cmake/Platform.cmake @@ -5,45 +5,6 @@ if(FLAME_THREADING) endif() endif() -if(CMAKE_CXX_COMPILER) - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(FLAME_CXX_FLAG_NO_RTTI "-fno-rtti") - set(FLAME_CXX_FLAG_RTTI "-frtti") - - set(FLAME_CXX_FLAG_NO_EXCEPTIONS "-fno-cxx-exceptions") - set(FLAME_CXX_FLAG_EXCEPTIONS "-fcxx-exceptions") - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - set(FLAME_CXX_FLAG_NO_RTTI "-fno-rtti") - set(FLAME_CXX_FLAG_RTTI "") - - set(FLAME_CXX_FLAG_NO_EXCEPTIONS "-fno-exceptions") - set(FLAME_CXX_FLAG_EXCEPTIONS "-fexceptions") - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - set(FLAME_CXX_FLAG_NO_RTTI "/GR") - set(FLAME_CXX_FLAG_RTTI "/GR-") - - set(FLAME_CXX_FLAG_NO_EXCEPTIONS "/EHsc-") - set(FLAME_CXX_FLAG_EXCEPTIONS "/EHsc") - endif() -endif() -string(REPLACE - "${FLAME_CXX_FLAG_NO_RTTI}" "" - CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -) -string(REPLACE - "${FLAME_CXX_FLAG_RTTI}" "" - CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS}" -) -string(REPLACE - "${FLAME_CXX_FLAG_NO_EXCEPTIONS}" "" - CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -) -string(REPLACE - "${FLAME_CXX_FLAG_EXCEPTIONS}" "" - CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -) - if(UNIX) include(Platform/Unix) endif(UNIX) diff --git a/cmake/Properties/TargetProperties.cmake b/cmake/Properties/TargetProperties.cmake index 9c3e112..e3a6a7c 100644 --- a/cmake/Properties/TargetProperties.cmake +++ b/cmake/Properties/TargetProperties.cmake @@ -9,6 +9,7 @@ # Lists: # ADDING_FILES - Sources and headers # INCLUDE_PATHS - +# DEFINES - # DEPENDENCY_HEADERS - # LIBRARY_ALIASES - function(internal_add_header_target_properties) @@ -37,6 +38,9 @@ function(internal_add_header_target_properties) print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") print_debug_value_newline(${FLAME_INCLUDE_PATHS}) + print_debug_function_oneline("FLAME_DEFINES = ") + print_debug_value_newline(${FLAME_DEFINES}) + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) @@ -57,6 +61,7 @@ function(internal_add_header_target_properties) PROPERTIES FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" FLAME_ADDING_FILES "${FLAME_ADDING_FILES}" + FLAME_DEFINES "${FLAME_DEFINES}" FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" FLAME_LIBRARY_ALIASES "${FLAME_LIBRARY_ALIASES}" FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" @@ -74,6 +79,7 @@ endfunction(internal_add_header_target_properties) # Lists: # ADDING_FILES - # INCLUDE_PATHS - +# DEFINES - # DEPENDENCY_HEADERS - # COMPILE_FLAGS - # OBJECT_ALIASES - @@ -82,8 +88,8 @@ function(internal_add_object_target_properties) set(OPTIONS "DEBUG" "POSITION_INDEPENDENT") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET") - set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "COMPILE_FLAGS" - "OBJECT_ALIASES") + set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEFINES" "DEPENDENCY_HEADERS" "COMPILE_FLAGS" + "COMPILE_DIFINITIONS" "OBJECT_ALIASES") cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -104,6 +110,9 @@ function(internal_add_object_target_properties) print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") print_debug_value_newline(${FLAME_INCLUDE_PATHS}) + print_debug_function_oneline("FLAME_DEFINES = ") + print_debug_value_newline(${FLAME_DEFINES}) + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) @@ -128,6 +137,7 @@ function(internal_add_object_target_properties) FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" FLAME_ADDING_FILES "${FLAME_ADDING_FILES}" FLAME_INCLUDE_PATHS "${FLAME_INCLUDE_PATHS}" + FLAME_DEFINES "${FLAME_DEFINES}" FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" FLAME_POSITION_INDEPENDENT "${FLAME_POSITION_INDEPENDENT}" @@ -216,12 +226,12 @@ function(internal_add_static_target_properties) FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" ) - end_debug_function() endfunction(internal_add_static_target_properties) # Options: -# DEBUG - +# DEBUG - +# EXPORT_ALL - # Values: # PROPERTY_CONTAINER_NAME - # REAL_TARGET - @@ -238,7 +248,7 @@ endfunction(internal_add_static_target_properties) function(internal_add_shared_target_properties) check_internal_use() - set(OPTIONS "DEBUG") + set(OPTIONS "DEBUG" "EXPORT_ALL") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") set(LISTS "ADDING_SOURCES" "ADDING_OBJECTS" "DEPENDENCY_HEADERS" "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" "LIBRARY_ALIASES") @@ -271,6 +281,9 @@ function(internal_add_shared_target_properties) print_debug_function_oneline("FLAME_COMPILE_FLAGS = ") print_debug_value_newline(${FLAME_COMPILE_FLAGS}) + print_debug_function_oneline("FLAME_EXPORT_ALL = ") + print_debug_value_newline(${FLAME_EXPORT_ALL}) + print_debug_function_oneline("FLAME_LINK_FLAGS = ") print_debug_value_newline(${FLAME_LINK_FLAGS}) @@ -290,6 +303,11 @@ function(internal_add_shared_target_properties) set_property(GLOBAL APPEND PROPERTY FLAME_SHARED_TARGETS ${FLAME_PROPERTY_CONTAINER_NAME} ) + if(FLAME_EXPORT_ALL) + set(FLAME_EXPORT_ALL ON) + else() + set(FLAME_EXPORT_ALL OFF) + endif() set_target_properties(${FLAME_PROPERTY_CONTAINER_NAME} PROPERTIES FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" @@ -298,6 +316,7 @@ function(internal_add_shared_target_properties) FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" FLAME_DEPENDENCY_LIBRARIES "${FLAME_DEPENDENCY_LIBRARIES}" FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" + FLAME_EXPORT_ALL "${FLAME_EXPORT_ALL}" FLAME_OUTPUT_NAME "${FLAME_OUTPUT_NAME}" FLAME_LIBRARY_ALIASES "${FLAME_LIBRARY_ALIASES}" FLAME_INSTALL_PATH "${FLAME_INSTALL_PATH}" @@ -317,6 +336,7 @@ endfunction(internal_add_shared_target_properties) # Lists: # ADDING_FILES - # INCLUDE_PATHS - +# DEFINES - # DEPENDENCY_HEADERS - # DEPENDENCY_LIBRARIES - # COMPILE_FLAGS - @@ -327,7 +347,7 @@ function(internal_add_binary_target_properties) set(OPTIONS "DEBUG" "TEST") set(VALUES "PROPERTY_CONTAINER_NAME" "REAL_TARGET" "OUTPUT_NAME" "INSTALL_PATH") - set(LISTS "ADDING_FILES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" + set(LISTS "ADDING_FILES" "DEFINES" "INCLUDE_PATHS" "DEPENDENCY_HEADERS" "DEPENDENCY_LIBRARIES" "COMPILE_FLAGS" "LINK_FLAGS" "TEST_ARGUMENTS") cmake_parse_arguments("FLAME" "${OPTIONS}" "${VALUES}" "${LISTS}" "${ARGN}") @@ -343,9 +363,15 @@ function(internal_add_binary_target_properties) print_debug_function_oneline("FLAME_REAL_TARGET = ") print_debug_value_newline(${FLAME_REAL_TARGET}) - print_debug_function_oneline("FLAME_ADDING_FILES = ") + print_debug_function_oneline("FLAME_ADDING_FILES = ") print_debug_value_newline(${FLAME_ADDING_FILES}) + print_debug_function_oneline("FLAME_INCLUDE_PATHS = ") + print_debug_value_newline(${FLAME_INCLUDE_PATHS}) + + print_debug_function_oneline("FLAME_DEFINES = ") + print_debug_value_newline(${FLAME_DEFINES}) + print_debug_function_oneline("FLAME_DEPENDENCY_HEADERS = ") print_debug_value_newline(${FLAME_DEPENDENCY_HEADERS}) @@ -387,6 +413,7 @@ function(internal_add_binary_target_properties) FLAME_REAL_TARGET "${FLAME_REAL_TARGET}" FLAME_ADDING_FILES "${FLAME_ADDING_FILES}" FLAME_INCLUDE_PATHS "${FLAME_INCLUDE_PATHS}" + FLAME_DEFINES "${FLAME_DEFINES}" FLAME_DEPENDENCY_HEADERS "${FLAME_DEPENDENCY_HEADERS}" FLAME_DEPENDENCY_LIBRARIES "${FLAME_DEPENDENCY_LIBRARIES}" FLAME_COMPILE_FLAGS "${FLAME_COMPILE_FLAGS}" @@ -414,7 +441,7 @@ function(internal_target_add_property NAME TARGET_TYPE PROPERTY_NAME PROPERTY_VA OR ("${TARGET_TYPE}" STREQUAL "SHARED") OR ("${TARGET_TYPE}" STREQUAL "BINARY") )) - message_fatal("-- Invalid 'TARGET_TYPE'") + message_fatal("Invalid 'TARGET_TYPE' (TARGET_TYPE != {HEADER, OBJECT, STATIC, SHARED, BINARY})") endif() endfunction(internal_target_add_property)