From: Mike Lowis Date: Wed, 21 Sep 2016 15:35:57 +0000 (-0400) Subject: Updated to allow building with or without a bootstrapped crosscompiler X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=1a3e7576ae144bca13337e4caa4b739b51495d96;p=proto%2Falbase.git Updated to allow building with or without a bootstrapped crosscompiler --- diff --git a/.gitignore b/.gitignore index 33ae8121..76e240ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ tags cscope.out project.vim +build/ +stage1.tar.xz diff --git a/Makefile b/Makefile index b2fa6b95..48de21bd 100644 --- a/Makefile +++ b/Makefile @@ -5,8 +5,7 @@ ARCH = x86_64 # tools -REALCC = gcc -CC = $(BINDIR)/musl-gcc +CC = cc LD = $(CC) AR = ar @@ -43,10 +42,18 @@ DIRS = $(BUILDDIR) $(BINDIR) $(LIBDIR) $(OBJDIR) \ $(BUILDDIR)/tmp \ $(BUILDDIR)/var +# optionally override settings +-include config.mk + #------------------------------------------------------------------------------ # Build Rules #------------------------------------------------------------------------------ -include source/musl/Rules.mk +# TODO: Determine if this is needed anymore now that we have a musl-based cross compiler +#include source/musl/Rules.mk +# +# TODO: Fix an issue where libcurl.a is refusing to build for some reason +#include source/curl/Rules.mk + include source/Rules.mk include source/ubase/Rules.mk include source/sbase/Rules.mk @@ -55,7 +62,6 @@ include source/shadow/Rules.mk include source/smdev/Rules.mk include source/sdhcp/Rules.mk include source/iproute2/Rules.mk -include source/curl/Rules.mk include source/kernel/Rules.mk include etc/Rules.mk diff --git a/README.md b/README.md index e69de29b..3417f3d3 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,16 @@ +# ALBase + +This is an experimental Linux distro with a focus on simplicity and efficiency. +The goals of the project are as follows: + +* No dynamically linked executables in the base +* Link against musl instead of glibc +* No systemd or any of it's components +* No DBus or any of it's components +* As little GNU code as possible + +## Building + + # Optional: build the musl-based cross compiler and use that for the build + ./bootstrap.sh + make stage1 diff --git a/bootstrap.sh b/bootstrap.sh index 0098b220..138bd9fb 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -12,3 +12,9 @@ if [ ! -d musl-cross-make/stage2 ]; then make all install make clean fi +if [ ! -f config.mk ]; then + echo 'export PATH := $(PWD)/musl-corss-make/stage2/bin:$(PATH)' >> config.mk + echo 'CC = x86_64-linux-musl-gcc' >> config.mk + echo 'LD = $(CC)' >> config.mk + echo 'AR = x86_64-linux-musl-ar' >> config.mk +fi diff --git a/source/Rules.mk b/source/Rules.mk index 394d5ea9..7fee087a 100644 --- a/source/Rules.mk +++ b/source/Rules.mk @@ -12,5 +12,5 @@ login: $(BINDIR)/login dmesg: $(BINDIR)/dmesg mount: $(BINDIR)/mount -$(BINDIR)/%: $(SRC_SUBDIR)/%.c $(CC) - $(BUILD) +$(BINDIR)/%: $(SRC_SUBDIR)/%.c + $(BUILD) -lcrypt diff --git a/source/curl/Rules.mk b/source/curl/Rules.mk index 05dd2064..302fb914 100644 --- a/source/curl/Rules.mk +++ b/source/curl/Rules.mk @@ -22,5 +22,5 @@ $(BINDIR)/curl: $(CURL_OBJS) $(CURL_LIB) $(CURL_LIB): $(CURL_LIB_OBJS) -$(CURL_OBJDIR)/%.o: $(CURL_SUBDIR)/%.c $(CC) +$(CURL_OBJDIR)/%.o: $(CURL_SUBDIR)/%.c $(CC) $(CURL_INCS) $(CURL_DEFS) $(CURL_CFLAGS) -c -o $@ $< diff --git a/source/iproute2/Rules.mk b/source/iproute2/Rules.mk index d0eabd5a..f14f4d36 100644 --- a/source/iproute2/Rules.mk +++ b/source/iproute2/Rules.mk @@ -39,5 +39,5 @@ $(BINDIR)/%: $(IPROUTE2_OBJDIR)/%.a: $(AR) $(ARFLAGS) $@ $^ -$(IPROUTE2_OBJDIR)/%.o: $(IPROUTE2_SUBDIR)/%.c $(CC) +$(IPROUTE2_OBJDIR)/%.o: $(IPROUTE2_SUBDIR)/%.c $(CC) $(IPROUTE2_FLAGS) $(IPROUTE2_INCS) -c -o $@ $< diff --git a/source/sbase/Rules.mk b/source/sbase/Rules.mk index 143c5bee..cc394402 100644 --- a/source/sbase/Rules.mk +++ b/source/sbase/Rules.mk @@ -174,14 +174,14 @@ sbase: $(SBASE_BINS) $(SBASE_LIBUTIL): $(SBASE_LIBUTIL_OBJS) $(SBASE_ARCHIVE) -$(SBASE_OBJDIR)/%.o: $(SBASE_SUBDIR)/libutil/%.c $(CC) +$(SBASE_OBJDIR)/%.o: $(SBASE_SUBDIR)/libutil/%.c $(SBASE_COMPILE) $(SBASE_LIBUTF): $(SBASE_LIBUTF_OBJS) $(SBASE_ARCHIVE) -$(SBASE_OBJDIR)/%.o: $(SBASE_SUBDIR)/libutf/%.c $(CC) +$(SBASE_OBJDIR)/%.o: $(SBASE_SUBDIR)/libutf/%.c $(SBASE_COMPILE) -$(BINDIR)/%: $(SBASE_SUBDIR)/%.c $(SBASE_LIBUTIL) $(SBASE_LIBUTF) $(CC) +$(BINDIR)/%: $(SBASE_SUBDIR)/%.c $(SBASE_LIBUTIL) $(SBASE_LIBUTF) $(SBASE_BUILD) $(SBASE_LIBUTIL) $(SBASE_LIBUTF) diff --git a/source/sdhcp/Rules.mk b/source/sdhcp/Rules.mk index 0b08b476..52f8873d 100644 --- a/source/sdhcp/Rules.mk +++ b/source/sdhcp/Rules.mk @@ -15,6 +15,6 @@ sdhcp: $(BINDIR)/sdhcp $(BINDIR)/sdhcp: $(SDHCP_OBJS) $(CC) -o $@ $^ -$(SDHCP_OBJDIR)/%.o: $(SDHCP_SUBDIR)/%.c $(CC) +$(SDHCP_OBJDIR)/%.o: $(SDHCP_SUBDIR)/%.c $(CC) $(SDHCP_INCS) $(SDHCP_DEFS) -c -o $@ $< diff --git a/source/sh/Rules.mk b/source/sh/Rules.mk index 8212a0d8..8a00d1e5 100644 --- a/source/sh/Rules.mk +++ b/source/sh/Rules.mk @@ -93,8 +93,8 @@ MKSH_DEFINES = \ $(MKSH_BIN): $(BINDIR)/$(MKSH_BIN) -$(BINDIR)/$(MKSH_BIN): $(MKSH_OBJS) $(CC) +$(BINDIR)/$(MKSH_BIN): $(MKSH_OBJS) $(LD) -o $@ $(MKSH_OBJS) $(LDFLAGS) -$(MKSH_OBJDIR)/%.o: $(MKSH_SUBDIR)/%.c $(CC) +$(MKSH_OBJDIR)/%.o: $(MKSH_SUBDIR)/%.c $(CC) $(CFLAGS) -I$(MKSH_SUBDIR) $(MKSH_DEFINES) -c -o $@ $^ diff --git a/source/shadow/Rules.mk b/source/shadow/Rules.mk index 26a950a2..c5090824 100644 --- a/source/shadow/Rules.mk +++ b/source/shadow/Rules.mk @@ -33,10 +33,10 @@ $(SHADOW_LIB): $(SHADOW_LIB_OBJS) $(SHADOW_LIBMISC): $(SHADOW_LIBMISC_OBJS) $(BINDIR)/%: $(SHADOW_SUBDIR)/src/%.c $(SHADOW_LIBMISC) $(SHADOW_LIB) - $(CC) -I$(SHADOW_SUBDIR) -I$(SHADOW_SUBDIR)/libmisc -I$(SHADOW_SUBDIR)/lib -DHAVE_CONFIG_H -O2 -o $@ $^ + $(CC) -I$(SHADOW_SUBDIR) -I$(SHADOW_SUBDIR)/libmisc -I$(SHADOW_SUBDIR)/lib -DHAVE_CONFIG_H -O2 -o $@ $^ -lcrypt $(SHADOW_OBJDIR)/%.a: $(AR) $(ARFLAGS) $@ $^ -$(SHADOW_OBJDIR)/%.o: $(SHADOW_SUBDIR)/%.c $(CC) +$(SHADOW_OBJDIR)/%.o: $(SHADOW_SUBDIR)/%.c $(CC) -I$(SHADOW_SUBDIR) -I$(SHADOW_SUBDIR)/libmisc -I$(SHADOW_SUBDIR)/lib -DHAVE_CONFIG_H -O2 -c -o $@ $< diff --git a/source/smdev/Rules.mk b/source/smdev/Rules.mk index 8038c274..b19daa86 100644 --- a/source/smdev/Rules.mk +++ b/source/smdev/Rules.mk @@ -15,6 +15,6 @@ smdev: $(BINDIR)/smdev $(BINDIR)/smdev: $(SMDEV_OBJS) $(CC) -o $@ $^ -$(SMDEV_OBJDIR)/%.o: $(SMDEV_SUBDIR)/%.c $(CC) +$(SMDEV_OBJDIR)/%.o: $(SMDEV_SUBDIR)/%.c $(CC) $(SMDEV_INCS) $(SMDEV_DEFS) -c -o $@ $< diff --git a/source/ubase/Rules.mk b/source/ubase/Rules.mk index f818853b..e03dd65e 100644 --- a/source/ubase/Rules.mk +++ b/source/ubase/Rules.mk @@ -85,8 +85,8 @@ ubase: $(UBASE_BINS) $(UBASE_LIBUTIL): $(UBASE_LIBUTIL_OBJS) $(UBASE_ARCHIVE) -$(UBASE_OBJDIR)/%.o: $(UBASE_SUBDIR)/libutil/%.c $(CC) +$(UBASE_OBJDIR)/%.o: $(UBASE_SUBDIR)/libutil/%.c $(UBASE_COMPILE) -$(BINDIR)/%: $(UBASE_SUBDIR)/%.c $(UBASE_LIBUTIL) $(CC) - $(UBASE_BUILD) $(UBASE_LIBUTIL) +$(BINDIR)/%: $(UBASE_SUBDIR)/%.c $(UBASE_LIBUTIL) + $(UBASE_BUILD) $(UBASE_LIBUTIL) -lcrypt