diff options
Diffstat (limited to 'libc/Makefile')
-rw-r--r-- | libc/Makefile | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/libc/Makefile b/libc/Makefile new file mode 100644 index 0000000..6942b48 --- /dev/null +++ b/libc/Makefile @@ -0,0 +1,104 @@ +SHELL := /bin/bash -o pipefail + +AS := $(DEVKITARM)/bin/arm-none-eabi-as +ASFLAGS := -mcpu=arm7tdmi + +CC1 := ../old_agbcc +CFLAGS := -O2 -fno-builtin + +CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp +CPPFLAGS := -I ../ginclude -I include -nostdinc -undef \ +-DABORT_PROVIDED -DHAVE_GETTIMEOFDAY -D__thumb__ -DARM_RDI_MONITOR \ +-D__STDC__ -D__GNUC__ -DINTERNAL_NEWLIB -D__USER_LABEL_PREFIX__= + +AR := ar + +# Clear the default suffixes. +.SUFFIXES: + +# Secondary expansion is required for dependency variables in object rules. +.SECONDEXPANSION: + +.PHONY: all clean + +C_SRCS := $(shell find -iname "*.c" -a ! -iname "mallocr.c") +C_INTRS := $(C_SRCS:%.c=%.i) +C_OBJS := $(C_SRCS:%.c=%.o) \ +stdlib/mallocr.o stdlib/freer.o stdlib/reallocr.o stdlib/callocr.o \ +stdlib/cfreer.o stdlib/malignr.o stdlib/vallocr.o stdlib/pvallocr.o \ +stdlib/mallinfor.o stdlib/mallstatsr.o stdlib/msizer.o stdlib/malloptr.o \ +stdio/vfiprintf.o + +S_SRCS := arm/setjmp.S arm/trap.S +S_OBJS := $(S_SRCS:%.S=%.o) + +OBJS := $(C_OBJS) $(S_OBJS) + +all: libc.a + @: + +clean: + rm -f $(OBJS) + rm -f $(C_OBJS:%.o=%.i) + rm -f $(C_OBJS:%.o=%.s) + rm -f $(S_OBJS:%.o=%.i) + rm -f libc.a + +PREPROCESS := $(CPP) $(CPPFLAGS) + +stdlib/mallocr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_MALLOC $< -o $@ + +stdlib/freer.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_FREE $< -o $@ + +stdlib/reallocr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_REALLOC $< -o $@ + +stdlib/callocr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_CALLOC $< -o $@ + +stdlib/cfreer.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_CFREE $< -o $@ + +stdlib/malignr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_MEMALIGN $< -o $@ + +stdlib/vallocr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_VALLOC $< -o $@ + +stdlib/pvallocr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_PVALLOC $< -o $@ + +stdlib/mallinfor.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_MALLINFO $< -o $@ + +stdlib/mallstatsr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_MALLOC_STATS $< -o $@ + +stdlib/msizer.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_MALLOC_USABLE_SIZE $< -o $@ + +stdlib/malloptr.i: stdlib/mallocr.c + $(PREPROCESS) -DDEFINE_MALLOPT $< -o $@ + +stdio/vfiprintf.i: stdio/vfprintf.c + $(PREPROCESS) -DINTEGER_ONLY $< -o $@ + +$(C_INTRS): %.i : %.c + $(PREPROCESS) $< -o $@ + +stdlib/mbtowc_r.o: CFLAGS := $(CFLAGS) -fshort-enums + +$(C_OBJS): %.o : %.i + @$(CC1) $(CFLAGS) $< -o $*.s + @printf ".text\n\t.align\t2, 0\n" >> $*.s + $(AS) $(ASFLAGS) -o $@ $*.s + +$(S_OBJS): %.o: %.s + @$(CPP) $(CPPFLAGS) $< -o $*.i + @printf ".text\n\t.align\t2, 0\n" >> $*.i + $(AS) $(ASFLAGS) -o $@ $*.i + +libc.a: $(OBJS) + $(AR) -rc libc.a $(OBJS) |