diff --git a/CMakeLists.txt b/CMakeLists.txt index 88894c36..2a0992ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,11 @@ set(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/bin" CACHE PATH "The subdirectory to set(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The subdirectory to the header prefix" FORCE) +if(APPLE) + option(BUILD_FRAMEWORK "Build an OS X framework" OFF) + set(FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to.") +endif() + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") diff --git a/bindings/c/CMakeLists.txt b/bindings/c/CMakeLists.txt index e9c8843f..d6f19855 100644 --- a/bindings/c/CMakeLists.txt +++ b/bindings/c/CMakeLists.txt @@ -21,14 +21,17 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib_c.pc.cmake ${CMAKE_CURRENT_BIN set(tag_c_HDRS tag_c.h) if(ENABLE_STATIC) - add_library(tag_c STATIC tag_c.cpp) + add_library(tag_c STATIC tag_c.cpp ${tag_c_HDRS}) set_target_properties(tag_c PROPERTIES COMPILE_DEFINITIONS TAGLIB_STATIC) else() - add_library(tag_c SHARED tag_c.cpp) + add_library(tag_c SHARED tag_c.cpp ${tag_c_HDRS}) endif() target_link_libraries(tag_c tag) set_target_properties(tag_c PROPERTIES PUBLIC_HEADER "${tag_c_HDRS}") +if(BUILD_FRAMEWORK) + set_target_properties(tag_c PROPERTIES FRAMEWORK TRUE) +endif() # On Solaris we need to explicitly add the C++ standard and runtime # libraries to the libs used by the C bindings, because those C bindings @@ -58,6 +61,7 @@ set_target_properties(tag_c PROPERTIES INSTALL_NAME_DIR ${LIB_INSTALL_DIR} ) install(TARGETS tag_c + FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} LIBRARY DESTINATION ${LIB_INSTALL_DIR} RUNTIME DESTINATION ${BIN_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR} diff --git a/taglib/CMakeLists.txt b/taglib/CMakeLists.txt index bd8effc3..8e7a3b64 100644 --- a/taglib/CMakeLists.txt +++ b/taglib/CMakeLists.txt @@ -261,10 +261,10 @@ if(WITH_MP4) endif() if(ENABLE_STATIC) - add_library(tag STATIC ${tag_LIB_SRCS}) + add_library(tag STATIC ${tag_LIB_SRCS} ${tag_HDRS}) set_target_properties(tag PROPERTIES COMPILE_DEFINITIONS TAGLIB_STATIC) else() - add_library(tag SHARED ${tag_LIB_SRCS}) + add_library(tag SHARED ${tag_LIB_SRCS} ${tag_HDRS}) endif() if(ZLIB_FOUND) @@ -279,8 +279,12 @@ set_target_properties(tag PROPERTIES LINK_INTERFACE_LIBRARIES "" PUBLIC_HEADER "${tag_HDRS}" ) +if(BUILD_FRAMEWORK) + set_target_properties(tag PROPERTIES FRAMEWORK TRUE) +endif() install(TARGETS tag + FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} LIBRARY DESTINATION ${LIB_INSTALL_DIR} RUNTIME DESTINATION ${BIN_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR}