Make build system more portable

This commit is contained in:
Uko Kokņevičs 2022-07-20 16:42:13 +03:00
parent cbc66a5cdb
commit f671adba06
4 changed files with 20 additions and 8 deletions

View File

@ -21,6 +21,18 @@ export CPPFLAGS=''
export SYSROOT="$(pwd)/sysroot" export SYSROOT="$(pwd)/sysroot"
export CC="$CC --sysroot=$SYSROOT" export CC="$CC --sysroot=$SYSROOT"
if command -V grub2-file >/dev/null 2>&1; then
export GRUB_FILE="grub2-file"
else
export GRUB_FILE="grub-file"
fi
if command -V grub2-mkrescue >/dev/null 2>&1; then
export GRUB_MKRESCUE="grub2-mkrescue"
else
export GRUB_MKRESCUE="grub-mkrescue"
fi
# Work around that the -elf gcc targets doesn't have a system include directory # Work around that the -elf gcc targets doesn't have a system include directory
# because it was configured with --without-headers rather than --with-sysroot. # because it was configured with --without-headers rather than --with-sysroot.
if echo "$HOST" | grep -Eq -- '-elf($|-)'; then if echo "$HOST" | grep -Eq -- '-elf($|-)'; then

2
iso.sh
View File

@ -12,4 +12,4 @@ menuentry "rockOS" {
multiboot /boot/rockos.kernel multiboot /boot/rockos.kernel
} }
EOF EOF
grub2-mkrescue -o rockos.iso isodir "${GRUB_MKRESCUE}" -o rockos.iso isodir

View File

@ -1,6 +1,6 @@
DEFAULT_HOST!=../default-host.sh DEFAULT_HOST=$(shell ../default-host.sh)
HOST?=DEFAULT_HOST HOST?=DEFAULT_HOST
HOSTARCH!=../target-triplet-to-arch.sh $(HOST) HOSTARCH=$(shell ../target-triplet-to-arch.sh $(HOST))
CFLAGS?=-O3 -g CFLAGS?=-O3 -g
CPPFLAGS?= CPPFLAGS?=
@ -55,7 +55,7 @@ all: rockos.kernel
rockos.kernel: $(OBJS) $(ARCHDIR)/linker.ld rockos.kernel: $(OBJS) $(ARCHDIR)/linker.ld
$(CC) -T $(ARCHDIR)/linker.ld -o $@ $(CFLAGS) $(LINK_LIST) $(CC) -T $(ARCHDIR)/linker.ld -o $@ $(CFLAGS) $(LINK_LIST)
grub2-file --is-x86-multiboot rockos.kernel $(GRUB_FILE) --is-x86-multiboot rockos.kernel
$(ARCHDIR)/crtbegin.o $(ARCHDIR)/crtend.o: $(ARCHDIR)/crtbegin.o $(ARCHDIR)/crtend.o:
OBJ=`$(CC) $(CFLAGS) $(LDFLAGS) -print-file-name=$(@F)` && cp "$$OBJ" $@ OBJ=`$(CC) $(CFLAGS) $(LDFLAGS) -print-file-name=$(@F)` && cp "$$OBJ" $@
@ -75,7 +75,7 @@ install: install-headers install-kernel
install-headers: install-headers:
mkdir -p $(DESTDIR)$(INCLUDEDIR) mkdir -p $(DESTDIR)$(INCLUDEDIR)
cp -R --preserve=timestamps include/. $(DESTDIR)$(INCLUDEDIR)/. cp -Rp include/. $(DESTDIR)$(INCLUDEDIR)/.
install-kernel: rockos.kernel install-kernel: rockos.kernel
mkdir -p $(DESTDIR)$(BOOTDIR) mkdir -p $(DESTDIR)$(BOOTDIR)

View File

@ -1,6 +1,6 @@
DEFAULT_HOST!=../default-host.sh DEFAULT_HOST=$(shell ../default-host.sh)
HOST?=DEFAULT_HOST HOST?=DEFAULT_HOST
HOSTARCH!=../target-triplet-to-arch.sh $(HOST) HOSTARCH=$(shell ../target-triplet-to-arch.sh $(HOST))
CFLAGS?=-O3 -g CFLAGS?=-O3 -g
CPPFLAGS?= CPPFLAGS?=
@ -89,7 +89,7 @@ install: install-headers install-libs
install-headers: install-headers:
mkdir -p $(DESTDIR)$(INCLUDEDIR) mkdir -p $(DESTDIR)$(INCLUDEDIR)
cp -R --preserve=timestamps include/. $(DESTDIR)$(INCLUDEDIR)/. cp -Rp include/. $(DESTDIR)$(INCLUDEDIR)/.
install-libs: $(BINARIES) install-libs: $(BINARIES)
mkdir -p $(DESTDIR)$(LIBDIR) mkdir -p $(DESTDIR)$(LIBDIR)