summaryrefslogtreecommitdiff
path: root/libc/Makefile
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-06-05 13:47:01 -0500
committerDanny Holman <dholman@gymli.org>2024-06-05 13:47:01 -0500
commit5db066eb5184cc45e7634838b5b0b8c67cb2ae25 (patch)
tree9201570bb47cf57cd41f7efc8bf764b3ec70b802 /libc/Makefile
parente5aff92e72a0d0e1c18ddaab80b2efe370f04588 (diff)
libc: create a skeleton libc and build targetsHEADmaster
Create build targets for a skeleton libc that only includes enough functionality to get a cross compiler running. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'libc/Makefile')
-rw-r--r--libc/Makefile70
1 files changed, 70 insertions, 0 deletions
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)