.SILENT:

# misc\misc.lib (clibc_16.lib) Makefile
# Byron Young
# 2002

# NMAKE 1.20
# ML 6.14

!IFNDEF DIR_PROJ
DIR_PROJ=..
!ENDIF

!INCLUDE $(DIR_PROJ)\Makefile.g

# Macros passed to Makefile via Makefile.g
#   ASM	    assembler to use
#   CC	    c compiler to use
#   AFLAGS_G	  global assembler flags
#   AFLAGS_D	  debug assembler flags
#   AFLAGS_R	  release assembler flags
#   CFLAGS_G	global c compiler flags
#   CFLAGS_D	debug c compiler flags
#   CFLAGS_R	release c compiler flags
#   DIR_C_INCLUDE
#   DIR_ASM_INCLUDE
#   DIRLIB
#   CLIBC_16_FN_CALL - near or far function calls
#   CLIBC_16_FN_CALL_FARCALL_SEG - combine method
#   CLIBC_16_FUNCTION_SEG - name of function code segment
#   CLIBC_16_EXTERN_PTRS - if generated pointers to functions
#   CLIBC_16_EXTERN_PTRS_SEG_NAME - data seg name for pointers

# Macros passed to Makefile via command line
#   DIR_PROJ - project root directory
#   DEBUG -  build debug, or release object files
#   DIR_CURRENT - current directory

# source file filenames
# AAABBBFO
# AAA letters, defining the function group
#	      str=string, mis=misc
# BBB digits, defining the function number within group
# F   digit, 0=normal call, 1=fastcall
# O   digit, 0=normal, 1=_sss, 2=_dss

# 000 isspace 2
# 001 isalnum 2
# 002 isalpha 2
# 003 isascii 2
# 004 iscntrl 2
# 005 iscsym 2
# 006 iscsymf 2
# 007 isdigit 2
# 008 islower 2
# 009 isupper 2
# 010 isxdigit 2

SRCFILES =	mis00000.asm\
		mis00010.asm\
		mis00100.asm\
		mis00110.asm\
		mis00200.asm\
		mis00210.asm\
		mis00300.asm\
		mis00310.asm\
		mis00400.asm\
		mis00410.asm\
		mis00500.asm\
		mis00510.asm\
		mis00600.asm\
		mis00610.asm\
		mis00700.asm\
		mis00710.asm\
		mis00800.asm\
		mis00810.asm\
		mis00900.asm\
		mis00910.asm\
		mis01000.asm\
		mis01010.asm





OBJFILESA=$(SRCFILES:.asm=.obj)

!IF $(DEBUG)==$(DEBUG_YES)
OBJFILES=..\debug\misc\$(OBJFILESA: = ..\debug\misc\)
INTDIR=..\debug\misc
!ELSE
OBJFILES=..\release\misc\$(OBJFILESA: = ..\release\misc\)
INTDIR=..\release\misc
!ENDIF

LIST_FILE = /Sa /Sc

LIBNAME=$(INTDIR)\misc.lib

MISC_DEPEND = Makefile misc.h misc.inc

#!IF $(CLIBC_16_FN_CALL_FARCALL_SEG)==$(CLIBC_16_FN_CALL_FARCALL_SEG_MULTIPLE)
#CLIBC_16_FUNCTION_SEG_NAME=MISC$(CLIBC_16_FUNCTION_SEG_NAME)
#!ENDIF

CLIBC_16_MODULE=MISC

GLOBAL_DEFINES=\
       /DDEBUG=$(DEBUG)\
       /DCLIBC_16_FN_CALL=$(CLIBC_16_FN_CALL)\
!IFDEF CLIBC_16_FN_CALL_FARCALL_SEG
       /DCLIBC_16_FN_CALL_FARCALL_SEG=$(CLIBC_16_FN_CALL_FARCALL_SEG)\
!ENDIF
       /DCLIBC_16_FUNCTION_SEG_NAME=$(CLIBC_16_FUNCTION_SEG_NAME)\
       /DCLIBC_16_EXTERN_PTRS=$(CLIBC_16_EXTERN_PTRS)\
!IFDEF CLIBC_16_EXTERN_PTRS_SEG_NAME
       /DCLIBC_16_EXTERN_PTRS_SEG_NAME=$(CLIBC_16_EXTERN_PTRS_SEG_NAME)\
!ENDIF
       /DCLIBC_16_MODULE=$(CLIBC_16_MODULE)


$(LIBNAME) : $(OBJFILES)
        echo Creating $(LIBNAME)
        del $(LIBNAME)
	LIB /NOL @<<lib.lrf
$(LIBNAME) +$(?: = &^
+)
$(LIBNAME:.lib=.lst);
<<
	rename $(LIBNAME) misc.lib
	if NOT EXIST $(DIR_C_INCLUDE) mkdir $(DIR_C_INCLUDE)
	echo Copying $(@B).h to $(DIR_C_INCLUDE)
	copy $(@B).h $(DIR_C_INCLUDE)
	echo Copying $(@B).inc to $(DIR_ASM_INCLUDE)
	copy $(@B).inc $(DIR_ASM_INCLUDE)

# build descriptor block
$(OBJFILES) : $(SRCFILES)
!IF $(DEBUG)==$(DEBUG_YES)
	$(ASM) @<<clcd16.lrf
/c $(AFLAGS_G) $(AFLAGS_D) $(GLOBAL_DEFINES) $(LIST_FILE) /Fl$(@R).lst /Fo$@ $(@B).asm
<<NOKEEP
!ELSE
	$(ASM) @<<clcr16.lrf
/c $(AFLAGS_G) $(AFLAGS_R) $(GLOBAL_DEFINES) $(LIST_FILE) /Fl$(@R).lst /Fo$@ $(@B).asm
<<NOKEEP
!ENDIF


$(INTDIR) : $(LIBNAME) $(MISC_DEPENDS)
    ECHO MISC_HEREEEEE

# clean psudotarget
clean:
    @erase *.obj
    @erase *.lst
    @erase *.bak
    @erase *.dbg
    @erase *.exe
    @erase *.lrf
    @deltree /Y ..\release\misc
    @deltree /Y ..\debug\misc

# misc notes
# to add a source file:
#    add the .asm name to SRCFILES
