| @@ -1054,7 +1054,8 @@ endfunction() | |||||
| function (cotire_scan_includes _includesVar) | function (cotire_scan_includes _includesVar) | ||||
| set(_options "") | set(_options "") | ||||
| set(_oneValueArgs COMPILER_ID COMPILER_EXECUTABLE COMPILER_VERSION INCLUDE_SYSTEM_FLAG LANGUAGE UNPARSED_LINES) | set(_oneValueArgs COMPILER_ID COMPILER_EXECUTABLE COMPILER_VERSION INCLUDE_SYSTEM_FLAG LANGUAGE UNPARSED_LINES) | ||||
| set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS) | |||||
| set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS, | |||||
| INCLUDE_PRIORITY_PATH) | |||||
| cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) | cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) | ||||
| set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) | set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) | ||||
| if (NOT _option_LANGUAGE) | if (NOT _option_LANGUAGE) | ||||
| @@ -1104,6 +1105,21 @@ function (cotire_scan_includes _includesVar) | |||||
| "${_option_IGNORE_EXTENSIONS}" | "${_option_IGNORE_EXTENSIONS}" | ||||
| _includes _unparsedLines | _includes _unparsedLines | ||||
| ${_sourceFiles}) | ${_sourceFiles}) | ||||
| if (_option_INCLUDE_PRIORITY_PATH) | |||||
| set (_sortedIncludes "") | |||||
| foreach (_priorityPath ${_option_INCLUDE_PRIORITY_PATH}) | |||||
| foreach (_include ${_includes}) | |||||
| string (FIND ${_include} ${_priorityPath} _position) | |||||
| if (_position GREATER -1) | |||||
| list (APPEND _sortedIncludes ${_include}) | |||||
| endif() | |||||
| endforeach() | |||||
| endforeach() | |||||
| list (INSERT _includes 0 "${_sortedIncludes}") | |||||
| list (REMOVE_DUPLICATES _includes) | |||||
| endif() | |||||
| set (${_includesVar} ${_includes} PARENT_SCOPE) | set (${_includesVar} ${_includes} PARENT_SCOPE) | ||||
| if (_option_UNPARSED_LINES) | if (_option_UNPARSED_LINES) | ||||
| set (${_option_UNPARSED_LINES} ${_unparsedLines} PARENT_SCOPE) | set (${_option_UNPARSED_LINES} ${_unparsedLines} PARENT_SCOPE) | ||||
| @@ -1255,7 +1271,8 @@ function (cotire_generate_prefix_header _prefixFile) | |||||
| set(_options "") | set(_options "") | ||||
| set(_oneValueArgs LANGUAGE COMPILER_EXECUTABLE COMPILER_ID COMPILER_VERSION INCLUDE_SYSTEM_FLAG) | set(_oneValueArgs LANGUAGE COMPILER_EXECUTABLE COMPILER_ID COMPILER_VERSION INCLUDE_SYSTEM_FLAG) | ||||
| set(_multiValueArgs DEPENDS COMPILE_DEFINITIONS COMPILE_FLAGS | set(_multiValueArgs DEPENDS COMPILE_DEFINITIONS COMPILE_FLAGS | ||||
| INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS) | |||||
| INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS | |||||
| INCLUDE_PRIORITY_PATH) | |||||
| cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) | cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) | ||||
| if (_option_DEPENDS) | if (_option_DEPENDS) | ||||
| cotire_check_file_up_to_date(_prefixFileIsUpToDate "${_prefixFile}" ${_option_DEPENDS}) | cotire_check_file_up_to_date(_prefixFileIsUpToDate "${_prefixFile}" ${_option_DEPENDS}) | ||||
| @@ -1292,6 +1309,7 @@ function (cotire_generate_prefix_header _prefixFile) | |||||
| IGNORE_PATH ${_option_IGNORE_PATH} | IGNORE_PATH ${_option_IGNORE_PATH} | ||||
| INCLUDE_PATH ${_option_INCLUDE_PATH} | INCLUDE_PATH ${_option_INCLUDE_PATH} | ||||
| IGNORE_EXTENSIONS ${_option_IGNORE_EXTENSIONS} | IGNORE_EXTENSIONS ${_option_IGNORE_EXTENSIONS} | ||||
| INCLUDE_PRIORITY_PATH ${_option_INCLUDE_PRIORITY_PATH} | |||||
| UNPARSED_LINES _unparsedLines) | UNPARSED_LINES _unparsedLines) | ||||
| cotire_generate_unity_source("${_prefixFile}" | cotire_generate_unity_source("${_prefixFile}" | ||||
| PROLOGUE ${_prologue} EPILOGUE ${_epilogue} LANGUAGE "${_option_LANGUAGE}" ${_selectedHeaders}) | PROLOGUE ${_prologue} EPILOGUE ${_epilogue} LANGUAGE "${_option_LANGUAGE}" ${_selectedHeaders}) | ||||
| @@ -1951,6 +1969,7 @@ function (cotire_generate_target_script _language _configurations _targetSourceD | |||||
| get_target_property(COTIRE_TARGET_PRE_UNDEFS ${_target} COTIRE_UNITY_SOURCE_PRE_UNDEFS) | get_target_property(COTIRE_TARGET_PRE_UNDEFS ${_target} COTIRE_UNITY_SOURCE_PRE_UNDEFS) | ||||
| get_target_property(COTIRE_TARGET_POST_UNDEFS ${_target} COTIRE_UNITY_SOURCE_POST_UNDEFS) | get_target_property(COTIRE_TARGET_POST_UNDEFS ${_target} COTIRE_UNITY_SOURCE_POST_UNDEFS) | ||||
| get_target_property(COTIRE_TARGET_MAXIMUM_NUMBER_OF_INCLUDES ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) | get_target_property(COTIRE_TARGET_MAXIMUM_NUMBER_OF_INCLUDES ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) | ||||
| get_target_property(COTIRE_TARGET_INCLUDE_PRIORITY_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH) | |||||
| cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_PRE_UNDEFS COTIRE_TARGET_SOURCES_PRE_UNDEFS ${COTIRE_TARGET_SOURCES}) | cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_PRE_UNDEFS COTIRE_TARGET_SOURCES_PRE_UNDEFS ${COTIRE_TARGET_SOURCES}) | ||||
| cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_POST_UNDEFS COTIRE_TARGET_SOURCES_POST_UNDEFS ${COTIRE_TARGET_SOURCES}) | cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_POST_UNDEFS COTIRE_TARGET_SOURCES_POST_UNDEFS ${COTIRE_TARGET_SOURCES}) | ||||
| string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" COTIRE_INCLUDE_SYSTEM_FLAG) | string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" COTIRE_INCLUDE_SYSTEM_FLAG) | ||||
| @@ -2360,6 +2379,10 @@ function (cotire_init_cotire_target_properties _target) | |||||
| if (NOT _isSet) | if (NOT _isSet) | ||||
| set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH "") | set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH "") | ||||
| endif() | endif() | ||||
| get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH SET) | |||||
| if (NOT _isSet) | |||||
| set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH "") | |||||
| endif() | |||||
| get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS SET) | get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS SET) | ||||
| if (NOT _isSet) | if (NOT _isSet) | ||||
| set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS "") | set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS "") | ||||
| @@ -3145,6 +3168,7 @@ if (CMAKE_SCRIPT_MODE_FILE) | |||||
| IGNORE_PATH "${COTIRE_TARGET_IGNORE_PATH};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH}" | IGNORE_PATH "${COTIRE_TARGET_IGNORE_PATH};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH}" | ||||
| INCLUDE_PATH ${COTIRE_TARGET_INCLUDE_PATH} | INCLUDE_PATH ${COTIRE_TARGET_INCLUDE_PATH} | ||||
| IGNORE_EXTENSIONS "${CMAKE_${COTIRE_TARGET_LANGUAGE}_SOURCE_FILE_EXTENSIONS};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS}" | IGNORE_EXTENSIONS "${CMAKE_${COTIRE_TARGET_LANGUAGE}_SOURCE_FILE_EXTENSIONS};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS}" | ||||
| INCLUDE_PRIORITY_PATH "${COTIRE_TARGET_INCLUDE_PRIORITY_PATH}" | |||||
| INCLUDE_SYSTEM_FLAG "${COTIRE_INCLUDE_SYSTEM_FLAG}" | INCLUDE_SYSTEM_FLAG "${COTIRE_INCLUDE_SYSTEM_FLAG}" | ||||
| INCLUDE_DIRECTORIES ${_includeDirs} | INCLUDE_DIRECTORIES ${_includeDirs} | ||||
| SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} | SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} | ||||
| @@ -3382,6 +3406,13 @@ else() | |||||
| "See target property COTIRE_PREFIX_HEADER_INCLUDE_PATH." | "See target property COTIRE_PREFIX_HEADER_INCLUDE_PATH." | ||||
| ) | ) | ||||
| define_property( | |||||
| DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" | |||||
| BRIEF_DOCS "Header path matching one of these directories is put at the top of prefix header." | |||||
| FULL_DOCS | |||||
| "See target property COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH." | |||||
| ) | |||||
| define_property( | define_property( | ||||
| DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" | DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" | ||||
| BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each source file." | BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each source file." | ||||
| @@ -3468,6 +3499,18 @@ else() | |||||
| "If not set, this property is initialized to the empty list." | "If not set, this property is initialized to the empty list." | ||||
| ) | ) | ||||
| define_property( | |||||
| TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" | |||||
| BRIEF_DOCS "Header path matching one of these directories is put at the top of prefix header." | |||||
| FULL_DOCS | |||||
| "The property can be set to a list of directories." | |||||
| "Headers files paths matching one of these directories will appear at the begin of generated prefix header." | |||||
| "Order is kept from the property path order." | |||||
| "If not set, this property is initialized to the empty list." | |||||
| ) | |||||
| define_property( | define_property( | ||||
| TARGET PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" INHERITED | TARGET PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" INHERITED | ||||
| BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each target source file." | BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each target source file." | ||||