# test Makefile, clibc_16.lib
#ORIGIN = PWB
#ORIGIN_VER = 2.1.49
PROJ = CLIBC_16
#PROJFILE = CLIBC_16.MAK

CONFIG=0
CONFIG=1

!IF $(CONFIG)==0
# near calls, no pointers, one function segment, debug info
DEBUG=1
CLIBC_16_FN_CALL=0
CLIBC_16_FN_CALL_FARCALL_SEG=2
CLIBC_16_FUNCTION_SEG_NAME=_TEXT
CLIBC_16_EXTERN_PTRS=0
CLIBC_16_EXTERN_PTRS_SEG_NAME=_DATA
!ELSE IF $(CONFIG)==1
# far calls, pointers, multiple function segments, debug info
DEBUG=1
CLIBC_16_FN_CALL=1
CLIBC_16_FN_CALL_FARCALL_SEG=1
CLIBC_16_FUNCTION_SEG_NAME=_CLIBC_16
CLIBC_16_EXTERN_PTRS=1
CLIBC_16_EXTERN_PTRS_SEG_NAME=_DATA
!ENDIF


BUILD_RESULTS=br.txt
RUNFLAGS=
CVFLAGS=
LIBS=
LLIBS_G="c:\dev\shared~1\lib\"
LLIBS_D=clibcd16.lib
LLIBS_R=clibc_16.lib
RT_OBJS=
DEF_FILE=


CC  = cl
CFLAGS_G  = /W2 /G2 /Ic:\dev\shared~1\include /BATCH /Fc
CFLAGS_D  = /f- /Od /FPi87 /Zi /Gs /DDEBUG=1
CFLAGS_R  = /f- /Ot /Ol /Og /Oe /Oi /Gs /DDEBUG=0

ASM  = ml
AFLAGS_G  = /W2 /WX /Ic:\dev\shared~1\include /Ic:\c700\proj\clibc_16
AFLAGS_D  = /Sa /Sg /Zi /Fl /DDEBUG=1
AFLAGS_R  = /DDEBUG=0 /nologo
MAPFILE_D  = $(PROJ).map
MAPFILE_R  = $(PROJ).map

!IF $(CLIBC_16_FN_CALL)==1
CFLAGS_G=$(CFLAGS_G) /AM
!ELSE
CFLAGS_G=$(CFLAGS_G) /AS
!ENDIF


LFLAGS_G  = /NOI /NOE /STACK:30000 /BATCH /ONERROR:NOEXE
LFLAGS_D  = /CO /MAP:FULL /FAR /NOPACKC
LFLAGS_R  = /MAP:FULL /FAR /NOPACKC
LINKER	= link
ILINK  = ilink
LRF  = echo > NUL
ILFLAGS  = /a /e

FILES=	 main.c\
	 testmod.asm

OBJS =	 main.obj\
	 testmod.obj

all: $(PROJ).exe

.SUFFIXES:
.SUFFIXES:
.SUFFIXES: .obj .c .asm

clean :
    erase *.obj
    erase *.exe
    erase *.lst
    erase *.map
    erase *.rsp
    erase *.bak
    erase *.txt

$(PROJ).exe : $(OBJS)
!IF $(DEBUG)
	$(LRF) @<<$(PROJ).lrf
$(RT_OBJS: = +^
) $(OBJS: = +^
)
$@
$(MAPFILE_D)
$(LIBS: = +^
) +
$(LLIBS_G: = +^
) +
$(LLIBS_D: = +^
)
$(DEF_FILE) $(LFLAGS_G) $(LFLAGS_D);
<<KEEP
!ELSE
	$(LRF) @<<$(PROJ).lrf
$(RT_OBJS: = +^
) $(OBJS: = +^
)
$@
$(MAPFILE_R)
$(LIBS: = +^
) +
$(LLIBS_G: = +^
) +
$(LLIBS_R: = +^
)
$(DEF_FILE) $(LFLAGS_G) $(LFLAGS_R);
<<KEEP
!ENDIF
	$(LINKER) @$(PROJ).lrf

.c.obj :
!IF $(DEBUG)
	@$(CC) @<<$(PROJ).rsp
/c $(CFLAGS_G)
/DCLIBC_16_FN_CALL=$(CLIBC_16_FN_CALL)
/DCLIBC_16_FN_CALL_FARCALL_SEG=$(CLIBC_16_FN_CALL_FARCALL_SEG)
/DCLIBC_16_FUNCTION_SEG_NAME=$(CLIBC_16_FUNCTION_SEG_NAME)
/DCLIBC_16_EXTERN_PTRS=$(CLIBC_16_EXTERN_PTRS)
/DCLIBC_16_EXTERN_PTRS_SEG_NAME=$(CLIBC_16_EXTERN_PTRS_SEG_NAME)
$(CFLAGS_D) /Fo$@ $<
<<KEEP
!ELSE
	@$(CC) @<<$(PROJ).rsp
/c $(CFLAGS_G)
$(CFLAGS_R) /Fo$@ $<
<<KEEP
!ENDIF

.asm.obj :
!IF $(DEBUG)
	@$(ASM) @<<$(PROJ).rsp
/c
/DCLIBC_16_FN_CALL=$(CLIBC_16_FN_CALL)
/DCLIBC_16_FN_CALL_FARCALL_SEG=$(CLIBC_16_FN_CALL_FARCALL_SEG)
/DCLIBC_16_FUNCTION_SEG_NAME=$(CLIBC_16_FUNCTION_SEG_NAME)
/DCLIBC_16_EXTERN_PTRS=$(CLIBC_16_EXTERN_PTRS)
/DCLIBC_16_EXTERN_PTRS_SEG_NAME=$(CLIBC_16_EXTERN_PTRS_SEG_NAME)
$(AFLAGS_G) $(AFLAGS_D) /Fo$@ $<
<<KEEP
!ELSE
	@$(ASM) @<<$(PROJ).rsp
/c
/DCLIBC_16_FN_CALL=$(CLIBC_16_FN_CALL)
/DCLIBC_16_FN_CALL_FARCALL_SEG=$(CLIBC_16_FN_CALL_FARCALL_SEG)
/DCLIBC_16_FUNCTION_SEG_NAME=$(CLIBC_16_FUNCTION_SEG_NAME)
/DCLIBC_16_EXTERN_PTRS=$(CLIBC_16_EXTERN_PTRS)
/DCLIBC_16_EXTERN_PTRS_SEG_NAME=$(CLIBC_16_EXTERN_PTRS_SEG_NAME)
$(AFLAGS_G) $(AFLAGS_R) /Fo$@ $<
<<KEEP
!ENDIF

run: $(PROJ).exe
	$(PROJ).exe $(RUNFLAGS)

debug: $(PROJ).exe
	CV $(CVFLAGS) $(PROJ).exe $(RUNFLAGS)
