# misc 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:=	isspace.S\
		isalnum.S\
		isalpha.S\
		isascii.S\
		iscntrl.S\
		iscsym.S\
		iscsymf.S\
		isdigit.S\
		islower.S\
		isupper.S\
		isxdigit.S

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

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

LIBNAME:=$(INTDIR)/misc.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)/misc.a $(OBJFILES)
	@ar tv $(INTDIR)/misc.a > $(INTDIR)/misc.lst

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


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

SRCFILES_X:=$(SRCFILES:.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:%=misc/%) $(PROJ_FILES_LST) misc/Makefile include/ilibc_64/misc.h include/ilibc_64/misc.inc

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

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


