]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/freeimage/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / freeimage / CMakeLists.txt
CommitLineData
1e59de90
TL
1cmake_minimum_required(VERSION 3.4)
2
3include(GNUInstallDirs)
4
5project(FreeImage C CXX)
6
7if(MSVC)
8 add_definitions("-D_CRT_SECURE_NO_WARNINGS")
9 set(CMAKE_CXX_FLAGS "/wd4828 ${CMAKE_CXX_FLAGS}")
10endif()
11
12find_package(ZLIB REQUIRED)
13find_package(PNG REQUIRED)
14find_package(JPEG REQUIRED)
15find_package(TIFF REQUIRED)
16find_package(OpenJPEG REQUIRED)
17find_package(WebP REQUIRED)
18find_package(JXR REQUIRED)
19find_package(LibRaw REQUIRED)
20find_package(OpenEXR REQUIRED)
21
22option(BUILD_SHARED_LIBS "Build shared libraries" ON)
23option(INSTALL_HEADERS "Install the development headers" ON)
24
25set(REAL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Source)
26
27# Add a debug postfix
28set(CMAKE_DEBUG_POSTFIX "d")
29
30# List the public header files
31set(PUBLIC_HEADERS ${REAL_SOURCE_DIR}/FreeImage.h)
32
33# List the private header files
34set(ROOT_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/CacheFile.h
35 ${REAL_SOURCE_DIR}/FreeImageIO.h
36 ${REAL_SOURCE_DIR}/MapIntrospector.h
37 ${REAL_SOURCE_DIR}/Plugin.h
38 ${REAL_SOURCE_DIR}/Quantizers.h
39 ${REAL_SOURCE_DIR}/ToneMapping.h
40 ${REAL_SOURCE_DIR}/Utilities.h)
41
42file(GLOB FREEIMAGE_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/FreeImage/*.h)
43file(GLOB FREEIMAGE_TOOLKIT_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/FreeImageToolkit/*.h)
44file(GLOB METADATA_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/Metadata/*.h)
45
46set(PRIVATE_HEADERS ${ROOT_PRIVATE_HEADERS}
47 ${FREEIMAGE_PRIVATE_HEADERS}
48 ${FREEIMAGE_TOOLKIT_PRIVATE_HEADERS}
49 ${METADATA_PRIVATE_HEADERS})
50
51# List the source files
52file(GLOB DEPRECATION_SRCS ${REAL_SOURCE_DIR}/DeprecationManager/*.cpp)
53file(GLOB FREEIMAGE_TOOLKIT_SRCS ${REAL_SOURCE_DIR}/FreeImageToolkit/*.cpp)
54file(GLOB FREEIMAGE_SRCS ${REAL_SOURCE_DIR}/FreeImage/*.cpp)
55file(GLOB METADATA_SRCS ${REAL_SOURCE_DIR}/Metadata/*.cpp)
56
57# The G3 plugin is disabled because it require the private copy of tiff
58list(REMOVE_ITEM FREEIMAGE_SRCS ${REAL_SOURCE_DIR}/FreeImage/PluginG3.cpp)
59
60# The JPEGTransform plugin is disable because it requires a private copy of jpeg
61list(REMOVE_ITEM FREEIMAGE_TOOLKIT_SRCS ${REAL_SOURCE_DIR}/FreeImageToolkit/JPEGTransform.cpp)
62
63
64set(SRCS ${DEPRECATION_SRCS}
65 ${FREEIMAGE_SRCS}
66 ${FREEIMAGE_TOOLKIT_SRCS}
67 ${METADATA_SRCS}
68)
69
70# If FreeImage is used as a static library, FREEIMAGE_LIB
71# needs to be defined (at the C preprocessor level) to correctly
72# define (to nothing instead of _declspec(dllimport) ) the DLL_API macro.
73# For this purpouse we include (depending on the BUILD_SHARED_LIBS )
74# the appropriate FreeImageConfig.h .
75if(BUILD_SHARED_LIBS)
76 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FreeImageConfig-dynamic.h ${CMAKE_CURRENT_BINARY_DIR}/FreeImageConfig.h)
77else()
78 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FreeImageConfig-static.h ${CMAKE_CURRENT_BINARY_DIR}/FreeImageConfig.h)
79endif()
80list(APPEND PUBLIC_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/FreeImageConfig.h)
81
82add_library(FreeImage ${SRCS} ${PRIVATE_HEADERS} ${PUBLIC_HEADERS})
83
84if(BUILD_SHARED_LIBS)
85 target_compile_definitions(FreeImage PRIVATE -DFREEIMAGE_EXPORTS)
86else()
87 target_compile_definitions(FreeImage PRIVATE -DFREEIMAGE_LIB)
88endif()
89
90target_include_directories(FreeImage PRIVATE ${REAL_SOURCE_DIR}
91 ${ZLIB_INCLUDE_DIRS}
92 ${JPEG_INCLUDE_DIRS}
93 ${TIFF_INCLUDE_DIRS}
94 ${PNG_INCLUDE_DIRS}
95 ${OPENJPEG_INCLUDE_DIRS}
96 ${WEBP_INCLUDE_DIRS}
97 ${JXR_INCLUDE_DIRS}
98 ${LibRaw_INCLUDE_DIRS}
99 ${CMAKE_CURRENT_BINARY_DIR}
100 PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
101
102
103target_link_libraries(FreeImage ${ZLIB_LIBRARIES}
104 ${JPEG_LIBRARIES}
105 ${TIFF_LIBRARIES}
106 ${PNG_LIBRARIES}
107 ${OPENJPEG_LIBRARIES}
108 ${WEBP_LIBRARIES}
109 ${JXR_LIBRARIES}
110 ${LibRaw_LIBRARIES}
111 OpenEXR::IlmImf)
112
113target_compile_definitions(FreeImage PRIVATE ${PNG_DEFINITIONS})
114
115# FreeImagePlus
116file(GLOB FREEIMAGEPLUS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Wrapper/FreeImagePlus/src/*.cpp)
117add_library(FreeImagePlus
118 ${FREEIMAGEPLUS_SOURCES}
119 ${CMAKE_CURRENT_SOURCE_DIR}/Wrapper/FreeImagePlus/FreeImagePlus.h
120 ${CMAKE_CURRENT_SOURCE_DIR}/Wrapper/FreeImagePlus/FreeImagePlus.rc)
121
122if(BUILD_SHARED_LIBS)
123 target_compile_definitions(FreeImagePlus PRIVATE -DFIP_EXPORTS)
124else()
125 target_compile_definitions(FreeImagePlus PRIVATE -DFREEIMAGE_LIB)
126endif()
127
128target_include_directories(FreeImagePlus PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Wrapper/FreeImagePlus
129 ${CMAKE_CURRENT_BINARY_DIR}
130 ${REAL_SOURCE_DIR}
131 PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
132
133target_link_libraries(FreeImagePlus PUBLIC FreeImage)
134
135list(APPEND PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Wrapper/FreeImagePlus/FreeImagePlus.h)
136
137install(TARGETS FreeImage FreeImagePlus
138 EXPORT freeimage-targets
139 COMPONENT runtime
140 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
141 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
142 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
143
144install(EXPORT freeimage-targets NAMESPACE freeimage:: DESTINATION share/freeimage)
145
146file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/freeimage-config.cmake"
147"include(CMakeFindDependencyMacro)
148find_dependency(ZLIB)
149find_dependency(PNG)
150find_dependency(JPEG)
151find_dependency(TIFF)
152find_dependency(OpenJPEG)
153find_dependency(WebP)
154find_dependency(JXR)
155find_dependency(LibRaw)
156find_dependency(OpenEXR)
157include(\"\${CMAKE_CURRENT_LIST_DIR}/freeimage-targets.cmake\")
158")
159
160install(FILES ${CMAKE_CURRENT_BINARY_DIR}/freeimage-config.cmake DESTINATION share/freeimage)
161if(INSTALL_HEADERS)
162 install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
163endif()