From c1a26e01ffe8fdf8e731785439ef6949f5980c05 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 7 Nov 2019 17:55:00 +0100 Subject: [PATCH] Fix building with Xcode Now gnss-sdr can be built with Xcode (using the CMake flag -GXcode). Before this commit, this was only possible with volk_gnsssdr already installed. Reason of failing was that Xcode does not like targets that have only object files. See https://gitlab.kitware.com/cmake/cmake/issues/17457 --- CMakeLists.txt | 4 +- .../volk_gnsssdr/lib/CMakeLists.txt | 40 +++++++++++++------ 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 59768d8b1..95dffcca3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -282,7 +282,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION}) if(${DARWIN_VERSION} MATCHES "19") set(MACOS_CATALINA TRUE) - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17") set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS Catalina 10.15") endif() @@ -957,7 +957,7 @@ if(NOT VOLKGNSSSDR_FOUND) endif() if(OS_IS_MACOSX) if(CMAKE_GENERATOR STREQUAL Xcode) - set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" "-configuration" "Debug" "-target") + set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" "-configuration" "${CMAKE_BUILD_TYPE}" "-target") endif() endif() diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt index 80a3d6511..8aa034e00 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt @@ -426,7 +426,9 @@ foreach(machine_name ${available_machines}) --mode "machine_flags" --machine "${machine_name}" --compiler "${COMPILER_NAME}" OUTPUT_VARIABLE ${machine_name}_flags OUTPUT_STRIP_TRAILING_WHITESPACE ) - message(STATUS "BUILD INFO ::: ${machine_name} ::: ${COMPILER_NAME} ::: ${CMAKE_C_FLAGS_${CBTU}} ${CMAKE_C_FLAGS} ${${machine_name}_flags}") + if(NOT (CMAKE_GENERATOR STREQUAL Xcode)) + message(STATUS "BUILD INFO ::: ${machine_name} ::: ${COMPILER_NAME} ::: ${CMAKE_C_FLAGS_${CBTU}} ${CMAKE_C_FLAGS} ${${machine_name}_flags}") + endif() set(COMPILER_INFO "${COMPILER_INFO}${machine_name}:::${COMPILER_NAME}:::${CMAKE_C_FLAGS_${CBTU}} ${CMAKE_C_FLAGS} ${${machine_name}_flags}\n") if(${machine_name}_flags AND NOT MSVC) set_source_files_properties(${machine_source} PROPERTIES COMPILE_FLAGS "${${machine_name}_flags}") @@ -573,18 +575,24 @@ if(MSVC) endif() #Create a volk_gnsssdr object library -add_library(volk_gnsssdr_obj OBJECT ${volk_gnsssdr_sources}) -target_include_directories(volk_gnsssdr_obj - PUBLIC $ - PUBLIC $ - PUBLIC $ - PRIVATE ${PROJECT_SOURCE_DIR}/kernels - PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} -) +if(NOT (CMAKE_GENERATOR STREQUAL Xcode)) + add_library(volk_gnsssdr_obj OBJECT ${volk_gnsssdr_sources}) + target_include_directories(volk_gnsssdr_obj + PUBLIC $ + PUBLIC $ + PUBLIC $ + PRIVATE ${PROJECT_SOURCE_DIR}/kernels + PRIVATE ${CMAKE_CURRENT_BINARY_DIR} + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} + ) +endif() #Add dynamic library -add_library(volk_gnsssdr SHARED $) +if(CMAKE_GENERATOR STREQUAL Xcode) + add_library(volk_gnsssdr SHARED ${volk_gnsssdr_sources}) +else() + add_library(volk_gnsssdr SHARED $) +endif() target_link_libraries(volk_gnsssdr ${volk_gnsssdr_libraries}) target_include_directories(volk_gnsssdr PUBLIC $ @@ -597,7 +605,9 @@ target_include_directories(volk_gnsssdr #Configure target properties if(NOT MSVC) - set_target_properties(volk_gnsssdr_obj PROPERTIES COMPILE_FLAGS "-fPIC") + if(NOT (CMAKE_GENERATOR STREQUAL Xcode)) + set_target_properties(volk_gnsssdr_obj PROPERTIES COMPILE_FLAGS "-fPIC") + endif() target_link_libraries(volk_gnsssdr m) endif() set_target_properties(volk_gnsssdr PROPERTIES SOVERSION ${LIBVER}) @@ -613,7 +623,11 @@ install(TARGETS volk_gnsssdr #Configure static library if(ENABLE_STATIC_LIBS) - add_library(volk_gnsssdr_static STATIC $) + if(CMAKE_GENERATOR STREQUAL Xcode) + add_library(volk_gnsssdr_static STATIC ${volk_gnsssdr_sources}) + else() + add_library(volk_gnsssdr_static STATIC $) + endif() target_link_libraries(volk_gnsssdr_static ${volk_gnsssdr_libraries} pthread) if(NOT MSVC) target_link_libraries(volk_gnsssdr_static m)