| 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() |