Merge pull request #4259 from Treata11/dev
Add support for Apple framework builds
This commit is contained in:
@@ -12,6 +12,8 @@
|
|||||||
*.so
|
*.so
|
||||||
*.so.*
|
*.so.*
|
||||||
*.dylib
|
*.dylib
|
||||||
|
*.framework
|
||||||
|
*.xcframework
|
||||||
|
|
||||||
# Executables
|
# Executables
|
||||||
/zstd
|
/zstd
|
||||||
|
|||||||
@@ -30,8 +30,11 @@ set(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib)
|
|||||||
include(GetZstdLibraryVersion)
|
include(GetZstdLibraryVersion)
|
||||||
GetZstdLibraryVersion(${LIBRARY_DIR}/zstd.h zstd_VERSION_MAJOR zstd_VERSION_MINOR zstd_VERSION_PATCH)
|
GetZstdLibraryVersion(${LIBRARY_DIR}/zstd.h zstd_VERSION_MAJOR zstd_VERSION_MINOR zstd_VERSION_PATCH)
|
||||||
|
|
||||||
|
set(ZSTD_SHORT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}")
|
||||||
|
set(ZSTD_FULL_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}")
|
||||||
|
|
||||||
project(zstd
|
project(zstd
|
||||||
VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
|
VERSION "${ZSTD_FULL_VERSION}"
|
||||||
LANGUAGES C # Main library is in C
|
LANGUAGES C # Main library is in C
|
||||||
ASM # And ASM
|
ASM # And ASM
|
||||||
CXX # Testing contributed code also utilizes CXX
|
CXX # Testing contributed code also utilizes CXX
|
||||||
@@ -82,6 +85,10 @@ else ()
|
|||||||
add_definitions(-DZSTD_LEGACY_SUPPORT=0)
|
add_definitions(-DZSTD_LEGACY_SUPPORT=0)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
option(ZSTD_FRAMEWORK "Build as Apple Frameworks" OFF)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (ANDROID)
|
if (ANDROID)
|
||||||
set(ZSTD_MULTITHREAD_SUPPORT_DEFAULT OFF)
|
set(ZSTD_MULTITHREAD_SUPPORT_DEFAULT OFF)
|
||||||
# Old versions of bionic libc don't have fseeko/ftello
|
# Old versions of bionic libc don't have fseeko/ftello
|
||||||
|
|||||||
@@ -41,6 +41,16 @@ cmake -DZSTD_BUILD_TESTS=ON -DZSTD_LEGACY_SUPPORT=OFF ..
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Apple Frameworks**
|
||||||
|
It's generally recommended to have CMake with versions higher than 3.14 for [iOS-derived platforms](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#id27).
|
||||||
|
```sh
|
||||||
|
cmake -S. -B build-cmake -DZSTD_FRAMEWORK=ON -DCMAKE_SYSTEM_NAME=iOS
|
||||||
|
```
|
||||||
|
Or you can utilize [iOS-CMake](https://github.com/leetal/ios-cmake) toolchain for CMake versions lower than 3.14
|
||||||
|
```sh
|
||||||
|
cmake -B build -G Xcode -DCMAKE_TOOLCHAIN_FILE=<Path To ios.toolchain.cmake> -DPLATFORM=OS64 -DZSTD_FRAMEWORK=ON
|
||||||
|
```
|
||||||
|
|
||||||
### how to use it with CMake FetchContent
|
### how to use it with CMake FetchContent
|
||||||
|
|
||||||
For all options available, you can see it on <https://github.com/facebook/zstd/blob/dev/build/cmake/lib/CMakeLists.txt>
|
For all options available, you can see it on <https://github.com/facebook/zstd/blob/dev/build/cmake/lib/CMakeLists.txt>
|
||||||
|
|||||||
@@ -205,8 +205,28 @@ if (ZSTD_BUILD_SHARED)
|
|||||||
libzstd_shared
|
libzstd_shared
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
OUTPUT_NAME zstd
|
OUTPUT_NAME zstd
|
||||||
VERSION ${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}
|
VERSION ${ZSTD_FULL_VERSION}
|
||||||
SOVERSION ${zstd_VERSION_MAJOR})
|
SOVERSION ${zstd_VERSION_MAJOR})
|
||||||
|
|
||||||
|
if (ZSTD_FRAMEWORK)
|
||||||
|
set_target_properties(
|
||||||
|
libzstd_shared
|
||||||
|
PROPERTIES
|
||||||
|
FRAMEWORK TRUE
|
||||||
|
FRAMEWORK_VERSION "${ZSTD_FULL_VERSION}"
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER "github.com/facebook/zstd"
|
||||||
|
XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
|
||||||
|
PUBLIC_HEADER "${PublicHeaders}"
|
||||||
|
OUTPUT_NAME "zstd"
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
|
||||||
|
MACOSX_FRAMEWORK_IDENTIFIER "github.com/facebook/zstd"
|
||||||
|
MACOSX_FRAMEWORK_BUNDLE_VERSION "${ZSTD_FULL_VERSION}"
|
||||||
|
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${ZSTD_SHORT_VERSION}"
|
||||||
|
MACOSX_RPATH TRUE
|
||||||
|
RESOURCE ${PublicHeaders})
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (ZSTD_BUILD_STATIC)
|
if (ZSTD_BUILD_STATIC)
|
||||||
@@ -215,6 +235,26 @@ if (ZSTD_BUILD_STATIC)
|
|||||||
PROPERTIES
|
PROPERTIES
|
||||||
POSITION_INDEPENDENT_CODE On
|
POSITION_INDEPENDENT_CODE On
|
||||||
OUTPUT_NAME ${STATIC_LIBRARY_BASE_NAME})
|
OUTPUT_NAME ${STATIC_LIBRARY_BASE_NAME})
|
||||||
|
|
||||||
|
if (ZSTD_FRAMEWORK)
|
||||||
|
set_target_properties(
|
||||||
|
libzstd_static
|
||||||
|
PROPERTIES
|
||||||
|
FRAMEWORK TRUE
|
||||||
|
FRAMEWORK_VERSION "${ZSTD_FULL_VERSION}"
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER "github.com/facebook/zstd/${STATIC_LIBRARY_BASE_NAME}"
|
||||||
|
XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
|
||||||
|
PUBLIC_HEADER "${PublicHeaders}"
|
||||||
|
OUTPUT_NAME "${STATIC_LIBRARY_BASE_NAME}"
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
|
||||||
|
MACOSX_FRAMEWORK_IDENTIFIER "github.com/facebook/zstd/${STATIC_LIBRARY_BASE_NAME}"
|
||||||
|
MACOSX_FRAMEWORK_BUNDLE_VERSION "${ZSTD_FULL_VERSION}"
|
||||||
|
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${ZSTD_SHORT_VERSION}"
|
||||||
|
MACOSX_RPATH TRUE
|
||||||
|
RESOURCE ${PublicHeaders})
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# pkg-config
|
# pkg-config
|
||||||
@@ -239,6 +279,9 @@ install(TARGETS ${library_targets}
|
|||||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
|
FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime OPTIONAL
|
||||||
|
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# uninstall target
|
# uninstall target
|
||||||
|
|||||||
Reference in New Issue
Block a user