diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index cd164b13f8e..575b57eb872 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -23,6 +23,11 @@ let ./gnu.patch # submitted upstream ] + ++ stdenv.lib.optionals (stdenv.system == "x86_64-kfreebsd-gnu") + [ ./gnu.patch + ./kfreebsd-gnu.patch + ] + ++ stdenv.lib.optional stdenv.isDarwin ./darwin-arch.patch; in diff --git a/pkgs/development/libraries/openssl/kfreebsd-gnu.patch b/pkgs/development/libraries/openssl/kfreebsd-gnu.patch new file mode 100644 index 00000000000..66cedf746ba --- /dev/null +++ b/pkgs/development/libraries/openssl/kfreebsd-gnu.patch @@ -0,0 +1,36 @@ +Allow compilation on GNU/kFreeBSD. Ideally, there'd be a single way to process +all glibc-based system, but the build system is soooo broken. + +--- openssl-1.0.0i/config ++++ openssl-1.0.0i/config +@@ -170,6 +170,10 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${ + echo "${MACHINE}-whatever-linux1"; exit 0 + ;; + ++ GNU/kFreeBSD*) ++ echo "kfreebsd-gnu"; exit 0; ++ ;; ++ + GNU*) + echo "hurd-x86"; exit 0; + ;; +@@ -810,6 +814,7 @@ case "$GUESSOS" in + beos-*) OUT="$GUESSOS" ;; + x86pc-*-qnx6) OUT="QNX6-i386" ;; + *-*-qnx6) OUT="QNX6" ;; ++ kfreebsd-gnu) OUT="kfreebsd-gnu";; + *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;; + esac + + +--- openssl-1.0.0i/Configure ++++ openssl-1.0.0i/Configure +@@ -565,6 +565,9 @@ my %table=( + ##### GNU Hurd + "hurd-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC", + ++##### GNU/kFreeBSD on x86_64, copied from "linux-x86_64" ++"kfreebsd-gnu", "gcc:-m64 -DL_ENDIAN -DTERMIOS -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++ + ##### OS/2 EMX + "OS2-EMX", "gcc::::::::",