From 31a51fda8a9891cea648cae3e4fb73a2194ced74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= Date: Wed, 23 Aug 2017 21:03:58 +0200 Subject: [PATCH 1/2] Replace EXIV2_ENABLE_SHARED by BUILD_SHARED_LIBS. Also use EXV_HAVE_DLL only for the exiv2lib target --- CMakeLists.txt | 2 +- README-CMAKE | 2 +- bootstrap.linux | 2 +- bootstrap.macports | 2 +- config/CMakeChecks.txt | 7 ------- config/compilerFlags.cmake | 4 ++-- config/printSummary.cmake | 2 +- contrib/cmake/msvc/ReadMe.txt | 4 ++-- contrib/cmake/msvc/cmakeBuild.cmd | 2 +- src/CMakeLists.txt | 8 ++++++-- 10 files changed, 16 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b14d1962..570e5742 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ set( GENERIC_LIB_VERSION "26.0.0" ) set( GENERIC_LIB_SOVERSION "26" ) # options and their default values -option( EXIV2_ENABLE_SHARED "Build exiv2 as a shared library (dll)" ON ) +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 ) diff --git a/README-CMAKE b/README-CMAKE index 438f87cb..4f3d3e33 100644 --- a/README-CMAKE +++ b/README-CMAKE @@ -86,7 +86,7 @@ Usual CMake options : Specific Exiv2 options : --DEXIV2_ENABLE_SHARED : Build exiv2 as a shared library (dll). [default=on ] +-DBUILD_SHARED_LIBS : CMake variable controlling whether exiv2lib is build as a shared library (dll). [default=on] -DEXIV2_ENABLE_XMP : Build with XMP metadata support. [default=on ] -DEXIV2_ENABLE_LIBXMP : Build a static convenience Library for XMP. [default=on ] -DEXIV2_ENABLE_PNG : Build with png support (requires libz). [default=on ] diff --git a/bootstrap.linux b/bootstrap.linux index 3502f6fc..efd93eb4 100755 --- a/bootstrap.linux +++ b/bootstrap.linux @@ -17,7 +17,7 @@ cd build.cmake cmake -G "$MAKEFILES_TYPE" . \ -DCMAKE_BUILD_TYPE=debugfull \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DEXIV2_ENABLE_SHARED=ON \ + -DBUILD_SHARED_LIBS=ON \ -DEXIV2_ENABLE_XMP=ON \ -DEXIV2_ENABLE_LIBXMP=ON \ -DEXIV2_ENABLE_PNG=ON \ diff --git a/bootstrap.macports b/bootstrap.macports index 9ce03570..729ad9bd 100755 --- a/bootstrap.macports +++ b/bootstrap.macports @@ -60,7 +60,7 @@ cmake -G "$MAKEFILES_TYPE" . \ -DCMAKE_INSTALL_NAME_DIR=${INSTALL_PREFIX}/lib \ -DCMAKE_SYSTEM_PREFIX_PATH="${INSTALL_PREFIX};/usr" \ -DCMAKE_MODULE_PATH="${INSTALL_PREFIX}/share/cmake/modules" \ - -DEXIV2_ENABLE_SHARED=ON \ + -DBUILD_SHARED_LIBS=ON \ -DEXIV2_ENABLE_XMP=ON \ -DEXIV2_ENABLE_LIBXMP=ON \ -DEXIV2_ENABLE_PNG=ON \ diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt index 3f5f4380..c72bf7fc 100644 --- a/config/CMakeChecks.txt +++ b/config/CMakeChecks.txt @@ -31,13 +31,6 @@ # # ConfigureChecks for exiv2 -if( EXIV2_ENABLE_SHARED ) - add_definitions( -DEXV_HAVE_DLL ) - set( STATIC_FLAG SHARED ) -else() - set( STATIC_FLAG STATIC ) -endif() - if( EXIV2_ENABLE_COMMERCIAL ) add_definitions( -DEXV_COMMERCIAL_VERSION ) endif() diff --git a/config/compilerFlags.cmake b/config/compilerFlags.cmake index a459da65..dee3cfa0 100644 --- a/config/compilerFlags.cmake +++ b/config/compilerFlags.cmake @@ -23,7 +23,7 @@ if(MSVC) CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO ) - if ( ${EXIV2_ENABLE_SHARED} OR ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) + if ( ${BUILD_SHARED_LIBS} OR ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) message(STATUS "MSVC -> forcing use of dynamically-linked runtime." ) foreach(variable ${variables}) if(${variable} MATCHES "/MT") @@ -51,7 +51,7 @@ if(MSVC) endforeach() # don't link msvcrt for .exe which use shared libraries (use default libcmt) - if ( NOT ${EXIV2_ENABLE_SHARED} AND NOT ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) + if ( NOT ${BUILD_SHARED_LIBS} AND NOT ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRTD") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/NODEFAULTLIB:MSVCRT") set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/NODEFAULTLIB:MSVCRT") diff --git a/config/printSummary.cmake b/config/printSummary.cmake index e5b1cc1e..ff41d957 100644 --- a/config/printSummary.cmake +++ b/config/printSummary.cmake @@ -19,7 +19,7 @@ message( STATUS "Compiler info: ${CMAKE_CXX_COMPILER_ID} (${CMAKE_CXX_COMPILER}) message( STATUS "------------------------------------------------------------------" ) message( STATUS "${PACKAGE_STRING} configure results <${PACKAGE_URL}>" ) OptionOutput( "Building PNG support: " EXIV2_ENABLE_PNG AND ZLIB_FOUND ) -OptionOutput( "Building shared library: " EXIV2_ENABLE_SHARED ) +OptionOutput( "Building shared library: " BUILD_SHARED_LIBS ) OptionOutput( "XMP metadata support: " EXIV2_ENABLE_XMP ) OptionOutput( "Building static libxmp: " EXIV2_ENABLE_LIBXMP ) OptionOutput( "Native language support: " EXIV2_ENABLE_NLS ) diff --git a/contrib/cmake/msvc/ReadMe.txt b/contrib/cmake/msvc/ReadMe.txt index 6cb601c9..1c5f5bc2 100755 --- a/contrib/cmake/msvc/ReadMe.txt +++ b/contrib/cmake/msvc/ReadMe.txt @@ -119,7 +119,7 @@ How to use this cd temp\exiv2 cmake -G "Visual Studio 8 2005 Win64" "-DCMAKE_INSTALL_PREFIX=..\..\dist" ^ "-DCMAKE_LIBRARY_PATH=..\..\dist\lib" "-DCMAKE_INCLUDE_PATH=..\..\dist\include" ^ - -DEXIV2_ENABLE_SHARED=ON ^ + -DBUILD_SHARED_LIBS=ON ^ ..\..\..\ cmake --build . --config Release cmake --build . --config Release --target install @@ -170,7 +170,7 @@ How to use this C:\cygwin64\home\rmills\gnu\exiv2\build>cd ..\trunk C:\cygwin64\home\rmills\gnu\exiv2\trunk>grep OPTION CMakeLists.txt - OPTION( EXIV2_ENABLE_SHARED "Build exiv2 as a shared library (dll)" ON ) + 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_VIDEO "Build with video support" OFF ) diff --git a/contrib/cmake/msvc/cmakeBuild.cmd b/contrib/cmake/msvc/cmakeBuild.cmd index c44ca0d7..62e1e2f8 100755 --- a/contrib/cmake/msvc/cmakeBuild.cmd +++ b/contrib/cmake/msvc/cmakeBuild.cmd @@ -292,7 +292,7 @@ pushd "%EXIV_B%" call:run cmake -G "%_GENERATOR_%" -DCMAKE_BUILD_TYPE=%_CONFIG_% %_LINK_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DCMAKE_LIBRARY_PATH=%_LIBPATH_% -DCMAKE_INCLUDE_PATH=%_INCPATH_% ^ -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_BUILD_SAMPLES=%BUILD_SAMPLES% ^ - -DEXIV2_ENABLE_WIN_UNICODE=OFF -DEXIV2_ENABLE_SHARED=%ENABLE_SHARED% ^ + -DEXIV2_ENABLE_WIN_UNICODE=OFF -DBUILD_SHARED_LIBS=%ENABLE_SHARED% ^ -DEXIV2_ENABLE_DYNAMIC_RUNTIME=%ENABLE_DYNAMIC% ^ %ENABLE_WEBREADY% %ENABLE_CURL% %ENABLE_LIBSSH% %ENABLE_VIDEO% ^ "%_EXIV2_%" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4c5d7247..093beb80 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -166,10 +166,10 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) # exiv2lib library if( EXIV2_ENABLE_XMP AND NOT EXIV2_ENABLE_LIBXMP ) - add_library( exiv2lib ${STATIC_FLAG} ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR} $) + add_library( exiv2lib ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR} $) target_link_libraries(exiv2lib PUBLIC ${EXPAT_LIBRARIES}) else() - add_library( exiv2lib ${STATIC_FLAG} ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR}) + add_library( exiv2lib ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR}) endif() set_target_properties( exiv2lib PROPERTIES @@ -181,6 +181,10 @@ set_target_properties( exiv2lib PROPERTIES target_compile_definitions(exiv2lib PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" ) +if ( ${BUILD_SHARED_LIBS} ) + target_compile_definitions(exiv2lib PUBLIC EXV_HAVE_DLL) +endif() + if ( UNIX AND CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" ) set (FREEBSD 1) endif() From 1e903010188f2b74112619aa63f1cfaa2fde8c7c Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Thu, 24 Aug 2017 18:00:58 +0200 Subject: [PATCH 2/2] Generate exiv2lib as static library in travis and comment other of the elements in the configuration matrix --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ae0f3a4a..746856be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,10 +12,10 @@ os: env: - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release" # Default - - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug" # Default (Debug mode) + - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF" # Default (Debug mode + static libs) - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON" # All enabled - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_XMP=OFF -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_LENSDATA=OFF" # All disabled - - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=OFF -DEXIV2_ENABLE_SSH=OFF" # WebReady without SSH nor CURL + #- CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=OFF -DEXIV2_ENABLE_SSH=OFF" # WebReady without SSH nor CURL install: ./.travis/install.sh script: ./.travis/run.sh