Revision: 9674 https://osdn.net/projects/ttssh2/scm/svn/commits/9674 Author: zmatsuo Date: 2022-01-04 23:10:56 +0900 (Tue, 04 Jan 2022) Log Message: ----------- cmakeビルド, LibreSSL を使えるよう修正 - "-DTTXSSH_LIBRESSL=OFF" とすると、OpenSSL1.1.1 でビルドする - デフォルトでは ON、LibreSSL を使ってビルド - LibreSSL を lib/ でビルド - buildlibressl.cmake - OpenSSL3 を lib/ でビルド - buildopenssl3.cmake Modified Paths: -------------- branches/libressl_3_4_2_cmake/libs/buildall.cmake branches/libressl_3_4_2_cmake/ttssh2/ttxssh/CMakeLists.txt Added Paths: ----------- branches/libressl_3_4_2_cmake/libs/buildlibressl.cmake branches/libressl_3_4_2_cmake/libs/buildopenssl3.cmake branches/libressl_3_4_2_cmake/libs/lib_libressl.cmake -------------- next part -------------- Modified: branches/libressl_3_4_2_cmake/libs/buildall.cmake =================================================================== --- branches/libressl_3_4_2_cmake/libs/buildall.cmake 2022-01-04 14:10:46 UTC (rev 9673) +++ branches/libressl_3_4_2_cmake/libs/buildall.cmake 2022-01-04 14:10:56 UTC (rev 9674) @@ -55,5 +55,9 @@ execute_process( COMMAND ${CMAKE_COMMAND} -P argon2.cmake ) +message("libressl") +execute_process( + COMMAND ${CMAKE_COMMAND} -DCMAKE_GENERATOR=${CMAKE_GENERATOR} ${ARCHITECTURE_OPTION} -P buildlibressl.cmake + ) message("done buildall.cmake") Added: branches/libressl_3_4_2_cmake/libs/buildlibressl.cmake =================================================================== --- branches/libressl_3_4_2_cmake/libs/buildlibressl.cmake (rev 0) +++ branches/libressl_3_4_2_cmake/libs/buildlibressl.cmake 2022-01-04 14:10:56 UTC (rev 9674) @@ -0,0 +1,134 @@ +# for libreSSL +# cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=Win32 -P buildlibressl.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -P buildlibressl.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -DCMAKE_CONFIGURATION_TYPE=Release -P buildlibressl.cmake + +include(script_support.cmake) + +set(SRC_DIR_BASE "libressl-3.4.2") +set(SRC_ARC "libressl-3.4.2.tar.gz") +set(SRC_URL "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.2.tar.gz") +set(SRC_ARC_HASH_SHA256 cb82ca7d547336917352fbd23db2fc483c6c44d35157b32780214ec74197b3ce) + +set(DOWN_DIR "${CMAKE_SOURCE_DIR}/download/libressl") +set(EXTRACT_DIR "${CMAKE_SOURCE_DIR}/build/libressl/src") +set(SRC_DIR "${EXTRACT_DIR}/${SRC_DIR_BASE}") +set(INSTALL_DIR "${CMAKE_SOURCE_DIR}/libressl_${TOOLSET}") +set(BUILD_DIR "${CMAKE_SOURCE_DIR}/build/libressl/build_${TOOLSET}") +if(("${CMAKE_GENERATOR}" MATCHES "Win64") OR ("$ENV{MSYSTEM_CHOST}" STREQUAL "x86_64-w64-mingw32") OR ("${ARCHITECTURE}" MATCHES "x64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64")) + set(INSTALL_DIR "${INSTALL_DIR}_x64") + set(BUILD_DIR "${BUILD_DIR}_x64") +endif() + +#message("BUILD_DIR=${BUILD_DIR}") +#message("INSTALL_DIR=${INSTALL_DIR}") + +######################################## + +# Configure + Generate +function(cmake_generate GENERATOR SRC_DIR WORKING_DIR OPTIONS) + execute_process( + COMMAND ${CMAKE_COMMAND} ${SRC_DIR} .. -G "${GENERATOR}" ${OPTIONS} + WORKING_DIRECTORY "${BUILD_DIR}" + ENCODING AUTO + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake build fail ${rv}") + endif() +endfunction() + +# build + install +function(cmake_build WORKING_DIR OPTIONS BUILD_TOOL_OPTIONS) + execute_process( + COMMAND ${CMAKE_COMMAND} --build . ${OPTIONS} --target install -- ${BUILD_TOOL_OPTIONS} + WORKING_DIRECTORY "${BUILD_DIR}" + ENCODING AUTO + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake build fail ${rv}") + endif() +endfunction() + +######################################## + +if(NOT EXISTS ${SRC_DIR}/README.md) + + file(DOWNLOAD + ${SRC_URL} + ${DOWN_DIR}/${SRC_ARC} + EXPECTED_HASH SHA256=${SRC_ARC_HASH_SHA256} + SHOW_PROGRESS + ) + + file(MAKE_DIRECTORY ${EXTRACT_DIR}) + + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar "xvf" ${DOWN_DIR}/${SRC_ARC} + WORKING_DIRECTORY ${EXTRACT_DIR} + ) + + file(COPY + ${SRC_DIR}/COPYING + DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help + ) + file(RENAME + ${CMAKE_CURRENT_LIST_DIR}/doc_help/COPYING + ${CMAKE_CURRENT_LIST_DIR}/doc_help/LibreSSL-LICENSE.txt) +endif() + +######################################## + +file(MAKE_DIRECTORY "${BUILD_DIR}") + +if(("${CMAKE_BUILD_TYPE}" STREQUAL "") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "")) + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + # multi-configuration + + unset(GENERATE_OPTIONS) + list(APPEND GENERATE_OPTIONS -A ${ARCHITECTURE}) + list(APPEND GENERATE_OPTIONS "-DCMAKE_DEBUG_POSTFIX=d") + list(APPEND GENERATE_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") + list(APPEND GENERATE_OPTIONS "-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}") + list(APPEND GENERATE_OPTIONS "-DLIBRESSL_TESTS=off") + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + list(APPEND GENERATE_OPTIONS "-DMSVC=on") + list(APPEND GENERATE_OPTIONS "-DUSE_STATIC_MSVC_RUNTIMES=on") + endif() + + cmake_generate("${CMAKE_GENERATOR}" "${SRC_DIR}" "${BUILD_DIR}" "${GENERATE_OPTIONS}") + + unset(BUILD_OPTIONS) + list(APPEND BUILD_OPTIONS "--config Debug") + cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "") + + unset(BUILD_OPTIONS) + list(APPEND BUILD_OPTIONS "--config Release") + cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "") + + return() + else() + # single-configuration + unset(GENERATE_OPTIONS) + if(CMAKE_HOST_UNIX) + list(APPEND GENERATE_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_CURRENT_LIST_DIR}/../mingw.toolchain.cmake") + endif(CMAKE_HOST_UNIX) + list(APPEND GENERATE_OPTIONS "-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}") + list(APPEND GENERATE_OPTIONS "-DCMAKE_BUILD_TYPE=Release") + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + list(APPEND GENERATE_OPTIONS "-DMSVC=on") + list(APPEND GENERATE_OPTIONS "-DUSE_STATIC_MSVC_RUNTIMES=on") + endif() + + cmake_generate("${CMAKE_GENERATOR}" "${SRC_DIR}" "${BUILD_DIR}" "${GENERATE_OPTIONS}") + + if(${CMAKE_GENERATOR} MATCHES "Unix Makefiles") + set(APPEND BUILD_TOOL_OPTIONS "-j") + endif() + + unset(BUILD_OPTIONS) + cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "${BUILD_TOOL_OPTIONS}") + + endif() +endif() Added: branches/libressl_3_4_2_cmake/libs/buildopenssl3.cmake =================================================================== --- branches/libressl_3_4_2_cmake/libs/buildopenssl3.cmake (rev 0) +++ branches/libressl_3_4_2_cmake/libs/buildopenssl3.cmake 2022-01-04 14:10:56 UTC (rev 9674) @@ -0,0 +1,340 @@ +# for OpenSSL 1.1.1 +# cmake -DCMAKE_GENERATOR="Visual Studio 17 2022" -DARCHITECTURE=Win32 -P buildopenssl3.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=Win32 -P buildopenssl3.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -P buildopenssl3.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -DCMAKE_CONFIGURATION_TYPE=Release -P buildopenssl3.cmake + +#### +if(("${CMAKE_BUILD_TYPE}" STREQUAL "") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "")) + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + # multi-configuration + execute_process( + COMMAND ${CMAKE_COMMAND} + -DCMAKE_GENERATOR=${CMAKE_GENERATOR} + -DCMAKE_CONFIGURATION_TYPE=Release + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/VSToolchain.cmake + -DARCHITECTURE=${ARCHITECTURE} + -P buildopenssl3.cmake + ) + execute_process( + COMMAND ${CMAKE_COMMAND} + -DCMAKE_GENERATOR=${CMAKE_GENERATOR} + -DCMAKE_CONFIGURATION_TYPE=Debug + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/VSToolchain.cmake + -DARCHITECTURE=${ARCHITECTURE} + -P buildopenssl3.cmake + ) + return() + elseif("$ENV{MSYSTEM}" MATCHES "MINGW32") + # mingw on msys2 + # single-configuration + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + elseif("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles") + # mingw + # single-configuration + if("${CMAKE_TOOLCHAIN_FILE}" STREQUAL "") + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/../mingw.toolchain.cmake") + endif() + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + elseif("${CMAKE_GENERATOR}" MATCHES "NMake Makefiles") + # VS nmake + # single-configuration + if("${CMAKE_TOOLCHAIN_FILE}" STREQUAL "") + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/VSToolchain.cmake") + endif() + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + else() + # single-configuration + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + endif() +endif() + +include(script_support.cmake) + +set(SRC_DIR_BASE "openssl-3.0.1") +set(SRC_ARC "openssl-3.0.1.tar.gz") +set(SRC_URL "https://www.openssl.org/source/openssl-3.0.1.tar.gz") +set(SRC_ARC_HASH_SHA256 c311ad853353bce796edad01a862c50a8a587f62e7e2100ef465ab53ec9b06d1) + +set(DOWN_DIR "${CMAKE_SOURCE_DIR}/download/openssl") + +set(EXTRACT_DIR "${CMAKE_SOURCE_DIR}/build/openssl3/src_${TOOLSET}") +set(INSTALL_DIR "${CMAKE_SOURCE_DIR}/openssl3_${TOOLSET}") +if(("${CMAKE_GENERATOR}" MATCHES "Win64") OR ("$ENV{MSYSTEM_CHOST}" STREQUAL "x86_64-w64-mingw32") OR ("${ARCHITECTURE}" MATCHES "x64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64")) + set(EXTRACT_DIR "${EXTRACT_DIR}_x64") + set(INSTALL_DIR "${INSTALL_DIR}_x64") +endif() +if((${CMAKE_GENERATOR} MATCHES "Visual Studio") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "Debug")) + set(EXTRACT_DIR "${EXTRACT_DIR}_debug") + set(INSTALL_DIR "${INSTALL_DIR}_debug") +endif() +set(SRC_DIR "${EXTRACT_DIR}/${SRC_DIR_BASE}") + +######################################## + +file(DOWNLOAD + ${SRC_URL} + ${DOWN_DIR}/${SRC_ARC} + EXPECTED_HASH SHA256=${SRC_ARC_HASH_SHA256} + SHOW_PROGRESS + ) + +######################################## + +if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") + find_program( + PERL perl + ) +elseif("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + # Active/Strawberry Perl + find_program( + PERL perl.exe + HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/perl/perl/bin + HINTS c:/Perl64/bin + HINTS c:/Perl/bin + HINTS c:/Strawberry/perl/bin + ) + if("${PERL}" MATCHES "[Cc]ygwin") + message(FATAL_ERROR "cygwin perl! ${PERL}") + endif() +else() + # MinGW + find_program( + PERL perl + HINTS C:/msys64/usr/bin + ) +endif() + +if(${PERL} STREQUAL "PERL-NOTFOUND") + message(FATAL_ERROR "perl not found") +endif() + +######################################## + +if(NOT EXISTS ${SRC_DIR}/README) + + execute_process( + COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTRACT_DIR} + ) + + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar "xvf" ${DOWN_DIR}/${SRC_ARC} + WORKING_DIRECTORY ${EXTRACT_DIR} + ) + + file(COPY + ${SRC_DIR}/LICENSE.txt + DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help + ) + file(RENAME + ${CMAKE_CURRENT_LIST_DIR}/doc_help/LICENSE.txt + ${CMAKE_CURRENT_LIST_DIR}/doc_help/OpenSSL3-LICENSE.txt) + +endif() + +######################################## + +if((${CMAKE_GENERATOR} MATCHES "Visual Studio") OR + (${CMAKE_GENERATOR} MATCHES "NMake Makefiles")) + ######################################## VS + if(${CMAKE_GENERATOR} MATCHES "NMake Makefiles") + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 17 2022") + find_program( + VCVARS32 vcvarsall.bat + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Auxiliary/Build" + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build" + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 16 2019") + find_program( + VCVARS32 vcvarsall.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017") + find_program( + VCVARS32 vcvarsall.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/Build" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 14 2015") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 12 2013") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 11 2012") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 10 2010") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 9 2008") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin" + ) + else() + message(FATAL_ERROR "CMAKE_GENERATOR ${CMAKE_GENERATOR} not supported") + endif() + if(VCVARS32-NOTFOUND OR (${VCVARS32} STREQUAL "VCVARS32-NOTFOUND")) + message(FATAL_ERROR "vcvars32.bat not found") + endif() + + if((${CMAKE_GENERATOR} MATCHES "Win64") OR ("${ARCHITECTURE}" MATCHES "x64")) + set(CONFIG_TARGET "VC-WIN64A") + else() + set(CONFIG_TARGET "VC-WIN32") + endif() + if(("${CMAKE_BUILD_TYPE}" STREQUAL "Release") OR ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "Release")) + else() + set(CONFIG_TARGET "debug-${CONFIG_TARGET}") + endif() + + file(WRITE "${SRC_DIR}/build_cmake.bat" + "cd /d %~dp0\n" + "setlocal\n" + ) + file(TO_NATIVE_PATH ${PERL} PERL_N) + file(TO_NATIVE_PATH ${INSTALL_DIR} INSTALL_DIR_N) + file(TO_NATIVE_PATH ${VCVARS32} VCVARS32_N) + string(REGEX REPLACE [[^(.*)\\.*$]] [[\1]] PERL_N_PATH ${PERL_N}) + file(APPEND "${SRC_DIR}/build_cmake.bat" + "set PATH=${PERL_N_PATH};c:\\windows;c:\\windows\\system32\n" + ) + if(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005") + ## Visual Studio 2005 特別処理 + # include,libパスの設定 + file(APPEND "${SRC_DIR}/build_cmake.bat" + "set SDK=C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\n" + "set INCLUDE=%SDK%\\Include;%INCLUDE%\n" + "set LIB=%SDK%\\lib;%LIB%\n" + ) + endif() + if((${CMAKE_GENERATOR} MATCHES "Visual Studio 16 2019") OR ${CMAKE_GENERATOR} MATCHES "Visual Studio 17 2022") + if("${ARCHITECTURE}" MATCHES "x64") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" amd64\n" + ) + else() + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" x86\n" + ) + endif() + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017 Win64") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" amd64\n" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" x86\n" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\"\n" + ) + endif() + file(APPEND "${SRC_DIR}/build_cmake.bat" + "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" + "nmake -f makefile install\n" + ) + set(BUILD_CMAKE_BAT "${SRC_DIR}/build_cmake.bat") + file(TO_NATIVE_PATH ${BUILD_CMAKE_BAT} BUILD_CMAKE_BAT_N) + execute_process( + COMMAND cmd /c ${BUILD_CMAKE_BAT_N} + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake build fail ${rv}") + endif() +else() + ######################################## MinGW + execute_process( + COMMAND "uname" -s + OUTPUT_VARIABLE ov) + string(REGEX MATCH "[A-Za-z0-9]+" UNAME_S ${ov}) + if("${UNAME_S}" STREQUAL "CYGWIN") + find_program( + MAKE make.exe + HINTS c:/cygwin/usr/bin + HINTS c:/cygwin64/usr/bin + ) + elseif(("${UNAME_S}" STREQUAL "MINGW32") OR ("${UNAME_S}" STREQUAL "MINGW64") OR ("${CMAKE_COMMAND}" MATCHES "mingw")) + find_program( + MAKE make + ) + elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") + find_program( + MAKE make + ) + else() + message(FATAL_ERROR "unsported") + endif() + set(ENV{PATH} "/usr/bin;/bin") + if(("${UNAME_S}" STREQUAL "MINGW32") OR ("${CMAKE_COMMAND}" MATCHES "mingw32")) + set(CMAKE_C_COMPILER "cc") + set(PATH "/mingw32/bin:/usr/local/bin:/usr/bin:/bin") + set(CONFIG_NAME "mingw") + elseif(("${UNAME_S}" STREQUAL "MINGW64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64")) + set(CMAKE_C_COMPILER "cc") + set(PATH "/mingw64/bin:/usr/local/bin:/usr/bin:/bin") + set(CONFIG_NAME "mingw64") + else() + include(${CMAKE_SOURCE_DIR}/../mingw.toolchain.cmake) + set(ENV{CC} ${CMAKE_C_COMPILER}) + set(ENV{AR} "i686-w64-mingw32-ar") + set(ENV{RANLIB} "i686-w64-mingw32-ranlib") + set(ENV{RC} "i686-w64-mingw32-windres") + set(PATH "/usr/bin:/bin") + set(CONFIG_NAME "mingw") + endif() + execute_process( + 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 + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake configure fail ${rv}") + endif() + execute_process( + COMMAND ${CMAKE_COMMAND} -E env "PATH=${PATH}" ${MAKE} CC=${CMAKE_C_COMPILER} + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake build fail ${rv}") + endif() + execute_process( + COMMAND ${CMAKE_COMMAND} -E env "PATH=${PATH}" ${MAKE} install + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake install fail ${rv}") + endif() +endif() Added: branches/libressl_3_4_2_cmake/libs/lib_libressl.cmake =================================================================== --- branches/libressl_3_4_2_cmake/libs/lib_libressl.cmake (rev 0) +++ branches/libressl_3_4_2_cmake/libs/lib_libressl.cmake 2022-01-04 14:10:56 UTC (rev 9674) @@ -0,0 +1,27 @@ + +include(${CMAKE_CURRENT_LIST_DIR}/script_support.cmake) + +set(REBRESSL_ROOT ${CMAKE_CURRENT_LIST_DIR}/libressl_${TOOLSET}) +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(REBRESSL_ROOT "${REBRESSL_ROOT}_x64") +endif() + +if(MINGW) + set(LIBRESSL_INCLUDE_DIRS + ${REBRESSL_ROOT}/include + ) + + set(LIBRESSL_LIB + ${REBRESSL_ROOT}/lib/libcrypto-47.a + bcrypt + ) +else() + set(LIBRESSL_INCLUDE_DIRS + ${REBRESSL_ROOT}/include + ) + + set(LIBRESSL_LIB + debug ${REBRESSL_ROOT}/lib/crypto-47d.lib + optimized ${REBRESSL_ROOT}/lib/crypto-47d.lib + ) +endif() Modified: branches/libressl_3_4_2_cmake/ttssh2/ttxssh/CMakeLists.txt =================================================================== --- branches/libressl_3_4_2_cmake/ttssh2/ttxssh/CMakeLists.txt 2022-01-04 14:10:46 UTC (rev 9673) +++ branches/libressl_3_4_2_cmake/ttssh2/ttxssh/CMakeLists.txt 2022-01-04 14:10:56 UTC (rev 9674) @@ -1,9 +1,15 @@ set(PACKAGE_NAME "ttxssh") +option(TTXSSH_LIBRESSL "User LibreSSL" on) + project(${PACKAGE_NAME}) include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_zlib.cmake) -include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_openssl.cmake) +if(TTXSSH_LIBRESSL) + include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_libressl.cmake) +else() + include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_openssl.cmake) +endif() add_library( ${PACKAGE_NAME} SHARED @@ -156,10 +162,23 @@ ../../teraterm/common ../matcher ../putty - ${OPENSSL_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} -) + ) +if(TTXSSH_LIBRESSL) + target_include_directories( + ${PACKAGE_NAME} + PRIVATE + ${LIBRESSL_INCLUDE_DIRS} + ) +else() + target_include_directories( + ${PACKAGE_NAME} + PRIVATE + ${OPENSSL_INCLUDE_DIRS} + ) +endif() + set_target_properties( ${PACKAGE_NAME} PROPERTIES @@ -189,9 +208,24 @@ ttpcmn argon2 ${ZLIB_LIB} - ${OPENSSL_LIB} ) +if(TTXSSH_LIBRESSL) + target_link_libraries( + ${PACKAGE_NAME} + PRIVATE + ${LIBRESSL_LIB} + bcrypt.lib + ) +else() + target_link_libraries( + ${PACKAGE_NAME} + PRIVATE + ${OPENSSL_LIB} + crypt32.lib # TODO このlibを使用しないパッチを適応したら削除すること + ) +endif() + if(SUPPORT_OLD_WINDOWS) target_link_libraries( ${PACKAGE_NAME} @@ -207,8 +241,6 @@ gdi32 comdlg32 comctl32 - # OpenSSL が使用 - crypt32.lib # TODO このlibを使用しないパッチを適応したら削除すること ) ### create puttyversion.h