Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/libs/openssl11.cmake

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9687 - (show annotations) (download)
Thu Jan 13 12:54:25 2022 UTC (2 years, 4 months ago) by zmatsuo
File size: 13929 byte(s)
Visual Studio 2022 Preview 版向け記述を削除

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

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