Skip to content

Commit

Permalink
build: Misc build system improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
mintsuki committed Dec 8, 2024
1 parent f841a33 commit 3ae5dd7
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 68 deletions.
72 changes: 36 additions & 36 deletions GNUmakefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ export SOURCE_DATE_EPOCH
override SOURCE_DATE_EPOCH_TOUCH := @SOURCE_DATE_EPOCH_TOUCH@

override PACKAGE_TARNAME := @PACKAGE_TARNAME@
override PACKAGE_VERSION := @PACKAGE_VERSION@
override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)

prefix := @prefix@
exec_prefix := @exec_prefix@
Expand Down Expand Up @@ -87,8 +89,6 @@ export LDFLAGS_FOR_TARGET
NASMFLAGS_FOR_TARGET := @NASMFLAGS_FOR_TARGET@
export NASMFLAGS_FOR_TARGET

override LIMINE_VERSION := @PACKAGE_VERSION@

override STAGE1_FILES := $(shell find '$(call SHESCAPE,$(SRCDIR))/stage1' -type f -name '*.asm' | LC_ALL=C sort)

.PHONY: all
Expand Down Expand Up @@ -295,40 +295,40 @@ limine-uefi-loongarch64-clean: common-uefi-loongarch64-clean

.PHONY: dist
dist:
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)"
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)"
cp -r '$(call SHESCAPE,$(SRCDIR))'/.git '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)"/
cd '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)" && git checkout .
cd '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)" && ./bootstrap
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/common/flanterm/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/common/flanterm/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/freestnd-c-hdrs-0bsd/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/nyu-efi/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/nyu-efi/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/cc-runtime/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/cc-runtime/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/dtc"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/tinf"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/common/lib/stb_image.h.nopatch"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.github"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/README.md"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/autom4te.cache"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/test"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/test.mk"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/logo.png"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/screenshot.png"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/bochsrc"
echo "$(LIMINE_VERSION)" > '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/version"
cd '$(call SHESCAPE,$(BUILDDIR))' && tar -cf "limine-$(LIMINE_VERSION).tar" "limine-$(LIMINE_VERSION)"
cd '$(call SHESCAPE,$(BUILDDIR))' && gzip < "limine-$(LIMINE_VERSION).tar" > "limine-$(LIMINE_VERSION).tar.gz"
cd '$(call SHESCAPE,$(BUILDDIR))' && ( lzip < "limine-$(LIMINE_VERSION).tar" > "limine-$(LIMINE_VERSION).tar.lz" || rm -f "limine-$(LIMINE_VERSION).tar.lz" )
cd '$(call SHESCAPE,$(BUILDDIR))' && ( bzip2 < "limine-$(LIMINE_VERSION).tar" > "limine-$(LIMINE_VERSION).tar.bz2" || rm -f "limine-$(LIMINE_VERSION).tar.bz2" )
cd '$(call SHESCAPE,$(BUILDDIR))' && ( xz < "limine-$(LIMINE_VERSION).tar" > "limine-$(LIMINE_VERSION).tar.xz" || rm -f "limine-$(LIMINE_VERSION).tar.xz" )
cd '$(call SHESCAPE,$(BUILDDIR))' && ( zstd < "limine-$(LIMINE_VERSION).tar" > "limine-$(LIMINE_VERSION).tar.zst" || rm -f "limine-$(LIMINE_VERSION).tar.zst" )
cd '$(call SHESCAPE,$(BUILDDIR))' && rm "limine-$(LIMINE_VERSION).tar"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)"
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)"
cp -r '$(call SHESCAPE,$(SRCDIR))'/.git '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)"/
cd '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)" && git checkout .
cd '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)" && ./bootstrap
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/common/flanterm/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/common/flanterm/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/freestnd-c-hdrs-0bsd/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/nyu-efi/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/nyu-efi/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/cc-runtime/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/cc-runtime/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/dtc"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/tinf"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/common/lib/stb_image.h.nopatch"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/.github"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/README.md"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/autom4te.cache"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/test"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/test.mk"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/logo.png"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/screenshot.png"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/bochsrc"
echo "$(PACKAGE_VERSION)" > '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/version"
cd '$(call SHESCAPE,$(BUILDDIR))' && tar -cf "$(DIST_OUTPUT).tar" "$(DIST_OUTPUT)"
cd '$(call SHESCAPE,$(BUILDDIR))' && gzip < "$(DIST_OUTPUT).tar" > "$(DIST_OUTPUT).tar.gz"
cd '$(call SHESCAPE,$(BUILDDIR))' && ( lzip < "$(DIST_OUTPUT).tar" > "$(DIST_OUTPUT).tar.lz" || rm -f "$(DIST_OUTPUT).tar.lz" )
cd '$(call SHESCAPE,$(BUILDDIR))' && ( bzip2 < "$(DIST_OUTPUT).tar" > "$(DIST_OUTPUT).tar.bz2" || rm -f "$(DIST_OUTPUT).tar.bz2" )
cd '$(call SHESCAPE,$(BUILDDIR))' && ( xz < "$(DIST_OUTPUT).tar" > "$(DIST_OUTPUT).tar.xz" || rm -f "$(DIST_OUTPUT).tar.xz" )
cd '$(call SHESCAPE,$(BUILDDIR))' && ( zstd < "$(DIST_OUTPUT).tar" > "$(DIST_OUTPUT).tar.zst" || rm -f "$(DIST_OUTPUT).tar.zst" )
cd '$(call SHESCAPE,$(BUILDDIR))' && rm "$(DIST_OUTPUT).tar"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)"

.PHONY: distclean
distclean: clean
Expand Down
92 changes: 60 additions & 32 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,39 @@ AC_SUBST([SOURCE_DATE_EPOCH_TOUCH])

AC_CANONICAL_HOST

AC_DEFUN([PROG_ABSPATH], [
case "$$1" in
.*) $1="$(cd "$(dirname "$$1")" && pwd -P)/$(basename "$$1")" ;;
esac
])
# Portably convert relative paths into absolute paths.
rel2abs() {
rel2abs_first=true
for i in $1; do
if test $rel2abs_first = true; then
case "$i" in
/*)
printf "%s" "$i"
;;
*/*)
if test -d "$(dirname "$i")"; then
printf "%s" "$(cd "$(dirname "$i")" && pwd -P)/$(basename "$i")"
else
printf "false"
fi
;;
*)
printf "%s" "$i"
;;
esac
rel2abs_first=false
else
printf " %s" "$i"
fi
done
printf "\n"
}

test "x${CFLAGS+set}" = "x" && CFLAGS='-g -O2 -pipe'

AC_LANG([C])
AC_PROG_CC
PROG_ABSPATH([CC])
CC="$(rel2abs "$CC")"

werror_state="no"
AC_ARG_ENABLE([werror],
Expand All @@ -41,46 +63,52 @@ else
fi

AC_PROG_MKDIR_P
PROG_ABSPATH([MKDIR_P])
MKDIR_P="$(rel2abs "$MKDIR_P")"
AC_PROG_INSTALL
PROG_ABSPATH([INSTALL])
INSTALL="$(rel2abs "$INSTALL")"
AC_PROG_SED
PROG_ABSPATH([SED])
SED="$(rel2abs "$SED")"
AC_PROG_GREP
PROG_ABSPATH([GREP])
GREP="$(rel2abs "$GREP")"
AC_PROG_AWK
PROG_ABSPATH([AWK])
AWK="$(rel2abs "$AWK")"

AC_CHECK_PROG([FIND_FOUND], [find], [yes])
if ! test "x$FIND_FOUND" = "xyes"; then
AC_MSG_ERROR([find not found, please install find before configuring])
fi

AC_ARG_VAR([STRIP], [strip command])

if ! test -z "$STRIP"; then
if test -x "$STRIP"; then
STRIP_USER_FOUND=yes
# $1 - UPPERCASEVAR, $2 - default program
AC_DEFUN([GET_PROG_FROM_TOOLCHAIN], [
AC_ARG_VAR([$1], [$2 command @<:@default: $2@:>@])
if ! test -z "$$1"; then
first_elem="$(echo "$$1" | cut -f 1 -d " ")"
case "$first_elem" in
*/*)
if test -f "$first_elem" && test -x "$first_elem"; then
$1_USER_FOUND=yes
fi
;;
*)
AC_CHECK_PROG([$1_USER_FOUND], [$$1], [yes])
;;
esac
if ! test "x$$1_USER_FOUND" = "xyes"; then
AC_MSG_ERROR([$2 not found, please install $2 before configuring])
fi
else
AC_CHECK_PROG([STRIP_USER_FOUND], [$STRIP], [yes])
fi

if ! test "x$STRIP_USER_FOUND" = "xyes"; then
AC_MSG_ERROR([$STRIP not found, please install $STRIP before configuring])
fi
else
STRIP="$($CC -dumpmachine)"-strip
AC_CHECK_PROG([STRIP_FOUND], [$STRIP], [yes])
if ! test "x$STRIP_FOUND" = "xyes"; then
STRIP=strip
AC_CHECK_PROG([STRIP_DEFAULT_FOUND], [$STRIP], [yes])
if ! test "x$STRIP_DEFAULT_FOUND" = "xyes"; then
AC_MSG_ERROR([$STRIP not found, please install $STRIP before configuring])
AC_CHECK_TOOL([$1], [$2], [:])
if test "x$$1" = "x:"; then
AC_MSG_ERROR([$2 not found, please install $2 or set $1 to a valid command])
fi
fi
fi
AC_SUBST([STRIP])
$1="$(rel2abs "$$1")"
])

GET_PROG_FROM_TOOLCHAIN([STRIP], [strip])

AC_CHECK_HEADERS([stdint.h stddef.h stdbool.h limits.h inttypes.h stdio.h stdlib.h string.h],
[], [AC_MSG_ERROR([required header not found])])
Expand Down

0 comments on commit 3ae5dd7

Please sign in to comment.