:: commit ea374c266ede129c81c228afb3641a97e670de10

mintsuki <mintsuki@protonmail.com> — 2022-08-26 08:23

parents: 52647796d0

build: Handle -no-pie bug with cross-detect

diff --git a/common/GNUmakefile b/common/GNUmakefile
index ee6338cd..1d519e3d 100644
--- a/common/GNUmakefile
+++ b/common/GNUmakefile
@@ -119,6 +119,10 @@ ifeq ($(TARGET),bios)
         -melf_i386 \
         -static \
         --build-id=sha1
+
+    ifneq ($(CROSS_LD_NO_PIE_BUG),1)
+        override CROSS_LDFLAGS += -no-pie
+    endif
 endif
 
 ifeq ($(TARGET),uefi-x86-64)
diff --git a/configure.ac b/configure.ac
index cbbdd784..eee794b2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,8 +8,8 @@ AC_CONFIG_SUBDIRS([cross-detect])
 SRCDIR="$(cd "$srcdir" && pwd -P)"
 BUILDDIR="$(pwd -P)"
 
-AC_SUBST(SRCDIR, [$SRCDIR])
-AC_SUBST(BUILDDIR, [$BUILDDIR])
+AC_SUBST(SRCDIR)
+AC_SUBST(BUILDDIR)
 
 test "x$CFLAGS" = "x" && CFLAGS='-g -O2 -pipe -Wall -Wextra'
 AC_PROG_CC
@@ -76,7 +76,7 @@ else
     BUILD_BIOS="limine-bios"
 fi
 
-AC_SUBST(BUILD_BIOS, [$BUILD_BIOS])
+AC_SUBST(BUILD_BIOS)
 
 BUILD_LIMINE_DEPLOY="$BUILD_ALL"
 
@@ -84,7 +84,7 @@ AC_ARG_ENABLE([limine-deploy],
     AS_HELP_STRING([--enable-limine-deploy], [enable building limine-deploy]),
     BUILD_LIMINE_DEPLOY="$enableval")
 
-AC_SUBST(BUILD_LIMINE_DEPLOY, [$BUILD_LIMINE_DEPLOY])
+AC_SUBST(BUILD_LIMINE_DEPLOY)
 
 BUILD_CD="$BUILD_ALL"
 
@@ -92,7 +92,7 @@ AC_ARG_ENABLE([bios-cd],
     AS_HELP_STRING([--enable-bios-cd], [enable building the x86 BIOS CD image]),
     BUILD_CD="$enableval")
 
-AC_SUBST(BUILD_CD, [$BUILD_CD])
+AC_SUBST(BUILD_CD)
 
 BUILD_PXE="$BUILD_ALL"
 
@@ -100,7 +100,7 @@ AC_ARG_ENABLE([bios-pxe],
     AS_HELP_STRING([--enable-bios-pxe], [enable building the x86 BIOS PXE image]),
     BUILD_PXE="$enableval")
 
-AC_SUBST(BUILD_PXE, [$BUILD_PXE])
+AC_SUBST(BUILD_PXE)
 
 BUILD_UEFI_IA32="$BUILD_ALL"
 
@@ -119,7 +119,7 @@ else
     BUILD_UEFI_IA32="limine-uefi-ia32"
 fi
 
-AC_SUBST(BUILD_UEFI_IA32, [$BUILD_UEFI_IA32])
+AC_SUBST(BUILD_UEFI_IA32)
 
 BUILD_UEFI_X86_64="$BUILD_ALL"
 
@@ -138,7 +138,7 @@ else
     BUILD_UEFI_X86_64="limine-uefi-x86-64"
 fi
 
-AC_SUBST(BUILD_UEFI_X86_64, [$BUILD_UEFI_X86_64])
+AC_SUBST(BUILD_UEFI_X86_64)
 
 BUILD_CD_EFI="$BUILD_ALL"
 
@@ -157,7 +157,7 @@ if ! test "x$BUILD_CD_EFI" = "xno"; then
     fi
 fi
 
-AC_SUBST(BUILD_CD_EFI, [$BUILD_CD_EFI])
+AC_SUBST(BUILD_CD_EFI)
 
 AC_ARG_VAR(CROSS_TOOLCHAIN, [alternative toolchain prefix (or 'llvm')])
 AC_ARG_VAR(CROSS_CC, [C compiler command for Limine])
@@ -175,7 +175,7 @@ AC_ARG_VAR(CROSS_LDFLAGS, [Linker flags for Limine @<:@default: ]DEFAULT_CROSS_L
 test "x$CROSS_LDFLAGS" = "x" && CROSS_LDFLAGS="DEFAULT_CROSS_LDFLAGS"
 
 LIMINE_COPYRIGHT=$($GREP Copyright "$SRCDIR/LICENSE.md")
-AC_SUBST(LIMINE_COPYRIGHT, [$LIMINE_COPYRIGHT])
+AC_SUBST(LIMINE_COPYRIGHT)
 
 AC_PREFIX_DEFAULT(/usr/local)
 
diff --git a/decompressor/GNUmakefile b/decompressor/GNUmakefile
index 5b064136..d33752e6 100644
--- a/decompressor/GNUmakefile
+++ b/decompressor/GNUmakefile
@@ -47,6 +47,10 @@ override CROSS_LDFLAGS += \
     -static \
     -Tlinker.ld
 
+ifneq ($(CROSS_LD_NO_PIE_BUG),1)
+    override CROSS_LDFLAGS += -no-pie
+endif
+
 override C_FILES := $(shell find ./ -type f -name '*.c')
 override ASM_FILES := $(shell find ./ -type f -name '*.asm')
 override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(ASM_FILES:.asm=.o) $(C_FILES:.c=.o))
tab: 248 wrap: offon