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