From 1146063633754b32a68d2fa8fdbcf6606250039d Mon Sep 17 00:00:00 2001 From: Canming Huang Date: Thu, 19 Nov 2020 16:14:40 -0500 Subject: [PATCH] Move macos binary from libs/osx to libs/macos --- CMakeLists.txt | 20 +++++++++++-------- Emgu.CV.Extern/CMakeLists.txt | 20 +++++++++++++++++++ .../Mac/Emgu.CV.Runtime.Mac.projitems | 2 +- cmake/macos/Info.plist | 14 +++++++++++++ 4 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 cmake/macos/Info.plist diff --git a/CMakeLists.txt b/CMakeLists.txt index aed6aa2e1..9fb434ce8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -379,7 +379,11 @@ ELSEIF(WIN32) #MESSAGE(STATUS ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> EMGUCV_ARCH: ${EMGUCV_ARCH}") #MESSAGE(STATUS ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER: ${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER}") ELSEIF(APPLE AND NOT IOS) - SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/osx") + IF ("${EMGUCV_ARCH}" STREQUAL "arm64") + SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/macos/arm64") + ELSE() + SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/macos/x64") + ENDIF() ELSEIF("${EMGUCV_ARCH}" STREQUAL "ubuntu_x64") SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/x64") ELSEIF("${EMGUCV_ARCH}" STREQUAL "ubuntu_x86") @@ -495,7 +499,7 @@ IF(APPLE AND (NOT IOS)) SET(IS_OSX_BUILD ON) MESSAGE(STATUS "IS_OSX_BUILD: ${IS_OSX_BUILD}") ENDIF() -CHECK_BINARY_EXIST("libs/osx" "libcvextern.dylib" HAVE_OSX ${IS_OSX_BUILD}) +CHECK_BINARY_EXIST("libs/macos" "libcvextern.dylib" HAVE_OSX ${IS_OSX_BUILD}) SET(IS_ANDROID_ARM64_V8A_BUILD OFF) IF(ANDROID AND ("${ANDROID_ABI}" STREQUAL "arm64-v8a")) @@ -732,7 +736,7 @@ SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}${IOS_LABEL}${ANDROID_LABEL}${OSX_LABEL}$ #ENDIF() #IF (APPLE) -# SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-osx") +# SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-macos") #ENDIF() IF(WITH_CUDA) @@ -1058,7 +1062,7 @@ ENDIF() SET(EMGUCV_MACOS_NUGET_FILE_LIST "") IF(HAVE_OSX) SET(EMGUCV_MACOS_NUGET_FILE_LIST "${EMGUCV_MACOS_NUGET_FILE_LIST} - + ") @@ -1689,8 +1693,8 @@ IF(HAVE_OSX) IF (NOT IS_OSX_BUILD) INSTALL( FILES - "libs/osx/libcvextern.dylib" - DESTINATION "libs/osx" + "libs/macos/libcvextern.dylib" + DESTINATION "libs/macos" COMPONENT emgucv_binary ) ENDIF() @@ -2252,7 +2256,7 @@ ELSEIF (APPLE) SET(CPACK_GENERATOR ZIP) SET(CPACK_BUNDLE_NAME ${CPACK_PACKAGE_NAME}) - SET(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/platforms/osx/icons.icns") + SET(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/icons.icns") IF (IOS) SET(CPACK_ARCHIVE_COMPONENT_INSTALL ON) #enable components install for zip IF(CPACK_GENERATOR MATCHES "ZIP") @@ -2344,7 +2348,7 @@ ELSEIF (APPLE) # ---------------------------------------------------------------------------- # Generate required common assembly file for Emgu CV project # ---------------------------------------------------------------------------- - SET(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/CMake/osx/Info.plist) + SET(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos/Info.plist) FILE(WRITE ${CPACK_BUNDLE_PLIST} " diff --git a/Emgu.CV.Extern/CMakeLists.txt b/Emgu.CV.Extern/CMakeLists.txt index c7072fb18..42f81e288 100644 --- a/Emgu.CV.Extern/CMakeLists.txt +++ b/Emgu.CV.Extern/CMakeLists.txt @@ -3359,6 +3359,26 @@ ELSEIF (APPLE) XCODE_ATTRIBUTE_STRIPFLAGS "-x -u -r" XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING "YES" ) + IF ("${EMGUCV_ARCH}" STREQUAL "arm64") + SET(CV_EXTERN_FILE_NAME "libcvextern_arm64.dylib") + ELSE() + SET(CV_EXTERN_FILE_NAME "libcvextern_x64.dylib") + ENDIF() + add_custom_command(TARGET ${the_target} + POST_BUILD + COMMAND mkdir -p ${UNMANAGED_LIBRARY_OUTPUT_PATH}/../arch + #WORKING_DIRECTORY "${UNMANAGED_LIBRARY_OUTPUT_PATH}" + COMMENT "Creating arch folder: ${UNMANAGED_LIBRARY_OUTPUT_PATH}/../arch") + add_custom_command(TARGET ${the_target} + POST_BUILD + COMMAND cp -f ${UNMANAGED_LIBRARY_OUTPUT_PATH}/libcvextern.dylib ${UNMANAGED_LIBRARY_OUTPUT_PATH}/../arch/${CV_EXTERN_FILE_NAME} + #WORKING_DIRECTORY "${UNMANAGED_LIBRARY_OUTPUT_PATH}" + COMMENT "Copying file to ${UNMANAGED_LIBRARY_OUTPUT_PATH}/../arch/${CV_EXTERN_FILE_NAME}") + add_custom_command(TARGET ${the_target} + POST_BUILD + COMMAND lipo ${UNMANAGED_LIBRARY_OUTPUT_PATH}/../arch/*.dylib -output ${UNMANAGED_LIBRARY_OUTPUT_PATH}/../libcvextern.dylib -create + #WORKING_DIRECTORY "${UNMANAGED_LIBRARY_OUTPUT_PATH}" + COMMENT "Linking target for all architectures.") ENDIF() #IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten") diff --git a/Emgu.CV.Runtime/Mac/Emgu.CV.Runtime.Mac.projitems b/Emgu.CV.Runtime/Mac/Emgu.CV.Runtime.Mac.projitems index 2ce442ee1..4bd4c0f52 100644 --- a/Emgu.CV.Runtime/Mac/Emgu.CV.Runtime.Mac.projitems +++ b/Emgu.CV.Runtime/Mac/Emgu.CV.Runtime.Mac.projitems @@ -9,7 +9,7 @@ Emgu.CV - ..\..\libs\osx + ..\..\libs\macos Xamarin.Mac diff --git a/cmake/macos/Info.plist b/cmake/macos/Info.plist new file mode 100644 index 000000000..9864054be --- /dev/null +++ b/cmake/macos/Info.plist @@ -0,0 +1,14 @@ + + + + + CFBundleIdentifier + com.emgu.emgucv + CFBundleName + emgucv-macos + CFBundleVersion + 1 + LSMinimumSystemVersion + 10.6 + + \ No newline at end of file