NWGNUmodlogio revision 70953fb44a7140fe206c3a5f011e24209c8c5c6a
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# Declare the sub-directories to be built here
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco#
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BraySUBDIRS = \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# Get the 'head' of the build environment. This includes default targets and
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray# paths to tools
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayinclude $(AP_WORK)\build\NWGNUhead.inc
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray#
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray# build this level's files
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# Make sure all needed macro's are defined
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# These directories will be at the beginning of the include list, followed by
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# INCDIRS
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXINCDIRS += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(AP_WORK)/include \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(NWOS) \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(AP_WORK)/modules/arch/netware \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(APR)/include \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(APRUTIL)/include \
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray $(APR) \
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray $(EOLIST)
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco#
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco# These flags will come after CFLAGS
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray#
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter BrayXCFLAGS += \
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray -prefix pre_nw.h \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# These defines will come after DEFINES
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter BrayXDEFINES += \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco# These flags will be added to the link.opt file
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXLFLAGS += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# These values will be appended to the correct variables based on the value of
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco# RELEASE
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Brayifeq "$(RELEASE)" "debug"
cd348e325366620fe047edcc849e3c9424828599Peter BrayXINCDIRS += \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXCFLAGS += \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXDEFINES += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter BrayXLFLAGS += \
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $(EOLIST)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Brayendif
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayifeq "$(RELEASE)" "noopt"
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXINCDIRS += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXCFLAGS += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXDEFINES += \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXLFLAGS += \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
cd348e325366620fe047edcc849e3c9424828599Peter Brayendif
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Brayifeq "$(RELEASE)" "release"
cd348e325366620fe047edcc849e3c9424828599Peter BrayXINCDIRS += \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXCFLAGS += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos KoscoXDEFINES += \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter BrayXLFLAGS += \
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $(EOLIST)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayendif
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# These are used by the link target if an NLM is being generated
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# This is used by the link 'name' directive to name the nlm. If left blank
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# TARGET_nlm (see below) will be used.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayNLM_NAME = logio
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# This is used by the link '-desc ' directive.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# If left blank, NLM_NAME will be used.
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
3908e3b9c01c930d1018e36969e3a541bc170e55Lubos KoscoNLM_DESCRIPTION = Apache $(VERSION_STR) IO Logging Module
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# This is used by the '-threadname' directive. If left blank,
cd348e325366620fe047edcc849e3c9424828599Peter Bray# NLM_NAME Thread will be used.
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayNLM_THREAD_NAME = Logio Module
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# If this is specified, it will override VERSION value in
cd348e325366620fe047edcc849e3c9424828599Peter Bray# $(AP_WORK)\build\NWGNUenvironment.inc
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter BrayNLM_VERSION =
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# If this is specified, it will override the default of 64K
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayNLM_STACK_SIZE = 8192
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco# If this is specified it will be used by the link '-entry' directive
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco#
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos KoscoNLM_ENTRY_SYM = _LibCPrelude
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco#
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco# If this is specified it will be used by the link '-exit' directive
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter BrayNLM_EXIT_SYM = _LibCPostlude
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# If this is specified it will be used by the link '-check' directive
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayNLM_CHECK_SYM =
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# If these are specified it will be used by the link '-flags' directive
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter BrayNLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# If this is specified it will be linked in with the XDCData option in the def
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# file instead of the default of $(NWOS)/apache.xdc. XDCData can be disabled
cd348e325366620fe047edcc849e3c9424828599Peter Bray# by setting APACHE_UNIPROC in the environment
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayXDCDATA =
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# If there is an NLM target, put it here
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter BrayTARGET_nlm = \
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $(OBJDIR)/modlogio.nlm \
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $(EOLIST)
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# If there is an LIB target, put it here
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter BrayTARGET_lib = \
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $(EOLIST)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# These are the OBJ files needed to create the NLM target above.
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco# Paths must all use the '/' character
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco#
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos KoscoFILES_nlm_objs = \
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco $(OBJDIR)/mod_logio.o \
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(EOLIST)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# These are the LIB files needed to create the NLM target above.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray# These will be added as a library command in the link.opt file.
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco#
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter BrayFILES_nlm_libs = \
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco libcpre.o \
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $(EOLIST)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# These are the modules that the above NLM target depends on to load.
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# These will be added as a module command in the link.opt file.
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter BrayFILES_nlm_modules = \
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray aprlib \
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray libc \
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $(EOLIST)
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco#
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco# If the nlm has a msg file, put it's path here
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco#
e87f836e908f8279021f79c8f7bcef98e99d126eLubos KoscoFILE_nlm_msg =
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray#
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco# If the nlm has a hlp file put it's path here
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter BrayFILE_nlm_hlp =
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# If this is specified, it will override $(NWOS)\copyright.txt.
ba2e31d47682cf0d28fe7a33f5c0d226a21aee17Lubos Kosco#
ba2e31d47682cf0d28fe7a33f5c0d226a21aee17Lubos KoscoFILE_nlm_copyright =
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# Any additional imports go here
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayFILES_nlm_Ximports = \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray @$(APR)/aprlib.imp \
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco @$(NWOS)/httpd.imp \
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco @libc.imp \
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $(EOLIST)
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco#
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco# Any symbols exported to here
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayFILES_nlm_exports = \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray logio_module \
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(EOLIST)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# These are the OBJ files needed to create the LIB target above.
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco# Paths must all use the '/' character
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco#
2b024356b830395446c55f50f9f724a63612e578Lubos KoscoFILES_lib_objs = \
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $(EOLIST)
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# implement targets and dependancies (leave this section alone)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Braylibs :: $(OBJDIR) $(TARGET_lib)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Braynlms :: libs $(TARGET_nlm)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# Updated this target to create necessary directories and copy files to the
cd348e325366620fe047edcc849e3c9424828599Peter Bray# correct place. (See $(AP_WORK)\build\NWGNUhead.inc for examples)
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Brayinstall :: nlms FORCE
cd348e325366620fe047edcc849e3c9424828599Peter Bray copy $(OBJDIR)\*.nlm $(INSTALL)\Apache2\modules\*.*
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray# Any specialized rules here
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# Include the 'tail' makefile that has targets that depend on variables defined
cd348e325366620fe047edcc849e3c9424828599Peter Bray# in this makefile
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Brayinclude $(AP_WORK)\build\NWGNUtail.inc
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray