1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-10-30 14:53:03 +00:00

Fix for Xcode new build system

CI: add new build-macos-xcode job
This commit is contained in:
Carles Fernandez
2022-11-29 23:38:27 +01:00
parent bb03d42177
commit a975e33dab
4 changed files with 80 additions and 76 deletions

View File

@@ -41,6 +41,21 @@ jobs:
- name: default position_test - name: default position_test
run: cd build && cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. && ninja && ../install/position_test run: cd build && cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. && ninja && ../install/position_test
build-macos-xcode:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: install dependencies
run: brew update && brew install ninja pkg-config hdf5 automake armadillo lapack gflags glog gnuradio log4cpp openssl pugixml protobuf && pip3 install mako
- name: configure
run: cd build && cmake -GXcode ..
- name: build
run: cd build && xcodebuild -configuration Release
- name: check
run: cd build && xcodebuild -configuration Release -target check && ../install/volk_gnsssdr_profile && ../install/run_tests
- name: default position_test
run: cd build && cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. && xcodebuild -configuration Release -target position_test && ../install/position_test
clang-format: clang-format:
runs-on: macos-latest runs-on: macos-latest
steps: steps:

View File

@@ -1115,13 +1115,11 @@ if(NOT VOLKGNSSSDR_FOUND)
if(PYTHON_EXECUTABLE) if(PYTHON_EXECUTABLE)
set(USE_THIS_PYTHON "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}") set(USE_THIS_PYTHON "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}")
endif() endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(CMAKE_GENERATOR STREQUAL Xcode) if(CMAKE_GENERATOR STREQUAL Xcode)
set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild"
"-configuration" $<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>$<$<CONFIG:MinSizeRel>:MinSizeRel> "-configuration" $<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>$<$<CONFIG:MinSizeRel>:MinSizeRel>
"-alltargets" )
)
endif()
endif() endif()
if(CMAKE_TOOLCHAIN_FILE) if(CMAKE_TOOLCHAIN_FILE)
@@ -1155,11 +1153,7 @@ if(NOT VOLKGNSSSDR_FOUND)
${STRIP_VOLK_GNSSSDR_PROFILE} ${STRIP_VOLK_GNSSSDR_PROFILE}
${USE_THIS_PYTHON} ${USE_THIS_PYTHON}
) )
if(CMAKE_VERSION VERSION_GREATER 3.18.99 AND CMAKE_GENERATOR STREQUAL Xcode)
if(XCODE_VERSION VERSION_GREATER 11)
set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} -T buildsystem=1)
endif()
endif()
if(DEFINED ENV{OECORE_TARGET_SYSROOT}) if(DEFINED ENV{OECORE_TARGET_SYSROOT})
set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS}
-DCROSSCOMPILE_MULTILIB=TRUE -DCROSSCOMPILE_MULTILIB=TRUE

View File

@@ -35,8 +35,6 @@ add_executable(volk_gnsssdr_profile
${CMAKE_CURRENT_SOURCE_DIR}/volk_gnsssdr_option_helpers.cc ${CMAKE_CURRENT_SOURCE_DIR}/volk_gnsssdr_option_helpers.cc
) )
add_dependencies(volk_gnsssdr_profile volk_gnsssdr)
if(MSVC) if(MSVC)
target_include_directories(volk_gnsssdr_profile target_include_directories(volk_gnsssdr_profile
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/cmake/msvc> PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/cmake/msvc>
@@ -59,7 +57,6 @@ if(NOT FILESYSTEM_FOUND)
target_link_libraries(volk_gnsssdr_profile PRIVATE ${Boost_LIBRARIES}) target_link_libraries(volk_gnsssdr_profile PRIVATE ${Boost_LIBRARIES})
endif() endif()
if(FILESYSTEM_FOUND) if(FILESYSTEM_FOUND)
add_definitions(-DHAS_STD_FILESYSTEM=1) add_definitions(-DHAS_STD_FILESYSTEM=1)
if(${find_experimental}) if(${find_experimental})
@@ -72,10 +69,8 @@ if(ENABLE_STATIC_LIBS)
target_link_libraries(volk_gnsssdr_profile PRIVATE volk_gnsssdr_static ${orc_lib}) target_link_libraries(volk_gnsssdr_profile PRIVATE volk_gnsssdr_static ${orc_lib})
else() else()
target_link_libraries(volk_gnsssdr_profile PRIVATE volk_gnsssdr ${orc_lib}) target_link_libraries(volk_gnsssdr_profile PRIVATE volk_gnsssdr ${orc_lib})
add_dependencies(volk_gnsssdr_profile volk_gnsssdr)
endif() endif()
if(ENABLE_STRIP) if(ENABLE_STRIP)
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32)
set_target_properties(volk_gnsssdr_profile set_target_properties(volk_gnsssdr_profile
@@ -84,23 +79,19 @@ if(ENABLE_STRIP)
endif() endif()
endif() endif()
install( install(
TARGETS volk_gnsssdr_profile TARGETS volk_gnsssdr_profile
DESTINATION bin DESTINATION bin
COMPONENT "volk_gnsssdr" COMPONENT "volk_gnsssdr"
) )
# MAKE volk_gnsssdr-config-info # MAKE volk_gnsssdr-config-info
add_executable(volk_gnsssdr-config-info volk_gnsssdr-config-info.cc ${CMAKE_CURRENT_SOURCE_DIR}/volk_gnsssdr_option_helpers.cc) add_executable(volk_gnsssdr-config-info volk_gnsssdr-config-info.cc ${CMAKE_CURRENT_SOURCE_DIR}/volk_gnsssdr_option_helpers.cc)
if(ENABLE_STATIC_LIBS) if(ENABLE_STATIC_LIBS)
target_link_libraries(volk_gnsssdr-config-info volk_gnsssdr_static ${orc_lib}) target_link_libraries(volk_gnsssdr-config-info volk_gnsssdr_static ${orc_lib})
else() else()
target_link_libraries(volk_gnsssdr-config-info volk_gnsssdr ${orc_lib}) target_link_libraries(volk_gnsssdr-config-info volk_gnsssdr ${orc_lib})
add_dependencies(volk_gnsssdr-config-info volk_gnsssdr)
endif() endif()
if(ENABLE_STRIP) if(ENABLE_STRIP)
@@ -117,7 +108,6 @@ install(
COMPONENT "volk_gnsssdr" COMPONENT "volk_gnsssdr"
) )
# Launch volk_gnsssdr_profile if requested to do so # Launch volk_gnsssdr_profile if requested to do so
if(ENABLE_PROFILING) if(ENABLE_PROFILING)
if(DEFINED VOLK_CONFIGPATH) if(DEFINED VOLK_CONFIGPATH)

View File

@@ -558,65 +558,70 @@ else()
endif() endif()
# Add dynamic library # Add dynamic library
if(CMAKE_GENERATOR STREQUAL Xcode) # Note: new Xcode buildsystem does not allow building both static and dynamic libraries
add_library(volk_gnsssdr SHARED ${volk_gnsssdr_sources}) # so we only build dynamic if ENABLE_STATIC_LIBS is not enabled in that generator.
else() # For other generators than XCode, the dynamic library is always built.
add_library(volk_gnsssdr SHARED $<TARGET_OBJECTS:volk_gnsssdr_obj>) if(NOT (ENABLE_STATIC_LIBS AND (CMAKE_GENERATOR STREQUAL Xcode)))
endif() if(CMAKE_GENERATOR STREQUAL Xcode)
if(USE_CPU_FEATURES) add_library(volk_gnsssdr SHARED ${volk_gnsssdr_sources})
if(CPUFEATURES_FOUND)
target_link_libraries(volk_gnsssdr
PUBLIC ${volk_gnsssdr_libraries}
PRIVATE CpuFeature::cpu_features
)
else() else()
target_link_libraries(volk_gnsssdr add_library(volk_gnsssdr SHARED $<TARGET_OBJECTS:volk_gnsssdr_obj>)
PUBLIC ${volk_gnsssdr_libraries}
PRIVATE cpu_features
)
endif() endif()
else() if(USE_CPU_FEATURES)
target_link_libraries(volk_gnsssdr PUBLIC ${volk_gnsssdr_libraries}) if(CPUFEATURES_FOUND)
endif() target_link_libraries(volk_gnsssdr
target_include_directories(volk_gnsssdr PUBLIC ${volk_gnsssdr_libraries}
PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> PRIVATE CpuFeature::cpu_features
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> )
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/kernels> else()
PRIVATE ${CMAKE_CURRENT_BINARY_DIR} target_link_libraries(volk_gnsssdr
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${volk_gnsssdr_libraries}
PUBLIC $<INSTALL_INTERFACE:include> PRIVATE cpu_features
) )
if(USE_CPU_FEATURES) endif()
if(CPUFEATURES_FOUND)
target_include_directories(volk_gnsssdr
PRIVATE
$<TARGET_PROPERTY:CpuFeature::cpu_features,INTERFACE_INCLUDE_DIRECTORIES>
)
else() else()
target_include_directories(volk_gnsssdr target_link_libraries(volk_gnsssdr PUBLIC ${volk_gnsssdr_libraries})
PRIVATE
$<TARGET_PROPERTY:cpu_features,INTERFACE_INCLUDE_DIRECTORIES>
)
endif() endif()
endif() target_include_directories(volk_gnsssdr
# Configure target properties PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
if(ORC_FOUND) PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
target_link_libraries(volk_gnsssdr PRIVATE ${ORC_LIBRARIES}) PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/kernels>
endif() PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
if(NOT MSVC) PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
target_link_libraries(volk_gnsssdr PUBLIC m) PUBLIC $<INSTALL_INTERFACE:include>
endif() )
set_target_properties(volk_gnsssdr PROPERTIES VERSION ${VERSION}) if(USE_CPU_FEATURES)
set_target_properties(volk_gnsssdr PROPERTIES SOVERSION ${SOVERSION}) if(CPUFEATURES_FOUND)
set_target_properties(volk_gnsssdr PROPERTIES DEFINE_SYMBOL "volk_gnsssdr_EXPORTS") target_include_directories(volk_gnsssdr
PRIVATE
$<TARGET_PROPERTY:CpuFeature::cpu_features,INTERFACE_INCLUDE_DIRECTORIES>
)
else()
target_include_directories(volk_gnsssdr
PRIVATE
$<TARGET_PROPERTY:cpu_features,INTERFACE_INCLUDE_DIRECTORIES>
)
endif()
endif()
# Configure target properties
if(ORC_FOUND)
target_link_libraries(volk_gnsssdr PRIVATE ${ORC_LIBRARIES})
endif()
if(NOT MSVC)
target_link_libraries(volk_gnsssdr PUBLIC m)
endif()
set_target_properties(volk_gnsssdr PROPERTIES VERSION ${VERSION})
set_target_properties(volk_gnsssdr PROPERTIES SOVERSION ${SOVERSION})
set_target_properties(volk_gnsssdr PROPERTIES DEFINE_SYMBOL "volk_gnsssdr_EXPORTS")
# Install locations # Install locations
install(TARGETS volk_gnsssdr install(TARGETS volk_gnsssdr
EXPORT VOLK_GNSSSDR-export EXPORT VOLK_GNSSSDR-export
LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_gnsssdr_runtime" # .so file LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_gnsssdr_runtime" # .so file
ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_gnsssdr_devel" # .lib file ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_gnsssdr_devel" # .lib file
RUNTIME DESTINATION bin COMPONENT "volk_gnsssdr_runtime" # .dll file RUNTIME DESTINATION bin COMPONENT "volk_gnsssdr_runtime" # .dll file
) )
endif()
# Configure static library # Configure static library
if(ENABLE_STATIC_LIBS) if(ENABLE_STATIC_LIBS)