Skip to content

Commit 38b3512

Browse files
committed
Merge branch 'develop'
2 parents fce20f4 + 0154bed commit 38b3512

File tree

157 files changed

+6931
-1180
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+6931
-1180
lines changed

.clang-format

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
1-
BasedOnStyle: Chromium
2-
ColumnLimit: 150
3-
BreakBeforeBraces: Attach
4-
IndentWidth: 4
5-
BreakConstructorInitializers: BeforeComma
6-
ConstructorInitializerAllOnOneLineOrOnePerLine: false
7-
ConstructorInitializerIndentWidth: 4
8-
AccessModifierOffset: -4
1+
BasedOnStyle: Microsoft

.cmake/conan.cmake

Lines changed: 164 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
# but it is only necessary on the end-user side. It is not necessary to create conan
3434
# packages, in fact it shouldn't be use for that. Check the project documentation.
3535

36-
# version: 0.18.1
36+
# version: 0.19.0-dev
3737

3838
include(CMakeParseArguments)
3939

@@ -55,8 +55,10 @@ function(_get_msvc_ide_version result)
5555
set(${result} 15 PARENT_SCOPE)
5656
elseif(NOT MSVC_VERSION VERSION_LESS 1920 AND MSVC_VERSION VERSION_LESS 1930)
5757
set(${result} 16 PARENT_SCOPE)
58-
elseif(NOT MSVC_VERSION VERSION_LESS 1930 AND MSVC_VERSION VERSION_LESS 1942)
58+
elseif(NOT MSVC_VERSION VERSION_LESS 1930 AND MSVC_VERSION VERSION_LESS 1950)
5959
set(${result} 17 PARENT_SCOPE)
60+
elseif(NOT MSVC_VERSION VERSION_LESS 1950 AND MSVC_VERSION VERSION_LESS 1960)
61+
set(${result} 18 PARENT_SCOPE)
6062
else()
6163
message(FATAL_ERROR "Conan: Unknown MSVC compiler version [${MSVC_VERSION}]")
6264
endif()
@@ -132,18 +134,28 @@ macro(_conan_detect_compiler)
132134
set(_CONAN_SETTING_COMPILER_CPPSTD ${CMAKE_CXX_STANDARD})
133135
endif()
134136

135-
if (${CMAKE_${LANGUAGE}_COMPILER_ID} STREQUAL GNU)
136-
# using GCC
137+
if (${CMAKE_${LANGUAGE}_COMPILER_ID} STREQUAL GNU OR ${CMAKE_${LANGUAGE}_COMPILER_ID} STREQUAL QCC)
138+
# using GCC or QCC
137139
# TODO: Handle other params
138140
string(REPLACE "." ";" VERSION_LIST ${CMAKE_${LANGUAGE}_COMPILER_VERSION})
139141
list(GET VERSION_LIST 0 MAJOR)
140142
list(GET VERSION_LIST 1 MINOR)
141-
set(COMPILER_VERSION ${MAJOR}.${MINOR})
142-
if(${MAJOR} GREATER 4)
143-
set(COMPILER_VERSION ${MAJOR})
144-
endif()
145-
set(_CONAN_SETTING_COMPILER gcc)
143+
144+
if (${CMAKE_${LANGUAGE}_COMPILER_ID} STREQUAL GNU)
145+
set(_CONAN_SETTING_COMPILER gcc)
146+
# mimic Conan client autodetection
147+
if (${MAJOR} GREATER_EQUAL 5)
148+
set(COMPILER_VERSION ${MAJOR})
149+
else()
150+
set(COMPILER_VERSION ${MAJOR}.${MINOR})
151+
endif()
152+
elseif (${CMAKE_${LANGUAGE}_COMPILER_ID} STREQUAL QCC)
153+
set(_CONAN_SETTING_COMPILER qcc)
154+
set(COMPILER_VERSION ${MAJOR}.${MINOR})
155+
endif ()
156+
146157
set(_CONAN_SETTING_COMPILER_VERSION ${COMPILER_VERSION})
158+
147159
if (USING_CXX)
148160
conan_cmake_detect_unix_libcxx(_LIBCXX)
149161
set(_CONAN_SETTING_COMPILER_LIBCXX ${_LIBCXX})
@@ -152,7 +164,7 @@ macro(_conan_detect_compiler)
152164
string(REPLACE "." ";" VERSION_LIST ${CMAKE_${LANGUAGE}_COMPILER_VERSION})
153165
list(GET VERSION_LIST 0 MAJOR)
154166
list(GET VERSION_LIST 1 MINOR)
155-
set(COMPILER_VERSION ${MAJOR}.${MINOR})
167+
set(COMPILER_VERSION ${MAJOR})
156168
set(_CONAN_SETTING_COMPILER intel)
157169
set(_CONAN_SETTING_COMPILER_VERSION ${COMPILER_VERSION})
158170
if (USING_CXX)
@@ -164,8 +176,17 @@ macro(_conan_detect_compiler)
164176
string(REPLACE "." ";" VERSION_LIST ${CMAKE_${LANGUAGE}_COMPILER_VERSION})
165177
list(GET VERSION_LIST 0 MAJOR)
166178
list(GET VERSION_LIST 1 MINOR)
179+
180+
# mimic Conan client autodetection
181+
if (${MAJOR} GREATER_EQUAL 13)
182+
set(COMPILER_VERSION ${MAJOR})
183+
else()
184+
set(COMPILER_VERSION ${MAJOR}.${MINOR})
185+
endif()
186+
187+
set(_CONAN_SETTING_COMPILER_VERSION ${COMPILER_VERSION})
188+
167189
set(_CONAN_SETTING_COMPILER apple-clang)
168-
set(_CONAN_SETTING_COMPILER_VERSION ${MAJOR}.${MINOR})
169190
if (USING_CXX)
170191
conan_cmake_detect_unix_libcxx(_LIBCXX)
171192
set(_CONAN_SETTING_COMPILER_LIBCXX ${_LIBCXX})
@@ -178,17 +199,23 @@ macro(_conan_detect_compiler)
178199
list(GET VERSION_LIST 0 MAJOR)
179200
list(GET VERSION_LIST 1 MINOR)
180201
set(_CONAN_SETTING_COMPILER clang)
181-
set(_CONAN_SETTING_COMPILER_VERSION ${MAJOR}.${MINOR})
202+
203+
# mimic Conan client autodetection
204+
if (${MAJOR} GREATER_EQUAL 8)
205+
set(COMPILER_VERSION ${MAJOR})
206+
else()
207+
set(COMPILER_VERSION ${MAJOR}.${MINOR})
208+
endif()
209+
210+
set(_CONAN_SETTING_COMPILER_VERSION ${COMPILER_VERSION})
211+
182212
if(APPLE)
183213
cmake_policy(GET CMP0025 APPLE_CLANG_POLICY)
184214
if(NOT APPLE_CLANG_POLICY STREQUAL NEW)
185215
message(STATUS "Conan: APPLE and Clang detected. Assuming apple-clang compiler. Set CMP0025 to avoid it")
186216
set(_CONAN_SETTING_COMPILER apple-clang)
187217
endif()
188218
endif()
189-
if(${_CONAN_SETTING_COMPILER} STREQUAL clang AND ${MAJOR} GREATER 7)
190-
set(_CONAN_SETTING_COMPILER_VERSION ${MAJOR})
191-
endif()
192219
if (USING_CXX)
193220
conan_cmake_detect_unix_libcxx(_LIBCXX)
194221
set(_CONAN_SETTING_COMPILER_LIBCXX ${_LIBCXX})
@@ -280,7 +307,7 @@ function(conan_cmake_settings result)
280307

281308
if(NOT _SETTINGS OR ARGUMENTS_PROFILE_AUTO STREQUAL "ALL")
282309
set(ARGUMENTS_PROFILE_AUTO arch build_type compiler compiler.version
283-
compiler.runtime compiler.libcxx compiler.toolset)
310+
compiler.runtime compiler.libcxx compiler.toolset os)
284311
endif()
285312

286313
# remove any manually specified settings from the autodetected settings
@@ -429,7 +456,7 @@ endfunction()
429456
function(_collect_settings result)
430457
set(ARGUMENTS_PROFILE_AUTO arch build_type compiler compiler.version
431458
compiler.runtime compiler.libcxx compiler.toolset
432-
compiler.cppstd)
459+
compiler.cppstd os)
433460
foreach(ARG ${ARGUMENTS_PROFILE_AUTO})
434461
string(TOUPPER ${ARG} _arg_name)
435462
string(REPLACE "." "_" _arg_name ${_arg_name})
@@ -450,17 +477,18 @@ function(conan_cmake_autodetect detected_settings)
450477
endfunction()
451478

452479
macro(conan_parse_arguments)
453-
set(options BASIC_SETUP CMAKE_TARGETS UPDATE KEEP_RPATHS NO_LOAD NO_OUTPUT_DIRS OUTPUT_QUIET NO_IMPORTS SKIP_STD)
454-
set(oneValueArgs CONANFILE ARCH BUILD_TYPE INSTALL_FOLDER OUTPUT_FOLDER CONAN_COMMAND)
455-
set(multiValueArgs DEBUG_PROFILE RELEASE_PROFILE RELWITHDEBINFO_PROFILE MINSIZEREL_PROFILE
456-
PROFILE REQUIRES OPTIONS IMPORTS SETTINGS BUILD ENV GENERATORS PROFILE_AUTO
457-
INSTALL_ARGS CONFIGURATION_TYPES PROFILE_BUILD BUILD_REQUIRES)
458-
cmake_parse_arguments(ARGUMENTS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
480+
set(options BASIC_SETUP CMAKE_TARGETS UPDATE KEEP_RPATHS NO_LOAD NO_OUTPUT_DIRS
481+
OUTPUT_QUIET NO_IMPORTS SKIP_STD)
482+
set(oneValueArgs CONANFILE ARCH BUILD_TYPE INSTALL_FOLDER OUTPUT_FOLDER CONAN_COMMAND)
483+
set(multiValueArgs DEBUG_PROFILE RELEASE_PROFILE RELWITHDEBINFO_PROFILE MINSIZEREL_PROFILE
484+
PROFILE REQUIRES OPTIONS IMPORTS SETTINGS BUILD ENV GENERATORS PROFILE_AUTO
485+
INSTALL_ARGS CONFIGURATION_TYPES PROFILE_BUILD BUILD_REQUIRES)
486+
cmake_parse_arguments(ARGUMENTS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
459487
endmacro()
460488

461489
function(old_conan_cmake_install)
462490
# Calls "conan install"
463-
# Argument BUILD is equivalant to --build={missing, PkgName,...} or
491+
# Argument BUILD is equivalent to --build={missing, PkgName,...} or
464492
# --build when argument is 'BUILD all' (which builds all packages from source)
465493
# Argument CONAN_COMMAND, to specify the conan path, e.g. in case of running from source
466494
# cmake does not identify conan as command, even if it is +x and it is in the path
@@ -552,7 +580,7 @@ function(conan_cmake_install)
552580
set(installOptions UPDATE NO_IMPORTS OUTPUT_QUIET ERROR_QUIET)
553581
set(installOneValueArgs PATH_OR_REFERENCE REFERENCE REMOTE LOCKFILE LOCKFILE_OUT LOCKFILE_NODE_ID INSTALL_FOLDER OUTPUT_FOLDER)
554582
set(installMultiValueArgs GENERATOR BUILD ENV ENV_HOST ENV_BUILD OPTIONS_HOST OPTIONS OPTIONS_BUILD PROFILE
555-
PROFILE_HOST PROFILE_BUILD SETTINGS SETTINGS_HOST SETTINGS_BUILD)
583+
PROFILE_HOST PROFILE_BUILD SETTINGS SETTINGS_HOST SETTINGS_BUILD CONF CONF_HOST CONF_BUILD)
556584
cmake_parse_arguments(ARGS "${installOptions}" "${installOneValueArgs}" "${installMultiValueArgs}" ${ARGN})
557585
foreach(arg ${installOptions})
558586
if(ARGS_${arg})
@@ -607,6 +635,12 @@ function(conan_cmake_install)
607635
set(flag "--settings:host")
608636
elseif("${arg}" STREQUAL "SETTINGS_BUILD")
609637
set(flag "--settings:build")
638+
elseif("${arg}" STREQUAL "CONF")
639+
set(flag "--conf")
640+
elseif("${arg}" STREQUAL "CONF_HOST")
641+
set(flag "--conf:host")
642+
elseif("${arg}" STREQUAL "CONF_BUILD")
643+
set(flag "--conf:build")
610644
endif()
611645
list(LENGTH ARGS_${arg} numargs)
612646
foreach(item ${ARGS_${arg}})
@@ -624,9 +658,12 @@ function(conan_cmake_install)
624658
if(DEFINED NO_IMPORTS)
625659
set(NO_IMPORTS --no-imports)
626660
endif()
627-
set(install_args install ${PATH_OR_REFERENCE} ${REFERENCE} ${UPDATE} ${NO_IMPORTS} ${REMOTE} ${LOCKFILE} ${LOCKFILE_OUT} ${LOCKFILE_NODE_ID} ${INSTALL_FOLDER} ${OUTPUT_FOLDER}
628-
${GENERATOR} ${BUILD} ${ENV} ${ENV_HOST} ${ENV_BUILD} ${OPTIONS} ${OPTIONS_HOST} ${OPTIONS_BUILD}
629-
${PROFILE} ${PROFILE_HOST} ${PROFILE_BUILD} ${SETTINGS} ${SETTINGS_HOST} ${SETTINGS_BUILD})
661+
set(install_args install ${PATH_OR_REFERENCE} ${REFERENCE} ${UPDATE} ${NO_IMPORTS} ${REMOTE}
662+
${LOCKFILE} ${LOCKFILE_OUT} ${LOCKFILE_NODE_ID} ${INSTALL_FOLDER}
663+
${OUTPUT_FOLDER} ${GENERATOR} ${BUILD} ${ENV} ${ENV_HOST} ${ENV_BUILD}
664+
${OPTIONS} ${OPTIONS_HOST} ${OPTIONS_BUILD} ${PROFILE} ${PROFILE_HOST}
665+
${PROFILE_BUILD} ${SETTINGS} ${SETTINGS_HOST} ${SETTINGS_BUILD}
666+
${CONF} ${CONF_HOST} ${CONF_BUILD})
630667

631668
string(REPLACE ";" " " _install_args "${install_args}")
632669
message(STATUS "Conan executing: ${CONAN_CMD} ${_install_args}")
@@ -901,6 +938,30 @@ macro(conan_cmake_run)
901938
endif()
902939
endmacro()
903940

941+
function(conan_version result)
942+
set(${result} "" PARENT_SCOPE)
943+
944+
if(NOT CONAN_CMD)
945+
find_program(CONAN_CMD conan)
946+
if(NOT CONAN_CMD AND CONAN_REQUIRED)
947+
message(FATAL_ERROR "Conan executable not found! Please install conan.")
948+
endif()
949+
endif()
950+
951+
execute_process(COMMAND ${CONAN_CMD} --version
952+
RESULT_VARIABLE return_code
953+
OUTPUT_VARIABLE CONAN_VERSION_OUTPUT
954+
ERROR_VARIABLE CONAN_VERSION_OUTPUT)
955+
956+
if(NOT "${return_code}" STREQUAL "0")
957+
message(FATAL_ERROR "Conan --version failed='${return_code}'")
958+
endif()
959+
960+
string(REGEX MATCH ".*Conan version ([0-9]+\\.[0-9]+\\.[0-9]+)" FOO "${CONAN_VERSION_OUTPUT}")
961+
962+
set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE)
963+
endfunction()
964+
904965
macro(conan_check)
905966
# Checks conan availability in PATH
906967
# Arguments REQUIRED, DETECT_QUIET and VERSION are optional
@@ -920,25 +981,16 @@ macro(conan_check)
920981
if(NOT CONAN_DETECT_QUIET)
921982
message(STATUS "Conan: Found program ${CONAN_CMD}")
922983
endif()
923-
execute_process(COMMAND ${CONAN_CMD} --version
924-
RESULT_VARIABLE return_code
925-
OUTPUT_VARIABLE CONAN_VERSION_OUTPUT
926-
ERROR_VARIABLE CONAN_VERSION_OUTPUT)
927984

928-
if(NOT "${return_code}" STREQUAL "0")
929-
message(FATAL_ERROR "Conan --version failed='${return_code}'")
930-
endif()
985+
conan_version(CONAN_DETECTED_VERSION)
931986

932987
if(NOT CONAN_DETECT_QUIET)
933-
string(STRIP "${CONAN_VERSION_OUTPUT}" _CONAN_VERSION_OUTPUT)
934-
message(STATUS "Conan: Version found ${_CONAN_VERSION_OUTPUT}")
988+
message(STATUS "Conan: Version found ${CONAN_DETECTED_VERSION}")
935989
endif()
936990

937991
if(DEFINED CONAN_VERSION)
938-
string(REGEX MATCH ".*Conan version ([0-9]+\\.[0-9]+\\.[0-9]+)" FOO
939-
"${CONAN_VERSION_OUTPUT}")
940-
if(${CMAKE_MATCH_1} VERSION_LESS ${CONAN_VERSION})
941-
message(FATAL_ERROR "Conan outdated. Installed: ${CMAKE_MATCH_1}, \
992+
if(${CONAN_DETECTED_VERSION} VERSION_LESS ${CONAN_VERSION})
993+
message(FATAL_ERROR "Conan outdated. Installed: ${CONAN_DETECTED_VERSION}, \
942994
required: ${CONAN_VERSION}. Consider updating via 'pip \
943995
install conan==${CONAN_VERSION}'.")
944996
endif()
@@ -1000,7 +1052,9 @@ macro(conan_config_install)
10001052
endif()
10011053

10021054
if(DEFINED CONAN_ARGS)
1003-
set(CONAN_ARGS_ARGS "--args=\"${CONAN_ARGS}\"")
1055+
# Convert ; seperated multi arg list into space seperated string
1056+
string(REPLACE ";" " " l_CONAN_ARGS "${CONAN_ARGS}")
1057+
set(CONAN_ARGS_ARGS "--args=${l_CONAN_ARGS}")
10041058
endif()
10051059

10061060
if(DEFINED CONAN_SOURCE)
@@ -1024,3 +1078,71 @@ macro(conan_config_install)
10241078
message(FATAL_ERROR "Conan config failed='${return_code}'")
10251079
endif()
10261080
endmacro()
1081+
1082+
1083+
function(conan_cmake_profile)
1084+
set(profileOneValueArgs FILEPATH INCLUDE)
1085+
set(profileMultiValueArgs SETTINGS OPTIONS CONF ENV BUILDENV RUNENV TOOL_REQUIRES)
1086+
cmake_parse_arguments(ARGS "" "${profileOneValueArgs}" "${profileMultiValueArgs}" ${ARGN})
1087+
1088+
if(DEFINED ARGS_FILEPATH)
1089+
set(_FN "${ARGS_FILEPATH}")
1090+
else()
1091+
set(_FN "${CMAKE_CURRENT_BINARY_DIR}/profile")
1092+
endif()
1093+
message(STATUS "Conan: Creating profile ${_FN}")
1094+
file(WRITE ${_FN} "")
1095+
1096+
if(DEFINED ARGS_INCLUDE)
1097+
file(APPEND ${_FN} "include(${ARGS_INCLUDE})\n")
1098+
endif()
1099+
1100+
if(DEFINED ARGS_SETTINGS)
1101+
file(APPEND ${_FN} "[settings]\n")
1102+
foreach(SETTING ${ARGS_SETTINGS})
1103+
file(APPEND ${_FN} ${SETTING} "\n")
1104+
endforeach()
1105+
endif()
1106+
1107+
if(DEFINED ARGS_OPTIONS)
1108+
file(APPEND ${_FN} "[options]\n")
1109+
foreach(OPTION ${ARGS_OPTIONS})
1110+
file(APPEND ${_FN} ${OPTION} "\n")
1111+
endforeach()
1112+
endif()
1113+
1114+
if(DEFINED ARGS_CONF)
1115+
file(APPEND ${_FN} "[conf]\n")
1116+
foreach(CONF ${ARGS_CONF})
1117+
file(APPEND ${_FN} ${CONF} "\n")
1118+
endforeach()
1119+
endif()
1120+
1121+
if(DEFINED ARGS_ENV)
1122+
file(APPEND ${_FN} "[env]\n")
1123+
foreach(ENV ${ARGS_ENV})
1124+
file(APPEND ${_FN} ${ENV} "\n")
1125+
endforeach()
1126+
endif()
1127+
1128+
if(DEFINED ARGS_BUILDENV)
1129+
file(APPEND ${_FN} "[buildenv]\n")
1130+
foreach(BUILDENV ${ARGS_BUILDENV})
1131+
file(APPEND ${_FN} ${BUILDENV} "\n")
1132+
endforeach()
1133+
endif()
1134+
1135+
if(DEFINED ARGS_RUNENV)
1136+
file(APPEND ${_FN} "[runenv]\n")
1137+
foreach(RUNENV ${ARGS_RUNENV})
1138+
file(APPEND ${_FN} ${RUNENV} "\n")
1139+
endforeach()
1140+
endif()
1141+
1142+
if(DEFINED ARGS_TOOL_REQUIRES)
1143+
file(APPEND ${_FN} "[tool_requires]\n")
1144+
foreach(TOOL_REQUIRE ${ARGS_TOOL_REQUIRES})
1145+
file(APPEND ${_FN} ${TOOL_REQUIRE} "\n")
1146+
endforeach()
1147+
endif()
1148+
endfunction()

0 commit comments

Comments
 (0)