libgd/src/CMakeLists.txt

196 lines
4.0 KiB
CMake

SET (LIBGD_SRC_FILES
gd.c
gd_avif.c
gd_bmp.c
gd_color.c
gd_color_map.c
gd_color_match.c
gd_crop.c
gd_filename.c
gd_filter.c
gd_gd.c
gd_gd2.c
gd_gif_in.c
gd_gif_out.c
gd_heif.c
gd_interpolation.c
gd_io.c
gd_io_dp.c
gd_io_file.c
gd_io_ss.c
gd_io_stream.cxx
gd_jpeg.c
gd_matrix.c
gd_nnquant.c
gd_png.c
gd_rotate.c
gd_security.c
gd_ss.c
gd_tga.c
gd_tiff.c
gd_topal.c
gd_transform.c
gd_version.c
gd_wbmp.c
gd_webp.c
gd_xbm.c
gdcache.c
gdfontg.c
gdfontl.c
gdfontmb.c
gdfonts.c
gdfontt.c
gdft.c
gdfx.c
gdhelpers.c
gdkanji.c
gdpp.cxx
gdtables.c
gdxpm.c
wbmp.c
)
# Static library just for utility programs.
SET (GD_PROGRAMS_LIB_SRC_FILES)
if(MSVC)
set(GD_PROGRAMS_LIB_SRC_FILES ${GD_PROGRAMS_LIB_SRC_FILES}
getopt.c
)
endif(MSVC)
include(GNUInstallDirs)
if (BUILD_SHARED_LIBS)
add_library(${GD_LIB} ${LIBGD_SRC_FILES})
set_target_properties(${GD_LIB} PROPERTIES
SOVERSION ${GDLIB_LIB_SOVERSION}
VERSION ${GDLIB_LIB_VERSION}
C_VISIBILITY_PRESET hidden
CXX_VISIBILITY_PRESET hidden
)
endif()
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 (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "")
add_library(gd_programs_lib STATIC ${GD_PROGRAMS_LIB_SRC_FILES})
endif()
if (WIN32 AND NOT MINGW AND NOT MSYS)
# SET_TARGET_PROPERTIES(${GD_LIB} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:msvcrt.lib")
if (BUILD_STATIC_LIBS)
SET_PROPERTY(TARGET ${GD_LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS NONDLL=1)
endif()
ENDIF(WIN32 AND NOT MINGW AND NOT MSYS)
if (MINGW OR MSYS)
ADD_DEFINITIONS("-mms-bitfields")
if (BUILD_STATIC_LIBS)
set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
endif()
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}
${AVIF_LIBRARIES}
${RAQM_LIBRARIES}
${HEIF_LIBRARIES}
)
if (BUILD_SHARED_LIBS)
target_link_libraries(${GD_LIB} ${LIBGD_DEP_LIBS})
endif()
if (BUILD_STATIC_LIBS)
target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS})
endif()
SET(LIBS_PRIVATES
${ICONV_LIBRARIES}
${LIQ_LIBRARIES}
${WEBP_LIBRARIES}
)
set(GD_PROGRAMS gdcmpgif)
if (PNG_FOUND)
set(GD_PROGRAMS ${GD_PROGRAMS} gdtopng pngtogd)
if (NOT MSVC)
set(GD_PROGRAMS ${GD_PROGRAMS} webpng)
endif (NOT MSVC)
if (ZLIB_FOUND)
set(GD_PROGRAMS ${GD_PROGRAMS} gdparttopng gd2topng pngtogd2)
endif()
endif()
if (FREETYPE_FOUND AND JPEG_FOUND)
if (NOT WIN32)
set(GD_PROGRAMS ${GD_PROGRAMS} annotate)
endif (NOT WIN32)
endif()
if (ZLIB_FOUND)
set(GD_PROGRAMS ${GD_PROGRAMS} gd2copypal gd2togif giftogd2)
endif()
foreach(program ${GD_PROGRAMS})
add_executable(${program} ${program}.c)
if (BUILD_SHARED_LIBS)
target_link_libraries(${program} ${GD_LIB})
else()
target_link_libraries(${program} ${GD_LIB_STATIC})
endif()
if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "")
target_link_libraries(${program} gd_programs_lib)
endif()
endforeach(program)
set(GD_INSTALL_TARGETS ${GD_PROGRAMS})
if (BUILD_SHARED_LIBS)
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}
RUNTIME DESTINATION bin
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(PROGRAMS bdftogd DESTINATION bin)
install(FILES
gd.h
gd_color_map.h
gd_errors.h
gd_io.h
gdcache.h
gdfontg.h
gdfontl.h
gdfontmb.h
gdfonts.h
gdfontt.h
gdfx.h
gdpp.h
DESTINATION include)
CONFIGURE_FILE(../config/gdlib.pc.cmake gdlib.pc @ONLY)
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/gdlib.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")