diff --git a/conan_provider.cmake b/conan_provider.cmake index 91d4e043..4216906c 100644 --- a/conan_provider.cmake +++ b/conan_provider.cmake @@ -5,20 +5,20 @@ function(detect_os OS OS_API_LEVEL OS_SDK OS_SUBSYSTEM OS_VERSION) # it could be cross compilation message(STATUS "CMake-Conan: cmake_system_name=${CMAKE_SYSTEM_NAME}") if(CMAKE_SYSTEM_NAME AND NOT CMAKE_SYSTEM_NAME STREQUAL "Generic") - if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(${OS} Macos PARENT_SCOPE) - elseif(${CMAKE_SYSTEM_NAME} STREQUAL "QNX") + elseif(CMAKE_SYSTEM_NAME STREQUAL "QNX") set(${OS} Neutrino PARENT_SCOPE) - elseif(${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN") + elseif(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN") set(${OS} Windows PARENT_SCOPE) set(${OS_SUBSYSTEM} cygwin PARENT_SCOPE) - elseif(${CMAKE_SYSTEM_NAME} MATCHES "^MSYS") + elseif(CMAKE_SYSTEM_NAME MATCHES "^MSYS") set(${OS} Windows PARENT_SCOPE) set(${OS_SUBSYSTEM} msys2 PARENT_SCOPE) else() set(${OS} ${CMAKE_SYSTEM_NAME} PARENT_SCOPE) endif() - if(${CMAKE_SYSTEM_NAME} STREQUAL "Android") + if(CMAKE_SYSTEM_NAME STREQUAL "Android") string(REGEX MATCH "[0-9]+" _OS_API_LEVEL ${ANDROID_PLATFORM}) message(STATUS "CMake-Conan: android_platform=${ANDROID_PLATFORM}") set(${OS_API_LEVEL} ${_OS_API_LEVEL} PARENT_SCOPE) @@ -96,6 +96,7 @@ function(detect_cxx_standard CXX_STANDARD) endif() endfunction() + macro(detect_gnu_libstdcxx) # _CONAN_IS_GNU_LIBSTDCXX true if GNU libstdc++ check_cxx_source_compiles(" @@ -118,6 +119,7 @@ macro(detect_gnu_libstdcxx) unset (_CONAN_GNU_LIBSTDCXX_IS_CXX11_ABI) endmacro() + macro(detect_libcxx) # _CONAN_IS_LIBCXX true if LLVM libc++ check_cxx_source_compiles(" @@ -129,8 +131,8 @@ macro(detect_libcxx) endmacro() -function(detect_lib_cxx OS LIB_CXX) - if(${OS} STREQUAL "Android") +function(detect_lib_cxx LIB_CXX) + if(CMAKE_SYSTEM_NAME STREQUAL "Android") message(STATUS "CMake-Conan: android_stl=${ANDROID_STL}") set(${LIB_CXX} ${ANDROID_STL} PARENT_SCOPE) return() @@ -198,7 +200,7 @@ function(detect_compiler COMPILER COMPILER_VERSION COMPILER_RUNTIME COMPILER_RUN if(NOT CMAKE_MSVC_RUNTIME_LIBRARY IN_LIST _KNOWN_MSVC_RUNTIME_VALUES) message(FATAL_ERROR "CMake-Conan: unable to map MSVC runtime: ${CMAKE_MSVC_RUNTIME_LIBRARY} to Conan settings") endif() - + # Runtime is "dynamic" in all cases if it ends in DLL if(CMAKE_MSVC_RUNTIME_LIBRARY MATCHES ".*DLL$") set(_COMPILER_RUNTIME "dynamic") @@ -249,6 +251,7 @@ function(detect_compiler COMPILER COMPILER_VERSION COMPILER_RUNTIME COMPILER_RUN set(${COMPILER_RUNTIME_TYPE} ${_COMPILER_RUNTIME_TYPE} PARENT_SCOPE) endfunction() + function(detect_build_type BUILD_TYPE) get_property(_MULTICONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(NOT _MULTICONFIG_GENERATOR) @@ -258,6 +261,7 @@ function(detect_build_type BUILD_TYPE) endif() endfunction() + macro(append_compiler_executables_configuration) set(_conan_c_compiler "") set(_conan_cpp_compiler "") @@ -285,7 +289,7 @@ function(detect_host_profile output_file) detect_arch(MYARCH) detect_compiler(MYCOMPILER MYCOMPILER_VERSION MYCOMPILER_RUNTIME MYCOMPILER_RUNTIME_TYPE) detect_cxx_standard(MYCXX_STANDARD) - detect_lib_cxx(MYOS MYLIB_CXX) + detect_lib_cxx(MYLIB_CXX) detect_build_type(MYBUILD_TYPE) set(PROFILE "") @@ -342,7 +346,7 @@ function(detect_host_profile output_file) # propagate compilers via profile append_compiler_executables_configuration() - if(${MYOS} STREQUAL "Android") + if(MYOS STREQUAL "Android") string(APPEND PROFILE "tools.android:ndk_path=${CMAKE_ANDROID_NDK}\n") endif() @@ -441,6 +445,7 @@ function(conan_version_check) endif() endfunction() + macro(construct_profile_argument argument_variable profile_list) set(${argument_variable} "") if("${profile_list}" STREQUAL "CONAN_HOST_PROFILE") @@ -523,10 +528,11 @@ endmacro() cmake_language( - SET_DEPENDENCY_PROVIDER conan_provide_dependency - SUPPORTED_METHODS FIND_PACKAGE + SET_DEPENDENCY_PROVIDER conan_provide_dependency + SUPPORTED_METHODS FIND_PACKAGE ) + macro(conan_provide_dependency_check) set(_CONAN_PROVIDE_DEPENDENCY_INVOKED FALSE) get_property(_CONAN_PROVIDE_DEPENDENCY_INVOKED GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED) @@ -543,6 +549,7 @@ macro(conan_provide_dependency_check) unset(_CONAN_PROVIDE_DEPENDENCY_INVOKED) endmacro() + # Add a deferred call at the end of processing the top-level directory # to check if the dependency provider was invoked at all. cmake_language(DEFER DIRECTORY "${CMAKE_SOURCE_DIR}" CALL conan_provide_dependency_check)