From b67f401c373f182a426a2d79e77e66f9277981da Mon Sep 17 00:00:00 2001 From: Thrita Date: Thu, 23 Jan 2025 13:05:10 +0330 Subject: [PATCH] Add support for Apple-Framework builds (#466) * Build: Add support for Apple-Frameworks builds Signed-off-by: Treata11 * Ignore build directories and Finder's temp files --------- Signed-off-by: Treata11 --- .gitignore | 3 +++ CMakeLists.txt | 4 ++++ libde265/CMakeLists.txt | 21 ++++++++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 246486c56..43e64a339 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ configure *.la de265-config.h libde265.pc +*.DS_Store # MSVC *.sln @@ -45,6 +46,8 @@ libde265.pc /ltmain.sh /stamp-h1 /test-suite.log +/build +/_build # ctags tags diff --git a/CMakeLists.txt b/CMakeLists.txt index 6066e9ffe..ab7c6a81c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,10 @@ if(NOT BUILD_SHARED_LIBS) add_definitions(-DLIBDE265_STATIC_BUILD) endif() +if(APPLE) + option(BUILD_FRAMEWORK "Build as Apple Frameworks" OFF) +endif() + include_directories ("${PROJECT_SOURCE_DIR}") include_directories ("${PROJECT_BINARY_DIR}") include_directories ("${PROJECT_SOURCE_DIR}/libde265") diff --git a/libde265/CMakeLists.txt b/libde265/CMakeLists.txt index 79fc81f92..5a9c7a8a1 100644 --- a/libde265/CMakeLists.txt +++ b/libde265/CMakeLists.txt @@ -121,7 +121,7 @@ if(HAVE_X86) endif() endif() -add_library(de265 ${libde265_sources} ${ENCODER_OBJECTS} ${X86_OBJECTS}) +add_library(de265 ${libde265_sources} ${libde265_public_headers} ${ENCODER_OBJECTS} ${X86_OBJECTS}) target_link_libraries(de265 PRIVATE Threads::Threads) target_include_directories(de265 PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}) @@ -131,10 +131,29 @@ if (WIN32) set_target_properties(de265 PROPERTIES PREFIX "lib") endif() +if (BUILD_FRAMEWORK) + set_target_properties(de265 PROPERTIES + FRAMEWORK TRUE + FRAMEWORK_VERSION "${PROJECT_VERSION}" + PRODUCT_BUNDLE_IDENTIFIER "github.com/strukturag/libde265" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + # OUTPUT_NAME "de265" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO" + PUBLIC_HEADER "${libde265_public_headers}" + MACOSX_FRAMEWORK_IDENTIFIER "github.com/strukturag/libde265" + MACOSX_FRAMEWORK_BUNDLE_VERSION "${PROJECT_VERSION}" + MACOSX_RPATH TRUE) +endif() + install(TARGETS de265 EXPORT libde265Config RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FRAMEWORK DESTINATION Library/Frameworks COMPONENT runtime OPTIONAL + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libde265 ) install(FILES ${libde265_public_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libde265)