blob: 2979698593038f292c34b4e4462330d779548e0a [file] [log] [blame]
######################################################################
#
# Open Watcom 1.5 multiplatform target makefile. This file is called
# by main makefile.
#
# Author : Michael Greene, July 2006
#
# User selectable project options are set in buildopts.inc
#
######################################################################
# include options set by main makefile
!include watopts.tmp
# include user selectable option
!include buildopts.inc
# project directories
PROJ = $+ $(%cwd) $-
RELDIR = $(PROJ)\release
DEBDIR = $(PROJ)\debug
SRCDIR = $(PROJ)\..\lib
TSTDIR = $(PROJ)\..\tests
XMLDIR = $(PROJ)\..\xmlwf
CC = wcl386
LD = wlink
LB = wlib
########################################
#
# ***** platform specific options *****
#
!ifeqi SYSPLATFORM os2
SYSCOMP = os2
SYSLINK = os2v2
LINKFILE = expat.lnk
COMINC = $(%watcom)\h;$(%watcom)\h\os2
EXPATDLL = $(DLLNAME)
EXT = .exe
!else ifeqi SYSPLATFORM nt
SYSCOMP = nt
SYSLINK = nt
LINKFILE = wexpat.lnk
COMINC = $(%watcom)\h;$(%watcom)\h\nt
EXPATDLL = $(DLLNAME)
EXT = .exe
NTLIB = LIB $(%watcom)\lib386\nt\kernel32.lib
!else ifeqi SYSPLATFORM linux
SYSCOMP = linux
SYSLINK = linux
COMINC = $(%watcom)\lh
LINUXEXT = op noext
#EXT = .elf
!endif
# ***** END platform specific options *****
########################################
#
# ***** Release/Debug options *****
#
!ifndef DEBUG
LD_OPTS = op el
# -wcd to quiet warning 201 - might need to check
C_COMMON = -d0 -wcd=201
OPT = $(OPTIMIZATION)
TARGDIR = $(RELDIR)
!else
LD_OPTS = d all op map,symf
C_COMMON = $(DEBUGOPTS) -of
# overrides optimization options set in buildopts.inc
OPT = -od
TARGDIR = $(DEBDIR)
!endif
# ***** END Release/Debug options *****
# MULTITHREAD set in buildopts.inc
!ifdef MULTITHREAD
MT = -bm
!endif
# CLIBLNK set in buildopts.inc
!ifdef CLIBLNK
CLIBOPT = -br
!endif
INCLUDE = $(SRCDIR);$(TSTDIR);$(COMINC)
EXTRA_C = $(C_COMMON) $(OPT) $(MT) $(CLIBOPT) $(MACHINE)
COMMONC = -w4 -e25 -zq -bt=$(SYSCOMP) -mf
CFLAGS = -i=$(INCLUDE) $(DEFS) $(COMMONC) $(EXTRA_C)
LDFLAGS = $(LD_OPTS) op maxe=25
LIBFLAGS = -b -c -n -p=512
SRCS = $(SRCDIR)\xmlparse.c $(SRCDIR)\xmlrole.c $(SRCDIR)\xmltok.c
OBJS = xmlparse.obj xmlrole.obj xmltok.obj
XMLWFS = $(XMLDIR)\xmlwf.c $(XMLDIR)\xmlfile.c $(XMLDIR)\codepage.c &
$(XMLDIR)\readfilemap.c
XMLWFO = xmlwf.obj xmlfile.obj codepage.obj readfilemap.obj
TESTSRC = ..\tests\chardata.c ..\tests\minicheck.c ..\tests\runtests.c
TESTOBJ = chardata.obj minicheck.obj runtests.obj
#############################################################
#
# ***** Project target build procedures *****
#
#############################################################
all: clean $(EXPATDLL) $(TARGLIB) xmlwf$(EXT) tests release .SYMBOLIC
# dll is built only for OS/2-ECS and LINUX platforms
#expat.dll: .ALWAYS
$(DLLNAME): .ALWAYS
$(CC) -c $(CFLAGS) -bd $(SRCS)
!ifeqi SYSPLATFORM os2
$(LD) NAME $* @expat.lnk $(LDFLAGS) FILE {$(OBJS)}
!else
$(LD) NAME $* @wexpat.lnk $(LDFLAGS) FILE {$(OBJS)}
!endif
$(LB) $(IMPORTLIB) +$*.dll
# build static lib for platform
$(TARGLIB): .ALWAYS
$(CC) -c $(CFLAGS) $(CLIBOPT) $(SRCS)
$(LB) $(LIBFLAGS) $*.lib $(OBJS)
# build standalone XML parser
xmlwf$(EXT):
$(CC) -c $(CFLAGS) $(CLIBOPT) $(XMLWFS)
$(LD) NAME $* SYS $(SYSLINK) $(LDFLAGS) $(LINUXEXT) LIB $(TARGLIB) $(NTLIB) FILE {$(XMLWFO)}
# The following builds EXPAT test and example programs
tests: runtests$(EXT) elements$(EXT) outline$(EXT) benchmark$(EXT) .SYMBOLIC
runtests$(EXT): $(LINKLIB)
$(CC) -c $(CFLAGS) $(CLIBOPT) $(TESTSRC)
$(LD) NAME $* SYS $(SYSLINK) $(LDFLAGS) $(LINUXEXT) LIB $(TARGLIB) FILE {$(TESTOBJ)}
elements$(EXT): $(LINKLIB)
$(CC) -c $(CFLAGS) $(CLIBOPT) ..\examples\elements.c
$(LD) NAME $* SYS $(SYSLINK) $(LDFLAGS) $(LINUXEXT) LIB $(TARGLIB) FILE $*.obj
outline$(EXT): $(LINKLIB)
$(CC) -c $(CFLAGS) $(CLIBOPT) ..\examples\outline.c
$(LD) NAME $* SYS $(SYSLINK) $(LDFLAGS) $(LINUXEXT) LIB $(TARGLIB) FILE $*.obj
benchmark$(EXT): $(LINKLIB)
$(CC) -c $(CFLAGS) $(CLIBOPT) ..\tests\benchmark\benchmark.c
$(LD) NAME $* SYS $(SYSLINK) $(LDFLAGS) $(LINUXEXT) LIB $(TARGLIB) FILE $*.obj
# requires wget to download and unzip XML_TEST_SUITE
xmlts.zip: .SYMBOLIC
$(WGET)wget --output-document=..\tests\xmlts.zip &
http://www.w3.org/XML/Test/xmlts20020606.zip
unzip -q ..\tests\xmlts.zip -d ..\tests
#############################################################
#
# ***** Project make release directories procedures *****
#
#############################################################
release: .SYMBOLIC
TARGEXE = xmlwf$(EXT) runtests$(EXT) elements$(EXT) outline$(EXT) benchmark$(EXT)
@if not EXIST $(TARGDIR) -@mkdir $(TARGDIR)
@if not EXIST $(TARGDIR)\$(SYSPLATFORM) @%make mktargdir
!ifneqi SYSPLATFORM linux
-@copy .\$(EXPATDLL) $(TARGDIR)\$(SYSPLATFORM)\dll
!endif
@for %a in ($(TARGEXE)) do -@copy .\%a $(TARGDIR)\$(SYSPLATFORM)\bin
-@copy .\*.lib $(TARGDIR)\$(SYSPLATFORM)\lib
-@copy ..\lib\expat.h $(TARGDIR)\$(SYSPLATFORM)\include
-@copy ..\lib\expat_external.h $(TARGDIR)\$(SYSPLATFORM)\include
mktargdir: .PROCEDURE
-@mkdir $(TARGDIR)\$(SYSPLATFORM)
-@mkdir $(TARGDIR)\$(SYSPLATFORM)\bin
-@mkdir $(TARGDIR)\$(SYSPLATFORM)\lib
-@mkdir $(TARGDIR)\$(SYSPLATFORM)\include
!ifneqi SYSPLATFORM linux
-@mkdir $(TARGDIR)\$(SYSPLATFORM)\dll
!endif
#############################################################
#
# ***** Project clean procedures *****
#
#############################################################
# cleanup build files
clean: .SYMBOLIC
CLEANEXTS = obj exe err lst map sym lib dll
CLEANLINUX = xmlwf runtests elements outline benchmark
@for %a in ($(CLEANEXTS)) do -@rm *.%a
@for %a in ($(CLEANLINUX)) do -@rm %a*
cleanall: clean .SYMBOLIC
@%write watclean.tmp RELDIR=$(RELDIR)
@%append watclean.tmp DEBDIR=$(DEBDIR)
@if EXIST $(RELDIR)\os2 @wmake -h -f watclean.mif os2
@if EXIST $(DEBDIR)\os2 @wmake -h -f watclean.mif os2d
@if EXIST $(RELDIR)\nt @wmake -h -f watclean.mif nt
@if EXIST $(DEBDIR)\nt @wmake -h -f watclean.mif ntd
@if EXIST $(RELDIR)\linux @wmake -h -f watclean.mif linux
@if EXIST $(DEBDIR)\linux @wmake -h -f watclean.mif linuxd
@if EXIST $(RELDIR) -@rd $(RELDIR)
@if EXIST $(DEBDIR) -@rd $(DEBDIR)
@if EXIST watclean.tmp -@rm watclean.tmp
@if EXIST watopts.tmp -@rm watopts.tmp
@cd ..\tests
@if EXIST xmlts.zip -@rm xmlts.zip
@echo Clean complete.