Restructured paths

1. build is in build/$(arch)
2. tooldir is in build/toolchain-$(arch)
3. global_srcdir is in build/src-{world,toolchain}
4. global_objdir is in build/obj-{world,toolchain}
This commit is contained in:
Nathan Fisher 2021-03-02 15:13:26 -05:00
parent 61db92519f
commit a5d0778d53
19 changed files with 233 additions and 231 deletions

View file

@ -1,4 +1,4 @@
# Makefile - hhl - /usr/src/toolchain
# Makefile - hhl - /src/toolchain
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
@ -23,7 +23,7 @@ subdirs += linux-headers
subdirs += glibc
subdirs += gcc-pass2
installdirs += $(build)/toolchain $(build)/src $(build)/obj
installdirs += $(tooldir) $(global_srcdir) $(global_objdir)
all: $(subdirs) reduce-size
$(info $(grn)=== Temporary toolchain built ===$(reset))
@ -43,31 +43,31 @@ distclean: clean
do $(MAKE) -C $${subdir} distclean ; done
strip:
strip --strip-debug /toolchain/lib/* > /dev/null 2>&1 || true
/usr/bin/strip --strip-unneeded /toolchain/bin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-unneeded /toolchain/sbin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-unneeded /toolchain/libexec/gcc/*/${gcc_version}/* || true
/usr/bin/strip --strip-debug /toolchain/bin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-debug /toolchain/sbin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-debug /toolchain/libexec/gcc/*/${gcc_version}/* || true
strip --strip-debug $(tooldir)/lib/* > /dev/null 2>&1 || true
/usr/bin/strip --strip-unneeded $(tooldir)/bin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-unneeded $(tooldir)/sbin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-unneeded $(tooldir)/libexec/gcc/*/${gcc_version}/* || true
/usr/bin/strip --strip-debug $(tooldir)/bin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-debug $(tooldir)/sbin/*> /dev/null 2>&1 || true
/usr/bin/strip --strip-debug $(tooldir)/libexec/gcc/*/$(gcc_version)/* || true
removedoc:
rm -rf /toolchain/doc
rm -rf /toolschain/info
rm -rf /toolchain/man
rm -rf /toolchain/share/doc
rm -rf /toolschain/share/info
rm -rf /toolchain/share/man
rm -rf $(tooldir)/doc
rm -rf $(tooldir)/info
rm -rf $(tooldir)/man
rm -rf $(tooldir)/share/doc
rm -rf $(tooldir)/share/info
rm -rf $(tooldir)/share/man
remove-la:
find /toolchain/lib /toolchain/libexec -name '*.la' -delete
find $(tooldir)/lib $(tooldir)/libexec -name '*.la' -delete
reduce-size: strip removedoc remove-la
remove: distclean
for subdir in ${subdirs} ; \
do $(MAKE) -C $${subdir} remove ; done
rm -rf /toolchain/* .built
rm -rf $(tooldir)/* .built
.PHONY: \
all \

View file

@ -1,23 +1,22 @@
# Makefile - hhl - /usr/src/toolchain/binutils-pass1
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
#
distname = binutils
objdirname = binutils-pass1
include toolchain.mk
config_opts += --with-sysroot=${build}
config_opts += --target=${tgt}
config_opts += --with-sysroot=$(build)
config_opts += --target=$(tgt)
config_opts += --disable-nls
config_opts += --disable-werror
ifeq (${arch}, x86_64)
install: | /toolchain/lib64
else ifeq (${arch}, riscv64)
install: | /toolchain/lib64
ifeq ($(arch), x86_64)
install: | $(tooldir)/lib64
else ifeq ($(arch), riscv64)
install: | $(tooldir)/lib64
endif
include targets.mk
/toolchain/lib64:
install -d /toolchain/lib
ln -s lib /toolchain/lib64
$(tooldir)/lib64:
install -d $(tooldir)/lib
ln -s lib $(toolcdir)/lib64

View file

@ -1,18 +1,18 @@
# Makefile - hhl - /usr/src/toolchain/gcc-pass1
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
#
distname = gcc
include ../../config.mk
ifeq ($(filter x86_64 aarch64 riscv64, $(arch)), $(arch))
patches += gcc-lib64.patch
endif
objdirname = gcc-pass1
objdir = $(global_objdir)/gcc-pass1
include toolchain.mk
srcdirs += ${srcdir}/mpfr
srcdirs += ${srcdir}/gmp
srcdirs += ${srcdir}/mpc
srcdirs += $(srcdir)/mpfr
srcdirs += $(srcdir)/gmp
srcdirs += $(srcdir)/mpc
config_opts += --target=$(tgt)
config_opts += --with-glibc-version=2.11
@ -36,18 +36,18 @@ include targets.mk
$(config_tgt): | $(srcdirs)
${srcdir}/mpfr: | ${srcdir}
$(MAKE) -C ${distdir} mpfr
tar -xJf ${distdir}/mpfr-${mpfr_version}.tar.xz -C ${srcdir}
mv ${srcdir}/mpfr-${mpfr_version} ${srcdir}/mpfr
$(srcdir)/mpfr: | $(srcdir)
$(MAKE) -C $(distdir) mpfr
tar -xJf $(distdir)/mpfr-$(mpfr_version).tar.xz -C $(srcdir)
mv $(srcdir)/mpfr-$(mpfr_version) $(srcdir)/mpfr
${srcdir}/gmp: | ${srcdir}
$(MAKE) -C ${distdir} gmp
tar -xJf ${distdir}/gmp-${gmp_version}.tar.xz -C ${srcdir}
mv ${srcdir}/gmp-${gmp_version} ${srcdir}/gmp
$(srcdir)/gmp: | $(srcdir)
$(MAKE) -C $(distdir) gmp
tar -xJf $(distdir)/gmp-$(gmp_version).tar.xz -C $(srcdir)
mv $(srcdir)/gmp-$(gmp_version) $(srcdir)/gmp
${srcdir}/mpc: | ${srcdir}
$(MAKE) -C ${distdir} mpc
tar -xzf ${distdir}/mpc-${mpc_version}.tar.gz -C ${srcdir}
mv ${srcdir}/mpc-${mpc_version} ${srcdir}/mpc
$(srcdir)/mpc: | $(srcdir)
$(MAKE) -C $(distdir) mpc
tar -xzf $(distdir)/mpc-$(mpc_version).tar.gz -C $(srcdir)
mv $(srcdir)/mpc-$(mpc_version) $(srcdir)/mpc

View file

@ -1,9 +1,9 @@
# Makefile - hhl - /usr/src/toolchain/gcc-pass2
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
#
distname = gcc
objdirname = gcc-pass2
include toolchain.mk
objdir = $(global_objdir)/gcc-pass2
config_opts += --target=$(tgt)
config_opts += --with-sysroot=$(build)
config_opts += --enable-languages=c,c++

View file

@ -1,6 +1,6 @@
# Makefile - hhl - /usr/src/toolchain/glibc
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
#
distname = glibc
patches += glibc-2.31-fhs-1.patch
@ -16,14 +16,14 @@ config_opts += --disable-werror
config_opts += --enable-stack-protector=strong
config_opts += libc_cv_slibdir=/lib
ifeq (${arch},x86_64)
ifeq ($(arch),x86_64)
define makelinks
ln -sfv ../lib/ld-linux-x86-64.so.2 $(DESTDIR)/lib64
ln -sfv ../lib/ld-linux-x86-64.so.2 $(DESTDIR)/lib64/ld-lsb-x86-64.so.3
endef
else ifeq (${arch},armv7l)
else ifeq ($(arch),armv7l)
makelinks = ln -sfv ld-2.31.so $(DESTDIR)/lib/ld-linux.so.3
else ifeq (${arch},riscv64)
else ifeq ($(arch),riscv64)
makelinks = ln -sfv ../lib/ld-linux-riscv64-lp64d.so.1 $(DESTDIR)/lib64
endif
@ -36,18 +36,22 @@ define makelocales
$$(echo $${l} | cut -f 2 -d '.') $${l} --prefix=$(DESTDIR) ; done
endef
else
makelocales = $(MAKE) DESTDIR=$(DESTDIR) -C ${objdir} localedata/install-locales
makelocales = $(MAKE) DESTDIR=$(DESTDIR) -C $(objdir) localedata/install-locales
endif
define post_install
${makelinks}
install -d $(DESTDIR)/var/cache/nscd
install -m0644 ${srcdir}/nscd/nscd.conf $(DESTDIR)/etc
install -m0644 ${wkgdir}/etc/nsswitch.conf $(DESTDIR)/etc
install -m0644 ${wkgdir}/etc/ld.so.conf $(DESTDIR)/etc
${makelocales}
install -m0644 $(srcdir)/nscd/nscd.conf $(DESTDIR)/etc
install -m0644 $(wkgdir)/etc/nsswitch.conf $(DESTDIR)/etc
install -m0644 $(wkgdir)/etc/ld.so.conf $(DESTDIR)/etc
$(makelocales)
endef
include targets.mk
$(srcdir)/.dirstamp: | $(global_srcdir)
$(global_srcdir):
install -d $@

View file

@ -1,10 +1,10 @@
# Makefile - hhl - /usr/src/toolchain/linux-headers
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
#
distname = linux
config_tgt = ${objdir}/.configured
config_tgt = $(objdir)/.configured
include toolchain.mk
config_cmd = $(MAKE) -C ${srcdir} mrproper
config_cmd = $(MAKE) -C $(srcdir) mrproper
ifeq ($(arch), armv7l)
export ARCH=arm
else ifeq ($(arch), aarch64)
@ -14,14 +14,14 @@ export ARCH=riscv
else ifeq ($(arch), risv32)
export ARCH=riscv
endif
build_cmd = KBUILD_OUTPUT=${objdir} $(MAKE) -C ${srcdir} headers
build_cmd = KBUILD_OUTPUT=$(objdir) $(MAKE) -C $(srcdir) headers
define post_build
find ${objdir}/usr/include -name '.*' -delete
rm -rf ${objdir}/usr/include/Makefile || true
find $(objdir)/usr/include -name '.*' -delete
rm -rf $(objdir)/usr/include/Makefile || true
install -d $(build)/usr/include
endef
install_cmd = cp -r ${objdir}/usr/include/* $(build)/usr/include
clean_cmd = KBUILD_OUTPUT=${objdir} $(MAKE) -C ${srcdir} clean
distclean_cmd = KBUILD_OUTPUT=${objdir} $(MAKE) -C ${srcdir} distclean
install_cmd = cp -r $(objdir)/usr/include/* $(build)/usr/include
clean_cmd = KBUILD_OUTPUT=$(objdir) $(MAKE) -C $(srcdir) clean
distclean_cmd = KBUILD_OUTPUT=$(objdir) $(MAKE) -C $(srcdir) distclean
include targets.mk

View file

@ -3,7 +3,7 @@
#
include ../../config.mk
progname = paxtar
bindir = /toolchain/bin
bindir = $(tooldir)/bin
src = $(basedir)/world/bin/pax/src
cflags += -O2
@ -13,10 +13,9 @@ cflags += -fstack-protector-strong
cflags += -Wall
cflags += -fwrapv
objdir ?= ${global_objdir}/${progname}
srcs += $(wildcard ${src}/*.c)
objs += $(patsubst ${src}/%.c,${objdir}/%.o,${srcs})
hdrs += $(wildcard ${src}/*.h)
srcs += $(wildcard $(src)/*.c)
objs += $(patsubst $(src)/%.c,$(objdir)/%.o,$(srcs))
hdrs += $(wildcard $(src)/*.h)
include world.mk
install: $(bindir)/$(progname)

View file

@ -5,17 +5,17 @@ distname = perl
export BUILD_ZLIB = False
export BUILD_BZIP2 = 0
include toolchain.mk
config_opts = -des
config_opts += -Dmksymlinks
config_opts += -Dprefix=/toolchain
config_opts += -Dprefix=$(tooldir)
config_opts += -Dvendorprefix=/usr
config_opts += -Dman1dir=/toolchain/share/man/man1
config_opts += -Dman3dir=/toolchain/share/man/man3
config_opts += -Dman1dir=$(tooldir)/share/man/man1
config_opts += -Dman3dir=$(tooldir)/share/man/man3
config_opts += -Duseshrplib
config_opts += -Dusethreads
include toolchain.mk
config_cmd = cd $(objdir) && $(srcdir)/Configure $(config_opts)
include targets.mk