From 0ca0851a01251b960ba19d958978004168f58593 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Tue, 26 Feb 2019 17:04:25 +0300 Subject: Add implementation --- libssl/libssl/buildfile | 135 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 libssl/libssl/buildfile (limited to 'libssl/libssl/buildfile') diff --git a/libssl/libssl/buildfile b/libssl/libssl/buildfile new file mode 100644 index 0000000..7c7b249 --- /dev/null +++ b/libssl/libssl/buildfile @@ -0,0 +1,135 @@ +# file : libssl/buildfile +# copyright : Copyright (c) 2018-2019 Code Synthesis Ltd +# license : OpenSSL and SSLeay Licenses; see accompanying LICENSE file + +import int_libs = libcrypto%lib{crypto} + +lib{ssl}: {h c}{**} file{libssl.map} $int_libs + +tclass = $c.target.class + +i686 = ($c.target.cpu == 'i686') + +linux = ($tclass == 'linux') +bsd = ($tclass == 'bsd') +macos = ($tclass == 'macos') +windows = ($tclass == 'windows') + +gcc = ($c.class == 'gcc') +msvc = ($c.class == 'msvc') +mingw = ($c.target.system == 'mingw32') + +lib{ssl}: def{libssl}: include = $windows + +# See bootstrap.build for details. +# +if $version.pre_release + lib{ssl}: bin.lib.version = @"-$version.project_id" +else + lib{ssl}: bin.lib.version = @"-$abi_version" + +# Drop -DOPENSSL_PIC, -D{L|B}_ENDIAN, -DOPENSSLDIR and -DENGINESDIR as they +# are not used in the libssl source code nor in the libcrypto public headers. +# +if! $windows +{ + # Note that the upstream package uses -pthread compiler/linker option on + # Linux and FreeBSD. The option is currently unsupported by build2, so we + # use -D_REENTRANT and -lpthread preprocessor/linker options instead. + # + # Also note that on FreeBSD and Mac OS the upstream package passes + # -D_REENTRANT. + # + c.poptions += -D_REENTRANT + + if $linux + c.poptions += -DOPENSSL_USE_NODELETE + + if $bsd + c.poptions += -D_THREAD_SAFE +} +else +{ + c.poptions += -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE + + # Note that upstream also passes -DOPENSSL_USE_APPLINK if compiled with VC. + # We drop this option (see libcrypto/buildfile) for details. + # + if $msvc + { + c.poptions += -DOPENSSL_SYS_WIN32 -D_CRT_SECURE_NO_DEPRECATE \ + -D_WINSOCK_DEPRECATED_NO_WARNINGS + + c.coptions += /Gs0 /GF /Gy + } + else + c.poptions += -D_MT +} + +if ($i686 && $gcc) + c.coptions += -fomit-frame-pointer + +# Disable compiler warnings. +# +if $msvc +{ + # Disable warnings that pop up with /W3. + # + c.coptions += /wd4090 /wd4133 /wd4244 /wd4267 +} +else +{ + # Disable warnings that pop up with -Wall -Wextra. Upstream doesn't seem to + # care about these and it is not easy to disable specific warnings in a way + # that works across compilers/versions (some -Wno-* options are only + # recognized in newer versions). There are still some warnings left that + # appear for certain platforms/compilers. We pass them through but disable + # treating them as errors. + # + c.coptions += -Wno-all -Wno-extra -Wno-error +} + +c.poptions =+ "-I$src_base" + +if! $windows +{ + if $linux + { + libs{ssl}: c.loptions += -Wl,-znodelete + c.libs += -ldl + } + + if ($linux || $bsd) + { + libs{ssl}: c.loptions += -Wl,-Bsymbolic \ + "-Wl,--version-script=$src_base/libssl.map" + c.libs += -lpthread + } +} +else +{ + # Note that for MinGW GCC the upstream package also passes -static-libgcc. + # We normally don't link GCC run-time statically when packaging other C + # libraries, so let's not do it here either and see how it goes. + # + if $mingw + libs{ssl}: c.loptions += -Wl,--enable-auto-image-base + + c.libs += $regex.apply(ws2_32 gdi32 crypt32, \ + '(.+)', \ + $msvc ? '\1.lib' : '-l\1') + + if $msvc + c.libs += advapi32.lib +} + +lib{ssl}: +{ + cc.export.poptions = "-I$src_base" + cc.export.libs = $int_libs +} + +# Install headers from the upstream openssl/ subdirectory only. +# +h{*}: install = false +openssl/h{*}: install = include/openssl/ -- cgit v1.1