diff --git a/CMakeLists.txt b/CMakeLists.txt index 075929b86ba0..bd39700f4e3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,11 +91,23 @@ add_compile_flags("C;CXX" ${PREFIX_MAP_FLAGS}) set(DEPENDENCY_CFLAGS "${DEPENDENCY_CFLAGS} ${PREFIX_MAP_FLAGS}") set(DEPENDENCY_CXXFLAGS "${DEPENDENCY_CXXFLAGS} ${PREFIX_MAP_FLAGS}") +if(APPLE AND NOT CMAKE_OSX_SYSROOT) + execute_process( + COMMAND xcrun --show-sdk-path + OUTPUT_VARIABLE OSX_SDK_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + set(CMAKE_OSX_SYSROOT "${OSX_SDK_PATH}" CACHE PATH "macOS SDK path" FORCE) + message(STATUS "Using macOS SDK: ${CMAKE_OSX_SYSROOT}") +endif() + # We need this for bundled SASL & LDAP libs (in fact, for any autotools-based project) if(APPLE) - set(DEPENDENCY_CFLAGS "${DEPENDENCY_CFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}") - set(DEPENDENCY_CPPFLAGS "${DEPENDENCY_CPPFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}") - set(DEPENDENCY_CXXFLAGS "${DEPENDENCY_CXXFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}") + if(CMAKE_OSX_SYSROOT) + set(DEPENDENCY_CFLAGS "${DEPENDENCY_CFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}") + set(DEPENDENCY_CPPFLAGS "${DEPENDENCY_CPPFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}") + set(DEPENDENCY_CXXFLAGS "${DEPENDENCY_CXXFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}") + endif() endif() # Gcc 15 sets --std=gnu23 by default, breaking many dependencies. diff --git a/cmake/BuildLibXXhash.cmake b/cmake/BuildLibXXhash.cmake index 9a96bf9e1387..c9f30ff463e7 100644 --- a/cmake/BuildLibXXhash.cmake +++ b/cmake/BuildLibXXhash.cmake @@ -12,7 +12,7 @@ macro(libxxhash_build) # Remaining properties are the same as for zstd # (see cmake/BuildZSTD.cmake). set_source_files_properties(${xxhash_src} - PROPERTIES COMPILE_FLAGS "${DEPENDENCY_CFLAGS} -Ofast -DXXH_NAMESPACE=tnt_") + PROPERTIES COMPILE_FLAGS "${DEPENDENCY_CFLAGS} -O3 -DXXH_NAMESPACE=tnt_") add_library(xxhash STATIC ${xxhash_src}) set(XXHASH_LIBRARIES xxhash) diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index 14652a95a420..ff592bfbe5bd 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -158,7 +158,7 @@ option(ENABLE_BUNDLED_LIBUNWIND "Bundled libunwind will be built" # In Clang there is no '-static-libstdc++' flag and its use will raise # the following error: # clang: error: argument unused during compilation: '-static-libstdc++' -if(BUILD_STATIC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +if(BUILD_STATIC AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) # Static linking for c++ routines add_compile_flags("C;CXX" "-static-libstdc++") endif() diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index b973dc501f2b..bea1d96aeaf8 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -2,6 +2,25 @@ add_subdirectory(bit) add_subdirectory(bitset) set(SMALL_EMBEDDED ON) add_subdirectory(small) + +# Remove only src/lib/small (the root with the VERSION file), +# but leave src/lib/small/include and src/lib/small/include/small +foreach(tgt IN ITEMS small small_shared small.perftest) + if(TARGET ${tgt}) + get_target_property(dirs ${tgt} INCLUDE_DIRECTORIES) + if(dirs) + set(new_dirs "") + foreach(d ${dirs}) + # убираем только если путь совпадает ровно с корнем сабмодуля + if(NOT d STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/small") + list(APPEND new_dirs "${d}") + endif() + endforeach() + set_target_properties(${tgt} PROPERTIES INCLUDE_DIRECTORIES "${new_dirs}") + endif() + endif() +endforeach() + add_subdirectory(salad) add_subdirectory(csv) add_subdirectory(json) diff --git a/static-build/cmake/AddTarantoolProject.cmake b/static-build/cmake/AddTarantoolProject.cmake index 09b9717cb2f7..8dc40ae10b47 100644 --- a/static-build/cmake/AddTarantoolProject.cmake +++ b/static-build/cmake/AddTarantoolProject.cmake @@ -1,5 +1,15 @@ include(ExternalProject) +# On macOS, we explicitly throw the SDK into a child project +if (APPLE) + execute_process( + COMMAND xcrun --show-sdk-path + OUTPUT_VARIABLE OSX_SYSROOT + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + list(APPEND TARANTOOL_ARGS -DCMAKE_OSX_SYSROOT=${OSX_SYSROOT}) +endif() + ExternalProject_Add(tarantool DEPENDS ${TARANTOOL_DEPENDS} SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..