# string Makefile, ilibc_64.a
# Byron Young, 2002

SHELL=/bin/sh

ifndef DIR_PROJ
DIR_PROJ:=..
endif

include  $(DIR_PROJ)/Makefile.g

# Macros passed to Makefile via Makefile.g
#  CC			C compiler to use/ that calls the assembler..
#  CFLAGS		C compiler flags.
#  DIR_C_INCLUDE	
#  DIR_ASM_INCLUDE
#  DIR_LIB
#  ILIBC_64_EXTERN_PTRS
#
# Macros passed to Makefile via command line
#  DIR_PROJ		Project root directory.
#  DEBUG		building debug or release version.
#  DIR_CURRENT		Current directory.

SRCFILES:= 	strcpy.S\
		strlen.S\
		skipsp.S\
		skiptosp.S\
		strcat.S\
		strcmp.S\
		strchr.S\
		strstr.S\
		strrchr.S\
		stricmp.S\
		skipspr.S\
		skiptosr.S\
		strlwr.S\
		strupr.S\
		strncpy.S\
		strncat.S\
		memmove.S\
		memset.S\
		memcmp.S

OBJFILESA:=$(SRCFILES:.S=.o)
PROJ_FILES_LST_A:=$(SRCFILES:.S=.lst)

ifeq ($(DEBUG),$(DEBUG_YES))
OBJFILES:=$(OBJFILESA:%=../debug/string/%)
INTDIR:=../debug/string
PROJ_FILES_LST:=$(PROJ_FILES_LST_A:%=debug/string/%)
else
OBJFILES:=$(OBJFILESA:%=../release/string/%)
INTDIR:=../release/string
PROJ_FILES_LST:=$(PROJ_FILES_LST_A:%=release/string/%)
endif

LIBNAME:=$(INTDIR)/string.a

GLOBAL_DEFINES:= -DDEBUG=$(DEBUG)
ifdef ILIBC_64_PROCEDURE_SECTION_NAME
 GLOBAL_DEFINES+=-DILIBC_64_PROCEDURE_SECTION_NAME=$(ILIBC_64_PROCEDURE_SECTION_NAME)
endif
ifdef ILIBC_64_EXTERN_PTRS_SECTION_NAME
 GLOBAL_DEFINES+=-DILIBC_64_EXTERN_PTRS_SECTION_NAME=$(ILIBC_64_EXTERN_PTRS_SECTION_NAME)
endif
GLOBAL_DEFINES+=-DILIBC_64_EXTERN_PTRS=$(ILIBC_64_EXTERN_PTRS)

CFLAGS+=-I$(DIR_PROJ)/include
all : $(LIBNAME)

# build library
$(LIBNAME) : $(OBJFILES)
	@echo Creating $(LIBNAME)
	@rm -f $(LIBNAME)
	@ar -src $(INTDIR)/string.a $(OBJFILES)
	@ar tv $(INTDIR)/string.a > $(INTDIR)/string.lst

# build descriptor block
$(OBJFILES) : $(SRCFILES) Makefile
	$(CC) $(CFLAGS) $(GLOBAL_DEFINES) -c $(@F:.o=.S) -o $@ > $(INTDIR)/$(@F:.o=.lst)


clean:
	@echo Cleaning string directory
	@rm -f *~
	@echo cleaning $(INTDIR) directory
	@rm -rf $(INTDIR)
	@mkdir $(INTDIR)

SRCFILES_X:=$(SRCFILES:.S= )
#ABC=strcat.S
#SRCFILES_X:=$(ABC:.S= )
mktmplate:
#	@for xfile in $(SRCFILES); do echo $(DIR_PROJ)/template.S $$xfile; done
	for xfile in $(SRCFILES_X); do sed s/template/$$xfile/g $(DIR_PROJ)/template.S> $$xfile.S; done


PROJ_FILES=$(SRCFILES:%=string/%) $(PROJ_FILES_LST) string/Makefile include/ilibc_64/string.h include/ilibc_64/string.inc

setup:
	@echo PF="\"""$$"PF $(PROJ_FILES)"\"" >> ../setup.sh

echo_vars :
	@echo $(GLOBAL_DEFINES)
	@echo $(SRCFILES)
	@echo $(PROJ_FILES)


