OpenSSL: recipe for current 1.1.0 release

- Remove old 1.0.0 and 1.0.1 recipes (now unsupported by OpenSSL)
- Convert 1.1.0~git into 1.1.0f (using stable source release)
- Rewrite patch to remove upstreamed bits and adjust the remaining ones
- Fix install of HTML documentation
This commit is contained in:
Adrien Destugues
2017-08-15 14:14:15 +02:00
parent caa10efdab
commit 4bb14c21b6
7 changed files with 119 additions and 649 deletions

View File

@@ -1,110 +0,0 @@
SUMMARY="Full-strength general purpose cryptography library (with SSL/TLS)"
DESCRIPTION="The OpenSSL Project is a collaborative effort to develop a \
robust, commercial-grade, full-featured, and Open Source toolkit implementing \
the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) \
protocols as well as a full-strength general purpose cryptography library. The \
project is managed by a worldwide community of volunteers that use the \
Internet to communicate, plan, and develop the OpenSSL toolkit and its related \
documentation.
OpenSSL is based on the excellent SSLeay library developed by Eric A. Young \
and Tim J. Hudson. The OpenSSL toolkit is licensed under an Apache-style \
licence, which basically means that you are free to get and use it for \
commercial and non-commercial purposes subject to some simple license \
conditions."
HOMEPAGE="https://www.openssl.org/"
COPYRIGHT="1995-1998 Eric Young
1998-2015 The OpenSSL Project."
LICENSE="OpenSSL"
REVISION="2"
SOURCE_URI="https://www.openssl.org/source/openssl-$portVersion.tar.gz"
CHECKSUM_SHA256="5ab6e348c6c2a95d457e7a00e0aa653bfc7eb4df7b24e7c9ab63163ac0299097"
PATCHES="openssl-$portVersion.patchset"
ARCHITECTURES="x86_gcc2 x86 x86_64 arm ?ppc"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"
PROVIDES="
openssl$secondaryArchSuffix = $portVersion
lib:libcrypto$secondaryArchSuffix = 1.0.0 compat >= 1.0.0
lib:libssl$secondaryArchSuffix = 1.0.0 compat >= 1.0.0
"
if [ -z "$secondaryArchSuffix" ]; then
PROVIDES="$PROVIDES
cmd:c_rehash = $portVersion compat >= 1
cmd:openssl = $portVersion compat >= 1
"
fi
REQUIRES="
haiku$secondaryArchSuffix
lib:libz$secondaryArchSuffix >= 1.2.3
ca_root_certificates
"
PROVIDES_devel="
openssl${secondaryArchSuffix}_devel = $portVersion
devel:libcrypto${secondaryArchSuffix} = 1.0.0 compat >= 1.0.0
devel:libssl${secondaryArchSuffix} = 1.0.0 compat >= 1.0.0
"
REQUIRES_devel="
openssl${secondaryArchSuffix} == $portVersion base
"
BUILD_REQUIRES="
devel:libz$secondaryArchSuffix >= 1.2.3
"
BUILD_PREREQUIRES="
haiku${secondaryArchSuffix}_devel
cmd:gcc${secondaryArchSuffix}
cmd:ld${secondaryArchSuffix}
cmd:make
cmd:perl >= 5
cmd:sed
"
PATCH()
{
# fix hard-coded perl path
sed -i 's,/usr/bin/perl,/bin/env perl,g' apps/tsget
}
BUILD()
{
PERL="/bin/env perl" \
./config --prefix=$prefix --libdir=$relativeLibDir \
--openssldir=$dataRootDir/ssl \
zlib shared
make
# multi-job builds don't work correctly
}
INSTALL()
{
make MANDIR=$manDir install
# move include dir to correct location
mkdir -p $(dirname $includeDir)
mv $prefix/include $includeDir
# prepare develop/lib
prepareInstalledDevelLibs libcrypto libssl
fixPkgconfig
# devel package
packageEntries devel \
$developDir \
$manDir/man3
# Remove stuff we don't need in the secondary architecture base package,
# since we make it depend on the primary package.
if [ -n "$secondaryArchSuffix" ]; then
rm -rf $prefix/bin
rm -rf $dataRootDir/ssl
rm -rf $documentationDir
fi
}
TEST()
{
make test
}

View File

@@ -1,111 +0,0 @@
SUMMARY="Full-strength general purpose cryptography library (with SSL/TLS)"
DESCRIPTION="The OpenSSL Project is a collaborative effort to develop a \
robust, commercial-grade, full-featured, and Open Source toolkit implementing \
the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) \
protocols as well as a full-strength general purpose cryptography library. The \
project is managed by a worldwide community of volunteers that use the \
Internet to communicate, plan, and develop the OpenSSL toolkit and its related \
documentation.
OpenSSL is based on the excellent SSLeay library developed by Eric A. Young \
and Tim J. Hudson. The OpenSSL toolkit is licensed under an Apache-style \
licence, which basically means that you are free to get and use it for \
commercial and non-commercial purposes subject to some simple license \
conditions."
HOMEPAGE="https://www.openssl.org/"
COPYRIGHT="1995-1998 Eric Young
1998-2016 The OpenSSL Project."
LICENSE="OpenSSL"
REVISION="1"
SOURCE_URI="https://www.openssl.org/source/openssl-$portVersion.tar.gz"
CHECKSUM_SHA256="4312b4ca1215b6f2c97007503d80db80d5157f76f8f7d3febbe6b4c56ff26739"
PATCHES="openssl-$portVersion.patchset"
ARCHITECTURES="x86_gcc2 x86 x86_64 ?arm ?ppc"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"
PROVIDES="
openssl$secondaryArchSuffix = $portVersion
lib:libcrypto$secondaryArchSuffix = 1.0.0 compat >= 1.0.0
lib:libssl$secondaryArchSuffix = 1.0.0 compat >= 1.0.0
"
if [ -z "$secondaryArchSuffix" ]; then
PROVIDES="$PROVIDES
cmd:c_rehash = $portVersion compat >= 1
cmd:openssl = $portVersion compat >= 1
"
fi
REQUIRES="
haiku$secondaryArchSuffix
lib:libz$secondaryArchSuffix >= 1.2.3
ca_root_certificates
"
PROVIDES_devel="
openssl${secondaryArchSuffix}_devel = $portVersion
devel:libcrypto${secondaryArchSuffix} = 1.0.0 compat >= 1.0.0
devel:libssl${secondaryArchSuffix} = 1.0.0 compat >= 1.0.0
"
REQUIRES_devel="
openssl${secondaryArchSuffix} == $portVersion base
"
BUILD_REQUIRES="
devel:libz$secondaryArchSuffix >= 1.2.3
"
BUILD_PREREQUIRES="
haiku${secondaryArchSuffix}_devel
cmd:cmp
cmd:gcc${secondaryArchSuffix}
cmd:ld${secondaryArchSuffix}
cmd:make
cmd:perl >= 5
cmd:sed
"
PATCH()
{
# fix hard-coded perl path
sed -i 's,/usr/bin/perl,/bin/env perl,g' apps/tsget
}
BUILD()
{
PERL="/bin/env perl" \
./config --prefix=$prefix --libdir=$relativeLibDir \
--openssldir=$dataRootDir/ssl \
enable-ssl2 zlib shared
make
# multi-job builds don't work correctly
}
INSTALL()
{
make MANDIR=$manDir install
# move include dir to correct location
mkdir -p $(dirname $includeDir)
mv $prefix/include $includeDir
# prepare develop/lib
prepareInstalledDevelLibs libcrypto libssl
fixPkgconfig
# devel package
packageEntries devel \
$developDir \
$manDir/man3
# Remove stuff we don't need in the secondary architecture base package,
# since we make it depend on the primary package.
if [ -n "$secondaryArchSuffix" ]; then
rm -rf $prefix/bin
rm -rf $dataRootDir/ssl
rm -rf $documentationDir
fi
}
TEST()
{
make test
}

View File

@@ -13,18 +13,15 @@ commercial and non-commercial purposes subject to some simple license \
conditions."
HOMEPAGE="https://www.openssl.org/"
COPYRIGHT="1995-1998 Eric Young
1998-2016 The OpenSSL Project."
1998-2017 The OpenSSL Project."
LICENSE="OpenSSL"
REVISION="1"
srcGitRev="78c830785ca0f422502db9b201127ef1d9fe3966"
SOURCE_URI="https://github.com/openssl/openssl/archive/${srcGitRev}.tar.gz"
SOURCE_FILENAME="openssl-$portVersion.tar.gz"
CHECKSUM_SHA256="a5b88777e54b43cb313c02e060db16dbce9db9c6f9ed9b8a14bcdd7748fa9445"
SOURCE_DIR="openssl-$srcGitRev"
SOURCE_URI="https://www.openssl.org/source/openssl-$portVersion.tar.gz"
CHECKSUM_SHA256="12f746f3f2493b2f39da7ecf63d7ee19c6ac9ec6a4fcd8c229da8a522cb12765"
PATCHES="openssl-$portVersion.patchset"
ARCHITECTURES="?x86_gcc2 ?x86 ?x86_64 ?arm ?ppc"
SECONDARY_ARCHITECTURES="?x86_gcc2 ?x86 ?arm ?ppc"
SECONDARY_ARCHITECTURES="?x86_gcc2 x86 ?arm ?ppc"
PROVIDES="
openssl$secondaryArchSuffix = $portVersion compat >= 1.1.0
@@ -76,7 +73,7 @@ BUILD()
INSTALL()
{
make MANDIR=$manDir install
make MANDIR=$manDir DOCDIR=$docDir install
# move include dir to correct location
mkdir -p $(dirname $includeDir)
@@ -89,6 +86,7 @@ INSTALL()
# devel package
packageEntries devel \
$developDir \
$docDir \
$manDir/man3
# Remove stuff we don't need in the secondary architecture base package,

View File

@@ -1,95 +0,0 @@
From d53368fb68399a8185df3a64632b0383a88d4ae4 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 5 Jun 2014 15:47:46 +0000
Subject: import patch from 1.0.0l
diff --git a/Configure b/Configure
index cd849e3..0ff7727 100755
--- a/Configure
+++ b/Configure
@@ -583,6 +583,10 @@ my %table=(
"uClinux-dist","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):BN_LLONG:::::::::::::::$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
"uClinux-dist64","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):SIXTY_FOUR_BIT_LONG:::::::::::::::$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
+##### Haiku
+"haiku-x86", "gcc:-DL_ENDIAN -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::-lnetwork:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:haiku-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"haiku-x86_64", "gcc:-m64 -DL_ENDIAN -O2 -Wall -DMD32_REG_T=int::-D_REENTRANT::-lnetwork:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:haiku-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+
);
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
diff --git a/Makefile.shared b/Makefile.shared
index e753f44..cce510f 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -594,10 +594,10 @@ symlink.hpux:
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath symlink.beos:
# Compatibility targets
-link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared: link_o.gnu
-link_a.bsd-gcc-shared link_a.linux-shared link_a.gnu-shared: link_a.gnu
-link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared: link_app.gnu
-symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared: symlink.gnu
+link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared link_o.haiku-shared: link_o.gnu
+link_a.bsd-gcc-shared link_a.linux-shared link_a.gnu-shared link_a.haiku-shared: link_a.gnu
+link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared link_app.haiku-shared: link_app.gnu
+symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared symlink.haiku-shared: symlink.gnu
link_o.bsd-shared: link_o.bsd
link_a.bsd-shared: link_a.bsd
link_app.bsd-shared: link_app.bsd
diff --git a/config b/config
index 30e9a37..c2894cc 100755
--- a/config
+++ b/config
@@ -134,6 +134,14 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
echo "${MACHINE}-dg-dgux"; exit 0
;;
+ Haiku:*:BePC)
+ echo "i586-pc-haiku"; exit 0
+ ;;
+
+ Haiku:*:*)
+ echo "${MACHINE}-unknown-haiku"; exit 0
+ ;;
+
HI-UX:*)
echo "${MACHINE}-hi-hiux"; exit 0
;;
@@ -799,6 +807,9 @@ case "$GUESSOS" in
options="$options no-asm"
fi
;;
+ i586-*-haiku) OUT="haiku-x86" ;;
+ x86_64-*-haiku) OUT="haiku-x86_64" ;;
+
# these are all covered by the catchall below
# *-dgux) OUT="dgux" ;;
mips-sony-newsos4) OUT="newsos4-gcc" ;;
--
1.8.3.4
From 5fc0496e6d6b6d5a6e08bd3948e3a3b77f1e99e7 Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Sat, 21 Jun 2014 21:45:05 +0000
Subject: openssl: Adjust default CA cert path
diff --git a/crypto/cryptlib.h b/crypto/cryptlib.h
index c7ddc02..4875a63 100644
--- a/crypto/cryptlib.h
+++ b/crypto/cryptlib.h
@@ -82,7 +82,7 @@ extern "C" {
# ifndef OPENSSL_SYS_VMS
# define X509_CERT_AREA OPENSSLDIR
# define X509_CERT_DIR OPENSSLDIR "/certs"
-# define X509_CERT_FILE OPENSSLDIR "/cert.pem"
+# define X509_CERT_FILE OPENSSLDIR "/CARootCertificates.pem"
# define X509_PRIVATE_DIR OPENSSLDIR "/private"
# else
# define X509_CERT_AREA "SSLROOT:[000000]"
--
1.8.3.4

View File

@@ -1,144 +0,0 @@
From 18b32231b9e09802ab2f4ac6bacb7c34f978861f Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Wed, 18 Jun 2014 02:37:21 +0000
Subject: Haiku: build fixes
diff --git a/Configure b/Configure
index 6a50cb1..9575f20 100755
--- a/Configure
+++ b/Configure
@@ -451,6 +451,10 @@ my %table=(
"beos-x86-r5", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so",
"beos-x86-bone", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lbind -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC:-shared:.so",
+##### Haiku
+"haiku-x86", "gcc:-DL_ENDIAN -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::-lnetwork:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:haiku-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"haiku-x86_64", "gcc:-m64 -DL_ENDIAN -O2 -Wall -DMD32_REG_T=int::-D_REENTRANT::-lnetwork:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:haiku-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+
#### SCO/Caldera targets.
#
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
diff --git a/Makefile.shared b/Makefile.shared
index e753f44..cce510f 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -594,10 +594,10 @@ symlink.hpux:
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath symlink.beos:
# Compatibility targets
-link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared: link_o.gnu
-link_a.bsd-gcc-shared link_a.linux-shared link_a.gnu-shared: link_a.gnu
-link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared: link_app.gnu
-symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared: symlink.gnu
+link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared link_o.haiku-shared: link_o.gnu
+link_a.bsd-gcc-shared link_a.linux-shared link_a.gnu-shared link_a.haiku-shared: link_a.gnu
+link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared link_app.haiku-shared: link_app.gnu
+symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared symlink.haiku-shared: symlink.gnu
link_o.bsd-shared: link_o.bsd
link_a.bsd-shared: link_a.bsd
link_app.bsd-shared: link_app.bsd
diff --git a/config b/config
index 41fa2a6..f390fc2 100755
--- a/config
+++ b/config
@@ -134,6 +134,14 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
echo "${MACHINE}-dg-dgux"; exit 0
;;
+ Haiku:*:BePC)
+ echo "i586-pc-haiku"; exit 0
+ ;;
+
+ Haiku:*:*)
+ echo "${MACHINE}-unknown-haiku"; exit 0
+ ;;
+
HI-UX:*)
echo "${MACHINE}-hi-hiux"; exit 0
;;
@@ -829,6 +837,9 @@ case "$GUESSOS" in
options="$options no-asm"
fi
;;
+ i586-*-haiku) OUT="haiku-x86" ;;
+ x86_64-*-haiku) OUT="haiku-x86_64" ;;
+
# these are all covered by the catchall below
# *-dgux) OUT="dgux" ;;
mips-sony-newsos4) OUT="newsos4-gcc" ;;
--
2.2.2
From c9f899f31eae393a8bada07d9109904323a75300 Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Wed, 18 Jun 2014 02:39:12 +0000
Subject: Haiku: Modify default Root CA filename
diff --git a/crypto/cryptlib.h b/crypto/cryptlib.h
index fba180a..40c32df 100644
--- a/crypto/cryptlib.h
+++ b/crypto/cryptlib.h
@@ -82,7 +82,7 @@ extern "C" {
# ifndef OPENSSL_SYS_VMS
# define X509_CERT_AREA OPENSSLDIR
# define X509_CERT_DIR OPENSSLDIR "/certs"
-# define X509_CERT_FILE OPENSSLDIR "/cert.pem"
+# define X509_CERT_FILE OPENSSLDIR "/CARootCertificates.pem"
# define X509_PRIVATE_DIR OPENSSLDIR "/private"
# else
# define X509_CERT_AREA "SSLROOT:[000000]"
--
2.2.2
From 733871bddd6fba30ddc938157d1e3b72a7a29e83 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Mon, 9 Nov 2015 19:44:10 +0100
Subject: Do not use __INTEL__ to detect x86_64.
* Haiku defines it for 32-bit x86 as well.
diff --git a/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/evp/e_aes_cbc_hmac_sha1.c
index 1d598db..04fd1a5 100644
--- a/crypto/evp/e_aes_cbc_hmac_sha1.c
+++ b/crypto/evp/e_aes_cbc_hmac_sha1.c
@@ -87,8 +87,7 @@ typedef struct {
# if defined(AES_ASM) && ( \
defined(__x86_64) || defined(__x86_64__) || \
- defined(_M_AMD64) || defined(_M_X64) || \
- defined(__INTEL__) )
+ defined(_M_AMD64) || defined(_M_X64) )
# if defined(__GNUC__) && __GNUC__>=2 && !defined(PEDANTIC)
# define BSWAP(x) ({ unsigned int r=(x); asm ("bswapl %0":"=r"(r):"0"(r)); r; })
--
2.2.2
From 0f6d820c9a8684b16551d90eb3dab35f230f5ddb Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Mon, 9 Nov 2015 20:32:09 +0100
Subject: more __intel__ fixes...
diff --git a/crypto/evp/e_rc4_hmac_md5.c b/crypto/evp/e_rc4_hmac_md5.c
index 2da1117..d41ba7f 100644
--- a/crypto/evp/e_rc4_hmac_md5.c
+++ b/crypto/evp/e_rc4_hmac_md5.c
@@ -101,8 +101,7 @@ static int rc4_hmac_md5_init_key(EVP_CIPHER_CTX *ctx,
# if !defined(OPENSSL_NO_ASM) && ( \
defined(__x86_64) || defined(__x86_64__) || \
- defined(_M_AMD64) || defined(_M_X64) || \
- defined(__INTEL__) ) && \
+ defined(_M_AMD64) || defined(_M_X64) ) && \
!(defined(__APPLE__) && defined(__MACH__))
# define STITCHED_CALL
# endif
--
2.2.2

View File

@@ -0,0 +1,113 @@
From 80174e245b0e525c660bcbcc5a8279548e017b4b Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Tue, 15 Aug 2017 13:09:47 +0200
Subject: Port Korli's inital 1.1.0 patch
- Build fixes (some were upstreamed)
- Disable mem_sec because we don't have mlock
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 39b89e7..1179d3f 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -1764,6 +1764,32 @@ sub vms_info {
shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
ranlib => "$ENV{'RANLIB'}",
},
+ "haiku-common" => {
+ template => 1,
+ cc => "cc",
+ cflags => "-DL_ENDIAN -Wall",
+ debug_cflags => "-g -O0",
+ release_cflags => "-O2",
+ thread_cflag => "-D_REENTRANT",
+ sys_id => "HAIKU",
+ lflags => "-lnetwork",
+ perlasm_scheme => "elf",
+ dso_scheme => "dlfcn",
+ shared_target => "haiku-shared",
+ shared_cflag => "-fPIC",
+ shared_ldflag => "-shared",
+ shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ },
+ "haiku-x86" => {
+ inherit_from => [ "haiku-common", asm("x86_elf_asm") ],
+ release_cflags => add(" ", "-fomit-frame-pointer"),
+ bn_ops => "BN_LLONG",
+ },
+ "haiku-x86_64" => {
+ inherit_from => [ "haiku-common", asm("x86_64_asm") ],
+ cflags => add(" ", "-m64"),
+ bn_ops => "SIXTY_FOUR_BIT_LONG",
+ },
##### VMS
"vms-generic" => {
diff --git a/Makefile.shared b/Makefile.shared
index 098e1ec..f964897 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -564,11 +564,11 @@ symlink.hpux:
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath:
# Compatibility targets
-link_dso.bsd-gcc-shared link_dso.linux-shared link_dso.gnu-shared: link_dso.gnu
+link_dso.bsd-gcc-shared link_dso.linux-shared link_dso.gnu-shared link_dso.haiku-shared: link_dso.gnu
link_shlib.bsd-gcc-shared: link_shlib.linux-shared
-link_shlib.gnu-shared: link_shlib.gnu
-link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared: link_app.gnu
-symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared: symlink.gnu
+link_shlib.gnu-shared link_shlib.haiku-shared: link_shlib.gnu
+link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared linka_app.haiku-shared: link_app.gnu
+symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared symlink.haiku-shared: symlink.gnu
link_dso.bsd-shared: link_dso.bsd
link_shlib.bsd-shared: link_shlib.bsd
link_app.bsd-shared: link_app.bsd
diff --git a/crypto/include/internal/cryptlib.h b/crypto/include/internal/cryptlib.h
index f3ec9b6..b3c80b4 100644
--- a/crypto/include/internal/cryptlib.h
+++ b/crypto/include/internal/cryptlib.h
@@ -42,7 +42,7 @@ DEFINE_LHASH_OF(MEM);
# ifndef OPENSSL_SYS_VMS
# define X509_CERT_AREA OPENSSLDIR
# define X509_CERT_DIR OPENSSLDIR "/certs"
-# define X509_CERT_FILE OPENSSLDIR "/cert.pem"
+# define X509_CERT_FILE OPENSSLDIR "/CARootCertificates.pem"
# define X509_PRIVATE_DIR OPENSSLDIR "/private"
# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf"
# else
diff --git a/crypto/mem_sec.c b/crypto/mem_sec.c
index 664b4ad..3020e3a 100644
--- a/crypto/mem_sec.c
+++ b/crypto/mem_sec.c
@@ -25,7 +25,9 @@
#include <string.h>
#if defined(OPENSSL_SYS_LINUX) || defined(OPENSSL_SYS_UNIX)
+#ifndef OPENSSL_SYS_HAIKU
# define IMPLEMENTED
+#endif
# include <stdlib.h>
# include <assert.h>
# include <unistd.h>
diff --git a/e_os.h b/e_os.h
index 559bf90..36b7963 100644
--- a/e_os.h
+++ b/e_os.h
@@ -521,6 +521,13 @@ struct servent *getservbyname(const char *name, const char *proto);
# endif
/* end vxworks */
+/* haiku */
+# if defined(OPENSSL_SYS_HAIKU)
+# include <sys/select.h>
+# include <sys/time.h>
+#endif
+/* end haiku */
+
#define OSSL_NELEM(x) (sizeof(x)/sizeof(x[0]))
#ifdef __cplusplus
--
2.7.0

View File

@@ -1,181 +0,0 @@
From b1191b32183e18c96cf6fd6a8dd0844e7d658054 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Tue, 2 Feb 2016 22:45:09 +0000
Subject: Haiku: add support.
* build fixes.
* we don't have mlock(), disable mem_sec.
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 930bef4..86defd8 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -1525,6 +1525,33 @@
shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
ranlib => "$ENV{'RANLIB'}",
},
+ "haiku-common" => {
+ template => 1,
+ cc => "cc",
+ cflags => "-DL_ENDIAN -Wall",
+ debug_cflags => "-g -O0",
+ release_cflags => "-O2",
+ thread_cflag => "-D_REENTRANT",
+ sys_id => "HAIKU",
+ lflags => "-lnetwork",
+ perlasm_scheme => "elf",
+ dso_scheme => "dlfcn",
+ shared_target => "haiku-shared",
+ shared_cflag => "-fPIC",
+ shared_ldflag => "-shared",
+ shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ },
+ "haiku-x86" => {
+ inherit_from => [ "haiku-common", asm("x86_elf_asm") ],
+ release_cflags => add(" ", "-fomit-frame-pointer"),
+ bn_ops => "BN_LLONG",
+ },
+ "haiku-x86_64" => {
+ inherit_from => [ "haiku-common", asm("x86_64_asm") ],
+ cflags => add(" ", "-m64"),
+ bn_ops => "SIXTY_FOUR_BIT_LONG",
+ },
+
##### VMS
"vms-generic" => {
diff --git a/Makefile.shared b/Makefile.shared
index 313de4e..165a0b0 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -561,10 +561,10 @@ symlink.hpux:
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath:
# Compatibility targets
-link_dso.bsd-gcc-shared link_dso.linux-shared link_dso.gnu-shared: link_dso.gnu
-link_shlib.bsd-gcc-shared link_shlib.gnu-shared: link_shlib.gnu
-link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared: link_app.gnu
-symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared: symlink.gnu
+link_dso.bsd-gcc-shared link_dso.linux-shared link_dso.gnu-shared link_dso.haiku-shared: link_dso.gnu
+link_shlib.bsd-gcc-shared link_shlib.gnu-shared link_shlib.haiku-shared: link_shlib.gnu
+link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared link_app.haiku-shared: link_app.gnu
+symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared symlink.haiku-shared: symlink.gnu
link_dso.bsd-shared: link_dso.bsd
link_shlib.bsd-shared: link_shlib.bsd
link_app.bsd-shared: link_app.bsd
diff --git a/config b/config
index ba66b33..0d577d8 100755
--- a/config
+++ b/config
@@ -202,6 +202,10 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
echo "${MACHINE}-whatever-freebsd"; exit 0
;;
+ Haiku:*)
+ echo "${MACHINE}-whatever-haiku"; exit 0
+ ;;
+
NetBSD:*:*:*386*)
echo "`(/usr/sbin/sysctl -n hw.model || /sbin/sysctl -n hw.model) | sed 's,.*\(.\)86-class.*,i\186,'`-whatever-netbsd"; exit 0
;;
@@ -724,6 +728,8 @@ case "$GUESSOS" in
*ELF*) OUT="BSD-x86-elf" ;;
*) OUT="BSD-x86"; options="$options no-sse2" ;;
esac ;;
+ x86_64-*-haiku) OUT="haiku-x86_64" ;;
+ *-*-haiku) OUT="haiku-x86" ;;
*-*-*bsd*) OUT="BSD-generic32" ;;
*-*-osf) OUT="osf1-alpha-cc" ;;
diff --git a/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/evp/e_aes_cbc_hmac_sha1.c
index 6dca267..06c24b7 100644
--- a/crypto/evp/e_aes_cbc_hmac_sha1.c
+++ b/crypto/evp/e_aes_cbc_hmac_sha1.c
@@ -92,8 +92,7 @@ typedef struct {
# if defined(AES_ASM) && ( \
defined(__x86_64) || defined(__x86_64__) || \
- defined(_M_AMD64) || defined(_M_X64) || \
- defined(__INTEL__) )
+ defined(_M_AMD64) || defined(_M_X64) )
extern unsigned int OPENSSL_ia32cap_P[];
# define AESNI_CAPABLE (1<<(57-32))
diff --git a/crypto/evp/e_aes_cbc_hmac_sha256.c b/crypto/evp/e_aes_cbc_hmac_sha256.c
index f55a5a0..184ef26 100644
--- a/crypto/evp/e_aes_cbc_hmac_sha256.c
+++ b/crypto/evp/e_aes_cbc_hmac_sha256.c
@@ -92,8 +92,7 @@ typedef struct {
# if defined(AES_ASM) && ( \
defined(__x86_64) || defined(__x86_64__) || \
- defined(_M_AMD64) || defined(_M_X64) || \
- defined(__INTEL__) )
+ defined(_M_AMD64) || defined(_M_X64) )
extern unsigned int OPENSSL_ia32cap_P[];
# define AESNI_CAPABLE (1<<(57-32))
diff --git a/crypto/evp/e_rc4_hmac_md5.c b/crypto/evp/e_rc4_hmac_md5.c
index 05596e4..b8f40ca 100644
--- a/crypto/evp/e_rc4_hmac_md5.c
+++ b/crypto/evp/e_rc4_hmac_md5.c
@@ -102,8 +102,7 @@ static int rc4_hmac_md5_init_key(EVP_CIPHER_CTX *ctx,
# if !defined(OPENSSL_NO_ASM) && ( \
defined(__x86_64) || defined(__x86_64__) || \
- defined(_M_AMD64) || defined(_M_X64) || \
- defined(__INTEL__) )
+ defined(_M_AMD64) || defined(_M_X64) )
# define STITCHED_CALL
# endif
diff --git a/crypto/include/internal/cryptlib.h b/crypto/include/internal/cryptlib.h
index 9e620e6..18d1065 100644
--- a/crypto/include/internal/cryptlib.h
+++ b/crypto/include/internal/cryptlib.h
@@ -92,7 +92,7 @@ DEFINE_LHASH_OF(MEM);
# ifndef OPENSSL_SYS_VMS
# define X509_CERT_AREA OPENSSLDIR
# define X509_CERT_DIR OPENSSLDIR "/certs"
-# define X509_CERT_FILE OPENSSLDIR "/cert.pem"
+# define X509_CERT_FILE OPENSSLDIR "/CARootCertificates.pem"
# define X509_PRIVATE_DIR OPENSSLDIR "/private"
# else
# define X509_CERT_AREA "SSLROOT:[000000]"
diff --git a/crypto/mem_sec.c b/crypto/mem_sec.c
index 7e41765..f25f76b 100644
--- a/crypto/mem_sec.c
+++ b/crypto/mem_sec.c
@@ -16,7 +16,10 @@
#include <string.h>
#if defined(OPENSSL_SYS_LINUX) || defined(OPENSSL_SYS_UNIX)
-# define IMPLEMENTED
+/* Haiku doesn't have mlock() */
+# ifndef OPENSSL_SYS_HAIKU
+# define IMPLEMENTED
+# endif
# include <stdlib.h>
# include <assert.h>
# include <unistd.h>
diff --git a/e_os.h b/e_os.h
index 3a4ba6d..dc311f5 100644
--- a/e_os.h
+++ b/e_os.h
@@ -671,6 +671,13 @@ struct servent *getservbyname(const char *name, const char *proto);
# endif
/* end vxworks */
+/* haiku */
+# if defined(OPENSSL_SYS_HAIKU)
+# include <sys/select.h>
+# include <sys/time.h>
+# endif
+/* end haiku */
+
#define OSSL_NELEM(x) (sizeof(x)/sizeof(x[0]))
#ifdef __cplusplus
--
2.2.2