[ttssh2-commit] [10571] cmakeビルドで libs/ に libressl 3.7.0 をビルドできるようにした

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2023年 2月 3日 (金) 23:05:49 JST


Revision: 10571
          https://osdn.net/projects/ttssh2/scm/svn/commits/10571
Author:   zmatsuo
Date:     2023-02-03 23:05:49 +0900 (Fri, 03 Feb 2023)
Log Message:
-----------
cmakeビルドで libs/ に libressl 3.7.0 をビルドできるようにした

Modified Paths:
--------------
    branches/libreSSL_370/libs/download.cmake

Added Paths:
-----------
    branches/libreSSL_370/libs/buildlibressl_370.cmake

-------------- next part --------------
Added: branches/libreSSL_370/libs/buildlibressl_370.cmake
===================================================================
--- branches/libreSSL_370/libs/buildlibressl_370.cmake	                        (rev 0)
+++ branches/libreSSL_370/libs/buildlibressl_370.cmake	2023-02-03 14:05:49 UTC (rev 10571)
@@ -0,0 +1,119 @@
+# for libreSSL
+# cmake -DCMAKE_GENERATOR="Visual Studio 17 2022" -DARCHITECTURE=x64 -P buildlibressl_370.cmake
+# cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=Win32 -P buildlibressl_370.cmake
+# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -P buildlibressl_370.cmake
+# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -DCMAKE_CONFIGURATION_TYPE=Release -P buildlibressl_370.cmake
+
+include(script_support.cmake)
+
+set(EXTRACT_DIR "${CMAKE_CURRENT_LIST_DIR}/build/libressl_370/src")
+set(SRC_DIR "${EXTRACT_DIR}/libressl_3.7.0")
+set(BUILD_DIR "${CMAKE_CURRENT_LIST_DIR}/build/libressl_370/build_${TOOLSET}")
+set(INSTALL_DIR "${CMAKE_CURRENT_LIST_DIR}/libressl_370_${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()
+
+########################################
+
+file(MAKE_DIRECTORY ${SRC_DIR})
+
+execute_process(
+  COMMAND ${CMAKE_COMMAND} -DTARGET=libressl370 -DEXT_DIR=${EXTRACT_DIR} -P download.cmake
+)
+
+if(${SRC_DIR}/COPYING IS_NEWER_THAN ${CMAKE_CURRENT_LIST_DIR}/doc_help/LibreSSL-LICENSE.txt)
+  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") OR ("${CMAKE_GENERATOR}" MATCHES "NMake Makefiles"))
+      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")
+      list(APPEND BUILD_TOOL_OPTIONS "-j")
+    endif()
+
+    unset(BUILD_OPTIONS)
+    cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "${BUILD_TOOL_OPTIONS}")
+
+  endif()
+endif()

Modified: branches/libreSSL_370/libs/download.cmake
===================================================================
--- branches/libreSSL_370/libs/download.cmake	2023-02-03 14:03:01 UTC (rev 10570)
+++ branches/libreSSL_370/libs/download.cmake	2023-02-03 14:05:49 UTC (rev 10571)
@@ -183,6 +183,29 @@
   )
 endfunction()
 
+# libressl 3.7.0
+function(download_libressl_370)
+  message("libressl-3.7.0")
+  set(DIR_IN_ARC "libressl-3.7.0")
+  set(RENAME_DIR "libressl_3.7.0")
+  set(CHECK_FILE "libressl_3.7.0/ChangeLog")
+  set(CHECK_HASH "882264c4a639ba16b58ceb37119fa841af12b2bf22752dea3fb8b62891a6da52")
+  set(SRC_URL "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.0.tar.gz")
+  set(ARC_HASH "3fc1290f4007ec75f6e9acecbb25512630d1b9ab8c53ba79844e395868c3e006")
+  #   ARC_HASH was picked from https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256
+  set(DOWN_DIR "${CMAKE_CURRENT_LIST_DIR}/download/libressl")
+  download_extract(
+    ${SRC_URL}
+    ${ARC_HASH}
+    ${DOWN_DIR}
+    ${EXT_DIR}
+    ${DIR_IN_ARC}
+    ${RENAME_DIR}
+    ${CHECK_FILE}
+    ${CHECK_HASH}
+  )
+endfunction()
+
 # oniguruma
 function(download_oniguruma)
   message("oniguruma")
@@ -310,6 +333,9 @@
 if ((${TARGET} STREQUAL "all") OR (${TARGET} STREQUAL "libressl"))
   download_libressl()
 endif()
+if ((${TARGET} STREQUAL "libressl370"))
+  download_libressl_370()
+endif()
 if ((${TARGET} STREQUAL "all") OR (${TARGET} STREQUAL "oniguruma"))
   download_oniguruma()
 endif()


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