Remove EXIV2_ENABLE_LIBXMP variable, always build static XMP library, remove cmake OBJECT library

v0.27.3
Luis Diaz Mas 8 years ago
parent df3c77516c
commit 2784b1f7f7

@ -27,7 +27,6 @@ set( GENERIC_LIB_SOVERSION "26" )
# options and their default values
option( BUILD_SHARED_LIBS "Build exiv2lib as a shared library" ON )
option( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON )
option( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON )
option( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON )
option( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON )
option( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON )

@ -19,7 +19,6 @@ cmake -G "$MAKEFILES_TYPE" . \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=ON \
-DEXIV2_ENABLE_XMP=ON \
-DEXIV2_ENABLE_LIBXMP=ON \
-DEXIV2_ENABLE_PNG=ON \
-DEXIV2_ENABLE_NLS=ON \
-DEXIV2_ENABLE_PRINTUCS2=ON \

@ -62,7 +62,6 @@ cmake -G "$MAKEFILES_TYPE" . \
-DCMAKE_MODULE_PATH="${INSTALL_PREFIX}/share/cmake/modules" \
-DBUILD_SHARED_LIBS=ON \
-DEXIV2_ENABLE_XMP=ON \
-DEXIV2_ENABLE_LIBXMP=ON \
-DEXIV2_ENABLE_PNG=ON \
-DEXIV2_ENABLE_NLS=ON \
-DEXIV2_ENABLE_PRINTUCS2=ON \

@ -22,7 +22,6 @@ message( STATUS "${PACKAGE_STRING} configure results <${PACKAGE_URL}>"
OptionOutput( "Building shared library: " BUILD_SHARED_LIBS )
OptionOutput( "Building PNG support: " EXIV2_ENABLE_PNG AND ZLIB_FOUND )
OptionOutput( "XMP metadata support: " EXIV2_ENABLE_XMP )
OptionOutput( "Building static libxmp: " EXIV2_ENABLE_LIBXMP )
OptionOutput( "Native language support: " EXIV2_ENABLE_NLS )
OptionOutput( "Conversion of Windows XP tags: " EXIV2_ENABLE_PRINTUCS2 )
OptionOutput( "Nikon lens database: " EXIV2_ENABLE_LENSDATA )

@ -231,7 +231,6 @@ How to use this
# options and their default values
option( BUILD_SHARED_LIBS "Build exiv2 as a shared library (dll)" ON )
option( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON )
option( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON )
option( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON )
option( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON )
option( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON )

@ -165,12 +165,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
# ******************************************************************************
# exiv2lib library
if( EXIV2_ENABLE_XMP AND NOT EXIV2_ENABLE_LIBXMP )
add_library( exiv2lib ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR} $<TARGET_OBJECTS:xmp_object>)
target_link_libraries(exiv2lib PUBLIC ${EXPAT_LIBRARIES})
else()
add_library( exiv2lib ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR})
endif()
set_target_properties( exiv2lib PROPERTIES
VERSION ${GENERIC_LIB_VERSION}
@ -192,11 +187,9 @@ if ( UNIX AND CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
endif()
if ( EXIV2_ENABLE_XMP )
target_include_directories(exiv2lib PRIVATE ${CMAKE_SOURCE_DIR}/xmpsdk/include)
if( EXIV2_ENABLE_LIBXMP )
#target_include_directories(exiv2lib PRIVATE ${CMAKE_SOURCE_DIR}/xmpsdk/include)
target_link_libraries(exiv2lib PUBLIC xmp)
endif()
endif()
# TODO : We should not include include/exiv2 but only include !!!
target_include_directories(exiv2lib PUBLIC

@ -28,29 +28,28 @@ set(XMPSRC src/ExpatAdapter.cpp
include/XMP_Version.h
)
foreach(_currentfile ${XMPSRC})
if(UNIX AND NOT CYGWIN)
set_source_files_properties(${_currentfile} PROPERTIES COMPILE_FLAGS "-fPIC")
endif()
endforeach()
add_library(xmp STATIC ${XMPSRC})
# We generate a CMake OBJECT LIBRARY (a bunch of object files)
add_library( xmp_object OBJECT ${XMPSRC} )
target_link_libraries(xmp
PRIVATE
${EXPAT_LIBRARY}
)
target_include_directories(xmp_object
target_include_directories(xmp
PUBLIC
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/xmpsdk/include>
PRIVATE
${EXPAT_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}/xmpsdk/include
)
# TODO : We should only add this definition for Windows
target_compile_definitions(xmp PRIVATE XML_STATIC)
check_include_file( "stdint.h" EXV_HAVE_STDINT_H )
if (EXV_HAVE_STDINT_H)
target_compile_definitions(xmp_object PUBLIC EXV_HAVE_STDINT_H)
target_compile_definitions(xmp PRIVATE EXV_HAVE_STDINT_H)
endif()
# TODO : We should only add this definition if EXPAT is static
target_compile_definitions(xmp_object PRIVATE XML_STATIC)
# http://stackoverflow.com/questions/10046114/in-cmake-how-can-i-test-if-the-compiler-is-clang
if ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# 1123 - hide xmpsdk symbols
@ -58,17 +57,8 @@ if ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
COMPILE_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden")
endif()
if( EXIV2_ENABLE_LIBXMP )
add_library(xmp STATIC $<TARGET_OBJECTS:xmp_object>)
target_link_libraries(xmp PUBLIC ${EXPAT_LIBRARY})
# This is also needed for the xmp static library
target_include_directories(xmp PUBLIC ${EXPAT_INCLUDE_DIR})
target_compile_definitions(xmp PUBLIC XML_STATIC)
if (BUILD_SHARED_LIBS)
set_property(TARGET xmp_object PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
set_property(TARGET xmp PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
# 1119 Install libxmp.a for use by third party applications (Thanks, Emmanuel)

Loading…
Cancel
Save