#
#
#       Standard MAKEFILE for executables [WATCOM Make 3.2]
#
#


.silent
.erase

#-----------------------------------------------------------------------------
# Files
#-----------------------------------------------------------------------------
MIMPATH = mimic
MIDPATH = midass
SYSTEMDIR = wat

dest = example
objects = $(dest).obj vl_mat4.obj vl_quat.obj vl_vec2.obj vl_vec3.obj &
          vl_vec4.obj vl_vp.obj
ALL_OBJS = $(objects)
headers =
libpath = mimic
libname = mimic.lib

#-----------------------------------------------------------------------------
# Conditions
#-----------------------------------------------------------------------------
#debug = n                       # compile with debug option?
config = debug
config = release

#-----------------------------------------------------------------------------
# Options
#-----------------------------------------------------------------------------
!ifeq config debug
aopts = /ml /m5 /t /Zi          # assembler options
dopts = /d2                     # debug options
!else
aopts = /ml /m5 /t
dopts = /oneatx /s
!endif

# en            emit routine names in code segment
# fpi87         inline 80x87 instructions
# fp5           optimize floating-point for Pentium
# 5r            Pentium register calling convention
# zq            operate quietly
# w4            warning level 4
# mf            flat memory model
!ifeq config release
copts = /en /fpi87 /fp5 /5r /w1 /zq /mf /dVL_ROW_ORIENT
!else
copts = /en /fpi87 /fp5 /5r /w4 /zq /mf /dVL_ROW_ORIENT
!endif
libopts = /b /c

#-----------------------------------------------------------------------------
# Compile methods
#-----------------------------------------------------------------------------
cpp_compile = wpp386 $(copts) $(dopts) $<
c_compile   = wcc386 $(copts) $(dopts) $<
asm_compile = tasm $(aopts) $<
#asm_compile = c:\nasm\nasm -f win32 -o $[*.obj $<

#-----------------------------------------------------------------------------
# Main stuff
#-----------------------------------------------------------------------------
.cpp.obj:
        echo Compiling $[*.cpp
        $(cpp_compile)

.c.obj:
        echo Compiling $[*.c
        $(c_compile)

.asm.obj:
        echo Assembling $[*.asm
        $(asm_compile)

.obj.exe:
        echo Linking $[*.obj
        wlink @$(dest).lnk

#-----------------------------------------------------------------------------
# Dependencies
#-----------------------------------------------------------------------------
$(dest).exe: $(dest).lnk
$(dest).exe: makefile
$(dest).exe: $(ALL_OBJS) $(headers)
#$(dest).exe: $(libpath)\$(libname)


$(dest).lnk: makefile
        @echo Making $@
        @%create $(dest).lnk
        @%write $(dest).lnk system      dos4g
        @%write $(dest).lnk option      quiet
        @%write $(dest).lnk option      caseexact
        @%write $(dest).lnk option      stack=65536
!ifeq config debug
        @%write $(dest).lnk debug       all
!endif
        @%write $(dest).lnk name        $(dest)
        @%write $(dest).lnk file        {$(ALL_OBJS)}


vl_mat4.obj: vl_mat4.cpp vl_mat4.h vl_main.h vl_vec4.h vl_quat.h makefile
vl_quat.obj: vl_mat4.h vl_main.h vl_vec4.h vl_quat.h makefile
vl_vec2.obj: vl_vec2.h vl_vec2.cpp vl_main.h makefile
vl_vec3.obj: vl_vec3.h vl_vec3.cpp vl_main.h makefile
vl_vec4.obj: vl_vec4.h vl_vec4.cpp vl_vec3.h vl_main.h makefile
vl_vp.obj: vl_mat4.h vl_vec4.h vl_vp.cpp vl_main.h makefile

#-----------------------------------------------------------------------------
# End words
#-----------------------------------------------------------------------------
.after
!ifeq config debug
        @echo *** DEBUG version ***
!else
        @echo *** RELEASE version ***
!endif