1 SET (LIBGD_SRC_FILES 2 gd.c 3 gd_avif.c 4 gd_bmp.c 5 gd_color.c 6 gd_color_map.c 7 gd_color_match.c 8 gd_crop.c 9 gd_filename.c 10 gd_filter.c 11 gd_gd.c 12 gd_gd2.c 13 gd_gif_in.c 14 gd_gif_out.c 15 gd_heif.c 16 gd_interpolation.c 17 gd_io.c 18 gd_io_dp.c 19 gd_io_file.c 20 gd_io_ss.c 21 gd_io_stream.cxx 22 gd_jpeg.c 23 gd_matrix.c 24 gd_nnquant.c 25 gd_png.c 26 gd_rotate.c 27 gd_security.c 28 gd_ss.c 29 gd_tga.c 30 gd_tiff.c 31 gd_topal.c 32 gd_transform.c 33 gd_version.c 34 gd_wbmp.c 35 gd_webp.c 36 gd_xbm.c 37 gdcache.c 38 gdfontg.c 39 gdfontl.c 40 gdfontmb.c 41 gdfonts.c 42 gdfontt.c 43 gdft.c 44 gdfx.c 45 gdhelpers.c 46 gdkanji.c 47 gdpp.cxx 48 gdtables.c 49 gdxpm.c 50 wbmp.c 51 ) 52 53 # Static library just for utility programs. 54 SET (GD_PROGRAMS_LIB_SRC_FILES) 55 56 if(MSVC) 57 set(GD_PROGRAMS_LIB_SRC_FILES ${GD_PROGRAMS_LIB_SRC_FILES} 58 getopt.c 59 ) 60 endif(MSVC) 61 62 include(GNUInstallDirs) 63 64 if (BUILD_SHARED_LIBS) 65 add_library(${GD_LIB} ${LIBGD_SRC_FILES}) 66 set_target_properties(${GD_LIB} PROPERTIES 67 SOVERSION ${GDLIB_LIB_SOVERSION} 68 VERSION ${GDLIB_LIB_VERSION} 69 C_VISIBILITY_PRESET hidden 70 CXX_VISIBILITY_PRESET hidden 71 ) 72 endif() 73 74 if (BUILD_STATIC_LIBS) 75 add_library(${GD_LIB_STATIC} STATIC ${LIBGD_SRC_FILES}) 76 if (UNIX) 77 set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB}) 78 endif() 79 endif() 80 81 if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "") 82 add_library(gd_programs_lib STATIC ${GD_PROGRAMS_LIB_SRC_FILES}) 83 endif() 84 85 if (WIN32 AND NOT MINGW AND NOT MSYS) 86 # SET_TARGET_PROPERTIES(${GD_LIB} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:msvcrt.lib") 87 88 if (BUILD_STATIC_LIBS) 89 SET_PROPERTY(TARGET ${GD_LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS NONDLL=1) 90 endif() 91 92 ENDIF(WIN32 AND NOT MINGW AND NOT MSYS) 93 94 if (MINGW OR MSYS) 95 ADD_DEFINITIONS("-mms-bitfields") 96 if (BUILD_STATIC_LIBS) 97 set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB}) 98 endif() 99 endif (MINGW OR MSYS) 100 101 INCLUDE_DIRECTORIES(BEFORE "${PROJECT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${GD_SOURCE_DIR}/src") 102 103 SET(LIBGD_DEP_LIBS 104 ${ZLIB_LIBRARIES} 105 ${FREETYPE_LIBRARIES} 106 ${PNG_LIBRARIES} 107 ${ICONV_LIBRARIES} 108 ${LIQ_LIBRARIES} 109 ${JPEG_LIBRARIES} 110 ${TIFF_LIBRARIES} 111 ${XPM_LIBRARIES} 112 ${FONTCONFIG_LIBRARY} 113 ${WEBP_LIBRARIES} 114 ${AVIF_LIBRARIES} 115 ${RAQM_LIBRARIES} 116 ${HEIF_LIBRARIES} 117 ) 118 if (BUILD_SHARED_LIBS) 119 target_link_libraries(${GD_LIB} ${LIBGD_DEP_LIBS}) 120 endif() 121 if (BUILD_STATIC_LIBS) 122 target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS}) 123 endif() 124 125 SET(LIBS_PRIVATES 126 ${ICONV_LIBRARIES} 127 ${LIQ_LIBRARIES} 128 ${WEBP_LIBRARIES} 129 ) 130 131 set(GD_PROGRAMS gdcmpgif) 132 133 if (PNG_FOUND) 134 set(GD_PROGRAMS ${GD_PROGRAMS} gdtopng pngtogd) 135 if (NOT WIN32) 136 set(GD_PROGRAMS ${GD_PROGRAMS} webpng) 137 endif (NOT WIN32) 138 if (ZLIB_FOUND) 139 set(GD_PROGRAMS ${GD_PROGRAMS} gdparttopng gd2topng pngtogd2) 140 endif() 141 endif() 142 143 if (FREETYPE_FOUND AND JPEG_FOUND) 144 if (NOT WIN32) 145 set(GD_PROGRAMS ${GD_PROGRAMS} annotate) 146 endif (NOT WIN32) 147 endif() 148 149 if (ZLIB_FOUND) 150 set(GD_PROGRAMS ${GD_PROGRAMS} gd2copypal gd2togif giftogd2) 151 endif() 152 153 foreach(program ${GD_PROGRAMS}) 154 add_executable(${program} ${program}.c) 155 if (WIN32) 156 list(REMOVE_ITEM program webpng.c annotate.c) 157 list(REMOVE_ITEM GD_PROGRAMS webpng) 158 list(REMOVE_ITEM GD_PROGRAMS annotate) 159 endif (WIN32) 160 161 if (BUILD_SHARED_LIBS) 162 target_link_libraries(${program} ${GD_LIB}) 163 else() 164 target_link_libraries(${program} ${GD_LIB_STATIC}) 165 endif() 166 if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "") 167 target_link_libraries(${program} gd_programs_lib) 168 endif() 169 endforeach(program) 170 171 set(GD_INSTALL_TARGETS ${GD_PROGRAMS}) 172 if (BUILD_SHARED_LIBS) 173 set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB}) 174 endif() 175 if (BUILD_STATIC_LIBS) 176 set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB_STATIC}) 177 endif() 178 179 install(TARGETS ${GD_INSTALL_TARGETS} 180 RUNTIME DESTINATION bin 181 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 182 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 183 install(PROGRAMS bdftogd DESTINATION bin) 184 install(FILES 185 gd.h 186 gd_color_map.h 187 gd_errors.h 188 gd_io.h 189 gdcache.h 190 gdfontg.h 191 gdfontl.h 192 gdfontmb.h 193 gdfonts.h 194 gdfontt.h 195 gdfx.h 196 gdpp.h 197 DESTINATION include) 198 199 CONFIGURE_FILE(../config/gdlib.pc.cmake gdlib.pc @ONLY) 200 INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/gdlib.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")