Optimize compilation process for openssl (#613)
do not rebuild when openssl lib already exist Type: Code refine Signed-off-by: Chen <jack.chen@verisilicon.com> Co-authored-by: Chen <jack.chen@verisilicon.com>
This commit is contained in:
parent
33f3a4f176
commit
5d741e8ebe
|
|
@ -61,363 +61,201 @@ index 22ab3cc..00bf90d 100644
|
|||
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
diff --git a/cmake/BuildOpenSSL.cmake b/cmake/BuildOpenSSL.cmake
|
||||
index e31f4bb..1cb990e 100644
|
||||
index e31f4bb..58728eb 100644
|
||||
--- a/cmake/BuildOpenSSL.cmake
|
||||
+++ b/cmake/BuildOpenSSL.cmake
|
||||
@@ -46,129 +46,143 @@ if (OPENSSL_BUILD_HASH)
|
||||
set(OPENSSL_CHECK_HASH URL_HASH SHA256=${OPENSSL_BUILD_HASH})
|
||||
endif()
|
||||
@@ -29,7 +29,7 @@ include(ExternalProject)
|
||||
|
||||
-# if already built, do not build again
|
||||
-if ((EXISTS ${OPENSSL_LIBSSL_PATH}) AND (EXISTS ${OPENSSL_LIBCRYPTO_PATH}))
|
||||
# find packages
|
||||
find_package(Git REQUIRED)
|
||||
-find_package(PythonInterp 3 REQUIRED)
|
||||
+find_package(PythonInterp 2 REQUIRED)
|
||||
|
||||
# # used to apply various patches to OpenSSL
|
||||
find_program(PATCH_PROGRAM patch)
|
||||
@@ -48,7 +48,7 @@ endif()
|
||||
|
||||
# if already built, do not build again
|
||||
if ((EXISTS ${OPENSSL_LIBSSL_PATH}) AND (EXISTS ${OPENSSL_LIBCRYPTO_PATH}))
|
||||
- message(WARNING "Not building OpenSSL again. Remove ${OPENSSL_LIBSSL_PATH} and ${OPENSSL_LIBCRYPTO_PATH} for rebuild")
|
||||
+# Always build again
|
||||
+if (WIN32 AND NOT CROSS)
|
||||
+ # yep, windows needs special treatment, but neither cygwin nor msys, since they provide an UNIX-like environment
|
||||
+
|
||||
+ if (MINGW)
|
||||
+ set(OS "WIN32")
|
||||
+ message(WARNING "Building on windows is experimental")
|
||||
+
|
||||
+ find_program(MSYS_BASH "bash.exe" PATHS "C:/Msys/" "C:/MinGW/msys/" PATH_SUFFIXES "/1.0/bin/" "/bin/"
|
||||
+ DOC "Path to MSYS installation")
|
||||
+ if (NOT MSYS_BASH)
|
||||
+ message(FATAL_ERROR "Specify MSYS installation path")
|
||||
+ endif(NOT MSYS_BASH)
|
||||
+
|
||||
+ set(MINGW_MAKE ${CMAKE_MAKE_PROGRAM})
|
||||
+ message(WARNING "Assuming your make program is a sibling of your compiler (resides in same directory)")
|
||||
+ elseif(NOT (CYGWIN OR MSYS))
|
||||
+ message(FATAL_ERROR "Unsupported compiler infrastructure")
|
||||
+ endif(MINGW)
|
||||
+
|
||||
+ set(MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM})
|
||||
+elseif(NOT UNIX)
|
||||
+ message(FATAL_ERROR "Unsupported platform")
|
||||
+ message(WARNING "Exist ${OPENSSL_LIBSSL_PATH} and ${OPENSSL_LIBCRYPTO_PATH}, Not building OpenSSL again.")
|
||||
else()
|
||||
- if (NOT OPENSSL_BUILD_VERSION)
|
||||
- message(FATAL_ERROR "You must specify OPENSSL_BUILD_VERSION!")
|
||||
- endif()
|
||||
+ # for OpenSSL we can only use GNU make, no exotic things like Ninja (MSYS always uses GNU make)
|
||||
+ find_program(MAKE_PROGRAM make)
|
||||
+endif()
|
||||
if (NOT OPENSSL_BUILD_VERSION)
|
||||
message(FATAL_ERROR "You must specify OPENSSL_BUILD_VERSION!")
|
||||
@@ -56,23 +56,23 @@ else()
|
||||
|
||||
- if (WIN32 AND NOT CROSS)
|
||||
- # yep, windows needs special treatment, but neither cygwin nor msys, since they provide an UNIX-like environment
|
||||
if (WIN32 AND NOT CROSS)
|
||||
# yep, windows needs special treatment, but neither cygwin nor msys, since they provide an UNIX-like environment
|
||||
-
|
||||
- if (MINGW)
|
||||
- set(OS "WIN32")
|
||||
- message(WARNING "Building on windows is experimental")
|
||||
+
|
||||
if (MINGW)
|
||||
set(OS "WIN32")
|
||||
message(WARNING "Building on windows is experimental")
|
||||
-
|
||||
- find_program(MSYS_BASH "bash.exe" PATHS "C:/Msys/" "C:/MinGW/msys/" PATH_SUFFIXES "/1.0/bin/" "/bin/"
|
||||
- DOC "Path to MSYS installation")
|
||||
- if (NOT MSYS_BASH)
|
||||
- message(FATAL_ERROR "Specify MSYS installation path")
|
||||
- endif(NOT MSYS_BASH)
|
||||
+
|
||||
find_program(MSYS_BASH "bash.exe" PATHS "C:/Msys/" "C:/MinGW/msys/" PATH_SUFFIXES "/1.0/bin/" "/bin/"
|
||||
DOC "Path to MSYS installation")
|
||||
if (NOT MSYS_BASH)
|
||||
message(FATAL_ERROR "Specify MSYS installation path")
|
||||
endif(NOT MSYS_BASH)
|
||||
-
|
||||
- set(MINGW_MAKE ${CMAKE_MAKE_PROGRAM})
|
||||
- message(WARNING "Assuming your make program is a sibling of your compiler (resides in same directory)")
|
||||
- elseif(NOT (CYGWIN OR MSYS))
|
||||
- message(FATAL_ERROR "Unsupported compiler infrastructure")
|
||||
- endif(MINGW)
|
||||
+
|
||||
set(MINGW_MAKE ${CMAKE_MAKE_PROGRAM})
|
||||
message(WARNING "Assuming your make program is a sibling of your compiler (resides in same directory)")
|
||||
elseif(NOT (CYGWIN OR MSYS))
|
||||
message(FATAL_ERROR "Unsupported compiler infrastructure")
|
||||
endif(MINGW)
|
||||
-
|
||||
- set(MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM})
|
||||
- elseif(NOT UNIX)
|
||||
- message(FATAL_ERROR "Unsupported platform")
|
||||
- else()
|
||||
- # for OpenSSL we can only use GNU make, no exotic things like Ninja (MSYS always uses GNU make)
|
||||
- find_program(MAKE_PROGRAM make)
|
||||
- endif()
|
||||
+# save old git values for core.autocrlf and core.eol
|
||||
+execute_process(COMMAND ${GIT_EXECUTABLE} config --global --get core.autocrlf OUTPUT_VARIABLE GIT_CORE_AUTOCRLF OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
+execute_process(COMMAND ${GIT_EXECUTABLE} config --global --get core.eol OUTPUT_VARIABLE GIT_CORE_EOL OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
- # save old git values for core.autocrlf and core.eol
|
||||
- execute_process(COMMAND ${GIT_EXECUTABLE} config --global --get core.autocrlf OUTPUT_VARIABLE GIT_CORE_AUTOCRLF OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
- execute_process(COMMAND ${GIT_EXECUTABLE} config --global --get core.eol OUTPUT_VARIABLE GIT_CORE_EOL OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
+# on windows we need to replace path to perl since CreateProcess(..) cannot handle unix paths
|
||||
+if (WIN32 AND NOT CROSS)
|
||||
+ set(PERL_PATH_FIX_INSTALL sed -i -- 's/\\/usr\\/bin\\/perl/perl/g' Makefile)
|
||||
+else()
|
||||
+ set(PERL_PATH_FIX_INSTALL true)
|
||||
+endif()
|
||||
|
||||
- # on windows we need to replace path to perl since CreateProcess(..) cannot handle unix paths
|
||||
- if (WIN32 AND NOT CROSS)
|
||||
- set(PERL_PATH_FIX_INSTALL sed -i -- 's/\\/usr\\/bin\\/perl/perl/g' Makefile)
|
||||
- else()
|
||||
- set(PERL_PATH_FIX_INSTALL true)
|
||||
- endif()
|
||||
+# CROSS and CROSS_ANDROID cannot both be set (because of internal reasons)
|
||||
+if (CROSS AND CROSS_ANDROID)
|
||||
+ # if user set CROSS_ANDROID and CROSS we assume he wants CROSS_ANDROID, so set CROSS to OFF
|
||||
+ set(CROSS OFF)
|
||||
+endif()
|
||||
|
||||
- # CROSS and CROSS_ANDROID cannot both be set (because of internal reasons)
|
||||
- if (CROSS AND CROSS_ANDROID)
|
||||
- # if user set CROSS_ANDROID and CROSS we assume he wants CROSS_ANDROID, so set CROSS to OFF
|
||||
- set(CROSS OFF)
|
||||
- endif()
|
||||
+if (CROSS_ANDROID)
|
||||
+ set(OS "LINUX_CROSS_ANDROID")
|
||||
+endif()
|
||||
|
||||
- if (CROSS_ANDROID)
|
||||
- set(OS "LINUX_CROSS_ANDROID")
|
||||
- endif()
|
||||
+# python helper script for corrent building environment
|
||||
+set(BUILD_ENV_TOOL ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/building_env.py ${OS} ${MSYS_BASH} ${MINGW_MAKE})
|
||||
+
|
||||
+# user-specified modules
|
||||
+set(CONFIGURE_OPENSSL_MODULES ${OPENSSL_MODULES})
|
||||
|
||||
- # python helper script for corrent building environment
|
||||
- set(BUILD_ENV_TOOL ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/building_env.py ${OS} ${MSYS_BASH} ${MINGW_MAKE})
|
||||
+# additional configure script parameters
|
||||
+set(CONFIGURE_OPENSSL_PARAMS --libdir=lib)
|
||||
+if (OPENSSL_DEBUG_BUILD)
|
||||
+ set(CONFIGURE_OPENSSL_PARAMS "${CONFIGURE_OPENSSL_PARAMS} no-asm -g3 -O0 -fno-omit-frame-pointer -fno-inline-functions")
|
||||
+endif()
|
||||
|
||||
- # user-specified modules
|
||||
- set(CONFIGURE_OPENSSL_MODULES ${OPENSSL_MODULES})
|
||||
+# set install command depending of choice on man page generation
|
||||
+if (OPENSSL_INSTALL_MAN)
|
||||
+ set(INSTALL_OPENSSL_MAN "install_docs")
|
||||
+endif()
|
||||
|
||||
- # additional configure script parameters
|
||||
- set(CONFIGURE_OPENSSL_PARAMS --libdir=lib)
|
||||
- if (OPENSSL_DEBUG_BUILD)
|
||||
- set(CONFIGURE_OPENSSL_PARAMS "${CONFIGURE_OPENSSL_PARAMS} no-asm -g3 -O0 -fno-omit-frame-pointer -fno-inline-functions")
|
||||
- endif()
|
||||
-
|
||||
- # set install command depending of choice on man page generation
|
||||
- if (OPENSSL_INSTALL_MAN)
|
||||
- set(INSTALL_OPENSSL_MAN "install_docs")
|
||||
- endif()
|
||||
-
|
||||
- # disable building tests
|
||||
- if (NOT OPENSSL_ENABLE_TESTS)
|
||||
- set(CONFIGURE_OPENSSL_MODULES ${CONFIGURE_OPENSSL_MODULES} no-tests)
|
||||
- set(COMMAND_TEST "true")
|
||||
+# disable building tests
|
||||
+if (NOT OPENSSL_ENABLE_TESTS)
|
||||
+ set(CONFIGURE_OPENSSL_MODULES ${CONFIGURE_OPENSSL_MODULES} no-tests)
|
||||
+ set(COMMAND_TEST "true")
|
||||
+endif()
|
||||
+
|
||||
+# cross-compiling
|
||||
+if (CROSS)
|
||||
+ set(COMMAND_CONFIGURE ./Configure ${CONFIGURE_OPENSSL_PARAMS} --cross-compile-prefix=${CROSS_PREFIX} ${CROSS_TARGET} ${CONFIGURE_OPENSSL_MODULES} --prefix=/usr/local/)
|
||||
+ set(COMMAND_TEST "true")
|
||||
+elseif(CROSS_ANDROID)
|
||||
+
|
||||
+ # Android specific configuration options
|
||||
+ set(CONFIGURE_OPENSSL_MODULES ${CONFIGURE_OPENSSL_MODULES} no-hw)
|
||||
+
|
||||
+ # silence warnings about unused arguments (Clang specific)
|
||||
+ set(CFLAGS "${CMAKE_C_FLAGS} -Qunused-arguments")
|
||||
+ set(CXXFLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments")
|
||||
+
|
||||
+ # required environment configuration is already set (by e.g. ndk) so no need to fiddle around with all the OpenSSL options ...
|
||||
+ if (NOT ANDROID)
|
||||
+ message(FATAL_ERROR "Use NDK cmake toolchain or cmake android autoconfig")
|
||||
set(MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM})
|
||||
elseif(NOT UNIX)
|
||||
message(FATAL_ERROR "Unsupported platform")
|
||||
@@ -113,12 +113,12 @@ else()
|
||||
if (OPENSSL_DEBUG_BUILD)
|
||||
set(CONFIGURE_OPENSSL_PARAMS "${CONFIGURE_OPENSSL_PARAMS} no-asm -g3 -O0 -fno-omit-frame-pointer -fno-inline-functions")
|
||||
endif()
|
||||
|
||||
- # cross-compiling
|
||||
- if (CROSS)
|
||||
- set(COMMAND_CONFIGURE ./Configure ${CONFIGURE_OPENSSL_PARAMS} --cross-compile-prefix=${CROSS_PREFIX} ${CROSS_TARGET} ${CONFIGURE_OPENSSL_MODULES} --prefix=/usr/local/)
|
||||
- set(COMMAND_TEST "true")
|
||||
- elseif(CROSS_ANDROID)
|
||||
-
|
||||
- # Android specific configuration options
|
||||
- set(CONFIGURE_OPENSSL_MODULES ${CONFIGURE_OPENSSL_MODULES} no-hw)
|
||||
-
|
||||
- # silence warnings about unused arguments (Clang specific)
|
||||
- set(CFLAGS "${CMAKE_C_FLAGS} -Qunused-arguments")
|
||||
- set(CXXFLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments")
|
||||
-
|
||||
- # required environment configuration is already set (by e.g. ndk) so no need to fiddle around with all the OpenSSL options ...
|
||||
- if (NOT ANDROID)
|
||||
- message(FATAL_ERROR "Use NDK cmake toolchain or cmake android autoconfig")
|
||||
- endif()
|
||||
+
|
||||
# set install command depending of choice on man page generation
|
||||
if (OPENSSL_INSTALL_MAN)
|
||||
set(INSTALL_OPENSSL_MAN "install_docs")
|
||||
endif()
|
||||
-
|
||||
+
|
||||
# disable building tests
|
||||
if (NOT OPENSSL_ENABLE_TESTS)
|
||||
set(CONFIGURE_OPENSSL_MODULES ${CONFIGURE_OPENSSL_MODULES} no-tests)
|
||||
@@ -130,19 +130,19 @@ else()
|
||||
set(COMMAND_CONFIGURE ./Configure ${CONFIGURE_OPENSSL_PARAMS} --cross-compile-prefix=${CROSS_PREFIX} ${CROSS_TARGET} ${CONFIGURE_OPENSSL_MODULES} --prefix=/usr/local/)
|
||||
set(COMMAND_TEST "true")
|
||||
elseif(CROSS_ANDROID)
|
||||
-
|
||||
- if (ARMEABI_V7A)
|
||||
- set(OPENSSL_PLATFORM "arm")
|
||||
- set(CONFIGURE_OPENSSL_PARAMS ${CONFIGURE_OPENSSL_PARAMS} "-march=armv7-a")
|
||||
+ if (ARMEABI_V7A)
|
||||
+ set(OPENSSL_PLATFORM "arm")
|
||||
+ set(CONFIGURE_OPENSSL_PARAMS ${CONFIGURE_OPENSSL_PARAMS} "-march=armv7-a")
|
||||
+ else()
|
||||
+ if (CMAKE_ANDROID_ARCH_ABI MATCHES "arm64-v8a")
|
||||
+ set(OPENSSL_PLATFORM "arm64")
|
||||
else()
|
||||
- if (CMAKE_ANDROID_ARCH_ABI MATCHES "arm64-v8a")
|
||||
- set(OPENSSL_PLATFORM "arm64")
|
||||
- else()
|
||||
- set(OPENSSL_PLATFORM ${CMAKE_ANDROID_ARCH_ABI})
|
||||
- endif()
|
||||
- endif()
|
||||
+
|
||||
# Android specific configuration options
|
||||
set(CONFIGURE_OPENSSL_MODULES ${CONFIGURE_OPENSSL_MODULES} no-hw)
|
||||
-
|
||||
- # ... but we have to convert all the CMake options to environment variables!
|
||||
- set(PATH "${ANDROID_TOOLCHAIN_ROOT}/bin/:${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}/bin/")
|
||||
- set(LDFLAGS ${CMAKE_MODULE_LINKER_FLAGS})
|
||||
+
|
||||
# silence warnings about unused arguments (Clang specific)
|
||||
set(CFLAGS "${CMAKE_C_FLAGS} -Qunused-arguments")
|
||||
set(CXXFLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments")
|
||||
-
|
||||
+
|
||||
# required environment configuration is already set (by e.g. ndk) so no need to fiddle around with all the OpenSSL options ...
|
||||
if (NOT ANDROID)
|
||||
message(FATAL_ERROR "Use NDK cmake toolchain or cmake android autoconfig")
|
||||
endif()
|
||||
-
|
||||
- set(COMMAND_CONFIGURE ./Configure android-${OPENSSL_PLATFORM} ${CONFIGURE_OPENSSL_PARAMS} ${CONFIGURE_OPENSSL_MODULES})
|
||||
- set(COMMAND_TEST "true")
|
||||
- else() # detect host system automatically
|
||||
- set(COMMAND_CONFIGURE ./config ${CONFIGURE_OPENSSL_PARAMS} ${CONFIGURE_OPENSSL_MODULES})
|
||||
+
|
||||
if (ARMEABI_V7A)
|
||||
set(OPENSSL_PLATFORM "arm")
|
||||
set(CONFIGURE_OPENSSL_PARAMS ${CONFIGURE_OPENSSL_PARAMS} "-march=armv7-a")
|
||||
@@ -153,42 +153,64 @@ else()
|
||||
set(OPENSSL_PLATFORM ${CMAKE_ANDROID_ARCH_ABI})
|
||||
endif()
|
||||
endif()
|
||||
-
|
||||
+
|
||||
# ... but we have to convert all the CMake options to environment variables!
|
||||
set(PATH "${ANDROID_TOOLCHAIN_ROOT}/bin/:${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}/bin/")
|
||||
set(LDFLAGS ${CMAKE_MODULE_LINKER_FLAGS})
|
||||
-
|
||||
- if (NOT COMMAND_TEST)
|
||||
- set(COMMAND_TEST ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} test)
|
||||
+ set(OPENSSL_PLATFORM ${CMAKE_ANDROID_ARCH_ABI})
|
||||
+
|
||||
set(COMMAND_CONFIGURE ./Configure android-${OPENSSL_PLATFORM} ${CONFIGURE_OPENSSL_PARAMS} ${CONFIGURE_OPENSSL_MODULES})
|
||||
set(COMMAND_TEST "true")
|
||||
else() # detect host system automatically
|
||||
set(COMMAND_CONFIGURE ./config ${CONFIGURE_OPENSSL_PARAMS} ${CONFIGURE_OPENSSL_MODULES})
|
||||
-
|
||||
+
|
||||
if (NOT COMMAND_TEST)
|
||||
set(COMMAND_TEST ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} test)
|
||||
endif()
|
||||
endif()
|
||||
-
|
||||
- # add openssl target
|
||||
+
|
||||
+ # ... but we have to convert all the CMake options to environment variables!
|
||||
+ set(PATH "${ANDROID_TOOLCHAIN_ROOT}/bin/:${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}/bin/")
|
||||
+ set(LDFLAGS ${CMAKE_MODULE_LINKER_FLAGS})
|
||||
# add openssl target
|
||||
- ExternalProject_Add(openssl
|
||||
- URL https://mirror.viaduck.org/openssl/openssl-${OPENSSL_BUILD_VERSION}.tar.gz
|
||||
- ${OPENSSL_CHECK_HASH}
|
||||
- UPDATE_COMMAND ""
|
||||
+ if(LOCAL_BUILD)
|
||||
+ ExternalProject_Add(openssl
|
||||
+ SOURCE_DIR ${LOCAL_OPENSSL}
|
||||
+ UPDATE_COMMAND ${GIT_EXECUTABLE} clean -dfx -e buildenv.txt && ${GIT_EXECUTABLE} stash && ${GIT_EXECUTABLE} checkout OpenSSL_1_1_1t
|
||||
|
||||
- CONFIGURE_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${COMMAND_CONFIGURE}
|
||||
- PATCH_COMMAND ${PATCH_PROGRAM} -p1 --forward -r - < ${CMAKE_CURRENT_SOURCE_DIR}/patches/0001-Fix-failing-cms-test-when-no-des-is-used.patch || echo
|
||||
+ CONFIGURE_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${COMMAND_CONFIGURE}
|
||||
+ PATCH_COMMAND ${PATCH_PROGRAM} -p1 --forward -r - < ${CMAKE_CURRENT_SOURCE_DIR}/patches/0001-Fix-failing-cms-test-when-no-des-is-used.patch || echo
|
||||
|
||||
- BUILD_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} -j ${NUM_JOBS}
|
||||
- BUILD_BYPRODUCTS ${OPENSSL_LIBSSL_PATH} ${OPENSSL_LIBCRYPTO_PATH}
|
||||
+ BUILD_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} -j ${NUM_JOBS}
|
||||
+ BUILD_BYPRODUCTS ${OPENSSL_LIBSSL_PATH} ${OPENSSL_LIBCRYPTO_PATH}
|
||||
|
||||
- TEST_BEFORE_INSTALL 1
|
||||
- TEST_COMMAND ${COMMAND_TEST}
|
||||
+ TEST_BEFORE_INSTALL 0
|
||||
+ TEST_COMMAND ${COMMAND_TEST}
|
||||
|
||||
- INSTALL_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${PERL_PATH_FIX_INSTALL}
|
||||
- COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} DESTDIR=${CMAKE_CURRENT_BINARY_DIR} install_sw ${INSTALL_OPENSSL_MAN}
|
||||
- COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_BINARY_DIR} # force CMake-reload
|
||||
+ INSTALL_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${PERL_PATH_FIX_INSTALL}
|
||||
+ COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} DESTDIR=${CMAKE_CURRENT_BINARY_DIR} install_sw ${INSTALL_OPENSSL_MAN}
|
||||
+ COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_BINARY_DIR} # force CMake-reload
|
||||
|
||||
- LOG_INSTALL 1
|
||||
- )
|
||||
+ LOG_INSTALL 1
|
||||
+ )
|
||||
+ else()
|
||||
+ ExternalProject_Add(openssl
|
||||
+ URL https://mirror.viaduck.org/openssl/openssl-${OPENSSL_BUILD_VERSION}.tar.gz
|
||||
+ ${OPENSSL_CHECK_HASH}
|
||||
+ UPDATE_COMMAND ""
|
||||
+
|
||||
+ set(COMMAND_CONFIGURE ./Configure android-${OPENSSL_PLATFORM} ${CONFIGURE_OPENSSL_PARAMS} ${CONFIGURE_OPENSSL_MODULES})
|
||||
+ set(COMMAND_TEST "true")
|
||||
+else() # detect host system automatically
|
||||
+ set(COMMAND_CONFIGURE ./config ${CONFIGURE_OPENSSL_PARAMS} ${CONFIGURE_OPENSSL_MODULES})
|
||||
+ CONFIGURE_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${COMMAND_CONFIGURE}
|
||||
+ PATCH_COMMAND ${PATCH_PROGRAM} -p1 --forward -r - < ${CMAKE_CURRENT_SOURCE_DIR}/patches/0001-Fix-failing-cms-test-when-no-des-is-used.patch || echo
|
||||
+
|
||||
+ if (NOT COMMAND_TEST)
|
||||
+ set(COMMAND_TEST ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} test)
|
||||
+ BUILD_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} -j ${NUM_JOBS}
|
||||
+ BUILD_BYPRODUCTS ${OPENSSL_LIBSSL_PATH} ${OPENSSL_LIBCRYPTO_PATH}
|
||||
+
|
||||
+ TEST_BEFORE_INSTALL 1
|
||||
+ TEST_COMMAND ${COMMAND_TEST}
|
||||
+
|
||||
+ INSTALL_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${PERL_PATH_FIX_INSTALL}
|
||||
+ COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} DESTDIR=${CMAKE_CURRENT_BINARY_DIR} install_sw ${INSTALL_OPENSSL_MAN}
|
||||
+ COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_BINARY_DIR} # force CMake-reload
|
||||
+
|
||||
+ LOG_INSTALL 1
|
||||
+ )
|
||||
+ endif()
|
||||
+endif()
|
||||
+
|
||||
+# add openssl target
|
||||
+if(LOCAL_BUILD)
|
||||
+ ExternalProject_Add(openssl
|
||||
+ SOURCE_DIR ${LOCAL_OPENSSL}
|
||||
+ UPDATE_COMMAND ${GIT_EXECUTABLE} clean -dfx -e buildenv.txt && ${GIT_EXECUTABLE} stash && ${GIT_EXECUTABLE} checkout OpenSSL_1_1_1t
|
||||
+
|
||||
+ CONFIGURE_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${COMMAND_CONFIGURE}
|
||||
+ PATCH_COMMAND ${PATCH_PROGRAM} -p1 --forward -r - < ${CMAKE_CURRENT_SOURCE_DIR}/patches/0001-Fix-failing-cms-test-when-no-des-is-used.patch || echo
|
||||
+
|
||||
+ BUILD_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} -j ${NUM_JOBS}
|
||||
+ BUILD_BYPRODUCTS ${OPENSSL_LIBSSL_PATH} ${OPENSSL_LIBCRYPTO_PATH}
|
||||
+
|
||||
+ TEST_BEFORE_INSTALL 0
|
||||
+ TEST_COMMAND ${COMMAND_TEST}
|
||||
+
|
||||
+ INSTALL_COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${PERL_PATH_FIX_INSTALL}
|
||||
+ COMMAND ${BUILD_ENV_TOOL} <SOURCE_DIR> ${MAKE_PROGRAM} DESTDIR=${CMAKE_CURRENT_BINARY_DIR} install_sw ${INSTALL_OPENSSL_MAN}
|
||||
+ COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_BINARY_DIR} # force CMake-reload
|
||||
+
|
||||
+ LOG_INSTALL 1
|
||||
+ )
|
||||
+else()
|
||||
ExternalProject_Add(openssl
|
||||
URL https://mirror.viaduck.org/openssl/openssl-${OPENSSL_BUILD_VERSION}.tar.gz
|
||||
${OPENSSL_CHECK_HASH}
|
||||
@@ -189,53 +203,58 @@ else()
|
||||
|
||||
LOG_INSTALL 1
|
||||
)
|
||||
+endif()
|
||||
|
||||
- # set git config values to openssl requirements (no impact on linux though)
|
||||
- ExternalProject_Add_Step(openssl setGitConfig
|
||||
- COMMAND ${GIT_EXECUTABLE} config --global core.autocrlf false
|
||||
- COMMAND ${GIT_EXECUTABLE} config --global core.eol lf
|
||||
- DEPENDEES
|
||||
- DEPENDERS download
|
||||
- ALWAYS ON
|
||||
- )
|
||||
+# set git config values to openssl requirements (no impact on linux though)
|
||||
+ExternalProject_Add_Step(openssl setGitConfig
|
||||
+ COMMAND ${GIT_EXECUTABLE} config --global core.autocrlf false
|
||||
+ COMMAND ${GIT_EXECUTABLE} config --global core.eol lf
|
||||
+ DEPENDEES
|
||||
+ DEPENDERS download
|
||||
+ ALWAYS ON
|
||||
+)
|
||||
|
||||
- # set, don't abort if it fails (due to variables being empty). To realize this we must only call git if the configs
|
||||
- # are set globally, otherwise do a no-op command ("echo 1", since "true" is not available everywhere)
|
||||
- if (GIT_CORE_AUTOCRLF)
|
||||
- set (GIT_CORE_AUTOCRLF_CMD ${GIT_EXECUTABLE} config --global core.autocrlf ${GIT_CORE_AUTOCRLF})
|
||||
- else()
|
||||
- set (GIT_CORE_AUTOCRLF_CMD echo)
|
||||
- endif()
|
||||
- if (GIT_CORE_EOL)
|
||||
- set (GIT_CORE_EOL_CMD ${GIT_EXECUTABLE} config --global core.eol ${GIT_CORE_EOL})
|
||||
- else()
|
||||
- set (GIT_CORE_EOL_CMD echo)
|
||||
- endif()
|
||||
- ##
|
||||
+# set, don't abort if it fails (due to variables being empty). To realize this we must only call git if the configs
|
||||
+# are set globally, otherwise do a no-op command ("echo 1", since "true" is not available everywhere)
|
||||
+if (GIT_CORE_AUTOCRLF)
|
||||
+ set (GIT_CORE_AUTOCRLF_CMD ${GIT_EXECUTABLE} config --global core.autocrlf ${GIT_CORE_AUTOCRLF})
|
||||
+else()
|
||||
+ set (GIT_CORE_AUTOCRLF_CMD echo)
|
||||
+endif()
|
||||
+if (GIT_CORE_EOL)
|
||||
+ set (GIT_CORE_EOL_CMD ${GIT_EXECUTABLE} config --global core.eol ${GIT_CORE_EOL})
|
||||
+else()
|
||||
+ set (GIT_CORE_EOL_CMD echo)
|
||||
+endif()
|
||||
+##
|
||||
|
||||
- # set git config values to previous values
|
||||
- ExternalProject_Add_Step(openssl restoreGitConfig
|
||||
- # unset first (is required, since old value could be omitted, which wouldn't take any effect in "set"
|
||||
- COMMAND ${GIT_EXECUTABLE} config --global --unset core.autocrlf
|
||||
- COMMAND ${GIT_EXECUTABLE} config --global --unset core.eol
|
||||
+# set git config values to previous values
|
||||
+ExternalProject_Add_Step(openssl restoreGitConfig
|
||||
+# unset first (is required, since old value could be omitted, which wouldn't take any effect in "set"
|
||||
+ COMMAND ${GIT_EXECUTABLE} config --global --unset core.autocrlf
|
||||
+ COMMAND ${GIT_EXECUTABLE} config --global --unset core.eol
|
||||
|
||||
- COMMAND ${GIT_CORE_AUTOCRLF_CMD}
|
||||
- COMMAND ${GIT_CORE_EOL_CMD}
|
||||
+ COMMAND ${GIT_CORE_AUTOCRLF_CMD}
|
||||
+ COMMAND ${GIT_CORE_EOL_CMD}
|
||||
|
||||
- DEPENDEES download
|
||||
- DEPENDERS configure
|
||||
- ALWAYS ON
|
||||
- )
|
||||
+ DEPENDEES download
|
||||
+ DEPENDERS configure
|
||||
+ ALWAYS ON
|
||||
+)
|
||||
|
||||
- # write environment to file, is picked up by python script
|
||||
- get_cmake_property(_variableNames VARIABLES)
|
||||
- foreach (_variableName ${_variableNames})
|
||||
# set git config values to openssl requirements (no impact on linux though)
|
||||
ExternalProject_Add_Step(openssl setGitConfig
|
||||
@@ -230,12 +252,17 @@ else()
|
||||
# write environment to file, is picked up by python script
|
||||
get_cmake_property(_variableNames VARIABLES)
|
||||
foreach (_variableName ${_variableNames})
|
||||
- if (NOT _variableName MATCHES "lines")
|
||||
- set(OUT_FILE "${OUT_FILE}${_variableName}=\"${${_variableName}}\"\n")
|
||||
- endif()
|
||||
- endforeach()
|
||||
+# write environment to file, is picked up by python script
|
||||
+get_cmake_property(_variableNames VARIABLES)
|
||||
+foreach (_variableName ${_variableNames})
|
||||
+ if ((NOT _variableName MATCHES "lines") OR (NOT _variableName MATCHES "CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT"))
|
||||
+ set(OUT_FILE "${OUT_FILE}${_variableName}=\"${${_variableName}}\"\n")
|
||||
+ endif()
|
||||
+endforeach()
|
||||
+if (NOT LOCAL_OPENSSL)
|
||||
+ # Write in openssl-cmake-build/, because the file will be overwritten when the download is performed later
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/buildenv.txt ${OUT_FILE})
|
||||
+ if ((NOT _variableName MATCHES "lines") OR (NOT _variableName MATCHES "CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT"))
|
||||
set(OUT_FILE "${OUT_FILE}${_variableName}=\"${${_variableName}}\"\n")
|
||||
endif()
|
||||
endforeach()
|
||||
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/buildenv.txt ${OUT_FILE})
|
||||
-
|
||||
- set_target_properties(ssl_lib PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBSSL_PATH})
|
||||
- set_target_properties(crypto_lib PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_PATH})
|
||||
+else()
|
||||
+ # Write in specified dir LOCAL_OPENSSL
|
||||
+ file(WRITE ${LOCAL_OPENSSL}/buildenv.txt ${OUT_FILE})
|
||||
endif()
|
||||
+set_target_properties(ssl_lib PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBSSL_PATH})
|
||||
+set_target_properties(crypto_lib PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_PATH})
|
||||
+ if (NOT LOCAL_OPENSSL)
|
||||
+ # Write in openssl-cmake-build/, because the file will be overwritten when the download is performed later
|
||||
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/buildenv.txt ${OUT_FILE})
|
||||
+ else()
|
||||
+ # Write in specified dir LOCAL_OPENSSL
|
||||
+ file(WRITE ${LOCAL_OPENSSL}/buildenv.txt ${OUT_FILE})
|
||||
+ endif()
|
||||
set_target_properties(ssl_lib PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBSSL_PATH})
|
||||
set_target_properties(crypto_lib PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_PATH})
|
||||
-endif()
|
||||
+endif()
|
||||
\ No newline at end of file
|
||||
diff --git a/scripts/building_env.py b/scripts/building_env.py
|
||||
index aab2f42..4a7c932 100644
|
||||
--- a/scripts/building_env.py
|
||||
|
|
|
|||
Loading…
Reference in New Issue