include ../../../far/makefile_gcc_common

OBJDIR = ./obj.$(DIRBIT).$(DIRSUFFIX)
OBJDIRW = $(OBJDIR)/w
REOBJDIR = \.\/obj\.$(DIRBIT)\.$(DIRSUFFIX)\/
DLLDIR = ..
DLLNAME = libCRT.a
ifeq ($(DIRBIT),64)
DLLNAME = libCRT64.a
endif
DLLFULLNAME = $(DLLDIR)/$(DLLNAME)
SRCS = memchr.cpp \
memset.cpp \
memcpy.cpp \
memcmp.cpp \
memicmp.cpp \
memmove.cpp \
strpbrk.cpp \
strstr.cpp \
strchr.cpp \
strcpy.cpp \
strcspn.cpp \
strdup.cpp \
strncat.cpp \
strncmp.cpp \
strncpy.cpp \
strrchr.cpp \
strtok.cpp \
strtol.cpp \
i64toa.cpp \
delete.cpp \
delete_array.cpp \
free.cpp \
malloc.cpp \
calloc.cpp \
new.cpp \
new_array.cpp \
realloc.cpp \
swab.cpp

SRCSW = i64toa.cpp \
memset.cpp \
memcpy.cpp \
memmove.cpp \
strchr.cpp \
strcpy.cpp \
strdup.cpp \
strncat.cpp \
strncmp.cpp \
strncpy.cpp \
strrchr.cpp \
strstr.cpp \
strtok.cpp \
strtol.cpp

CXXFLAGS = -m$(DIRBIT) -Os -funsigned-char -fomit-frame-pointer -fstrict-aliasing -fno-rtti -fno-exceptions

OBJS = $(patsubst %.cpp,$(OBJDIR)/%.o,$(filter %.cpp,$(SRCS)))
OBJSW = $(patsubst %.cpp,$(OBJDIRW)/%_w.o,$(filter %.cpp,$(SRCSW)))

all libcrt: $(DLLFULLNAME)

$(OBJDIR)/%.o: %.cpp
	@echo compiling $<
	@-$(MKDIR) $(@D)
	@$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIRW)/%_w.o: %.cpp
	@echo compiling $<
	@-$(MKDIR) $(@D)
	@$(CXX) $(CXXFLAGS) -D UNICODE -D _UNICODE -c -o $@ $<


$(DLLFULLNAME): $(OBJS) $(OBJSW)
	@echo linking $@
	@-$(MKDIR) $(@D)
	@$(AR) rc $(DLLNAME) $(OBJS) $(OBJSW)
	@$(RANLIB) $(DLLNAME)
	@$(MV) $(DLLNAME) $(DLLDIR)

$(OBJS) $(OBJSW): crt.hpp

clean:
	@$(RM) -r $(OBJDIRW) $(OBJDIR)/*
