\hush\examples\resource.mak
Resources for example makefiles
This file will be generated upon installation. It will define all tool names, platform dependent macros and basic build commands and look quite close to the ..\..\general.mak file.
TCLTK=c:\tcl
TOOLS=c:\bc45
HUSH=d:\hush
.SILENT
General tools and macro definitions
This file defines all tool names, platform dependent macros and basic build commands.
requirements
the following should be defined before this file is included:
TCLTK = c:\tcl
TOOLS = c:\bc45
HUSH = d:\hush
dymmy main target
the main target (all:) should be declared before this file, otherwise
the next section will be the main target, which is probably undesirable
thisshouldbeincluded:
@echo This makefile should only be included by other makefiles and
@echo the primary target should be defined before this is included.
requirements checking
the following should be defined in the environment
(with the correct locations of init scripts, watch the '/' instead of'\')
TCL_LIBRARY = c:/tcl/lib/tcl7.5
TK_LIBRARY = c:/tcl/lib/tk4.1
HUSH_LIBRARY = d:/hush/library
!if !$d(TCL_LIBRARY)
!error TCL_LIBRARY should be defined in the environment
!endif
!if !$d(TK_LIBRARY)
!error TK_LIBRARY should be defined in the environment
!endif
!if !$d(HUSH_LIBRARY)
!error HUSH_LIBRARY should be defined in the environment
!endif
defines
LIBDIR = $(HUSH)\lib
LIBDIRS = $(LIBDIR);$(TOOLS)\lib;$(TCLTK)\lib
INCLUDES = $(HUSH)\include;$(TOOLS)\include
!ifndef OBJDIR
OBJDIR = .
!endif
tool names
CP = copy
RM = del
RC = BRC32
LINKWIN32 = TLINK32
LINKDOS16 = TLINK
LIBRARIAN = TLIB
CCWIN32 = BCC32
CCDOS16 = BCC
compile macros
MSDOSDEFS = HAS_STDARG;NOTIME;STRICT;__STDC__=1;ASCII
MSWINDEFS = __MSWIN__;_RTLDLL;HAS_STDARG;NOTIME;STRICT;__STDC__=1
SCRIPTPATHDEFS = HUSH_LIBRARY="$(HUSH_LIBRARY)";TCL_LIBRARY="$(TCL_LIBRARY)";TK_LIBRARY="$(TK_LIBRARY)"
MAINREDIRECT = main=Main
DEBUGDEFINES = nodebug
WIN32DEFS = $(MSWINDEFS);$(MAINREDIRECT) # ;$(SCRIPTPATHDEFS)
DOS16DEFS = $(MSDOSDEFS)
not defining the DEBUG macro will disable the debug info
!ifdef DEBUG
DEBUGCCFLAGS = -v # debuging
!else
DEBUGCCFLAGS = -v- -vi -O2 # no debuging
!endif
defining the WARNINGS macro will enable the warnings
WARNINGS = 1
!ifdef WARNINGS
WARNFLAGS = -w-par -w-stu -w-inl # warnings
!else
WARNFLAGS = -w- # no warnings
!endif
compile flags
CCDOS16FLAGS = -W- -R -ml -f -P -c $(DEBUGCCFLAGS) $(WARNFLAGS)
CCWIN32FLAGS = $(DEBUGCCFLAGS) $(WARNFLAGS) -c -P -W -3 -d
link flags
LNDOS16FLAGS = -v -c -Tde -x -L$(LIBDIRS) c0l.obj
LNWIN32FLAGS = -Tpe -aa -c -v -L$(LIBDIRS) c0w32 $(LIBDIR)\import32 $(LIBDIR)\tcl75 $(LIBDIR)\tk41
libraries to link
LNDOS16LIBS = emu.lib mathl.lib cl.lib
LNWIN32LIBS = cw32i.lib hush.lib
platform specification
just defining WIN32 or DOS16 will be sufficient to choose the right compiler, flags and libraries
!ifdef WIN32
CC = $(CCWIN32)
LINK = $(LINKWIN32)
CONFIG = bcc32.cfg
CCFLAGS = $(CCWIN32FLAGS)
LNFLAGS = $(LNWIN32FLAGS)
LNLIBS = $(LNWIN32LIBS)
DEFINES = $(WIN32DEFS)
!else
!ifdef DOS16
CC = $(CCDOS16)
LINK = $(LINKDOS16)
CONFIG = turboc.cfg
CCFLAGS = $(CCDOS16FLAGS)
LNFLAGS = $(LNDOS16FLAGS)
LNLIBS = $(LNDOS16LIBS)
DEFINES = $(DOS16DEFS)
!else
!message
!message Warning: neither WIN32 nor DOS16 defined, so LINK and CC are undefined as well
!message
!endif
!endif
internal tools
MKDIR = makedir.bat
RM = delete.bat
RMTREE = rmtree.bat
$(MKDIR):
copy &&|
@echo off
ctty nul
mkdir %1
ctty con
| $(MKDIR) > nul
$(RM):
copy &&|
@echo off
if exist %1 del %1
| $(RM) > nul
$(RMTREE):
copy &&|
@echo off
ctty nul
deltree /Y %1
ctty con
| $(RMTREE) > nul
delbatches: $(RM)
$(RM) $(RMTREE)
$(RM) $(MKDIR)
if exist $(RM) del $(RM)