Skip to content

Commit

Permalink
libb2: Actually fix it
Browse files Browse the repository at this point in the history
  • Loading branch information
elprans committed Feb 14, 2024
1 parent ad4178a commit 5eaf94b
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 132 deletions.
21 changes: 19 additions & 2 deletions edgedbpkg/libb2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import annotations

import pathlib

from metapkg import packages
from metapkg import targets

Expand All @@ -19,16 +21,31 @@ class LibB2(packages.BundledCPackage):

def get_configure_script(self, build: targets.Build) -> str:
sdir = build.get_source_dir(self, relative_to="pkgbuild")
# Restore modification times to avoid invoking the autotools.
script = (
f'touch -r "{sdir}/aclocal.m4" "{sdir}/configure.ac"'
f' "{sdir}/configure"\n'
)
configure = sdir / "configure"
configure_flags = {
configure_flags: dict[str, str | pathlib.Path | None] = {
"--disable-openmp": None,
"--disable-native": None,
}
if build.target.machine_architecture == "x86_64":
configure_flags["--enable-fat"] = None
else:
configure_flags["--disable-fat"] = None
return self.sh_configure(build, configure, configure_flags)

# Upstream defaults to -O3, so likely should we.
build.sh_append_flags(
configure_flags,
"CFLAGS",
(
"-O3",
),
)

return script + self.sh_configure(build, configure, configure_flags)

def get_shlibs(self, build: targets.Build) -> list[str]:
return ["b2"]
Expand Down
192 changes: 62 additions & 130 deletions edgedbpkg/libb2/patches/libb2__cflags.patch
Original file line number Diff line number Diff line change
@@ -1,140 +1,72 @@
From 623bc8e48d7912487f78315782288cacdd66dc71 Mon Sep 17 00:00:00 2001
From ad9b8780269ca19c2ab679f7d93511eccdebad0b Mon Sep 17 00:00:00 2001
From: Elvis Pranskevichus <[email protected]>
Date: Tue, 13 Feb 2024 17:20:07 -0800
Subject: [PATCH] Fix cross-compilation of fat binaries
Date: Tue, 13 Feb 2024 21:23:08 -0800
Subject: [PATCH] Preserve user-supplied CFLAGS

Don't lose configure-time `CFLAGS` when building SSE-subvariants.
Fixes cross-compilation among other things.
---
src/Makefile.am | 24 ++++++++++++------------
src/Makefile.in | 24 ++++++++++++------------
2 files changed, 24 insertions(+), 24 deletions(-)
configure | 35 -----------------------------------
configure.ac | 1 -
2 files changed, 36 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 215a434..ef812fd 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -54,52 +54,52 @@ libb2_la_LIBADD += libblake2b_ref.la \
diff --git a/configure b/configure
index 502bd37..5c0d1c7 100755
--- a/configure
+++ b/configure
@@ -12724,41 +12724,6 @@ else
fi

libblake2b_ref_la_SOURCES = blake2b-ref.c
libblake2b_ref_la_CPPFLAGS = -DSUFFIX=_ref
-libblake2b_ref_la_CFLAGS =
+libblake2b_ref_la_CFLAGS = $(CFLAGS)

libblake2b_sse2_la_SOURCES = blake2b.c
libblake2b_sse2_la_CPPFLAGS = -DSUFFIX=_sse2
-libblake2b_sse2_la_CFLAGS = -msse2
+libblake2b_sse2_la_CFLAGS = $(CFLAGS) -msse2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -O3" >&5
-$as_echo_n "checking whether C compiler accepts -O3... " >&6; }
-if ${ax_cv_check_cflags___O3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ax_check_save_flags=$CFLAGS
- CFLAGS="$CFLAGS -O3"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ax_cv_check_cflags___O3=yes
-else
- ax_cv_check_cflags___O3=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_check_save_flags
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___O3" >&5
-$as_echo "$ax_cv_check_cflags___O3" >&6; }
-if test x"$ax_cv_check_cflags___O3" = xyes; then :
- CFLAGS=-O3
-else
- :
-fi
-
if test $enable_native == "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -march=native" >&5
$as_echo_n "checking whether C compiler accepts -march=native... " >&6; }
diff --git a/configure.ac b/configure.ac
index c441da9..2f754de 100644
--- a/configure.ac
+++ b/configure.ac
@@ -60,7 +60,6 @@ AC_HELP_STRING([--enable-native],
[enable_native=yes]
)

libblake2b_ssse3_la_SOURCES = blake2b.c
libblake2b_ssse3_la_CPPFLAGS = -DSUFFIX=_ssse3
-libblake2b_ssse3_la_CFLAGS = -msse2 -mssse3
+libblake2b_ssse3_la_CFLAGS = $(CFLAGS) -msse2 -mssse3

libblake2b_sse41_la_SOURCES = blake2b.c
libblake2b_sse41_la_CPPFLAGS = -DSUFFIX=_sse41
-libblake2b_sse41_la_CFLAGS = -msse2 -mssse3 -msse4.1
+libblake2b_sse41_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1

libblake2b_avx_la_SOURCES = blake2b.c
libblake2b_avx_la_CPPFLAGS = -DSUFFIX=_avx
-libblake2b_avx_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx
+libblake2b_avx_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx

libblake2b_xop_la_SOURCES = blake2b.c
libblake2b_xop_la_CPPFLAGS = -DSUFFIX=_xop
-libblake2b_xop_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx -mxop
+libblake2b_xop_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx -mxop


libblake2s_ref_la_SOURCES = blake2s-ref.c
libblake2s_ref_la_CPPFLAGS = -DSUFFIX=_ref
-libblake2s_ref_la_CFLAGS =
+libblake2s_ref_la_CFLAGS = $(CFLAGS)

libblake2s_sse2_la_SOURCES = blake2s.c
libblake2s_sse2_la_CPPFLAGS = -DSUFFIX=_sse2
-libblake2s_sse2_la_CFLAGS = -msse2
+libblake2s_sse2_la_CFLAGS = $(CFLAGS) -msse2

libblake2s_ssse3_la_SOURCES = blake2s.c
libblake2s_ssse3_la_CPPFLAGS = -DSUFFIX=_ssse3
-libblake2s_ssse3_la_CFLAGS = -msse2 -mssse3
+libblake2s_ssse3_la_CFLAGS = $(CFLAGS) -msse2 -mssse3

libblake2s_sse41_la_SOURCES = blake2s.c
libblake2s_sse41_la_CPPFLAGS = -DSUFFIX=_sse41
-libblake2s_sse41_la_CFLAGS = -msse2 -mssse3 -msse4.1
+libblake2s_sse41_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1

libblake2s_avx_la_SOURCES = blake2s.c
libblake2s_avx_la_CPPFLAGS = -DSUFFIX=_avx
-libblake2s_avx_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx
+libblake2s_avx_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx

libblake2s_xop_la_SOURCES = blake2s.c
libblake2s_xop_la_CPPFLAGS = -DSUFFIX=_xop
-libblake2s_xop_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx -mxop
+libblake2s_xop_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx -mxop

else

diff --git a/src/Makefile.in b/src/Makefile.in
index 433b8f9..6dd0fc0 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -766,40 +766,40 @@ include_HEADERS = blake2.h
@USE_FAT_TRUE@libb2_la_SOURCES = blake2-dispatch.c blake2sp.c blake2bp.c
@USE_FAT_TRUE@libblake2b_ref_la_SOURCES = blake2b-ref.c
@USE_FAT_TRUE@libblake2b_ref_la_CPPFLAGS = -DSUFFIX=_ref
-@USE_FAT_TRUE@libblake2b_ref_la_CFLAGS =
+@USE_FAT_TRUE@libblake2b_ref_la_CFLAGS = $(CFLAGS)
@USE_FAT_TRUE@libblake2b_sse2_la_SOURCES = blake2b.c
@USE_FAT_TRUE@libblake2b_sse2_la_CPPFLAGS = -DSUFFIX=_sse2
-@USE_FAT_TRUE@libblake2b_sse2_la_CFLAGS = -msse2
+@USE_FAT_TRUE@libblake2b_sse2_la_CFLAGS = $(CFLAGS) -msse2
@USE_FAT_TRUE@libblake2b_ssse3_la_SOURCES = blake2b.c
@USE_FAT_TRUE@libblake2b_ssse3_la_CPPFLAGS = -DSUFFIX=_ssse3
-@USE_FAT_TRUE@libblake2b_ssse3_la_CFLAGS = -msse2 -mssse3
+@USE_FAT_TRUE@libblake2b_ssse3_la_CFLAGS = $(CFLAGS) -msse2 -mssse3
@USE_FAT_TRUE@libblake2b_sse41_la_SOURCES = blake2b.c
@USE_FAT_TRUE@libblake2b_sse41_la_CPPFLAGS = -DSUFFIX=_sse41
-@USE_FAT_TRUE@libblake2b_sse41_la_CFLAGS = -msse2 -mssse3 -msse4.1
+@USE_FAT_TRUE@libblake2b_sse41_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1
@USE_FAT_TRUE@libblake2b_avx_la_SOURCES = blake2b.c
@USE_FAT_TRUE@libblake2b_avx_la_CPPFLAGS = -DSUFFIX=_avx
-@USE_FAT_TRUE@libblake2b_avx_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx
+@USE_FAT_TRUE@libblake2b_avx_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx
@USE_FAT_TRUE@libblake2b_xop_la_SOURCES = blake2b.c
@USE_FAT_TRUE@libblake2b_xop_la_CPPFLAGS = -DSUFFIX=_xop
-@USE_FAT_TRUE@libblake2b_xop_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx -mxop
+@USE_FAT_TRUE@libblake2b_xop_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx -mxop
@USE_FAT_TRUE@libblake2s_ref_la_SOURCES = blake2s-ref.c
@USE_FAT_TRUE@libblake2s_ref_la_CPPFLAGS = -DSUFFIX=_ref
-@USE_FAT_TRUE@libblake2s_ref_la_CFLAGS =
+@USE_FAT_TRUE@libblake2s_ref_la_CFLAGS = $(CFLAGS)
@USE_FAT_TRUE@libblake2s_sse2_la_SOURCES = blake2s.c
@USE_FAT_TRUE@libblake2s_sse2_la_CPPFLAGS = -DSUFFIX=_sse2
-@USE_FAT_TRUE@libblake2s_sse2_la_CFLAGS = -msse2
+@USE_FAT_TRUE@libblake2s_sse2_la_CFLAGS = $(CFLAGS) -msse2
@USE_FAT_TRUE@libblake2s_ssse3_la_SOURCES = blake2s.c
@USE_FAT_TRUE@libblake2s_ssse3_la_CPPFLAGS = -DSUFFIX=_ssse3
-@USE_FAT_TRUE@libblake2s_ssse3_la_CFLAGS = -msse2 -mssse3
+@USE_FAT_TRUE@libblake2s_ssse3_la_CFLAGS = $(CFLAGS) -msse2 -mssse3
@USE_FAT_TRUE@libblake2s_sse41_la_SOURCES = blake2s.c
@USE_FAT_TRUE@libblake2s_sse41_la_CPPFLAGS = -DSUFFIX=_sse41
-@USE_FAT_TRUE@libblake2s_sse41_la_CFLAGS = -msse2 -mssse3 -msse4.1
+@USE_FAT_TRUE@libblake2s_sse41_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1
@USE_FAT_TRUE@libblake2s_avx_la_SOURCES = blake2s.c
@USE_FAT_TRUE@libblake2s_avx_la_CPPFLAGS = -DSUFFIX=_avx
-@USE_FAT_TRUE@libblake2s_avx_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx
+@USE_FAT_TRUE@libblake2s_avx_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx
@USE_FAT_TRUE@libblake2s_xop_la_SOURCES = blake2s.c
@USE_FAT_TRUE@libblake2s_xop_la_CPPFLAGS = -DSUFFIX=_xop
-@USE_FAT_TRUE@libblake2s_xop_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx -mxop
+@USE_FAT_TRUE@libblake2s_xop_la_CFLAGS = $(CFLAGS) -msse2 -mssse3 -msse4.1 -mavx -mxop
TESTS_TARGETS = blake2s-test \
blake2b-test \
blake2sp-test \
-AX_CHECK_COMPILE_FLAG([-O3], [CFLAGS=-O3])
dnl Not all architectures support -march=native
if test $enable_native == "yes"; then
AX_CHECK_COMPILE_FLAG([-march=native], [], [enable_native=no])
--
2.43.0

0 comments on commit 5eaf94b

Please sign in to comment.