| ###################################################################### |
| # |
| # 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. |
| |
| |
| |