Blame VCPP/Makefile

Packit a4aae4
# Makefile for libdap (under VC++ on win32)
Packit a4aae4
Packit a4aae4
# Source code, samples, docs and target build areas
Packit a4aae4
OBJDIR			= .\objects
Packit a4aae4
SRCDIR			= ..
Packit a4aae4
DOCDIR			= .\doc
Packit a4aae4
SAMPLEDIR		= .\sample
Packit a4aae4
Packit a4aae4
# This is the prepackaging area.  Contents should never be on the build path.
Packit a4aae4
# Fill in the VERSION (e.g., "= 3.7.3") to generate a final, version stamped
Packit a4aae4
# release of the product.
Packit a4aae4
PRODUCT			= libdap
Packit a4aae4
VERSION			=
Packit a4aae4
PKGDIR			= ..\..\prepkg\opendap\$(PRODUCT)$(VERSION)
Packit a4aae4
PKGLIBDIR		= $(PKGDIR)\lib
Packit a4aae4
PKGDLLDIR		= $(PKGDIR)\dll
Packit a4aae4
PKGBINDIR		= $(PKGDIR)\bin
Packit a4aae4
PKGETCDIR		= $(PKGDIR)\etc
Packit a4aae4
PKGINCDIR		= $(PKGDIR)\include
Packit a4aae4
PKGSAMPLEDIR	= $(PKGDIR)\sample
Packit a4aae4
Packit a4aae4
# This is the installation area.  It should never be on the build path either
Packit a4aae4
# (except when building other, non-core components).
Packit a4aae4
INSTALLDIR		= ..\..
Packit a4aae4
INSTALLLIBDIR	= $(INSTALLDIR)\lib
Packit a4aae4
INSTALLDLLDIR	= $(INSTALLDIR)\dll
Packit a4aae4
INSTALLBINDIR	= $(INSTALLDIR)\bin
Packit a4aae4
INSTALLETCDIR	= $(INSTALLDIR)\etc
Packit a4aae4
INSTALLINCDIR	= $(INSTALLDIR)\include
Packit a4aae4
Packit a4aae4
# Headers only come from the source distribution itself.  Neither the
Packit a4aae4
# Prepackaging or installation areas should be on any path for building
Packit a4aae4
# the OPeNDAP Core.
Packit a4aae4
INCLUDEDIR		= $(SRCDIR)
Packit a4aae4
Packit a4aae4
# Compiler, Linker
Packit a4aae4
CC		= cl
Packit a4aae4
LINK	= link
Packit a4aae4
Packit a4aae4
# Compiler tools
Packit a4aae4
LEX	= flex
Packit a4aae4
YACC	= bison
Packit a4aae4
Packit a4aae4
# We suppress #line directives under win32 to prevent warnings resulting
Packit a4aae4
# when a "\" followed by some char is interpreted as an escape sequence.
Packit a4aae4
YACCFLAGS	= --no-lines -d -v
Packit a4aae4
Packit a4aae4
# MT = Static Link Multi-Threaded Model
Packit a4aae4
# MD = Dynamic Link Multi-Threaded DLL Model
Packit a4aae4
Packit a4aae4
# Setup compiler flags
Packit a4aae4
MTCFLAGS	= /MT /D HAVE_PTHREAD_H
Packit a4aae4
MDCFLAGS	= /MD /D HAVE_PTHREAD_H
Packit a4aae4
CFLAGS		= /nologo /W0 /GR /EHsc /c
Packit a4aae4
Packit a4aae4
# Setup linker flags for libdap
Packit a4aae4
DAP_MTLFLAGS	= -lib /nologo -libpath:$(OBJDIR)\MT
Packit a4aae4
DAP_MDLFLAGS	= /nologo -libpath:$(OBJDIR)\MD /dll /def:libdap.def /map /fixed:NO /base:0x06000000 /NODEFAULTLIB:LIBCMT.lib
Packit a4aae4
Packit a4aae4
# Setup linker flags for libdapclient
Packit a4aae4
CLIENT_MTLFLAGS	= -lib /nologo -libpath:$(OBJDIR)\MT
Packit a4aae4
CLIENT_MDLFLAGS	= /nologo -libpath:$(OBJDIR)\MD /dll /def:libdapclient.def /map /fixed:NO /base:0x07000000 /NODEFAULTLIB:LIBCMT.lib
Packit a4aae4
Packit a4aae4
# Setup linker flags for libdapserver
Packit a4aae4
SERVER_MTLFLAGS	= -lib /nologo -libpath:$(OBJDIR)\MT
Packit a4aae4
SERVER_MDLFLAGS	= /nologo -libpath:$(OBJDIR)\MD /dll /def:libdapserver.def /map /fixed:NO /base:0x08000000 /NODEFAULTLIB:LIBCMT.lib
Packit a4aae4
Packit a4aae4
# Setup link libraries for libdap
Packit a4aae4
DAP_MTLIBS		=
Packit a4aae4
DAP_MDLIBS		= libdirent.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib
Packit a4aae4
Packit a4aae4
# Setup link libraries for libdapclient
Packit a4aae4
CLIENT_MTLIBS	=
Packit a4aae4
CLIENT_MDLIBS	= libdapMD.lib libdirent.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib
Packit a4aae4
Packit a4aae4
# Setup link libraries for libdapserver
Packit a4aae4
SERVER_MTLIBS	=
Packit a4aae4
SERVER_MDLIBS	= libdapMD.lib libdirent.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib
Packit a4aae4
Packit a4aae4
# Setup linker flags for executables
Packit a4aae4
EMTLFLAGS		= /nologo /libpath:$(OBJDIR)\MT /NODEFAULTLIB:MSVCRT.lib
Packit a4aae4
EMDLFLAGS		= /nologo /libpath:$(OBJDIR)\MD /NODEFAULTLIB:LIBCMT.lib
Packit a4aae4
Packit a4aae4
# Setup link libraries for executables
Packit a4aae4
EMTLLIBS		= libdapclientMT.lib libdapserverMT.lib libdapMT.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib
Packit a4aae4
EMDLLIBS		= libdapclientMD.lib libdapserverMD.lib libdapMD.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib
Packit a4aae4
Packit a4aae4
# Setup compiler includes and defines
Packit a4aae4
INCS		= /I . /I .. /I ..\GNU /I ..\win32\gl /I $(INCLUDEDIR)
Packit a4aae4
DEFS		= /D WIN32 /D WIN32_LEAN_AND_MEAN /D HAVE_CONFIG_H
Packit a4aae4
CPPFLAGS	= $(DEFS) $(INCS)
Packit a4aae4
Packit a4aae4
default:
Packit a4aae4
	@echo "usage: nmake all; nmake install; nmake package"
Packit a4aae4
Packit a4aae4
all:	setup modelMT modelMD
Packit a4aae4
Packit a4aae4
modelMT:
Packit a4aae4
	@-md $(OBJDIR)\MT
Packit a4aae4
	@echo "Building MT model libraries for the Core"
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(DAP_MTLFLAGS)" LIBS="$(DAP_MTLIBS)" OBJDIR=$(OBJDIR)\MT libdapMT.lib
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(CLIENT_MTLFLAGS)" LIBS="$(CLIENT_MTLIBS)" OBJDIR=$(OBJDIR)\MT libdapclientMT.lib
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(SERVER_MTLFLAGS)" LIBS="$(SERVER_MTLIBS)" OBJDIR=$(OBJDIR)\MT libdapserverMT.lib
Packit a4aae4
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(EMTLFLAGS)" LIBS="$(EMTLLIBS)" OBJDIR=$(OBJDIR)\MT getdap
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(EMTLFLAGS)" LIBS="$(EMTLLIBS)" OBJDIR=$(OBJDIR)\MT deflate
Packit a4aae4
	@echo "MT model libraries for the Core are complete"
Packit a4aae4
Packit a4aae4
modelMD:
Packit a4aae4
	@-md $(OBJDIR)\MD
Packit a4aae4
	@echo "Building MD model libraries for the Core"
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(DAP_MDLFLAGS)" LIBS="$(DAP_MDLIBS)" OBJDIR=$(OBJDIR)\MD libdapMD.dll	
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(CLIENT_MDLFLAGS)" LIBS="$(CLIENT_MDLIBS)" OBJDIR=$(OBJDIR)\MD libdapclientMD.dll
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(SERVER_MDLFLAGS)" LIBS="$(SERVER_MDLIBS)" OBJDIR=$(OBJDIR)\MD libdapserverMD.dll
Packit a4aae4
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(EMDLFLAGS)" LIBS="$(EMDLLIBS)" OBJDIR=$(OBJDIR)\MD getdap
Packit a4aae4
	@nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(EMDLFLAGS)" LIBS="$(EMDLLIBS)" OBJDIR=$(OBJDIR)\MD deflate
Packit a4aae4
	@echo "MD model libraries for the Core are complete"
Packit a4aae4
Packit a4aae4
# Clear built-in rules and set new ones
Packit a4aae4
.SUFFIXES :
Packit a4aae4
.SUFFIXES :	.obj .c .cc .exe
Packit a4aae4
Packit a4aae4
# Rules for library objects, both the .c and .cc's are C++
Packit a4aae4
{$(SRCDIR)}.c{$(OBJDIR)}.obj:
Packit a4aae4
	$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $<
Packit a4aae4
Packit a4aae4
{$(SRCDIR)}.cc{$(OBJDIR)}.obj:
Packit a4aae4
	$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $<
Packit a4aae4
Packit a4aae4
# Rule for linking executables
Packit a4aae4
{$(OBJDIR)}.obj{$(OBJDIR)}.exe:
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $< $(LIBS)
Packit a4aae4
Packit a4aae4
GNU_OBJS = $(OBJDIR)\GetOpt.obj \
Packit a4aae4
		$(OBJDIR)\GNURegex.obj \
Packit a4aae4
		$(OBJDIR)\regex.obj \
Packit a4aae4
		$(OBJDIR)\strcasecmp.obj \
Packit a4aae4
		$(OBJDIR)\strncasecmp.obj \
Packit a4aae4
		$(OBJDIR)\strnlen1.obj \
Packit a4aae4
		$(OBJDIR)\localcharset.obj
Packit a4aae4
Packit a4aae4
GRAM_OBJS = $(OBJDIR)\lex.das.obj \
Packit a4aae4
		$(OBJDIR)\das.tab.obj \
Packit a4aae4
		$(OBJDIR)\lex.dds.obj \
Packit a4aae4
		$(OBJDIR)\dds.tab.obj \
Packit a4aae4
		$(OBJDIR)\lex.ce_expr.obj \
Packit a4aae4
		$(OBJDIR)\ce_expr.tab.obj \
Packit a4aae4
		$(OBJDIR)\lex.Error.obj \
Packit a4aae4
		$(OBJDIR)\Error.tab.obj
Packit a4aae4
Packit a4aae4
DAP_OBJS = $(GRAM_OBJS) \
Packit a4aae4
		$(OBJDIR)\AttrTable.obj \
Packit a4aae4
		$(OBJDIR)\ConstraintEvaluator.obj \
Packit a4aae4
		$(OBJDIR)\DAS.obj \
Packit a4aae4
		$(OBJDIR)\DDS.obj \
Packit a4aae4
		$(OBJDIR)\DataDDS.obj \
Packit a4aae4
		$(OBJDIR)\DDXParser.obj \
Packit a4aae4
		$(OBJDIR)\BaseType.obj \
Packit a4aae4
		$(OBJDIR)\Byte.obj \
Packit a4aae4
		$(OBJDIR)\Error.obj \
Packit a4aae4
		$(OBJDIR)\Int32.obj \
Packit a4aae4
		$(OBJDIR)\Float64.obj \
Packit a4aae4
		$(OBJDIR)\Str.obj \
Packit a4aae4
		$(OBJDIR)\Url.obj \
Packit a4aae4
		$(OBJDIR)\Vector.obj \
Packit a4aae4
		$(OBJDIR)\Array.obj \
Packit a4aae4
		$(OBJDIR)\Structure.obj \
Packit a4aae4
		$(OBJDIR)\Sequence.obj \
Packit a4aae4
		$(OBJDIR)\Grid.obj \
Packit a4aae4
		$(OBJDIR)\UInt32.obj \
Packit a4aae4
		$(OBJDIR)\Int16.obj \
Packit a4aae4
		$(OBJDIR)\UInt16.obj \
Packit a4aae4
		$(OBJDIR)\Float32.obj \
Packit a4aae4
		$(OBJDIR)\GeoConstraint.obj \
Packit a4aae4
		$(OBJDIR)\GridGeoConstraint.obj \
Packit a4aae4
		$(OBJDIR)\Constructor.obj \
Packit a4aae4
		$(OBJDIR)\BaseTypeFactory.obj \
Packit a4aae4
		$(OBJDIR)\SignalHandler.obj \
Packit a4aae4
		$(OBJDIR)\InternalErr.obj \
Packit a4aae4
		$(OBJDIR)\util.obj \
Packit a4aae4
		$(OBJDIR)\xdrutil_ppc.obj \
Packit a4aae4
		$(OBJDIR)\XDRUtils.obj	 \
Packit a4aae4
		$(OBJDIR)\XDRFileMarshaller.obj	\
Packit a4aae4
		$(OBJDIR)\XDRFileUnMarshaller.obj	\
Packit a4aae4
		$(OBJDIR)\XDRStreamMarshaller.obj	 \
Packit a4aae4
		$(OBJDIR)\parser-util.obj \
Packit a4aae4
		$(OBJDIR)\escaping.obj \
Packit a4aae4
		$(OBJDIR)\Clause.obj \
Packit a4aae4
		$(OBJDIR)\RValue.obj \
Packit a4aae4
		$(OBJDIR)\gse.tab.obj \
Packit a4aae4
		$(OBJDIR)\ce_functions.obj \
Packit a4aae4
		$(OBJDIR)\GSEClause.obj \
Packit a4aae4
		$(OBJDIR)\lex.gse_.obj \
Packit a4aae4
		$(OBJDIR)\ArrayGeoConstraint.obj \
Packit a4aae4
		$(OBJDIR)\DapIndent.obj
Packit a4aae4
Packit a4aae4
CLIENT_OBJS = $(OBJDIR)\RCReader.obj \
Packit a4aae4
		$(OBJDIR)\Connect.obj \
Packit a4aae4
		$(OBJDIR)\HTTPConnect.obj \
Packit a4aae4
		$(OBJDIR)\HTTPCache.obj \
Packit a4aae4
		$(OBJDIR)\HTTPCacheTable.obj \
Packit a4aae4
		$(OBJDIR)\AISResources.obj \
Packit a4aae4
		$(OBJDIR)\AISDatabaseParser.obj \
Packit a4aae4
		$(OBJDIR)\AISMerge.obj \
Packit a4aae4
		$(OBJDIR)\AISConnect.obj \
Packit a4aae4
		$(OBJDIR)\util_mit.obj \
Packit a4aae4
		$(OBJDIR)\ResponseTooBigErr.obj
Packit a4aae4
Packit a4aae4
SERVER_OBJS = $(OBJDIR)\DODSFilter.obj \
Packit a4aae4
		$(OBJDIR)\Ancillary.obj \
Packit a4aae4
		$(OBJDIR)\cgi_util.obj
Packit a4aae4
Packit a4aae4
# Convenience dependancies
Packit a4aae4
libdapMT.lib:		$(OBJDIR)\libdapMT.lib
Packit a4aae4
libdapclientMT.lib:	$(OBJDIR)\libdapclientMT.lib
Packit a4aae4
libdapserverMT.lib:	$(OBJDIR)\libdapserverMT.lib
Packit a4aae4
libdapMD.dll:		$(OBJDIR)\libdapMD.dll
Packit a4aae4
libdapclientMD.dll:	$(OBJDIR)\libdapclientMD.dll
Packit a4aae4
libdapserverMD.dll:	$(OBJDIR)\libdapserverMD.dll
Packit a4aae4
Packit a4aae4
getdap:		$(OBJDIR)\getdap.exe
Packit a4aae4
deflate:	$(OBJDIR)\deflate.exe
Packit a4aae4
Packit a4aae4
# Build the static-link core libraries
Packit a4aae4
$(OBJDIR)\libdapMT.lib: $(DAP_OBJS) $(GNU_OBJS)
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $** $(LIBS)
Packit a4aae4
	
Packit a4aae4
$(OBJDIR)\libdapserverMT.lib: $(SERVER_OBJS)
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $** $(LIBS)
Packit a4aae4
Packit a4aae4
$(OBJDIR)\libdapclientMT.lib: $(CLIENT_OBJS)
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $** $(LIBS)
Packit a4aae4
	
Packit a4aae4
############################################################################
Packit a4aae4
# The song and dances before the link lines below are to get a legitimate
Packit a4aae4
# module export definition (.def) for the dll's.  We use lib, dumpbin and
Packit a4aae4
# a 3rd-party awk to do this automatically in a rather round-about way.
Packit a4aae4
#
Packit a4aae4
# The $$ reduces to just $ as make evaluates that.  The \? to awk tells it
Packit a4aae4
# to be looking for a literal "?".  A textual description of the awk command
Packit a4aae4
# is as follows: "Find all second fields (2nd whitespace delimited groups of
Packit a4aae4
# characters) in the text lines that begin with ? and do not begin with ??_
Packit a4aae4
# (i.e., all C++ code originating methods minus the destructors which should
Packit a4aae4
# not be exposed do to how dll's work) and output those in the module export
Packit a4aae4
# definition file."  These are the methods that will be exposed to programs
Packit a4aae4
# that use the dll in question.  C code references begins with just "_" and
Packit a4aae4
# we need not expose those.
Packit a4aae4
############################################################################
Packit a4aae4
	
Packit a4aae4
# Build the dynamic-link core libraries
Packit a4aae4
$(OBJDIR)\libdapMD.dll: $(DAP_OBJS) $(GNU_OBJS)
Packit a4aae4
	@lib /NOLOGO /out:$(OBJDIR)\tmp.lib $** > $(OBJDIR)\devnull
Packit a4aae4
	@dumpbin /OUT:$(OBJDIR)\tmp.def /linkermember:2 $(OBJDIR)\tmp.lib > $(OBJDIR)\devnull
Packit a4aae4
	@echo EXPORTS > libdap.def
Packit a4aae4
	@gawk "{ if ($$2 ~ /^[\?].*/ && $$2 !~ /^\?\?_.*/) print $$2 }" < $(OBJDIR)\tmp.def >> libdap.def
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $** $(LIBS)
Packit a4aae4
	@del libdap.def $(OBJDIR)\tmp.lib $(OBJDIR)\tmp.def $(OBJDIR)\devnull
Packit a4aae4
Packit a4aae4
$(OBJDIR)\libdapclientMD.dll: $(CLIENT_OBJS)
Packit a4aae4
	@lib /NOLOGO /out:$(OBJDIR)\tmp.lib $** > $(OBJDIR)\devnull
Packit a4aae4
	@dumpbin /OUT:$(OBJDIR)\tmp.def /linkermember:2 $(OBJDIR)\tmp.lib > $(OBJDIR)\devnull
Packit a4aae4
	@echo EXPORTS > libdapclient.def
Packit a4aae4
	@gawk "{ if ($$2 ~ /^[\?].*/ && $$2 !~ /^\?\?_.*/) print $$2 }" < $(OBJDIR)\tmp.def >> libdapclient.def
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $** $(LIBS)
Packit a4aae4
	@del libdapclient.def $(OBJDIR)\tmp.lib $(OBJDIR)\tmp.def $(OBJDIR)\devnull
Packit a4aae4
Packit a4aae4
$(OBJDIR)\libdapserverMD.dll: $(SERVER_OBJS)
Packit a4aae4
	@lib /NOLOGO /out:$(OBJDIR)\tmp.lib $** > $(OBJDIR)\devnull
Packit a4aae4
	@dumpbin /OUT:$(OBJDIR)\tmp.def /linkermember:2 $(OBJDIR)\tmp.lib > $(OBJDIR)\devnull
Packit a4aae4
	@echo EXPORTS > libdapserver.def
Packit a4aae4
	@gawk "{ if ($$2 ~ /^[\?].*/ && $$2 !~ /^\?\?_.*/) print $$2 }" < $(OBJDIR)\tmp.def >> libdapserver.def
Packit a4aae4
	$(LINK) $(LFLAGS) /out:$@ $** $(LIBS)
Packit a4aae4
	@del libdapserver.def $(OBJDIR)\tmp.lib $(OBJDIR)\tmp.def $(OBJDIR)\devnull
Packit a4aae4
Packit a4aae4
# Libdap with the gram objs
Packit a4aae4
$(OBJDIR)\lex.das.obj					: $(SRCDIR)\lex.das.cc
Packit a4aae4
$(OBJDIR)\das.tab.obj					: $(SRCDIR)\das.tab.cc
Packit a4aae4
$(OBJDIR)\lex.dds.obj					: $(SRCDIR)\lex.dds.cc
Packit a4aae4
$(OBJDIR)\dds.tab.obj					: $(SRCDIR)\dds.tab.cc
Packit a4aae4
$(OBJDIR)\lex.ce_expr.obj				: $(SRCDIR)\lex.ce_expr.cc
Packit a4aae4
$(OBJDIR)\ce_expr.tab.obj				: $(SRCDIR)\ce_expr.tab.cc
Packit a4aae4
$(OBJDIR)\lex.Error.obj					: $(SRCDIR)\lex.Error.cc
Packit a4aae4
$(OBJDIR)\Error.obj						: $(SRCDIR)\Error.cc
Packit a4aae4
$(OBJDIR)\Error.tab.obj					: $(SRCDIR)\Error.tab.cc
Packit a4aae4
$(OBJDIR)\AttrTable.obj					: $(SRCDIR)\AttrTable.cc
Packit a4aae4
$(OBJDIR)\ConstraintEvaluator.obj 		: $(SRCDIR)\ConstraintEvaluator.cc
Packit a4aae4
$(OBJDIR)\DapIndent.obj					: $(SRCDIR)\DapIndent.cc
Packit a4aae4
$(OBJDIR)\DAS.obj						: $(SRCDIR)\DAS.cc
Packit a4aae4
$(OBJDIR)\DDS.obj						: $(SRCDIR)\DDS.cc
Packit a4aae4
$(OBJDIR)\DataDDS.obj					: $(SRCDIR)\DataDDS.cc
Packit a4aae4
$(OBJDIR)\DDXParser.obj					: $(SRCDIR)\DDXParser.cc
Packit a4aae4
$(OBJDIR)\BaseType.obj					: $(SRCDIR)\BaseType.cc
Packit a4aae4
$(OBJDIR)\Byte.obj						: $(SRCDIR)\Byte.cc
Packit a4aae4
$(OBJDIR)\Int32.obj						: $(SRCDIR)\Int32.cc
Packit a4aae4
$(OBJDIR)\Float64.obj					: $(SRCDIR)\Float64.cc
Packit a4aae4
$(OBJDIR)\GeoConstraint.obj				: $(SRCDIR)\GeoConstraint.cc
Packit a4aae4
$(OBJDIR)\GridGeoConstraint.obj			: $(SRCDIR)\GridGeoConstraint.cc
Packit a4aae4
$(OBJDIR)\Str.obj						: $(SRCDIR)\Str.cc
Packit a4aae4
$(OBJDIR)\Url.obj						: $(SRCDIR)\Url.cc
Packit a4aae4
$(OBJDIR)\Vector.obj					: $(SRCDIR)\Vector.cc
Packit a4aae4
$(OBJDIR)\Array.obj						: $(SRCDIR)\Array.cc
Packit a4aae4
$(OBJDIR)\Structure.obj					: $(SRCDIR)\Structure.cc
Packit a4aae4
$(OBJDIR)\Sequence.obj					: $(SRCDIR)\Sequence.cc
Packit a4aae4
$(OBJDIR)\Grid.obj						: $(SRCDIR)\Grid.cc
Packit a4aae4
$(OBJDIR)\UInt32.obj					: $(SRCDIR)\UInt32.cc
Packit a4aae4
$(OBJDIR)\Int16.obj						: $(SRCDIR)\Int16.cc
Packit a4aae4
$(OBJDIR)\UInt16.obj					: $(SRCDIR)\UInt16.cc
Packit a4aae4
$(OBJDIR)\Float32.obj					: $(SRCDIR)\Float32.cc
Packit a4aae4
$(OBJDIR)\Constructor.obj				: $(SRCDIR)\Constructor.cc
Packit a4aae4
$(OBJDIR)\PassiveInt32.obj				: $(SRCDIR)\PassiveInt32.cc
Packit a4aae4
$(OBJDIR)\PassiveFloat64.obj			: $(SRCDIR)\PassiveFloat64.cc
Packit a4aae4
$(OBJDIR)\PassiveStr.obj				: $(SRCDIR)\PassiveStr.cc
Packit a4aae4
$(OBJDIR)\PassiveUrl.obj				: $(SRCDIR)\PassiveUrl.cc
Packit a4aae4
$(OBJDIR)\PassiveUInt32.obj				: $(SRCDIR)\PassiveUInt32.cc
Packit a4aae4
$(OBJDIR)\PassiveInt16.obj				: $(SRCDIR)\PassiveInt16.cc
Packit a4aae4
$(OBJDIR)\PassiveUInt16.obj				: $(SRCDIR)\PassiveUInt16.cc
Packit a4aae4
$(OBJDIR)\PassiveFloat32.obj			: $(SRCDIR)\PassiveFloat32.cc
Packit a4aae4
$(OBJDIR)\PassiveArray.obj				: $(SRCDIR)\PassiveArray.cc
Packit a4aae4
$(OBJDIR)\PassiveStructure.obj			: $(SRCDIR)\PassiveStructure.cc
Packit a4aae4
$(OBJDIR)\BaseTypeFactory.obj			: $(SRCDIR)\BaseTypeFactory.cc
Packit a4aae4
$(OBJDIR)\SignalHandler.obj				: $(SRCDIR)\SignalHandler.cc
Packit a4aae4
$(OBJDIR)\InternalErr.obj				: $(SRCDIR)\InternalErr.cc
Packit a4aae4
$(OBJDIR)\util.obj						: $(SRCDIR)\util.cc
Packit a4aae4
$(OBJDIR)\xdrutil_ppc.obj				: $(SRCDIR)\Xdrutil_ppc.c
Packit a4aae4
$(OBJDIR)\XDRUtils.obj					: $(SRCDIR)\XDRUtils.cc
Packit a4aae4
$(OBJDIR)\XDRFileMarshaller.obj			: $(SRCDIR)\XDRFileMarshaller.cc
Packit a4aae4
$(OBJDIR)\XDRFileUnMarshaller.obj		: $(SRCDIR)\XDRFileUnMarshaller.cc	
Packit a4aae4
$(OBJDIR)\XDRStreamMarshaller.obj		: $(SRCDIR)\XDRStreamMarshaller.cc
Packit a4aae4
$(OBJDIR)\parser-util.obj				: $(SRCDIR)\parser-util.cc
Packit a4aae4
$(OBJDIR)\escaping.obj					: $(SRCDIR)\escaping.cc
Packit a4aae4
$(OBJDIR)\Clause.obj					: $(SRCDIR)\Clause.cc
Packit a4aae4
$(OBJDIR)\RValue.obj					: $(SRCDIR)\RValue.cc
Packit a4aae4
$(OBJDIR)\gse.tab.obj					: $(SRCDIR)\gse.tab.cc
Packit a4aae4
$(OBJDIR)\ce_functions.obj				: $(SRCDIR)\ce_functions.cc
Packit a4aae4
$(OBJDIR)\GSEClause.obj					: $(SRCDIR)\GSEClause.cc
Packit a4aae4
$(OBJDIR)\lex.gse_.obj					: $(SRCDIR)\lex.gse_.cc
Packit a4aae4
$(OBJDIR)\ArrayGeoConstraint.obj		: $(SRCDIR)\ArrayGeoConstraint.cc
Packit a4aae4
Packit a4aae4
# Libdap client
Packit a4aae4
$(OBJDIR)\RCReader.obj					: $(SRCDIR)\RCReader.cc
Packit a4aae4
$(OBJDIR)\Connect.obj					: $(SRCDIR)\Connect.cc
Packit a4aae4
$(OBJDIR)\HTTPConnect.obj				: $(SRCDIR)\HTTPConnect.cc
Packit a4aae4
$(OBJDIR)\HTTPCache.obj					: $(SRCDIR)\HTTPCache.cc
Packit a4aae4
$(OBJDIR)\HTTPCacheTable.obj			: $(SRCDIR)\HTTPCacheTable.cc
Packit a4aae4
$(OBJDIR)\AISResources.obj				: $(SRCDIR)\AISResources.cc
Packit a4aae4
$(OBJDIR)\AISDatabaseParser.obj			: $(SRCDIR)\AISDatabaseParser.cc
Packit a4aae4
$(OBJDIR)\AISMerge.obj					: $(SRCDIR)\AISMerge.cc
Packit a4aae4
$(OBJDIR)\AISConnect.obj				: $(SRCDIR)\AISConnect.cc
Packit a4aae4
$(OBJDIR)\util_mit.obj					: $(SRCDIR)\util_mit.cc
Packit a4aae4
$(OBJDIR)\ResponseTooBigErr.obj			: $(SRCDIR)\ResponseTooBigErr.cc
Packit a4aae4
Packit a4aae4
# libdap server
Packit a4aae4
$(OBJDIR)\DODSFilter.obj				: $(SRCDIR)\DODSFilter.cc
Packit a4aae4
$(OBJDIR)\Ancillary.obj					: $(SRCDIR)\Ancillary.cc
Packit a4aae4
$(OBJDIR)\cgi_util.obj					: $(SRCDIR)\cgi_util.cc
Packit a4aae4
Packit a4aae4
# Regular expression code
Packit a4aae4
$(OBJDIR)\GetOpt.obj		: $(SRCDIR)\GNU\GetOpt.cc
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $(SRCDIR)\GNU\GetOpt.cc
Packit a4aae4
$(OBJDIR)\GNURegex.obj		: $(SRCDIR)\GNU\GNURegex.cc
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $(SRCDIR)\GNU\GNURegex.cc
Packit a4aae4
$(OBJDIR)\regex.obj		: $(SRCDIR)\win32\gl\regex.c
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\regex.c
Packit a4aae4
$(OBJDIR)\strcasecmp.obj	: $(SRCDIR)\win32\gl\strcasecmp.c
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\strcasecmp.c
Packit a4aae4
$(OBJDIR)\strncasecmp.obj	: $(SRCDIR)\win32\gl\strncasecmp.c
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\strncasecmp.c
Packit a4aae4
$(OBJDIR)\strnlen1.obj	: $(SRCDIR)\win32\gl\strnlen1.c
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\strnlen1.c
Packit a4aae4
$(OBJDIR)\localcharset.obj	: $(SRCDIR)\win32\gl\localcharset.c
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\localcharset.c
Packit a4aae4
Packit a4aae4
# Source generated by compiler tools
Packit a4aae4
$(SRCDIR)\lex.das.cc:	$(SRCDIR)\das.lex $(SRCDIR)\das.tab.cc $(SRCDIR)\das.tab.hh
Packit a4aae4
	$(LEX) -8 $(SRCDIR)\das.lex
Packit a4aae4
	@move lex.das.cc $(SRCDIR)\lex.das.cc
Packit a4aae4
#	@del lex.das.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\das.tab.cc $(SRCDIR)\das.tab.hh: $(SRCDIR)\das.y $(SRCDIR)\DAS.h
Packit a4aae4
	$(YACC) $(YACCFLAGS) -p das -o $(SRCDIR)\das.tab.cc $(SRCDIR)\das.y
Packit a4aae4
#	@move $(SRCDIR)\das.tab.cc.h $(SRCDIR)\das.tab.hh
Packit a4aae4
#	@del $(SRCDIR)\das.tab.cc.h
Packit a4aae4
Packit a4aae4
$(SRCDIR)\lex.dds.cc:	$(SRCDIR)\dds.lex $(SRCDIR)\dds.tab.cc $(SRCDIR)\dds.tab.hh
Packit a4aae4
	$(LEX) -8 $(SRCDIR)\dds.lex
Packit a4aae4
	@move lex.dds.cc $(SRCDIR)\lex.dds.cc
Packit a4aae4
#	@del lex.dds.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\dds.tab.cc $(SRCDIR)\dds.tab.hh: $(SRCDIR)\dds.y
Packit a4aae4
	$(YACC) $(YACCFLAGS) -p dds -o $(SRCDIR)\dds.tab.cc $(SRCDIR)\dds.y
Packit a4aae4
	@move $(SRCDIR)\dds.tab.cc.h $(SRCDIR)\dds.tab.hh
Packit a4aae4
#	@del $(SRCDIR)\dds.tab.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\lex.ce_expr.cc: $(SRCDIR)\ce_expr.lex $(SRCDIR)\ce_expr.tab.cc $(SRCDIR)\ce_expr.tab.hh
Packit a4aae4
	$(LEX) -8 $(SRCDIR)\ce_expr.lex
Packit a4aae4
	@move lex.ce_expr.cc $(SRCDIR)\lex.ce_expr.cc
Packit a4aae4
#	@del lex.ce_expr.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\ce_expr.tab.cc $(SRCDIR)\ce_expr.tab.hh: $(SRCDIR)\ce_expr.y
Packit a4aae4
	$(YACC) $(YACCFLAGS) -p ce_expr -o $(SRCDIR)\ce_expr.tab.cc $(SRCDIR)\ce_expr.y
Packit a4aae4
	@move $(SRCDIR)\ce_expr.tab.cc.h $(SRCDIR)\ce_expr.tab.hh
Packit a4aae4
#	@del $(SRCDIR)\ce_expr.tab.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\lex.Error.cc:	$(SRCDIR)\Error.lex $(SRCDIR)\Error.tab.cc $(SRCDIR)\Error.tab.hh
Packit a4aae4
	$(LEX) -8 $(SRCDIR)\Error.lex
Packit a4aae4
	@move lex.Error.cc $(SRCDIR)\lex.Error.cc
Packit a4aae4
#	@del lex.Error.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\Error.tab.cc $(SRCDIR)\Error.tab.hh: $(SRCDIR)\Error.y
Packit a4aae4
	$(YACC) $(YACCFLAGS) -p Error -o $(SRCDIR)\Error.tab.cc $(SRCDIR)\Error.y
Packit a4aae4
	@move $(SRCDIR)\Error.tab.cc.h $(SRCDIR)\Error.tab.hh
Packit a4aae4
#	@del $(SRCDIR)\Error.tab.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\lex.gse_.cc:	$(SRCDIR)\gse.lex $(SRCDIR)\gse.tab.cc $(SRCDIR)\gse.tab.hh
Packit a4aae4
	$(LEX) -8 $(SRCDIR)\gse.lex
Packit a4aae4
	@move lex.gse_.cc $(SRCDIR)\lex.gse_.cc
Packit a4aae4
#	@del lex.gse_.c
Packit a4aae4
Packit a4aae4
$(SRCDIR)\gse.tab.cc $(SRCDIR)\gse.tab.hh: $(SRCDIR)\gse.y
Packit a4aae4
	$(YACC) $(YACCFLAGS) -p gse_ -o $(SRCDIR)\gse.tab.cc $(SRCDIR)\gse.y
Packit a4aae4
	@move $(SRCDIR)\gse.tab.cc.h $(SRCDIR)\gse.tab.hh
Packit a4aae4
#	@del $(SRCDIR)\gse.tab.c
Packit a4aae4
Packit a4aae4
$(OBJDIR)\getdap.exe: $(OBJDIR)\getdap.obj
Packit a4aae4
Packit a4aae4
$(OBJDIR)\deflate.exe: $(OBJDIR)\deflate.obj 
Packit a4aae4
Packit a4aae4
# Command-Line Client and select utils in console mode
Packit a4aae4
$(OBJDIR)\getdap.obj    : $(SRCDIR)\getdap.cc
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $(SRCDIR)\getdap.cc
Packit a4aae4
Packit a4aae4
$(OBJDIR)\deflate.obj    : $(SRCDIR)\deflate.c
Packit a4aae4
	@$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\deflate.c
Packit a4aae4
Packit a4aae4
# We have to create a temporary unistd.h because bison
Packit a4aae4
# and/or flex create source that includes that - even though
Packit a4aae4
# there is no such header under win32 and it is unnecessary there
Packit a4aae4
# (that is, even though these utils can run under win32 - by definition
Packit a4aae4
# they generate output for the UNIX world).  This stupid pet trick
Packit a4aae4
# also properly defines isatty() for the generated source under win32.
Packit a4aae4
setup:
Packit a4aae4
	@-echo /*  Dummy patch header to get win32 flex/bison generated  */ > unistd.h
Packit a4aae4
	@-echo /*  source code to compile under win32.  If you see this  */ >> unistd.h
Packit a4aae4
	@-echo /*  temp file, feel free to scratch it.                   */ >> unistd.h
Packit a4aae4
	@-echo #include "io.h" >> unistd.h
Packit a4aae4
Packit a4aae4
# Win32 libnc-dap requires the win32\gl\regex.h.  Under unix builds, it is simply
Packit a4aae4
# assumed to be on the machine already.
Packit a4aae4
install: all mkinstdirs
Packit a4aae4
	copy $(OBJDIR)\MT\libdapMT.lib $(INSTALLLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MT\libdapclientMT.lib $(INSTALLLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MT\libdapserverMT.lib $(INSTALLLIBDIR)
Packit a4aae4
Packit a4aae4
	copy $(OBJDIR)\MD\libdapMD.dll* $(INSTALLDLLDIR)
Packit a4aae4
	mt -nologo -manifest $(INSTALLDLLDIR)\libdapMD.dll.manifest -outputresource:$(INSTALLDLLDIR)\libdapMD.dll;2
Packit a4aae4
	del $(INSTALLDLLDIR)\libdapMD.dll.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\libdapMD.lib $(INSTALLLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MD\libdapclientMD.dll* $(INSTALLDLLDIR)
Packit a4aae4
	mt -nologo -manifest $(INSTALLDLLDIR)\libdapclientMD.dll.manifest -outputresource:$(INSTALLDLLDIR)\libdapclientMD.dll;2
Packit a4aae4
	del $(INSTALLDLLDIR)\libdapclientMD.dll.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\libdapclientMD.lib $(INSTALLLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MD\libdapserverMD.dll* $(INSTALLDLLDIR)
Packit a4aae4
	mt -nologo -manifest $(INSTALLDLLDIR)\libdapserverMD.dll.manifest -outputresource:$(INSTALLDLLDIR)\libdapserverMD.dll;2
Packit a4aae4
	del $(INSTALLDLLDIR)\libdapserverMD.dll.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\libdapserverMD.lib $(INSTALLLIBDIR)
Packit a4aae4
Packit a4aae4
	copy $(OBJDIR)\MD\getdap.exe* $(INSTALLBINDIR)
Packit a4aae4
	mt -nologo -manifest $(INSTALLBINDIR)\getdap.exe.manifest -outputresource:$(INSTALLBINDIR)\getdap.exe;1
Packit a4aae4
	del $(INSTALLBINDIR)\getdap.exe.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\deflate.exe* $(INSTALLETCDIR)
Packit a4aae4
	mt -nologo -manifest $(INSTALLETCDIR)\deflate.exe.manifest -outputresource:$(INSTALLETCDIR)\deflate.exe;1
Packit a4aae4
	del $(INSTALLETCDIR)\deflate.exe.manifest
Packit a4aae4
	copy dods-datatypes.h $(INSTALLINCDIR)
Packit a4aae4
	copy xdr-datatypes.h $(INSTALLINCDIR)
Packit a4aae4
	copy $(SRCDIR)\*.h $(INSTALLINCDIR)
Packit a4aae4
	copy $(SRCDIR)\GNU\*.h $(INSTALLINCDIR)\GNU
Packit a4aae4
	copy $(SRCDIR)\win32\gl\regex.h $(INSTALLINCDIR)
Packit a4aae4
	
Packit a4aae4
package: all mkpkgdirs document
Packit a4aae4
	copy $(OBJDIR)\MT\libdapMT.lib $(PKGLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MT\libdapclientMT.lib $(PKGLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MT\libdapserverMT.lib $(PKGLIBDIR)
Packit a4aae4
Packit a4aae4
	copy $(OBJDIR)\MD\libdapMD.dll* $(PKGDLLDIR)
Packit a4aae4
	mt -nologo -manifest $(PKGDLLDIR)\libdapMD.dll.manifest -outputresource:$(PKGDLLDIR)\libdapMD.dll;2
Packit a4aae4
	del $(PKGDLLDIR)\libdapMD.dll.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\libdapMD.lib $(PKGLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MD\libdapclientMD.dll* $(PKGDLLDIR)
Packit a4aae4
	mt -nologo -manifest $(PKGDLLDIR)\libdapclientMD.dll.manifest -outputresource:$(PKGDLLDIR)\libdapclientMD.dll;2
Packit a4aae4
	del $(PKGDLLDIR)\libdapclientMD.dll.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\libdapclientMD.lib $(PKGLIBDIR)
Packit a4aae4
	copy $(OBJDIR)\MD\libdapserverMD.dll* $(PKGDLLDIR)
Packit a4aae4
	mt -nologo -manifest $(PKGDLLDIR)\libdapserverMD.dll.manifest -outputresource:$(PKGDLLDIR)\libdapserverMD.dll;2
Packit a4aae4
	del $(PKGDLLDIR)\libdapserverMD.dll.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\libdapserverMD.lib $(PKGLIBDIR)
Packit a4aae4
Packit a4aae4
	copy $(OBJDIR)\MD\getdap.exe* $(PKGBINDIR)
Packit a4aae4
	mt -nologo -manifest $(PKGBINDIR)\getdap.exe.manifest -outputresource:$(PKGBINDIR)\getdap.exe;1
Packit a4aae4
	del $(PKGBINDIR)\getdap.exe.manifest
Packit a4aae4
	copy $(OBJDIR)\MD\deflate.exe* $(PKGETCDIR)
Packit a4aae4
	mt -nologo -manifest $(PKGETCDIR)\deflate.exe.manifest -outputresource:$(PKGETCDIR)\deflate.exe;1
Packit a4aae4
	del $(PKGETCDIR)\deflate.exe.manifest
Packit a4aae4
	copy dods-datatypes.h $(PKGINCDIR)
Packit a4aae4
	copy xdr-datatypes.h $(PKGINCDIR)
Packit a4aae4
	copy $(SRCDIR)\*.h $(PKGINCDIR)
Packit a4aae4
	copy $(SRCDIR)\GNU\*.h $(PKGINCDIR)\GNU
Packit a4aae4
	copy $(SRCDIR)\win32\gl\regex.h $(PKGINCDIR)
Packit a4aae4
	
Packit a4aae4
mkinstdirs:	
Packit a4aae4
	@-md $(INSTALLLIBDIR)
Packit a4aae4
	@-md $(INSTALLBINDIR)
Packit a4aae4
	@-md $(INSTALLETCDIR)
Packit a4aae4
	@-md $(INSTALLDLLDIR)
Packit a4aae4
	@-md $(INSTALLINCDIR)
Packit a4aae4
	@-md $(INSTALLINCDIR)\GNU
Packit a4aae4
	
Packit a4aae4
mkpkgdirs:	
Packit a4aae4
	@-md $(PKGLIBDIR)
Packit a4aae4
	@-md $(PKGBINDIR)
Packit a4aae4
	@-md $(PKGETCDIR)
Packit a4aae4
	@-md $(PKGDLLDIR)
Packit a4aae4
	@-md $(PKGINCDIR)
Packit a4aae4
	@-md $(PKGINCDIR)\GNU
Packit a4aae4
	
Packit a4aae4
document:
Packit a4aae4
	@-md $(PKGSAMPLEDIR)
Packit a4aae4
	copy $(SAMPLEDIR)\* $(PKGSAMPLEDIR)
Packit a4aae4
	copy $(DOCDIR)\readme.txt $(PKGDIR)
Packit a4aae4
Packit a4aae4
clean:
Packit a4aae4
	@-rd /Q /S $(OBJDIR) $(PKGDIR)
Packit a4aae4
	@-del unistd.h
Packit a4aae4
Packit a4aae4
grammarclean: clean
Packit a4aae4
	@-del $(SRCDIR)\*.tab.cc
Packit a4aae4
	@-del $(SRCDIR)\*.tab.hh
Packit a4aae4
	@-del $(SRCDIR)\lex.*.cc
Packit a4aae4
Packit a4aae4
!INCLUDE "dependancies"
Packit a4aae4
Packit a4aae4
Packit a4aae4