aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/tinyexr/fixtargets.patch
blob: 7823f5156502ee9043ab0966981b6d93de1b41d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b7f97b0..2afd0e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,20 @@ set(SAMPLE_TARGET "test_tinyexr")
 
 project(${BUILD_TARGET} CXX)
 
+set(INSTALL_BIN_DIR      "bin"                      CACHE PATH "Path where exe and dll will be installed")
+set(INSTALL_LIB_DIR      "lib"                      CACHE PATH "Path where lib will be installed")
+set(INSTALL_INCLUDE_DIR  "include"                  CACHE PATH "Path where headers will be installed")
+set(INSTALL_CMAKE_DIR    "share/tinyexr"            CACHE PATH "Path where cmake configs will be installed")
+
+# Make relative paths absolute (needed later on)
+set(RELATIVE_INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR})
+foreach(p LIB BIN INCLUDE CMAKE)
+  set(var INSTALL_${p}_DIR)
+  if(NOT IS_ABSOLUTE "${${var}}")
+    set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+  endif()
+endforeach()
+
 # options
 option(TINYEXR_BUILD_SAMPLE "Build a sample" ON)
 option(TINYEXR_USE_MINIZ "Use miniz" ON)
@@ -28,11 +42,8 @@ set(TINYEXR_SOURCES
     )
 
 if(TINYEXR_USE_MINIZ)
-  enable_language(C)
-  add_library(miniz STATIC deps/miniz/miniz.c)
-  target_include_directories(miniz PUBLIC deps/miniz)
-  set_target_properties(miniz PROPERTIES FOLDER "deps")
-  list(APPEND TINYEXR_EXT_LIBRARIES miniz)
+  find_package(miniz CONFIG REQUIRED)
+  list(APPEND TINYEXR_EXT_LIBRARIES miniz::miniz)
 endif()
 
 add_library(${BUILD_TARGET} ${TINYEXR_SOURCES} ${TINYEXR_DEP_SOURCES})
@@ -43,7 +54,7 @@ target_link_libraries(${BUILD_TARGET} ${TINYEXR_EXT_LIBRARIES} ${CMAKE_DL_LIBS})
 
 # Increase warning level for clang.
 if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT MSVC)
-  set(CLANG_COMPILE_FLAGS "-Weverything -Werror -Wno-padded -Wno-c++98-compat-pedantic -Wno-documentation -Wno-unused-member-function")
+  set(CLANG_COMPILE_FLAGS "-Weverything -Wno-padded -Wno-c++98-compat-pedantic -Wno-documentation -Wno-unused-member-function")
   if (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 16)
     set(CLANG_COMPILE_FLAGS "${CLANG_COMPILE_FLAGS} -Wno-unsafe-buffer-usage")
   endif()
@@ -76,3 +87,32 @@ if (TINYEXR_BUILD_SAMPLE)
   endif(WIN32)
 
 endif (TINYEXR_BUILD_SAMPLE)
+
+target_include_directories(${BUILD_TARGET} PUBLIC $<INSTALL_INTERFACE:${RELATIVE_INSTALL_INCLUDE_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+set_target_properties(${BUILD_TARGET} PROPERTIES PUBLIC_HEADER "${PROJECT_SOURCE_DIR}/tinyexr.h")
+
+install(TARGETS ${BUILD_TARGET} EXPORT ${BUILD_TARGET}Targets
+  RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
+  LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
+  ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
+  PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}"
+  COMPONENT dev
+)
+
+install(EXPORT ${BUILD_TARGET}Targets
+  FILE ${BUILD_TARGET}Targets.cmake
+  NAMESPACE unofficial::${BUILD_TARGET}::
+  DESTINATION "${INSTALL_CMAKE_DIR}"
+)
+
+include(CMakePackageConfigHelpers)
+configure_package_config_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
+  ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TARGET}Config.cmake
+  INSTALL_DESTINATION "${INSTALL_CMAKE_DIR}"
+)
+
+install(
+  FILES ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TARGET}Config.cmake
+  DESTINATION "${INSTALL_CMAKE_DIR}"
+)
diff --git a/Config.cmake.in b/Config.cmake.in
new file mode 100644
index 0000000..2e33c1d
--- /dev/null
+++ b/Config.cmake.in
@@ -0,0 +1,6 @@
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+find_dependency(miniz CONFIG REQUIRED)
+
+include("${CMAKE_CURRENT_LIST_DIR}/@BUILD_TARGET@Targets.cmake")