-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
193 lines (181 loc) · 6.88 KB
/
CMakeLists.txt
File metadata and controls
193 lines (181 loc) · 6.88 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# SPDX-License-Identifier: MIT
# Copyright (c) ifwebp developers
cmake_minimum_required(VERSION 3.12)
project(ifwebp)
if((NOT DEFINED CMAKE_BUILD_TYPE) OR (NOT CMAKE_BUILD_TYPE) OR (CMAKE_BUILD_TYPE STREQUAL ""))
set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()
set(DEPENDENCY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build-libraries)
file(MAKE_DIRECTORY ${DEPENDENCY_OUTPUT_DIRECTORY}/include)
if((NOT DEFINED MAKE_JOB_ARG) OR (NOT MAKE_JOB_ARG) OR (MAKE_JOB_ARG STREQUAL ""))
include(ProcessorCount)
ProcessorCount(MAKE_JOB_NUM)
set(MAKE_JOB_ARG -j1)
if(NOT MAKE_JOB_NUM EQUAL 0)
set(MAKE_JOB_ARG -j${MAKE_JOB_NUM})
endif()
endif()
if(NOT DEFINED TOOL_TRIPLET_PREFIX)
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL i686)
set(TOOL_TRIPLET_PREFIX i686-w64-mingw32-)
endif()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL amd64)
set(TOOL_TRIPLET_PREFIX x86_64-w64-mingw32-)
endif()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL arm)
set(TOOL_TRIPLET_PREFIX armv7-w64-mingw32-)
endif()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL arm64)
set(TOOL_TRIPLET_PREFIX aarch64-w64-mingw32-)
endif()
if(NOT DEFINED TOOL_TRIPLET_PREFIX)
set(TOOL_TRIPLET_PREFIX i686-w64-mingw32-)
endif()
endif()
string(REGEX REPLACE "-$" "" TOOL_TRIPLET_PREFIX_NOTRAILINGDASH "${TOOL_TRIPLET_PREFIX}")
if((NOT DEFINED MY_LIBRARY_PROCESSOR) OR (NOT MY_LIBRARY_PROCESSOR) OR (MY_LIBRARY_PROCESSOR STREQUAL ""))
set(MY_LIBRARY_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686")
set(MY_LIBRARY_PROCESSOR intel32)
endif()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")
set(MY_LIBRARY_PROCESSOR intel64)
endif()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm")
set(MY_LIBRARY_PROCESSOR arm32)
endif()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
set(MY_LIBRARY_PROCESSOR arm64)
endif()
endif()
include(ExternalProject)
ExternalProject_Add(libwebp-build
URL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.6.0.tar.gz
URL_HASH SHA256=e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env
"CC=${CMAKE_C_COMPILER}"
"CXX=${CMAKE_CXX_COMPILER}"
"PKG_CONFIG_PATH=${DEPENDENCY_OUTPUT_DIRECTORY}/lib/pkgconfig"
"CPPFLAGS=-I${DEPENDENCY_OUTPUT_DIRECTORY}/include"
"LDFLAGS=-L${DEPENDENCY_OUTPUT_DIRECTORY}/lib"
<SOURCE_DIR>/configure
"CFLAGS=-O2"
"--prefix=${DEPENDENCY_OUTPUT_DIRECTORY}"
--host=${TOOL_TRIPLET_PREFIX_NOTRAILINGDASH}
--enable-static
--disable-shared
BUILD_COMMAND make -C <BINARY_DIR> ${MAKE_JOB_ARG} && make -C <BINARY_DIR> ${MAKE_JOB_ARG} install
BUILD_BYPRODUCTS ${DEPENDENCY_OUTPUT_DIRECTORY}/lib/libwebp.a ${DEPENDENCY_OUTPUT_DIRECTORY}/lib/libwebpdemux.a
INSTALL_COMMAND ""
)
if((NOT DEFINED CUR_GIT_TAG) OR (NOT CUR_GIT_TAG) OR (CUR_GIT_TAG STREQUAL ""))
set(CUR_GIT_TAG Unknown)
find_package(Git)
if(GIT_FOUND)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
execute_process(COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE TMP_GIT_TAG
RESULT_VARIABLE TMP_RES
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(TMP_RES EQUAL "0")
set(CUR_GIT_TAG ${TMP_GIT_TAG})
endif()
endif()
endif()
endif()
add_library(libwebp STATIC IMPORTED)
set_property(TARGET libwebp PROPERTY IMPORTED_LOCATION "${DEPENDENCY_OUTPUT_DIRECTORY}/lib/libwebp.a")
add_dependencies(libwebp libwebp-build)
target_include_directories(libwebp INTERFACE "${DEPENDENCY_OUTPUT_DIRECTORY}/include")
add_library(libwebpdemux STATIC IMPORTED)
set_property(TARGET libwebpdemux PROPERTY IMPORTED_LOCATION "${DEPENDENCY_OUTPUT_DIRECTORY}/lib/libwebpdemux.a")
add_dependencies(libwebpdemux libwebp-build)
target_include_directories(libwebpdemux INTERFACE "${DEPENDENCY_OUTPUT_DIRECTORY}/include")
set(MY_LIBRARY_RC_COMMENTS "Source code for the latest version of this product is located on the World Wide Web at https://github.com/uyjulian/ifwebp")
set(MY_LIBRARY_RC_FILEDESCRIPTION "WebP Plugin for Susie Image Viewer")
set(MY_LIBRARY_RC_FILEVERSION "${CUR_GIT_TAG}")
set(MY_LIBRARY_RC_INTERNALNAME "ifwebp")
set(MY_LIBRARY_RC_LEGALCOPYRIGHT "Copyright (C) ifwebp developers; This product is licensed under the MIT license.")
set(MY_LIBRARY_RC_ORIGINALFILENAME "ifwebp.spi")
set(MY_LIBRARY_RC_PRODUCTNAME "WebP Plugin for Susie Image Viewer")
set(MY_LIBRARY_RC_PRODUCTVERSION "${CUR_GIT_TAG}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/dllres.rc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/dllres.rc)
set(MY_LIBRARY_NAME ${PROJECT_NAME})
list(APPEND MY_LIBRARY_DEFINITIONS
-DUNICODE
-D_UNICODE
-DNDEBUG
-DWIN32
-D_WIN32
-D_WINDOWS
)
list(APPEND MY_LIBRARY_CFLAGS
-Wno-unused-value
-Wno-format
-flto
)
list(APPEND MY_LIBRARY_CXXFLAGS
${MY_LIBRARY_CFLAGS}
-fpermissive
)
list(APPEND MY_LIBRARY_LDFLAGS
-static
-static-libstdc++
-static-libgcc
-municode
-Wl,--subsystem,windows
-Wl,--kill-at
-fPIC
)
list(APPEND MY_LIBRARY_LIBS
libwebp
libwebpdemux
)
list(APPEND MY_LIBRARY_SRC
extractor.c
spi00in.c
${CMAKE_CURRENT_BINARY_DIR}/dllres.rc
)
list(APPEND MY_LIBRARY_INC
${CMAKE_CURRENT_SOURCE_DIR}
)
add_library(${MY_LIBRARY_NAME} MODULE)
if(NOT ((${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686") OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")))
set_target_properties(${MY_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${MY_LIBRARY_NAME}_${MY_LIBRARY_PROCESSOR})
endif()
set_target_properties(${MY_LIBRARY_NAME} PROPERTIES PREFIX "")
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")
set_target_properties(${MY_LIBRARY_NAME} PROPERTIES SUFFIX ".sph")
else()
set_target_properties(${MY_LIBRARY_NAME} PROPERTIES SUFFIX ".spi")
endif()
set_target_properties(${MY_LIBRARY_NAME} PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
target_sources(${MY_LIBRARY_NAME} PRIVATE ${MY_LIBRARY_SRC})
target_compile_options(${MY_LIBRARY_NAME} PUBLIC $<$<COMPILE_LANGUAGE:C>:${MY_LIBRARY_CFLAGS}>)
target_compile_options(${MY_LIBRARY_NAME} PUBLIC $<$<COMPILE_LANGUAGE:CXX>:${MY_LIBRARY_CXXFLAGS}>)
target_compile_definitions(${MY_LIBRARY_NAME} PUBLIC ${MY_LIBRARY_DEFINITIONS})
target_include_directories(${MY_LIBRARY_NAME} PUBLIC ${MY_LIBRARY_INC})
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13.0")
target_link_options(${MY_LIBRARY_NAME} PUBLIC ${MY_LIBRARY_LDFLAGS})
endif()
target_link_libraries(${MY_LIBRARY_NAME} ${MY_LIBRARY_LIBS})
if((NOT DEFINED MY_ARCHIVE_NAME) OR (NOT MY_ARCHIVE_NAME) OR (MY_ARCHIVE_NAME STREQUAL ""))
if((NOT DEFINED USE_ARCHIVE_HAS_GIT_TAG) OR (NOT USE_ARCHIVE_HAS_GIT_TAG) OR (USE_ARCHIVE_HAS_GIT_TAG STREQUAL ""))
set(USE_ARCHIVE_HAS_GIT_TAG FALSE)
endif()
if(USE_ARCHIVE_HAS_GIT_TAG)
set(MY_ARCHIVE_NAME ${MY_LIBRARY_NAME}.${MY_LIBRARY_PROCESSOR}.${CUR_GIT_TAG}.7z)
else()
set(MY_ARCHIVE_NAME ${MY_LIBRARY_NAME}.${MY_LIBRARY_PROCESSOR}.7z)
endif()
endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${MY_ARCHIVE_NAME}
COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/${MY_ARCHIVE_NAME} && 7z a ${CMAKE_CURRENT_BINARY_DIR}/${MY_ARCHIVE_NAME} $<TARGET_FILE:${MY_LIBRARY_NAME}>
DEPENDS ${MY_LIBRARY_NAME}
)
add_custom_target(archive
DEPENDS ${MY_ARCHIVE_NAME}
)