| @@ -1054,7 +1054,8 @@ endfunction() | |||
| function (cotire_scan_includes _includesVar) | |||
| set(_options "") | |||
| 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}) | |||
| set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) | |||
| if (NOT _option_LANGUAGE) | |||
| @@ -1104,6 +1105,21 @@ function (cotire_scan_includes _includesVar) | |||
| "${_option_IGNORE_EXTENSIONS}" | |||
| _includes _unparsedLines | |||
| ${_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) | |||
| if (_option_UNPARSED_LINES) | |||
| set (${_option_UNPARSED_LINES} ${_unparsedLines} PARENT_SCOPE) | |||
| @@ -1255,7 +1271,8 @@ function (cotire_generate_prefix_header _prefixFile) | |||
| set(_options "") | |||
| set(_oneValueArgs LANGUAGE COMPILER_EXECUTABLE COMPILER_ID COMPILER_VERSION INCLUDE_SYSTEM_FLAG) | |||
| 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}) | |||
| if (_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} | |||
| INCLUDE_PATH ${_option_INCLUDE_PATH} | |||
| IGNORE_EXTENSIONS ${_option_IGNORE_EXTENSIONS} | |||
| INCLUDE_PRIORITY_PATH ${_option_INCLUDE_PRIORITY_PATH} | |||
| UNPARSED_LINES _unparsedLines) | |||
| cotire_generate_unity_source("${_prefixFile}" | |||
| 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_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_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_POST_UNDEFS COTIRE_TARGET_SOURCES_POST_UNDEFS ${COTIRE_TARGET_SOURCES}) | |||
| 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) | |||
| set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH "") | |||
| 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) | |||
| if (NOT _isSet) | |||
| set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS "") | |||
| @@ -3146,6 +3169,7 @@ if (CMAKE_SCRIPT_MODE_FILE) | |||
| IGNORE_PATH "${COTIRE_TARGET_IGNORE_PATH};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH}" | |||
| INCLUDE_PATH ${COTIRE_TARGET_INCLUDE_PATH} | |||
| 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_DIRECTORIES ${_includeDirs} | |||
| SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} | |||
| @@ -3383,6 +3407,13 @@ else() | |||
| "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( | |||
| 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." | |||
| @@ -3469,6 +3500,18 @@ else() | |||
| "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( | |||
| 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." | |||