cmake: allow static libs to be disabled

The standard behavior in distros nowadays is to build shared libs and
omit static libs.  Split the build knobs in cmake to support this.  It
also matches what's available with the autotools build.
master
Mike Frysinger 2016-07-22 15:09:04 +05:30
parent 2b3dd57a6c
commit 5090a9ebf7
3 changed files with 31 additions and 12 deletions

View File

@ -193,7 +193,8 @@ else (USE_EXT_GD)
CONFIGURE_FILE(${GD_SOURCE_DIR}/src/config.h.cmake ${GD_SOURCE_DIR}/src/config.h ESCAPE_QUOTES)
option(BUILD_SHARED_LIBS "Build both shared and static libs" ON)
option(BUILD_SHARED_LIBS "Build shared libs" ON)
option(BUILD_STATIC_LIBS "Build static libs" OFF)
if (WIN32)
SET(GD_LIB libgd)

View File

@ -79,17 +79,18 @@ if (BUILD_SHARED_LIBS)
add_library(${GD_LIB} ${LIBGD_SRC_FILES})
endif()
add_library(${GD_LIB_STATIC} STATIC ${LIBGD_SRC_FILES})
if (BUILD_STATIC_LIBS)
add_library(${GD_LIB_STATIC} STATIC ${LIBGD_SRC_FILES})
if (UNIX)
set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
endif()
endif()
if (WIN32 AND NOT MINGW AND NOT MSYS)
# SET_TARGET_PROPERTIES(${GD_LIB} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:msvcrt.lib")
SET_PROPERTY(TARGET ${GD_LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS NONDLL=1)
ENDIF(WIN32 AND NOT MINGW AND NOT MSYS)
if(UNIX)
set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
endif()
if (MINGW OR MSYS)
ADD_DEFINITIONS("-mms-bitfields")
set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
@ -97,11 +98,24 @@ endif (MINGW OR MSYS)
INCLUDE_DIRECTORIES(BEFORE "${PROJECT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${GD_SOURCE_DIR}/src")
SET(LIBGD_DEP_LIBS
${ZLIB_LIBRARIES}
${FREETYPE_LIBRARIES}
${PNG_LIBRARIES}
${ICONV_LIBRARIES}
${LIQ_LIBRARIES}
${JPEG_LIBRARIES}
${TIFF_LIBRARIES}
${XPM_LIBRARIES}
${FONTCONFIG_LIBRARY}
${WEBP_LIBRARIES}
)
if (BUILD_SHARED_LIBS)
target_link_libraries(${GD_LIB} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${WEBP_LIBRARIES})
target_link_libraries(${GD_LIB} ${LIBGD_DEP_LIBS})
endif()
if (BUILD_STATIC_LIBS)
target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS})
endif()
target_link_libraries(${GD_LIB_STATIC} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${WEBP_LIBRARIES} )
set(GD_PROGRAMS gdcmpgif)
@ -129,10 +143,12 @@ foreach(program ${GD_PROGRAMS})
endif()
endforeach(program)
set(GD_INSTALL_TARGETS ${GD_PROGRAMS})
if (BUILD_SHARED_LIBS)
set(GD_INSTALL_TARGETS ${GD_LIB} ${GD_LIB_STATIC} ${GD_PROGRAMS})
else()
set(GD_INSTALL_TARGETS ${GD_LIB_STATIC} ${GD_PROGRAMS})
set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB})
endif()
if (BUILD_STATIC_LIBS)
set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB_STATIC})
endif()
install(TARGETS ${GD_INSTALL_TARGETS}

View File

@ -95,6 +95,8 @@ build_autotools() {
build_cmake() {
local args=(
-DBUILD_SHARED_LIBS=1
-DBUILD_STATIC_LIBS=1
-DBUILD_TEST=1
-DCMAKE_INSTALL_PREFIX=/usr/local
-DCMAKE_INSTALL_LIBDIR=/usr/local/lib