# Microsoft NMAKE makefile for Windows Sample AutoCAD/ADS Programs
# Use "set CV=1" to turn on CodeView debugging
# Tested with Microsoft C/C++ 7.0 and the Microsoft Windows 3.1 Toolkit
#
# Use "mapsym <progname>" to create a .sym file that Dr. Watson
# can use to provide readable diagnostic info.  Add these lines
# to WIN.INI to see incorrect parameters sent to Windows.
#
#       [Dr. Watson]
#       showinfo=paramlog
#
#     Compiler flags
# -Zi => create object file for use with CodeView
# -Od => disable code rearrangement optimization for debugger
# -AL => Large model (large code, large data) 
# -G2 => use 80286 instructions
# -Gs => turn off stack checking
# -Zp => pack structure data on byte boundries
# -Zl => no default libraries
# -W2 => 2nd level warning messages
# -FPi87 => inline 80x87 code
# -D  => Define variable for #ifdef tests
#     Link flags
# /F /PACKC /PACKD => speed optimization for 286/386
# /CO => Codeview debugging
# /NOD => Specify standard library

# ADS Library Directory
ADSDIR = ..

CF1 = -c -AL -G2sw -Zp -FPi87 -DWIN $(CFLAGS)

# ADS Library Directory (winadsc7.lib, winadsc7.obj ads.h adslib.h)
!IFDEF MSOBJ
# Autodesk internal build environment
CL=clx
O=$(MSOBJ)\ads
I1=$(ACINC)
I2=$(ADSDIR)
CF2 = $(CF1) -I$(I1) -I$(I2)
!else
# Customer build environment
CL=cl
O=$(ADSDIR)
I1=$(ADSDIR)
CF2 = $(CF1) -I$(I1)
!ENDIF


DFLAG = -Od -Zi -DCV
LFLAG = /NODEFAULTLIBRARYSEARCH /NOEXTDICTIONARY /m

!IFDEF CV
# debugging ON via environment variable "CV=1"
CFL = $(CF2) $(DFLAG)
LF = /CODEVIEW $(LFLAG)
!ELSE
# Release version, debugging OFF
CFL = $(CF2)
LF = $(LFLAG)
!ENDIF

# ddeconv is used by some DDE programs but not others
WAOBJ = $(O)\winadsc7.obj ddeconv.obj

ALIB = $(O)\winadsc7.lib

# Minimum lib requirement
LIBS = $(ALIB) ddeml.lib llibcew.lib libw.lib oldnames.lib

# Libs for programs using DDE as client
DLIBS = dde.lib shell.lib $(LIBS)

LIBOBJ = spreadsh.obj ddewin.obj winutil.obj

# Targets
all:    atoolbox.exe    \
        ddeads.exe      \
        ddeblank.exe    \
        ddelisp.exe     \
        shaft.exe       \
        winblank.exe

#
# Link ADS/DDE Programs
#

atoolbox.exe:   $*.obj $*.def $*.rc $(O)\winadsc7.obj \
                $(ALIB) dde.ico dde atoolbox.lnk \
                atboxdlg.dlg
        link @$*.lnk
        rc -tk30 $*.rc $*.exe
!IFDEF ACEXE
        copy $*.exe $(ACEXE)
!ENDIF

ddeads.exe:     $*.obj $*.def $*.rc dde.lib \
                $(WAOBJ) dde.lib $(ALIB) ddedlg.dlg dde dde.ico

ddeblank.exe:   $*.obj $*.def $*.rc dde.lib \
                $(WAOBJ) dde.lib $(ALIB) ddedlg.dlg dde dde.ico

ddelisp.exe:    $*.obj $*.def $*.rc $(WAOBJ) dde.lib \
                $(ALIB) ddedlg.dlg dde dde.ico

shaft.exe:      $*.obj $*.def $*.rc $(O)\winadsc7.obj dde.lib \
                $(ALIB) ddedlg.dlg dde dde.ico shaft.lnk
# Doesn't use ddeconv.obj
        link @$*.lnk
        rc -tk30 $*.rc $*.exe
!IFDEF ACEXE
        copy $*.exe $(ACEXE)
!ENDIF

winblank.exe:   $*.obj $*.def $*.rc $(O)\winadsc7.obj \
                $(ALIB) dde.ico dde $*.dlg winblank.lnk
        link @$*.lnk
        rc -tk30 $*.rc $*.exe
!IFDEF ACEXE
        copy $*.exe $(ACEXE)
!ENDIF


#
# Compile DDE Library and Programs
#

atoolbox.obj:   $*.c ddewin.h options.h

ddeads.obj:     $*.c ddewin.h options.h spreadsh.h ddeconv.h

ddeblank.obj:   $*.c ddewin.h options.h spreadsh.h ddeconv.h

winutil.obj:    $*.c options.h

ddelisp.obj:    $*.c ddewin.h options.h spreadsh.h ddeconv.h

shaft.obj:      $*.c ddewin.h options.h spreadsh.h

spreadsh.obj:   $*.c ddewin.h options.h

ddeconv.obj:    $*.c options.h ddewin.h options.h spreadsh.h

ddewin.obj:     $*.c ddewin.h options.h

winblank.obj:   $*.c

$(O)\winadsc7.obj: $(ADSDIR)\winads.c
        $(CL) $(CFL) $(ADSDIR)\winads.c &2>> dde.err
        copy winads.obj $(O)\winadsc7.obj
        del winads.obj

#
# Create DDE.LIB
#

dde.lib: $(LIBOBJ) 
        if exist dde.lib del dde.lib
        lib dde.lib $(LIBOBJ), dde.map;


#
# Default Rules
#

.c.obj:
        $(CL) $(CFL) $*.c &2>> dde.err

.obj.exe:
        echo $(LF) + >$*.lnk
        echo $* $(WAOBJ) >>$*.lnk
        echo $*.exe, $*.map, >>$*.lnk
        echo $(DLIBS) >>$*.lnk
        echo $*.def; >>$*.lnk
        link @$*.lnk
        rc -tk30 $*.rc $*.exe
!IFDEF ACEXE
        copy $*.exe $(ACEXE)
!ENDIF

winblank.lnk : dde
        echo $(LF) + > $*.lnk
        echo $* $(O)\winadsc7.obj >>$*.lnk
        echo $*.exe, $*.map, >>$*.lnk
        echo $(LIBS) >>$*.lnk
        echo $*.def; >>$*.lnk

atoolbox.lnk : dde
        echo $(LF) + > $*.lnk
        echo $* $(O)\winadsc7.obj >>$*.lnk
        echo $*.exe, $*.map, >>$*.lnk
        echo $(LIBS) >>$*.lnk
        echo $*.def; >>$*.lnk

shaft.lnk : dde
        echo $(LF) + >$*.lnk
        echo $* $(O)\winadsc7.obj >>$*.lnk
        echo $*.exe, $*.map, >>$*.lnk
        echo $(DLIBS) >>$*.lnk
        echo $*.def; >>$*.lnk

