From 5db066eb5184cc45e7634838b5b0b8c67cb2ae25 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Wed, 5 Jun 2024 13:47:01 -0500 Subject: libc: create a skeleton libc and build targets Create build targets for a skeleton libc that only includes enough functionality to get a cross compiler running. Signed-off-by: Danny Holman --- libc/Makefile | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 libc/Makefile (limited to 'libc/Makefile') diff --git a/libc/Makefile b/libc/Makefile new file mode 100644 index 0000000..cc7fa8d --- /dev/null +++ b/libc/Makefile @@ -0,0 +1,70 @@ +INCLUDE?=$(SYS_INCLUDE) +CFLAGS?=-fPIC +LDFLAGS?=-nostdlib -shared +LIBS?=-lgcc + +# -- Do not edit below this line -- + +CC:=i686-boxos-gcc +VERSION:="$(shell git describe --abbrev=4 --dirty --always --tags)" +INCLUDE:=$(INCLUDE) +CFLAGS:=$(CFLAGS) -Wall -Wextra -DVERSION=\"$(VERSION)\" -ggdb +LDFLAGS:=$(LDFLAGS) +LIBS:=$(LIBS) + +ARCHDIR=arch/$(ARCH) + +include $(ARCHDIR)/make.config + +CFLAGS:=$(CFLAGS) $(LIBC_ARCH_CFLAGS) +LDFLAGS:=$(LDFLAGS) $(LIBC_ARCH_LDFLAGS) +LIBS:=$(LIBS) $(LIBC_ARCH_LIBS) + +LIBC=libc.so + +LIBC_OBJS=$(LIBC_ARCH_OBJS) \ + init.o \ + unistd.o \ + +OBJS=$(ARCHDIR)/crti.o \ + $(LIBC_OBJS) \ + $(ARCHDIR)/crtn.o \ + +LINK_LIST=$(LDFLAGS) \ + $(OBJS) \ + $(LIBS) \ + +.PHONY: all clean install install-headers +.SUFFIXES: .o .c .s + +all: $(LIBC) + +$(LIBC): $(OBJS) + @$(CC) -o $@ $(LINK_LIST) + @echo [LD] $@ + +.c.o: + @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE) + @echo [CC] $@ + +.s.o: + @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE) + @echo [AS] $@ + +install: install-headers + install -m 755 $(LIBC) $(SYS_ROOT)/lib + +install-headers: + install -d $(SYS_ROOT)/usr/include + install -d $(SYS_ROOT)/usr/include/sys + install -d $(SYS_ROOT)/usr/include/arpa + for f in $(ROOT)/include/*; do install -m 644 "$$f" $(SYS_ROOT)/usr/include/; done + for f in $(ROOT)/include/sys/*; do install -m 644 "$$f" $(SYS_ROOT)/usr/include/sys/; done + for f in $(ROOT)/include/arpa/*; do install -m 644 "$$f" $(SYS_ROOT)/usr/include/arpa/; done + +clean: + $(RM) $(LIBC) + $(RM) $(OBJS) *.o */*.o */*/*.o + $(RM) $(OBJS:.o=.d) *.d */*.d */*/*.d + +-include $(OBJS:.o=.d) -- cgit v1.2.3