Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/libs/buildopenssl3.cmake

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9693 - (show annotations) (download)
Sun Jan 16 15:35:24 2022 UTC (2 years, 2 months ago) by nmaya
File size: 12447 byte(s)
OpenSSL 3 のビルドに対応

#43469

merge from openssl_3_0_1:
r9621,r9659,r9681,r9691
1 # for OpenSSL 1.1.1
2 # cmake -DCMAKE_GENERATOR="Visual Studio 17 2022" -DARCHITECTURE=Win32 -P buildopenssl3.cmake
3 # cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=Win32 -P buildopenssl3.cmake
4 # cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -P buildopenssl3.cmake
5 # cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -DCMAKE_CONFIGURATION_TYPE=Release -P buildopenssl3.cmake
6
7 ####
8 if(("${CMAKE_BUILD_TYPE}" STREQUAL "") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL ""))
9 if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
10 # multi-configuration
11 execute_process(
12 COMMAND ${CMAKE_COMMAND}
13 -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
14 -DCMAKE_CONFIGURATION_TYPE=Release
15 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/VSToolchain.cmake
16 -DARCHITECTURE=${ARCHITECTURE}
17 -P buildopenssl3.cmake
18 )
19 execute_process(
20 COMMAND ${CMAKE_COMMAND}
21 -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
22 -DCMAKE_CONFIGURATION_TYPE=Debug
23 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/VSToolchain.cmake
24 -DARCHITECTURE=${ARCHITECTURE}
25 -P buildopenssl3.cmake
26 )
27 return()
28 elseif("$ENV{MSYSTEM}" MATCHES "MINGW32")
29 # mingw on msys2
30 # single-configuration
31 if("${CMAKE_BUILD_TYPE}" STREQUAL "")
32 set(CMAKE_BUILD_TYPE Release)
33 endif()
34 elseif("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles")
35 # mingw
36 # single-configuration
37 if("${CMAKE_TOOLCHAIN_FILE}" STREQUAL "")
38 set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/../mingw.toolchain.cmake")
39 endif()
40 if("${CMAKE_BUILD_TYPE}" STREQUAL "")
41 set(CMAKE_BUILD_TYPE Release)
42 endif()
43 elseif("${CMAKE_GENERATOR}" MATCHES "NMake Makefiles")
44 # VS nmake
45 # single-configuration
46 if("${CMAKE_TOOLCHAIN_FILE}" STREQUAL "")
47 set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/VSToolchain.cmake")
48 endif()
49 if("${CMAKE_BUILD_TYPE}" STREQUAL "")
50 set(CMAKE_BUILD_TYPE Release)
51 endif()
52 else()
53 # single-configuration
54 if("${CMAKE_BUILD_TYPE}" STREQUAL "")
55 set(CMAKE_BUILD_TYPE Release)
56 endif()
57 endif()
58 endif()
59
60 include(script_support.cmake)
61
62 set(SRC_DIR_BASE "openssl-3.0.1")
63 set(SRC_ARC "openssl-3.0.1.tar.gz")
64 set(SRC_URL "https://www.openssl.org/source/openssl-3.0.1.tar.gz")
65 set(SRC_ARC_HASH_SHA256 c311ad853353bce796edad01a862c50a8a587f62e7e2100ef465ab53ec9b06d1)
66
67 set(DOWN_DIR "${CMAKE_SOURCE_DIR}/download/openssl")
68
69 set(EXTRACT_DIR "${CMAKE_SOURCE_DIR}/build/openssl3/src_${TOOLSET}")
70 set(INSTALL_DIR "${CMAKE_SOURCE_DIR}/openssl3_${TOOLSET}")
71 if(("${CMAKE_GENERATOR}" MATCHES "Win64") OR ("$ENV{MSYSTEM_CHOST}" STREQUAL "x86_64-w64-mingw32") OR ("${ARCHITECTURE}" MATCHES "x64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64"))
72 set(EXTRACT_DIR "${EXTRACT_DIR}_x64")
73 set(INSTALL_DIR "${INSTALL_DIR}_x64")
74 endif()
75 if((${CMAKE_GENERATOR} MATCHES "Visual Studio") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "Debug"))
76 set(EXTRACT_DIR "${EXTRACT_DIR}_debug")
77 set(INSTALL_DIR "${INSTALL_DIR}_debug")
78 endif()
79 set(SRC_DIR "${EXTRACT_DIR}/${SRC_DIR_BASE}")
80
81 ########################################
82
83 file(DOWNLOAD
84 ${SRC_URL}
85 ${DOWN_DIR}/${SRC_ARC}
86 EXPECTED_HASH SHA256=${SRC_ARC_HASH_SHA256}
87 SHOW_PROGRESS
88 )
89
90 ########################################
91
92 if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux")
93 find_program(
94 PERL perl
95 )
96 elseif("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
97 # Active/Strawberry Perl
98 find_program(
99 PERL perl.exe
100 HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/perl/perl/bin
101 HINTS c:/Perl64/bin
102 HINTS c:/Perl/bin
103 HINTS c:/Strawberry/perl/bin
104 )
105 if("${PERL}" MATCHES "[Cc]ygwin")
106 message(FATAL_ERROR "cygwin perl! ${PERL}")
107 endif()
108 else()
109 # MinGW
110 find_program(
111 PERL perl
112 HINTS C:/msys64/usr/bin
113 )
114 endif()
115
116 if(${PERL} STREQUAL "PERL-NOTFOUND")
117 message(FATAL_ERROR "perl not found")
118 endif()
119
120 ########################################
121
122 if(NOT EXISTS "${SRC_DIR}/README.md")
123
124 execute_process(
125 COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTRACT_DIR}
126 )
127
128 execute_process(
129 COMMAND ${CMAKE_COMMAND} -E tar "xvf" ${DOWN_DIR}/${SRC_ARC}
130 WORKING_DIRECTORY ${EXTRACT_DIR}
131 )
132
133 file(COPY
134 ${SRC_DIR}/LICENSE.txt
135 DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help
136 )
137 file(RENAME
138 ${CMAKE_CURRENT_LIST_DIR}/doc_help/LICENSE.txt
139 ${CMAKE_CURRENT_LIST_DIR}/doc_help/OpenSSL3-LICENSE.txt)
140
141 endif()
142
143 ########################################
144
145 if((${CMAKE_GENERATOR} MATCHES "Visual Studio") OR
146 (${CMAKE_GENERATOR} MATCHES "NMake Makefiles"))
147 ######################################## VS
148 if(${CMAKE_GENERATOR} MATCHES "NMake Makefiles")
149 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 17 2022")
150 find_program(
151 VCVARS32 vcvarsall.bat
152 HINTS "C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Auxiliary/Build"
153 HINTS "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build"
154 HINTS "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build"
155 HINTS "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build"
156 )
157 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 16 2019")
158 find_program(
159 VCVARS32 vcvarsall.bat
160 HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build"
161 HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build"
162 HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build"
163 )
164 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017")
165 find_program(
166 VCVARS32 vcvarsall.bat
167 HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build"
168 HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Auxiliary/Build"
169 HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/Build"
170 )
171 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 14 2015")
172 find_program(
173 VCVARS32 vcvars32.bat
174 HINTS "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin"
175 )
176 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 12 2013")
177 find_program(
178 VCVARS32 vcvars32.bat
179 HINTS "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin"
180 )
181 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 11 2012")
182 find_program(
183 VCVARS32 vcvars32.bat
184 HINTS "C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin"
185 )
186 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 10 2010")
187 find_program(
188 VCVARS32 vcvars32.bat
189 HINTS "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"
190 )
191 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 9 2008")
192 find_program(
193 VCVARS32 vcvars32.bat
194 HINTS "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
195 )
196 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005")
197 find_program(
198 VCVARS32 vcvars32.bat
199 HINTS "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin"
200 )
201 else()
202 message(FATAL_ERROR "CMAKE_GENERATOR ${CMAKE_GENERATOR} not supported")
203 endif()
204 if(VCVARS32-NOTFOUND OR (${VCVARS32} STREQUAL "VCVARS32-NOTFOUND"))
205 message(FATAL_ERROR "vcvars32.bat not found")
206 endif()
207
208 if((${CMAKE_GENERATOR} MATCHES "Win64") OR ("${ARCHITECTURE}" MATCHES "x64"))
209 set(CONFIG_TARGET "VC-WIN64A")
210 else()
211 set(CONFIG_TARGET "VC-WIN32")
212 endif()
213 if(("${CMAKE_BUILD_TYPE}" STREQUAL "Release") OR ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "Release"))
214 else()
215 set(CONFIG_TARGET "debug-${CONFIG_TARGET}")
216 endif()
217
218 file(WRITE "${SRC_DIR}/build_cmake.bat"
219 "cd /d %~dp0\n"
220 "setlocal\n"
221 )
222 file(TO_NATIVE_PATH ${PERL} PERL_N)
223 file(TO_NATIVE_PATH ${INSTALL_DIR} INSTALL_DIR_N)
224 file(TO_NATIVE_PATH ${VCVARS32} VCVARS32_N)
225 string(REGEX REPLACE [[^(.*)\\.*$]] [[\1]] PERL_N_PATH ${PERL_N})
226 file(APPEND "${SRC_DIR}/build_cmake.bat"
227 "set PATH=${PERL_N_PATH};c:\\windows;c:\\windows\\system32\n"
228 )
229 if(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005")
230 ## Visual Studio 2005 特別処理
231 # include,libパスの設定
232 file(APPEND "${SRC_DIR}/build_cmake.bat"
233 "set SDK=C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\n"
234 "set INCLUDE=%SDK%\\Include;%INCLUDE%\n"
235 "set LIB=%SDK%\\lib;%LIB%\n"
236 )
237 endif()
238 if((${CMAKE_GENERATOR} MATCHES "Visual Studio 16 2019") OR ${CMAKE_GENERATOR} MATCHES "Visual Studio 17 2022")
239 if("${ARCHITECTURE}" MATCHES "x64")
240 file(APPEND "${SRC_DIR}/build_cmake.bat"
241 "call \"${VCVARS32_N}\" amd64\n"
242 )
243 else()
244 file(APPEND "${SRC_DIR}/build_cmake.bat"
245 "call \"${VCVARS32_N}\" x86\n"
246 )
247 endif()
248 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017 Win64")
249 file(APPEND "${SRC_DIR}/build_cmake.bat"
250 "call \"${VCVARS32_N}\" amd64\n"
251 )
252 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017")
253 file(APPEND "${SRC_DIR}/build_cmake.bat"
254 "call \"${VCVARS32_N}\" x86\n"
255 )
256 elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio")
257 file(APPEND "${SRC_DIR}/build_cmake.bat"
258 "call \"${VCVARS32_N}\"\n"
259 )
260 endif()
261 file(APPEND "${SRC_DIR}/build_cmake.bat"
262 "perl Configure no-asm no-async no-shared no-capieng no-dso no-engine ${CONFIG_TARGET} -D_WIN32_WINNT=0x0501 --prefix=${INSTALL_DIR_N} --openssldir=${INSTALL_DIR_N}\\SSL\n"
263 "nmake -f makefile install\n"
264 )
265 set(BUILD_CMAKE_BAT "${SRC_DIR}/build_cmake.bat")
266 file(TO_NATIVE_PATH ${BUILD_CMAKE_BAT} BUILD_CMAKE_BAT_N)
267 execute_process(
268 COMMAND cmd /c ${BUILD_CMAKE_BAT_N}
269 WORKING_DIRECTORY ${SRC_DIR}
270 RESULT_VARIABLE rv
271 )
272 if(NOT rv STREQUAL "0")
273 message(FATAL_ERROR "cmake build fail ${rv}")
274 endif()
275 else()
276 ######################################## MinGW
277 execute_process(
278 COMMAND "uname" -s
279 OUTPUT_VARIABLE ov)
280 string(REGEX MATCH "[A-Za-z0-9]+" UNAME_S ${ov})
281 if("${UNAME_S}" STREQUAL "CYGWIN")
282 find_program(
283 MAKE make.exe
284 HINTS c:/cygwin/usr/bin
285 HINTS c:/cygwin64/usr/bin
286 )
287 elseif(("${UNAME_S}" STREQUAL "MINGW32") OR ("${UNAME_S}" STREQUAL "MINGW64") OR ("${CMAKE_COMMAND}" MATCHES "mingw"))
288 find_program(
289 MAKE make
290 )
291 elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux")
292 find_program(
293 MAKE make
294 )
295 else()
296 message(FATAL_ERROR "unsported")
297 endif()
298 set(ENV{PATH} "/usr/bin;/bin")
299 if(("${UNAME_S}" STREQUAL "MINGW32") OR ("${CMAKE_COMMAND}" MATCHES "mingw32"))
300 set(CMAKE_C_COMPILER "cc")
301 set(PATH "/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/core_perl")
302 set(CONFIG_NAME "mingw")
303 elseif(("${UNAME_S}" STREQUAL "MINGW64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64"))
304 set(CMAKE_C_COMPILER "cc")
305 set(PATH "/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/core_perl")
306 set(CONFIG_NAME "mingw64")
307 else()
308 include(${CMAKE_SOURCE_DIR}/../mingw.toolchain.cmake)
309 set(ENV{CC} ${CMAKE_C_COMPILER})
310 set(ENV{AR} "i686-w64-mingw32-ar")
311 set(ENV{RANLIB} "i686-w64-mingw32-ranlib")
312 set(ENV{RC} "i686-w64-mingw32-windres")
313 set(PATH "/usr/bin:/bin")
314 set(CONFIG_NAME "mingw")
315 endif()
316 execute_process(
317 COMMAND ${CMAKE_COMMAND} -E env "PATH=/usr/bin:/bin" ${PERL} ./Configure no-asm no-async no-shared no-capieng -no-dso -no-engine ${CONFIG_NAME} -D_WIN32_WINNT=0x0501 --prefix=${INSTALL_DIR} --openssldir=${INSTALL_DIR}/SSL
318 WORKING_DIRECTORY ${SRC_DIR}
319 RESULT_VARIABLE rv
320 )
321 if(NOT rv STREQUAL "0")
322 message(FATAL_ERROR "cmake configure fail ${rv}")
323 endif()
324 set(MAKE_OPTION "-j")
325 execute_process(
326 COMMAND ${CMAKE_COMMAND} -E env "PATH=${PATH}" ${MAKE} CC=${CMAKE_C_COMPILER} ${MAKE_OPTION}
327 WORKING_DIRECTORY ${SRC_DIR}
328 RESULT_VARIABLE rv
329 )
330 if(NOT rv STREQUAL "0")
331 message(FATAL_ERROR "cmake build fail ${rv}")
332 endif()
333 execute_process(
334 COMMAND ${CMAKE_COMMAND} -E env "PATH=${PATH}" ${MAKE} install ${MAKE_OPTION}
335 WORKING_DIRECTORY ${SRC_DIR}
336 RESULT_VARIABLE rv
337 )
338 if(NOT rv STREQUAL "0")
339 message(FATAL_ERROR "cmake install fail ${rv}")
340 endif()
341 endif()

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26