!ifndef DJGPP BCC MSWIN WIN32 OS2EMX WIN95 WIN32GUI
# -*- mode: sh; mode: fold -*- # This file has been folded.

#{{{ MACRO descriptions

This is a master makefile that from which DOS/Windows/OS2 makefiles
may be derived.  A makefile for a particular system may be derived by
passing this through the standalone DOS executable 'mkmake' which
should be present in this directory.  For example, to produce a makefile 
suitable for OS2 using the EMX compiler use:

    makepp OS2EMX < makefile.all > Makefile

Currently supported environments include:

   DJGPP BCC MSWIN OS2EMX WIN32 WIN95 WIN32GUI

More will be added in the future.

Each section must define the following macros:

 CC             : The C compiler
 CFLAGS		: Compiler flags
 P		: Path separator used by make/compiler
 O		: Object file extension
 SRCDIR		: SRC location (.)
 OBJDIR		: Directory where objects are placed
 COMPILE_CMD	: Command used to produce object from .c file
 LIBDEPS	: Other dependencies library depends upon
 TARGET		: Primary target name
 
Other macros include:

 RSPFILE	: Name of response file
 RSP_PREFIX	: Prefix for response file line (See its usage)
 RSP_POSTFIX	: Postfix for response file line (See its usage)

Special notes:  

 The P macro could be problematic when its value is a backslash (\).  Some
 make programs may require it to be doubled, i.e., \\.  Whatever its value is,
 it should expand to something that does not include whitespace.  Usually
 this requires that it be followed by a '#' character; however, this may
 result in the '#' character being quoted, or, escaped if the value of P is
 a backslash.
 
#}}}
!else   #rest of file
# Note: 
# This makefile was automatically generated from the master makefile.all.
!ifdef DJGPP #{{{
CC = gcc
CFLAGS = -O2 -fno-strength-reduce -Wall #-DFLOAT_TYPE
P = /# path sep
O = o # Object extension
SRCDIR = .# Location of sources
OBJDIR = djgobjs# Location of objects
TARGET = $(OBJDIR)/libslang.a
RSPFILE = djgpp.rsp
RSP_PREFIX =
RSP_POSTFIX =
COMPILE_CMD = $(CC) -c $(CFLAGS) -o #
LIBDEPS = $(RSPFILE)
!endif #}}}
!ifdef BCC #{{{
CC = bcc
CFLAGS = -G- -H -N -O1 -w -ml -Dmsdos
P = \\
O = obj
SRCDIR = .
OBJDIR = bccobjs
TARGET = $(OBJDIR)\slang.lib
RSPFILE = bcc.rsp
RSP_PREFIX = +-
RSP_POSTFIX = &
COMPILE_CMD = $(CC) -c $(CFLAGS) -o#  <-- no tailing space
LIBDEPS = $(RSPFILE)
!endif #}}}
!ifdef MSWIN WIN32 #{{{
CC = bcc
! ifdef MSWIN
CFLAGS = -G- -H -N -w -ml -Dmsdos -DMSWINDOWS -W# -DFLOAT_TYPE
#CFLAGS = -N -v  -H -w -ml -Dmsdos -DMSWINDOWS -WS
OBJDIR = mswobjs# Location of objects
! else
CFLAGS = -N -w -v -DWIN32# -DFLOAT_TYPE  
OBJDIR = w32objs# Location of objects
! endif
O = obj # Object extension
P = \\
SRCDIR = .# Location of sources
TARGET = $(OBJDIR)\wslang.lib
RSPFILE = mswin.rsp
RSP_PREFIX = +-#
RSP_POSTFIX = &#
COMPILE_CMD = $(CC) -c $(CFLAGS) -o#
LIBDEPS = $(RSPFILE)
!endif #}}}
!ifdef OS2EMX #{{{
CC = gcc -Zmtd -DEMX_VIDEO
CFLAGS = -DOS2 -D__os2__ -DFLOAT_TYPE
P = \\
O = o # Object extension
SRCDIR = .# Location of sources
OBJDIR = emxobjs# Location of objects
TARGET = $(OBJDIR)/slang.a
COMPILE_CMD = $(CC) -c $(CFLAGS) -o #
LIBDEPS =
!endif #}}}
!ifdef WIN95 #{{{
# Makefile for slang as Win32 GUI using nmake under Visual C.
CC = cl
CFLAGS = #-DFLOAT_TYPE
P = \\
O = obj # Object extension
SRCDIR = .# Location of sources
OBJDIR = w95objs# Location of objects
TARGET = $(OBJDIR)\wslang32.lib
RSPFILE = w95link.rsp
RSP_PREFIX =
RSP_POSTFIX =
COMPILE_CMD = $(CC) /c @w95comp.rsp /Fo # /Fo specifies object file name
LIBDEPS = $(RSPFILE) w95comp.rsp
# This needs changing for Windows NT on non-Intel processors
CPU = _X86_
!endif #}}}
!ifdef WIN32GUI #{{{
# This makefile supports linking SLANG with MFC & Pure GUI Apps
# under NT & Win95.  It has only been tested via NT/MFC.  
# VisualC++ is the compiler.
CC = cl
CFLAGS = #-DFLOAT_TYPE
P = \\
O = obj # Object extension
SRCDIR = .# Location of sources
OBJDIR = w32gobjs# Location of objects
TARGET = $(OBJDIR)\wslang32.lib
RSPFILE = w32glink.rsp
RSP_PREFIX =
RSP_POSTFIX =
COMPILE_CMD = $(CC) /c @w32gcomp.rsp /Fo # /Fo specifies object file name
LIBDEPS = $(RSPFILE) w32gcomp.rsp
# This needs changing for Windows NT on non-Intel processors
CPU = _X86_
!endif #}}}

# End of compiler specific section

CONFIG_H = config.h
#{{{ OBJS = 

OBJS = $(OBJDIR)$(P)slang.$(O) \
       $(OBJDIR)$(P)slarray.$(O) \
       $(OBJDIR)$(P)slclass.$(O) \
       $(OBJDIR)$(P)slcmd.$(O) \
       $(OBJDIR)$(P)slerr.$(O) \
       $(OBJDIR)$(P)slfile.$(O) \
       $(OBJDIR)$(P)slgetkey.$(O) \
       $(OBJDIR)$(P)slkeymap.$(O) \
       $(OBJDIR)$(P)slmalloc.$(O) \
       $(OBJDIR)$(P)slmath.$(O) \
       $(OBJDIR)$(P)slmemchr.$(O) \
       $(OBJDIR)$(P)slmemcmp.$(O) \
       $(OBJDIR)$(P)slmemcpy.$(O) \
       $(OBJDIR)$(P)slmemset.$(O) \
       $(OBJDIR)$(P)slmisc.$(O) \
       $(OBJDIR)$(P)slparse.$(O) \
       $(OBJDIR)$(P)slprepr.$(O) \
       $(OBJDIR)$(P)slregexp.$(O) \
       $(OBJDIR)$(P)slrline.$(O) \
       $(OBJDIR)$(P)slsearch.$(O) \
       $(OBJDIR)$(P)slsmg.$(O) \
       $(OBJDIR)$(P)slstd.$(O) \
       $(OBJDIR)$(P)sltoken.$(O) \
       $(OBJDIR)$(P)sltypes.$(O) \
       $(OBJDIR)$(P)slscroll.$(O) \
       $(OBJDIR)$(P)slsignal.$(O) \
       $(OBJDIR)$(P)slkeypad.$(O) \
       $(OBJDIR)$(P)slerrno.$(O) \
!ifndef MSWIN WIN95 WIN32GUI
       $(OBJDIR)$(P)slvideo.$(O) \
!endif
!ifdef DJGPP BCC
       $(OBJDIR)$(P)sldostty.$(O) \
!endif
!ifdef WIN32
       $(OBJDIR)$(P)slw32tty.$(O) \
!endif
!ifdef OS2EMX
       $(OBJDIR)$(P)slos2tty.$(O) \
!endif
       $(OBJDIR)$(P)slxstrng.$(O)
#---------------------------------------------------------------------------

#}}}

$(TARGET): $(OBJDIR) $(CONFIG_H) $(LIBDEPS) $(OBJS)
!ifdef DJGPP
	-rm $(TARGET)
	ar -cr $(TARGET) @$(RSPFILE)
	ranlib $(TARGET)
!elifdef BCC MSWIN
	tlib $(TARGET) /C @$(RSPFILE)
!elifdef OS2EMX
	ar rcv $(TARGET) $(OBJS)
!elifdef WIN95 WIN32GUI
	link -lib -out:$(TARGET) @$(RSPFILE)
!endif

$(OBJDIR) :
	-mkdir $(OBJDIR)
$(CONFIG_H): slconfig.h
	copy slconfig.h config.h
	touch config.h

!ifndef OS2EMX 
#{{{ Create Response File

$(RSPFILE) : 
	@echo Creating response file $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slxstrng.$(O) $(RSP_POSTFIX) > $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)sltypes.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)sltoken.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slstd.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slsmg.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slsearch.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slrline.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slregexp.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slprepr.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slparse.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmisc.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmemset.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmemcpy.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmemcmp.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmemchr.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmath.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slmalloc.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slkeymap.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slgetkey.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slfile.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slerr.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slcmd.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slclass.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slarray.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slscroll.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slsignal.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slkeypad.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slerrno.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
!ifndef MSWIN WIN95 WIN32GUI
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slvideo.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
!endif
!ifdef DJGPP BCC
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)sldostty.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
!endif
!ifdef WIN32
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slw32tty.$(O) $(RSP_POSTFIX) >> $(RSPFILE)
!endif
	@echo $(RSP_PREFIX)$(OBJDIR)$(P)slang.$(O) >> $(RSPFILE)

#}}}
!endif  # NOT OS2EMX

!ifdef WIN95
w95comp.rsp:
	echo /nologo /W3 /YX /O2 /D "NDEBUG" /D $(CPU) > w95comp.rsp
	echo /D "_WINDOWS" /D "__WIN32__" /D "pc_system" >> w95comp.rsp
	echo /I "." /D "FLOAT_TYPE" /ML >> w95comp.rsp
!endif

!ifdef WIN32GUI
w32gcomp.rsp:
	echo /nologo /W3 /YX /O2 /D "NDEBUG" /D $(CPU) > w32gcomp.rsp
	echo /D "_WINDOWS" /D "__WIN32__" /D "pc_system" >> w32gcomp.rsp
	echo /I "." /D "FLOAT_TYPE" /MD >> w32gcomp.rsp
!endif

#---------------------------------------------------------------------------

# explicit rules follow below
$(OBJDIR)$(P)slxstrng.$(O) : $(SRCDIR)$(P)slxstrng.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slxstrng.$(O) $(SRCDIR)$(P)slxstrng.c

$(OBJDIR)$(P)sltypes.$(O) : $(SRCDIR)$(P)sltypes.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)sltypes.$(O) $(SRCDIR)$(P)sltypes.c

$(OBJDIR)$(P)sltoken.$(O) : $(SRCDIR)$(P)sltoken.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)sltoken.$(O) $(SRCDIR)$(P)sltoken.c

$(OBJDIR)$(P)slstd.$(O) : $(SRCDIR)$(P)slstd.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slstd.$(O) $(SRCDIR)$(P)slstd.c

$(OBJDIR)$(P)slsmg.$(O) : $(SRCDIR)$(P)slsmg.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slsmg.$(O) $(SRCDIR)$(P)slsmg.c

$(OBJDIR)$(P)slsearch.$(O) : $(SRCDIR)$(P)slsearch.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slsearch.$(O) $(SRCDIR)$(P)slsearch.c

$(OBJDIR)$(P)slrline.$(O) : $(SRCDIR)$(P)slrline.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slrline.$(O) $(SRCDIR)$(P)slrline.c

$(OBJDIR)$(P)slregexp.$(O) : $(SRCDIR)$(P)slregexp.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slregexp.$(O) $(SRCDIR)$(P)slregexp.c

$(OBJDIR)$(P)slprepr.$(O) : $(SRCDIR)$(P)slprepr.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slprepr.$(O) $(SRCDIR)$(P)slprepr.c

$(OBJDIR)$(P)slparse.$(O) : $(SRCDIR)$(P)slparse.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slparse.$(O) $(SRCDIR)$(P)slparse.c

$(OBJDIR)$(P)slmisc.$(O) : $(SRCDIR)$(P)slmisc.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmisc.$(O) $(SRCDIR)$(P)slmisc.c

$(OBJDIR)$(P)slmemset.$(O) : $(SRCDIR)$(P)slmemset.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmemset.$(O) $(SRCDIR)$(P)slmemset.c

$(OBJDIR)$(P)slmemcpy.$(O) : $(SRCDIR)$(P)slmemcpy.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmemcpy.$(O) $(SRCDIR)$(P)slmemcpy.c

$(OBJDIR)$(P)slmemcmp.$(O) : $(SRCDIR)$(P)slmemcmp.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmemcmp.$(O) $(SRCDIR)$(P)slmemcmp.c

$(OBJDIR)$(P)slmemchr.$(O) : $(SRCDIR)$(P)slmemchr.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmemchr.$(O) $(SRCDIR)$(P)slmemchr.c

$(OBJDIR)$(P)slmath.$(O) : $(SRCDIR)$(P)slmath.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmath.$(O) $(SRCDIR)$(P)slmath.c

$(OBJDIR)$(P)slmalloc.$(O) : $(SRCDIR)$(P)slmalloc.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slmalloc.$(O) $(SRCDIR)$(P)slmalloc.c

$(OBJDIR)$(P)slkeymap.$(O) : $(SRCDIR)$(P)slkeymap.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slkeymap.$(O) $(SRCDIR)$(P)slkeymap.c

$(OBJDIR)$(P)slgetkey.$(O) : $(SRCDIR)$(P)slgetkey.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slgetkey.$(O) $(SRCDIR)$(P)slgetkey.c

$(OBJDIR)$(P)slfile.$(O) : $(SRCDIR)$(P)slfile.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slfile.$(O) $(SRCDIR)$(P)slfile.c

$(OBJDIR)$(P)slerr.$(O) : $(SRCDIR)$(P)slerr.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slerr.$(O) $(SRCDIR)$(P)slerr.c

$(OBJDIR)$(P)slcmd.$(O) : $(SRCDIR)$(P)slcmd.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slcmd.$(O) $(SRCDIR)$(P)slcmd.c

$(OBJDIR)$(P)slclass.$(O) : $(SRCDIR)$(P)slclass.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slclass.$(O) $(SRCDIR)$(P)slclass.c

$(OBJDIR)$(P)slarray.$(O) : $(SRCDIR)$(P)slarray.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slarray.$(O) $(SRCDIR)$(P)slarray.c

$(OBJDIR)$(P)slscroll.$(O) : $(SRCDIR)$(P)slscroll.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slscroll.$(O) $(SRCDIR)$(P)slscroll.c

$(OBJDIR)$(P)slsignal.$(O) : $(SRCDIR)$(P)slsignal.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slsignal.$(O) $(SRCDIR)$(P)slsignal.c

$(OBJDIR)$(P)slkeypad.$(O) : $(SRCDIR)$(P)slkeypad.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slkeypad.$(O) $(SRCDIR)$(P)slkeypad.c

$(OBJDIR)$(P)slerrno.$(O) : $(SRCDIR)$(P)slerrno.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slerrno.$(O) $(SRCDIR)$(P)slerrno.c

$(OBJDIR)$(P)slang.$(O) : $(SRCDIR)$(P)slang.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slang.$(O) $(SRCDIR)$(P)slang.c
#
!ifndef MSWIN WIN95 WIN32GUI
$(OBJDIR)$(P)slvideo.$(O) : $(SRCDIR)$(P)slvideo.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slvideo.$(O) $(SRCDIR)$(P)slvideo.c
!endif
!ifdef DJGPP BCC
$(OBJDIR)$(P)sldostty.$(O) : $(SRCDIR)$(P)sldostty.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)sldostty.$(O) $(SRCDIR)$(P)sldostty.c
!endif
!ifdef OS2EMX
$(OBJDIR)$(P)slos2tty.$(O) : $(SRCDIR)$(P)slos2tty.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slos2tty.$(O) $(SRCDIR)$(P)slos2tty.c
!endif
!ifdef WIN32
$(OBJDIR)$(P)slw32tty.$(O) : $(SRCDIR)$(P)slw32tty.c $(CONFIG_H)
	$(COMPILE_CMD)$(OBJDIR)$(P)slw32tty.$(O) $(SRCDIR)$(P)slw32tty.c
!endif

!endif   #NOT HELP
