SRC_C += strncpy.c strpbrk.c strrchr.c strspn.c strstr.c strtok.c
SRC_C += memchr.c memcmp.c memcpy.c memset.c memmove.c
-SRC_C += termcap.c
+SRC_CT += termcap.c
SRC_CURS = $(shell find curses -name '*.c')
+SRC_LM = vfscanf.c vfprintf.c
+OBJ_LM = vfscanf-libm.o vfprintf-libm.o
+
OBJ_C = $(SRC_C:.c=.o)
OBJ_CURS = $(SRC_CURS:.c=.o)
+OBJ_CT = $(SRC_CT:.c=.o)
OBJ_HARD = $(SRC_HARD:.c=.o)
OBJ_ALL = $(OBJ_ASM) $(OBJ_C) $(OBJ_HARD)
-all: syslib$(PLATFORM).lib liberror.txt $(OBJ_CRT0) curses$(PLATFORM).lib
+all: syslib$(PLATFORM).lib liberror.txt $(OBJ_CRT0) curses$(PLATFORM).lib termcap$(PLATFORM).lib m$(PLATFORM).lib
$(OBJ_ALL): $(KRN_HEADERS_COPY)
curses$(PLATFORM).lib: $(OBJ_CURS)
$(AR) -c curses$(PLATFORM).lib $(OBJ_CURS)
+termcap$(PLATFORM).lib: $(OBJ_CT)
+ $(AR) -c termcap$(PLATFORM).lib $(OBJ_CT)
+
+m$(PLATFORM).lib: $(OBJ_LM)
+ $(AR) -c m$(PLATFORM).lib $(OBJ_LM)
+
$(OBJ_ASM):%.o: %.s
$(ASM) $(ASM_OPT) $@ $(@:.o=.s)
$(OBJ_C):%.o: %.c
$(CC) $(CC_OPT) $(@:.o=.c)
+$(OBJ_CT):%.o: %.c
+ $(CC) $(CC_OPT) $(@:.o=.c)
+
$(OBJ_CURS):%.o: %.c
$(CC) $(CC_OPT) $(@:.o=.c) -o $@
+vfscanf-libm.o: vfscanf.c
+ $(CC) $(CC_OPT) -DBUILD_LIBM $< -o $@
+
+vfprintf-libm.o: vfscanf.c
+ $(CC) $(CC_OPT) -DBUILD_LIBM $< -o $@
+
$(OBJ_HARD):%.o: %.c
$(CC) $(CC_NOOPT) $(@:.o=.c)