[ttssh2-commit] [9674] cmakeビルド, LibreSSL を使えるよう修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 1月 4日 (火) 23:10:57 JST


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


ttssh2-commit メーリングリストの案内
Back to archive index