[Fix] Support macOS build ()

* fix macOS build

* fix missing
pull/853/head
Li Zhang 2022-07-26 21:54:49 +08:00 committed by GitHub
parent 0e1a3aa8c7
commit bfd46c1c68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 29 additions and 8 deletions
csrc/mmdeploy
backend_ops/onnxruntime
codebase/mmocr/cpu

View File

@ -126,10 +126,16 @@ function (mmdeploy_load_static NAME)
target_link_libraries(${NAME} PRIVATE ${ARGN})
else ()
_mmdeploy_flatten_modules(_MODULE_LIST ${ARGN})
target_link_libraries(${NAME} PRIVATE
-Wl,--whole-archive
${_MODULE_LIST}
-Wl,--no-whole-archive)
if (APPLE)
foreach (module IN LISTS _MODULE_LIST)
target_link_libraries(${NAME} PRIVATE -force_load ${module})
endforeach ()
else ()
target_link_libraries(${NAME} PRIVATE
-Wl,--whole-archive
${_MODULE_LIST}
-Wl,--no-whole-archive)
endif ()
endif ()
endfunction ()
@ -158,6 +164,8 @@ function (mmdeploy_load_dynamic NAME)
mmdeploy_add_module(${_LOADER_NAME} STATIC EXCLUDE ${_LOADER_PATH})
mmdeploy_load_static(${NAME} ${_LOADER_NAME})
elseif (APPLE)
target_link_libraries(${NAME} PRIVATE ${_MODULE_LIST})
else ()
target_link_libraries(${NAME} PRIVATE
-Wl,--no-as-needed

View File

@ -8,6 +8,8 @@ include(${CMAKE_SOURCE_DIR}/cmake/modules/FindONNXRUNTIME.cmake)
file(GLOB_RECURSE ORT_OPS_SRCS *.cpp)
add_library(${PROJECT_NAME}_obj OBJECT "${ORT_OPS_SRCS}")
target_compile_definitions(${PROJECT_NAME}_obj PRIVATE -DMMDEPLOY_API_EXPORTS=1)
target_compile_options(${PROJECT_NAME}_obj PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:-fvisibility=hidden>)
set_target_properties(${PROJECT_NAME}_obj PROPERTIES POSITION_INDEPENDENT_CODE 1)
mmdeploy_export(${PROJECT_NAME}_obj)

View File

@ -5,6 +5,9 @@ project(mmdeploy_mmocr_cpu_impl CXX)
if ("cpu" IN_LIST MMDEPLOY_TARGET_DEVICES)
add_library(${PROJECT_NAME} OBJECT dbnet.cpp panet.cpp psenet.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE 1)
if (NOT (MMDEPLOY_SHARED_LIBS OR MSVC))
target_compile_options(${PROJECT_NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility=hidden>)
endif ()
target_link_libraries(${PROJECT_NAME} PRIVATE
mmdeploy_opencv_utils
mmdeploy::core)

View File

@ -14,6 +14,9 @@ else ()
set(MMDEPLOY_SPDLOG_DIR ${CMAKE_SOURCE_DIR}/third_party/spdlog)
add_subdirectory(${MMDEPLOY_SPDLOG_DIR} ${CMAKE_CURRENT_BINARY_DIR}/spdlog EXCLUDE_FROM_ALL)
set_target_properties(spdlog PROPERTIES POSITION_INDEPENDENT_CODE ON)
if (NOT (MMDEPLOY_SHARED_LIBS OR MSVC))
target_compile_options(spdlog PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility=hidden>)
endif ()
set(SPDLOG_LIB spdlog::spdlog)
mmdeploy_export(spdlog)
if (MMDEPLOY_BUILD_SDK_CXX_API)
@ -62,7 +65,7 @@ if (MMDEPLOY_BUILD_SDK_CXX_API)
endif ()
target_link_libraries(${PROJECT_NAME} PUBLIC ${SPDLOG_LIB})
if (NOT (MSVC OR ANDROID))
if (NOT (MSVC OR ANDROID OR APPLE))
target_link_libraries(${PROJECT_NAME} PUBLIC stdc++fs)
endif ()
add_library(mmdeploy::core ALIAS ${PROJECT_NAME})

View File

@ -10,7 +10,8 @@ endif ()
foreach (MODEL_NAME ${MODEL_NAMES})
set(TARGET_MODEL_NAME mmdeploy_${MODEL_NAME})
mmdeploy_add_module(${TARGET_MODEL_NAME} ${MODEL_NAME}_impl.cpp)
if (NOT (MSVC OR ANDROID))
# TODO: stdc++fs only exists in libstdc++
if (NOT (MSVC OR ANDROID OR APPLE))
target_link_libraries(${TARGET_MODEL_NAME} PUBLIC stdc++fs)
endif ()
if (${MODEL_NAME} STREQUAL "zip_model")

View File

@ -9,7 +9,7 @@ function(add_example task name)
# Search for c/cpp sources
file(GLOB _SRCS ${name}.c*)
add_executable(${name} ${_SRCS})
if (NOT MSVC)
if (NOT (MSVC OR APPLE))
# Disable new dtags so that executables can run even without LD_LIBRARY_PATH set
target_link_libraries(${name} PRIVATE -Wl,--disable-new-dtags)
endif ()

View File

@ -65,6 +65,10 @@ target_include_directories(mmdeploy_tests
PRIVATE ${CMAKE_SOURCE_DIR}/third_party/catch2)
target_include_directories(mmdeploy_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
if (NOT (MMDEPLOY_SHARED_LIBS OR MSVC))
target_compile_options(mmdeploy_tests PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility=hidden>)
endif ()
mmdeploy_load_static(mmdeploy_tests MMDeployStaticModules)
mmdeploy_load_dynamic(mmdeploy_tests MMDeployDynamicModules)
target_link_libraries(mmdeploy_tests PRIVATE

View File

@ -180,7 +180,7 @@ void TestFunc(const char* sched_name) {
}
SECTION("Bulk") {
auto sender = Just(Value(Value::Array(100))) | Transfer(sched) |
Bulk(100, [](size_t index, Value& v) { v[index] = index; });
Bulk(100, [](size_t index, Value& v) { v[index] = (uint32_t)index; });
auto [value] = SyncWait(std::move(sender));
std::vector<int> a;
std::vector<int> b;