1# Makefile for libdap (under VC++ on win32) 2 3# Source code, samples, docs and target build areas 4OBJDIR = .\objects 5SRCDIR = .. 6DOCDIR = .\doc 7SAMPLEDIR = .\sample 8 9# This is the prepackaging area. Contents should never be on the build path. 10# Fill in the VERSION (e.g., "= 3.7.3") to generate a final, version stamped 11# release of the product. 12PRODUCT = libdap 13VERSION = 14PKGDIR = ..\..\prepkg\opendap\$(PRODUCT)$(VERSION) 15PKGLIBDIR = $(PKGDIR)\lib 16PKGDLLDIR = $(PKGDIR)\dll 17PKGBINDIR = $(PKGDIR)\bin 18PKGETCDIR = $(PKGDIR)\etc 19PKGINCDIR = $(PKGDIR)\include 20PKGSAMPLEDIR = $(PKGDIR)\sample 21 22# This is the installation area. It should never be on the build path either 23# (except when building other, non-core components). 24INSTALLDIR = ..\.. 25INSTALLLIBDIR = $(INSTALLDIR)\lib 26INSTALLDLLDIR = $(INSTALLDIR)\dll 27INSTALLBINDIR = $(INSTALLDIR)\bin 28INSTALLETCDIR = $(INSTALLDIR)\etc 29INSTALLINCDIR = $(INSTALLDIR)\include 30 31# Headers only come from the source distribution itself. Neither the 32# Prepackaging or installation areas should be on any path for building 33# the OPeNDAP Core. 34INCLUDEDIR = $(SRCDIR) 35 36# Compiler, Linker 37CC = cl 38LINK = link 39 40# Compiler tools 41LEX = flex 42YACC = bison 43 44# We suppress #line directives under win32 to prevent warnings resulting 45# when a "\" followed by some char is interpreted as an escape sequence. 46YACCFLAGS = --no-lines -d -v 47 48# MT = Static Link Multi-Threaded Model 49# MD = Dynamic Link Multi-Threaded DLL Model 50 51# Setup compiler flags 52MTCFLAGS = /MT /D HAVE_PTHREAD_H 53MDCFLAGS = /MD /D HAVE_PTHREAD_H 54CFLAGS = /nologo /W0 /GR /EHsc /c 55 56# Setup linker flags for libdap 57DAP_MTLFLAGS = -lib /nologo -libpath:$(OBJDIR)\MT 58DAP_MDLFLAGS = /nologo -libpath:$(OBJDIR)\MD /dll /def:libdap.def /map /fixed:NO /base:0x06000000 /NODEFAULTLIB:LIBCMT.lib 59 60# Setup linker flags for libdapclient 61CLIENT_MTLFLAGS = -lib /nologo -libpath:$(OBJDIR)\MT 62CLIENT_MDLFLAGS = /nologo -libpath:$(OBJDIR)\MD /dll /def:libdapclient.def /map /fixed:NO /base:0x07000000 /NODEFAULTLIB:LIBCMT.lib 63 64# Setup linker flags for libdapserver 65SERVER_MTLFLAGS = -lib /nologo -libpath:$(OBJDIR)\MT 66SERVER_MDLFLAGS = /nologo -libpath:$(OBJDIR)\MD /dll /def:libdapserver.def /map /fixed:NO /base:0x08000000 /NODEFAULTLIB:LIBCMT.lib 67 68# Setup link libraries for libdap 69DAP_MTLIBS = 70DAP_MDLIBS = libdirent.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib 71 72# Setup link libraries for libdapclient 73CLIENT_MTLIBS = 74CLIENT_MDLIBS = libdapMD.lib libdirent.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib 75 76# Setup link libraries for libdapserver 77SERVER_MTLIBS = 78SERVER_MDLIBS = libdapMD.lib libdirent.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib 79 80# Setup linker flags for executables 81EMTLFLAGS = /nologo /libpath:$(OBJDIR)\MT /NODEFAULTLIB:MSVCRT.lib 82EMDLFLAGS = /nologo /libpath:$(OBJDIR)\MD /NODEFAULTLIB:LIBCMT.lib 83 84# Setup link libraries for executables 85EMTLLIBS = libdapclientMT.lib libdapserverMT.lib libdapMT.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib 86EMDLLIBS = libdapclientMD.lib libdapserverMD.lib libdapMD.lib libxml2.lib libcurl.lib zlib.lib libxdr.lib pthreadVC.lib 87 88# Setup compiler includes and defines 89INCS = /I . /I .. /I ..\GNU /I ..\win32\gl /I $(INCLUDEDIR) 90DEFS = /D WIN32 /D WIN32_LEAN_AND_MEAN /D HAVE_CONFIG_H 91CPPFLAGS = $(DEFS) $(INCS) 92 93default: 94 @echo "usage: nmake all; nmake install; nmake package" 95 96all: setup modelMT modelMD 97 98modelMT: 99 @-md $(OBJDIR)\MT 100 @echo "Building MT model libraries for the Core" 101 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(DAP_MTLFLAGS)" LIBS="$(DAP_MTLIBS)" OBJDIR=$(OBJDIR)\MT libdapMT.lib 102 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(CLIENT_MTLFLAGS)" LIBS="$(CLIENT_MTLIBS)" OBJDIR=$(OBJDIR)\MT libdapclientMT.lib 103 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(SERVER_MTLFLAGS)" LIBS="$(SERVER_MTLIBS)" OBJDIR=$(OBJDIR)\MT libdapserverMT.lib 104 105 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(EMTLFLAGS)" LIBS="$(EMTLLIBS)" OBJDIR=$(OBJDIR)\MT getdap 106 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MTCFLAGS)" LFLAGS="$(EMTLFLAGS)" LIBS="$(EMTLLIBS)" OBJDIR=$(OBJDIR)\MT deflate 107 @echo "MT model libraries for the Core are complete" 108 109modelMD: 110 @-md $(OBJDIR)\MD 111 @echo "Building MD model libraries for the Core" 112 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(DAP_MDLFLAGS)" LIBS="$(DAP_MDLIBS)" OBJDIR=$(OBJDIR)\MD libdapMD.dll 113 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(CLIENT_MDLFLAGS)" LIBS="$(CLIENT_MDLIBS)" OBJDIR=$(OBJDIR)\MD libdapclientMD.dll 114 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(SERVER_MDLFLAGS)" LIBS="$(SERVER_MDLIBS)" OBJDIR=$(OBJDIR)\MD libdapserverMD.dll 115 116 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(EMDLFLAGS)" LIBS="$(EMDLLIBS)" OBJDIR=$(OBJDIR)\MD getdap 117 @nmake /NOLOGO CFLAGS="$(CFLAGS) $(MDCFLAGS)" LFLAGS="$(EMDLFLAGS)" LIBS="$(EMDLLIBS)" OBJDIR=$(OBJDIR)\MD deflate 118 @echo "MD model libraries for the Core are complete" 119 120# Clear built-in rules and set new ones 121.SUFFIXES : 122.SUFFIXES : .obj .c .cc .exe 123 124# Rules for library objects, both the .c and .cc's are C++ 125{$(SRCDIR)}.c{$(OBJDIR)}.obj: 126 $(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $< 127 128{$(SRCDIR)}.cc{$(OBJDIR)}.obj: 129 $(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $< 130 131# Rule for linking executables 132{$(OBJDIR)}.obj{$(OBJDIR)}.exe: 133 $(LINK) $(LFLAGS) /out:$@ $< $(LIBS) 134 135GNU_OBJS = $(OBJDIR)\GetOpt.obj \ 136 $(OBJDIR)\GNURegex.obj \ 137 $(OBJDIR)\regex.obj \ 138 $(OBJDIR)\strcasecmp.obj \ 139 $(OBJDIR)\strncasecmp.obj \ 140 $(OBJDIR)\strnlen1.obj \ 141 $(OBJDIR)\localcharset.obj 142 143GRAM_OBJS = $(OBJDIR)\lex.das.obj \ 144 $(OBJDIR)\das.tab.obj \ 145 $(OBJDIR)\lex.dds.obj \ 146 $(OBJDIR)\dds.tab.obj \ 147 $(OBJDIR)\lex.ce_expr.obj \ 148 $(OBJDIR)\ce_expr.tab.obj \ 149 $(OBJDIR)\lex.Error.obj \ 150 $(OBJDIR)\Error.tab.obj 151 152DAP_OBJS = $(GRAM_OBJS) \ 153 $(OBJDIR)\AttrTable.obj \ 154 $(OBJDIR)\ConstraintEvaluator.obj \ 155 $(OBJDIR)\DAS.obj \ 156 $(OBJDIR)\DDS.obj \ 157 $(OBJDIR)\DataDDS.obj \ 158 $(OBJDIR)\DDXParser.obj \ 159 $(OBJDIR)\BaseType.obj \ 160 $(OBJDIR)\Byte.obj \ 161 $(OBJDIR)\Error.obj \ 162 $(OBJDIR)\Int32.obj \ 163 $(OBJDIR)\Float64.obj \ 164 $(OBJDIR)\Str.obj \ 165 $(OBJDIR)\Url.obj \ 166 $(OBJDIR)\Vector.obj \ 167 $(OBJDIR)\Array.obj \ 168 $(OBJDIR)\Structure.obj \ 169 $(OBJDIR)\Sequence.obj \ 170 $(OBJDIR)\Grid.obj \ 171 $(OBJDIR)\UInt32.obj \ 172 $(OBJDIR)\Int16.obj \ 173 $(OBJDIR)\UInt16.obj \ 174 $(OBJDIR)\Float32.obj \ 175 $(OBJDIR)\GeoConstraint.obj \ 176 $(OBJDIR)\GridGeoConstraint.obj \ 177 $(OBJDIR)\Constructor.obj \ 178 $(OBJDIR)\BaseTypeFactory.obj \ 179 $(OBJDIR)\SignalHandler.obj \ 180 $(OBJDIR)\InternalErr.obj \ 181 $(OBJDIR)\util.obj \ 182 $(OBJDIR)\xdrutil_ppc.obj \ 183 $(OBJDIR)\XDRUtils.obj \ 184 $(OBJDIR)\XDRFileMarshaller.obj \ 185 $(OBJDIR)\XDRFileUnMarshaller.obj \ 186 $(OBJDIR)\XDRStreamMarshaller.obj \ 187 $(OBJDIR)\parser-util.obj \ 188 $(OBJDIR)\escaping.obj \ 189 $(OBJDIR)\Clause.obj \ 190 $(OBJDIR)\RValue.obj \ 191 $(OBJDIR)\gse.tab.obj \ 192 $(OBJDIR)\ce_functions.obj \ 193 $(OBJDIR)\GSEClause.obj \ 194 $(OBJDIR)\lex.gse_.obj \ 195 $(OBJDIR)\ArrayGeoConstraint.obj \ 196 $(OBJDIR)\DapIndent.obj 197 198CLIENT_OBJS = $(OBJDIR)\RCReader.obj \ 199 $(OBJDIR)\Connect.obj \ 200 $(OBJDIR)\HTTPConnect.obj \ 201 $(OBJDIR)\HTTPCache.obj \ 202 $(OBJDIR)\HTTPCacheTable.obj \ 203 $(OBJDIR)\AISResources.obj \ 204 $(OBJDIR)\AISDatabaseParser.obj \ 205 $(OBJDIR)\AISMerge.obj \ 206 $(OBJDIR)\AISConnect.obj \ 207 $(OBJDIR)\util_mit.obj \ 208 $(OBJDIR)\ResponseTooBigErr.obj 209 210SERVER_OBJS = $(OBJDIR)\DODSFilter.obj \ 211 $(OBJDIR)\Ancillary.obj \ 212 $(OBJDIR)\cgi_util.obj 213 214# Convenience dependancies 215libdapMT.lib: $(OBJDIR)\libdapMT.lib 216libdapclientMT.lib: $(OBJDIR)\libdapclientMT.lib 217libdapserverMT.lib: $(OBJDIR)\libdapserverMT.lib 218libdapMD.dll: $(OBJDIR)\libdapMD.dll 219libdapclientMD.dll: $(OBJDIR)\libdapclientMD.dll 220libdapserverMD.dll: $(OBJDIR)\libdapserverMD.dll 221 222getdap: $(OBJDIR)\getdap.exe 223deflate: $(OBJDIR)\deflate.exe 224 225# Build the static-link core libraries 226$(OBJDIR)\libdapMT.lib: $(DAP_OBJS) $(GNU_OBJS) 227 $(LINK) $(LFLAGS) /out:$@ $** $(LIBS) 228 229$(OBJDIR)\libdapserverMT.lib: $(SERVER_OBJS) 230 $(LINK) $(LFLAGS) /out:$@ $** $(LIBS) 231 232$(OBJDIR)\libdapclientMT.lib: $(CLIENT_OBJS) 233 $(LINK) $(LFLAGS) /out:$@ $** $(LIBS) 234 235############################################################################ 236# The song and dances before the link lines below are to get a legitimate 237# module export definition (.def) for the dll's. We use lib, dumpbin and 238# a 3rd-party awk to do this automatically in a rather round-about way. 239# 240# The $$ reduces to just $ as make evaluates that. The \? to awk tells it 241# to be looking for a literal "?". A textual description of the awk command 242# is as follows: "Find all second fields (2nd whitespace delimited groups of 243# characters) in the text lines that begin with ? and do not begin with ??_ 244# (i.e., all C++ code originating methods minus the destructors which should 245# not be exposed do to how dll's work) and output those in the module export 246# definition file." These are the methods that will be exposed to programs 247# that use the dll in question. C code references begins with just "_" and 248# we need not expose those. 249############################################################################ 250 251# Build the dynamic-link core libraries 252$(OBJDIR)\libdapMD.dll: $(DAP_OBJS) $(GNU_OBJS) 253 @lib /NOLOGO /out:$(OBJDIR)\tmp.lib $** > $(OBJDIR)\devnull 254 @dumpbin /OUT:$(OBJDIR)\tmp.def /linkermember:2 $(OBJDIR)\tmp.lib > $(OBJDIR)\devnull 255 @echo EXPORTS > libdap.def 256 @gawk "{ if ($$2 ~ /^[\?].*/ && $$2 !~ /^\?\?_.*/) print $$2 }" < $(OBJDIR)\tmp.def >> libdap.def 257 $(LINK) $(LFLAGS) /out:$@ $** $(LIBS) 258 @del libdap.def $(OBJDIR)\tmp.lib $(OBJDIR)\tmp.def $(OBJDIR)\devnull 259 260$(OBJDIR)\libdapclientMD.dll: $(CLIENT_OBJS) 261 @lib /NOLOGO /out:$(OBJDIR)\tmp.lib $** > $(OBJDIR)\devnull 262 @dumpbin /OUT:$(OBJDIR)\tmp.def /linkermember:2 $(OBJDIR)\tmp.lib > $(OBJDIR)\devnull 263 @echo EXPORTS > libdapclient.def 264 @gawk "{ if ($$2 ~ /^[\?].*/ && $$2 !~ /^\?\?_.*/) print $$2 }" < $(OBJDIR)\tmp.def >> libdapclient.def 265 $(LINK) $(LFLAGS) /out:$@ $** $(LIBS) 266 @del libdapclient.def $(OBJDIR)\tmp.lib $(OBJDIR)\tmp.def $(OBJDIR)\devnull 267 268$(OBJDIR)\libdapserverMD.dll: $(SERVER_OBJS) 269 @lib /NOLOGO /out:$(OBJDIR)\tmp.lib $** > $(OBJDIR)\devnull 270 @dumpbin /OUT:$(OBJDIR)\tmp.def /linkermember:2 $(OBJDIR)\tmp.lib > $(OBJDIR)\devnull 271 @echo EXPORTS > libdapserver.def 272 @gawk "{ if ($$2 ~ /^[\?].*/ && $$2 !~ /^\?\?_.*/) print $$2 }" < $(OBJDIR)\tmp.def >> libdapserver.def 273 $(LINK) $(LFLAGS) /out:$@ $** $(LIBS) 274 @del libdapserver.def $(OBJDIR)\tmp.lib $(OBJDIR)\tmp.def $(OBJDIR)\devnull 275 276# Libdap with the gram objs 277$(OBJDIR)\lex.das.obj : $(SRCDIR)\lex.das.cc 278$(OBJDIR)\das.tab.obj : $(SRCDIR)\das.tab.cc 279$(OBJDIR)\lex.dds.obj : $(SRCDIR)\lex.dds.cc 280$(OBJDIR)\dds.tab.obj : $(SRCDIR)\dds.tab.cc 281$(OBJDIR)\lex.ce_expr.obj : $(SRCDIR)\lex.ce_expr.cc 282$(OBJDIR)\ce_expr.tab.obj : $(SRCDIR)\ce_expr.tab.cc 283$(OBJDIR)\lex.Error.obj : $(SRCDIR)\lex.Error.cc 284$(OBJDIR)\Error.obj : $(SRCDIR)\Error.cc 285$(OBJDIR)\Error.tab.obj : $(SRCDIR)\Error.tab.cc 286$(OBJDIR)\AttrTable.obj : $(SRCDIR)\AttrTable.cc 287$(OBJDIR)\ConstraintEvaluator.obj : $(SRCDIR)\ConstraintEvaluator.cc 288$(OBJDIR)\DapIndent.obj : $(SRCDIR)\DapIndent.cc 289$(OBJDIR)\DAS.obj : $(SRCDIR)\DAS.cc 290$(OBJDIR)\DDS.obj : $(SRCDIR)\DDS.cc 291$(OBJDIR)\DataDDS.obj : $(SRCDIR)\DataDDS.cc 292$(OBJDIR)\DDXParser.obj : $(SRCDIR)\DDXParser.cc 293$(OBJDIR)\BaseType.obj : $(SRCDIR)\BaseType.cc 294$(OBJDIR)\Byte.obj : $(SRCDIR)\Byte.cc 295$(OBJDIR)\Int32.obj : $(SRCDIR)\Int32.cc 296$(OBJDIR)\Float64.obj : $(SRCDIR)\Float64.cc 297$(OBJDIR)\GeoConstraint.obj : $(SRCDIR)\GeoConstraint.cc 298$(OBJDIR)\GridGeoConstraint.obj : $(SRCDIR)\GridGeoConstraint.cc 299$(OBJDIR)\Str.obj : $(SRCDIR)\Str.cc 300$(OBJDIR)\Url.obj : $(SRCDIR)\Url.cc 301$(OBJDIR)\Vector.obj : $(SRCDIR)\Vector.cc 302$(OBJDIR)\Array.obj : $(SRCDIR)\Array.cc 303$(OBJDIR)\Structure.obj : $(SRCDIR)\Structure.cc 304$(OBJDIR)\Sequence.obj : $(SRCDIR)\Sequence.cc 305$(OBJDIR)\Grid.obj : $(SRCDIR)\Grid.cc 306$(OBJDIR)\UInt32.obj : $(SRCDIR)\UInt32.cc 307$(OBJDIR)\Int16.obj : $(SRCDIR)\Int16.cc 308$(OBJDIR)\UInt16.obj : $(SRCDIR)\UInt16.cc 309$(OBJDIR)\Float32.obj : $(SRCDIR)\Float32.cc 310$(OBJDIR)\Constructor.obj : $(SRCDIR)\Constructor.cc 311$(OBJDIR)\PassiveInt32.obj : $(SRCDIR)\PassiveInt32.cc 312$(OBJDIR)\PassiveFloat64.obj : $(SRCDIR)\PassiveFloat64.cc 313$(OBJDIR)\PassiveStr.obj : $(SRCDIR)\PassiveStr.cc 314$(OBJDIR)\PassiveUrl.obj : $(SRCDIR)\PassiveUrl.cc 315$(OBJDIR)\PassiveUInt32.obj : $(SRCDIR)\PassiveUInt32.cc 316$(OBJDIR)\PassiveInt16.obj : $(SRCDIR)\PassiveInt16.cc 317$(OBJDIR)\PassiveUInt16.obj : $(SRCDIR)\PassiveUInt16.cc 318$(OBJDIR)\PassiveFloat32.obj : $(SRCDIR)\PassiveFloat32.cc 319$(OBJDIR)\PassiveArray.obj : $(SRCDIR)\PassiveArray.cc 320$(OBJDIR)\PassiveStructure.obj : $(SRCDIR)\PassiveStructure.cc 321$(OBJDIR)\BaseTypeFactory.obj : $(SRCDIR)\BaseTypeFactory.cc 322$(OBJDIR)\SignalHandler.obj : $(SRCDIR)\SignalHandler.cc 323$(OBJDIR)\InternalErr.obj : $(SRCDIR)\InternalErr.cc 324$(OBJDIR)\util.obj : $(SRCDIR)\util.cc 325$(OBJDIR)\xdrutil_ppc.obj : $(SRCDIR)\Xdrutil_ppc.c 326$(OBJDIR)\XDRUtils.obj : $(SRCDIR)\XDRUtils.cc 327$(OBJDIR)\XDRFileMarshaller.obj : $(SRCDIR)\XDRFileMarshaller.cc 328$(OBJDIR)\XDRFileUnMarshaller.obj : $(SRCDIR)\XDRFileUnMarshaller.cc 329$(OBJDIR)\XDRStreamMarshaller.obj : $(SRCDIR)\XDRStreamMarshaller.cc 330$(OBJDIR)\parser-util.obj : $(SRCDIR)\parser-util.cc 331$(OBJDIR)\escaping.obj : $(SRCDIR)\escaping.cc 332$(OBJDIR)\Clause.obj : $(SRCDIR)\Clause.cc 333$(OBJDIR)\RValue.obj : $(SRCDIR)\RValue.cc 334$(OBJDIR)\gse.tab.obj : $(SRCDIR)\gse.tab.cc 335$(OBJDIR)\ce_functions.obj : $(SRCDIR)\ce_functions.cc 336$(OBJDIR)\GSEClause.obj : $(SRCDIR)\GSEClause.cc 337$(OBJDIR)\lex.gse_.obj : $(SRCDIR)\lex.gse_.cc 338$(OBJDIR)\ArrayGeoConstraint.obj : $(SRCDIR)\ArrayGeoConstraint.cc 339 340# Libdap client 341$(OBJDIR)\RCReader.obj : $(SRCDIR)\RCReader.cc 342$(OBJDIR)\Connect.obj : $(SRCDIR)\Connect.cc 343$(OBJDIR)\HTTPConnect.obj : $(SRCDIR)\HTTPConnect.cc 344$(OBJDIR)\HTTPCache.obj : $(SRCDIR)\HTTPCache.cc 345$(OBJDIR)\HTTPCacheTable.obj : $(SRCDIR)\HTTPCacheTable.cc 346$(OBJDIR)\AISResources.obj : $(SRCDIR)\AISResources.cc 347$(OBJDIR)\AISDatabaseParser.obj : $(SRCDIR)\AISDatabaseParser.cc 348$(OBJDIR)\AISMerge.obj : $(SRCDIR)\AISMerge.cc 349$(OBJDIR)\AISConnect.obj : $(SRCDIR)\AISConnect.cc 350$(OBJDIR)\util_mit.obj : $(SRCDIR)\util_mit.cc 351$(OBJDIR)\ResponseTooBigErr.obj : $(SRCDIR)\ResponseTooBigErr.cc 352 353# libdap server 354$(OBJDIR)\DODSFilter.obj : $(SRCDIR)\DODSFilter.cc 355$(OBJDIR)\Ancillary.obj : $(SRCDIR)\Ancillary.cc 356$(OBJDIR)\cgi_util.obj : $(SRCDIR)\cgi_util.cc 357 358# Regular expression code 359$(OBJDIR)\GetOpt.obj : $(SRCDIR)\GNU\GetOpt.cc 360 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $(SRCDIR)\GNU\GetOpt.cc 361$(OBJDIR)\GNURegex.obj : $(SRCDIR)\GNU\GNURegex.cc 362 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $(SRCDIR)\GNU\GNURegex.cc 363$(OBJDIR)\regex.obj : $(SRCDIR)\win32\gl\regex.c 364 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\regex.c 365$(OBJDIR)\strcasecmp.obj : $(SRCDIR)\win32\gl\strcasecmp.c 366 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\strcasecmp.c 367$(OBJDIR)\strncasecmp.obj : $(SRCDIR)\win32\gl\strncasecmp.c 368 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\strncasecmp.c 369$(OBJDIR)\strnlen1.obj : $(SRCDIR)\win32\gl\strnlen1.c 370 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\strnlen1.c 371$(OBJDIR)\localcharset.obj : $(SRCDIR)\win32\gl\localcharset.c 372 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\win32\gl\localcharset.c 373 374# Source generated by compiler tools 375$(SRCDIR)\lex.das.cc: $(SRCDIR)\das.lex $(SRCDIR)\das.tab.cc $(SRCDIR)\das.tab.hh 376 $(LEX) -8 $(SRCDIR)\das.lex 377 @move lex.das.cc $(SRCDIR)\lex.das.cc 378# @del lex.das.c 379 380$(SRCDIR)\das.tab.cc $(SRCDIR)\das.tab.hh: $(SRCDIR)\das.y $(SRCDIR)\DAS.h 381 $(YACC) $(YACCFLAGS) -p das -o $(SRCDIR)\das.tab.cc $(SRCDIR)\das.y 382# @move $(SRCDIR)\das.tab.cc.h $(SRCDIR)\das.tab.hh 383# @del $(SRCDIR)\das.tab.cc.h 384 385$(SRCDIR)\lex.dds.cc: $(SRCDIR)\dds.lex $(SRCDIR)\dds.tab.cc $(SRCDIR)\dds.tab.hh 386 $(LEX) -8 $(SRCDIR)\dds.lex 387 @move lex.dds.cc $(SRCDIR)\lex.dds.cc 388# @del lex.dds.c 389 390$(SRCDIR)\dds.tab.cc $(SRCDIR)\dds.tab.hh: $(SRCDIR)\dds.y 391 $(YACC) $(YACCFLAGS) -p dds -o $(SRCDIR)\dds.tab.cc $(SRCDIR)\dds.y 392 @move $(SRCDIR)\dds.tab.cc.h $(SRCDIR)\dds.tab.hh 393# @del $(SRCDIR)\dds.tab.c 394 395$(SRCDIR)\lex.ce_expr.cc: $(SRCDIR)\ce_expr.lex $(SRCDIR)\ce_expr.tab.cc $(SRCDIR)\ce_expr.tab.hh 396 $(LEX) -8 $(SRCDIR)\ce_expr.lex 397 @move lex.ce_expr.cc $(SRCDIR)\lex.ce_expr.cc 398# @del lex.ce_expr.c 399 400$(SRCDIR)\ce_expr.tab.cc $(SRCDIR)\ce_expr.tab.hh: $(SRCDIR)\ce_expr.y 401 $(YACC) $(YACCFLAGS) -p ce_expr -o $(SRCDIR)\ce_expr.tab.cc $(SRCDIR)\ce_expr.y 402 @move $(SRCDIR)\ce_expr.tab.cc.h $(SRCDIR)\ce_expr.tab.hh 403# @del $(SRCDIR)\ce_expr.tab.c 404 405$(SRCDIR)\lex.Error.cc: $(SRCDIR)\Error.lex $(SRCDIR)\Error.tab.cc $(SRCDIR)\Error.tab.hh 406 $(LEX) -8 $(SRCDIR)\Error.lex 407 @move lex.Error.cc $(SRCDIR)\lex.Error.cc 408# @del lex.Error.c 409 410$(SRCDIR)\Error.tab.cc $(SRCDIR)\Error.tab.hh: $(SRCDIR)\Error.y 411 $(YACC) $(YACCFLAGS) -p Error -o $(SRCDIR)\Error.tab.cc $(SRCDIR)\Error.y 412 @move $(SRCDIR)\Error.tab.cc.h $(SRCDIR)\Error.tab.hh 413# @del $(SRCDIR)\Error.tab.c 414 415$(SRCDIR)\lex.gse_.cc: $(SRCDIR)\gse.lex $(SRCDIR)\gse.tab.cc $(SRCDIR)\gse.tab.hh 416 $(LEX) -8 $(SRCDIR)\gse.lex 417 @move lex.gse_.cc $(SRCDIR)\lex.gse_.cc 418# @del lex.gse_.c 419 420$(SRCDIR)\gse.tab.cc $(SRCDIR)\gse.tab.hh: $(SRCDIR)\gse.y 421 $(YACC) $(YACCFLAGS) -p gse_ -o $(SRCDIR)\gse.tab.cc $(SRCDIR)\gse.y 422 @move $(SRCDIR)\gse.tab.cc.h $(SRCDIR)\gse.tab.hh 423# @del $(SRCDIR)\gse.tab.c 424 425$(OBJDIR)\getdap.exe: $(OBJDIR)\getdap.obj 426 427$(OBJDIR)\deflate.exe: $(OBJDIR)\deflate.obj 428 429# Command-Line Client and select utils in console mode 430$(OBJDIR)\getdap.obj : $(SRCDIR)\getdap.cc 431 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tp $(SRCDIR)\getdap.cc 432 433$(OBJDIR)\deflate.obj : $(SRCDIR)\deflate.c 434 @$(CC) $(CFLAGS) $(CPPFLAGS) /Fo$@ /Tc $(SRCDIR)\deflate.c 435 436# We have to create a temporary unistd.h because bison 437# and/or flex create source that includes that - even though 438# there is no such header under win32 and it is unnecessary there 439# (that is, even though these utils can run under win32 - by definition 440# they generate output for the UNIX world). This stupid pet trick 441# also properly defines isatty() for the generated source under win32. 442setup: 443 @-echo /* Dummy patch header to get win32 flex/bison generated */ > unistd.h 444 @-echo /* source code to compile under win32. If you see this */ >> unistd.h 445 @-echo /* temp file, feel free to scratch it. */ >> unistd.h 446 @-echo #include "io.h" >> unistd.h 447 448# Win32 libnc-dap requires the win32\gl\regex.h. Under unix builds, it is simply 449# assumed to be on the machine already. 450install: all mkinstdirs 451 copy $(OBJDIR)\MT\libdapMT.lib $(INSTALLLIBDIR) 452 copy $(OBJDIR)\MT\libdapclientMT.lib $(INSTALLLIBDIR) 453 copy $(OBJDIR)\MT\libdapserverMT.lib $(INSTALLLIBDIR) 454 455 copy $(OBJDIR)\MD\libdapMD.dll* $(INSTALLDLLDIR) 456 mt -nologo -manifest $(INSTALLDLLDIR)\libdapMD.dll.manifest -outputresource:$(INSTALLDLLDIR)\libdapMD.dll;2 457 del $(INSTALLDLLDIR)\libdapMD.dll.manifest 458 copy $(OBJDIR)\MD\libdapMD.lib $(INSTALLLIBDIR) 459 copy $(OBJDIR)\MD\libdapclientMD.dll* $(INSTALLDLLDIR) 460 mt -nologo -manifest $(INSTALLDLLDIR)\libdapclientMD.dll.manifest -outputresource:$(INSTALLDLLDIR)\libdapclientMD.dll;2 461 del $(INSTALLDLLDIR)\libdapclientMD.dll.manifest 462 copy $(OBJDIR)\MD\libdapclientMD.lib $(INSTALLLIBDIR) 463 copy $(OBJDIR)\MD\libdapserverMD.dll* $(INSTALLDLLDIR) 464 mt -nologo -manifest $(INSTALLDLLDIR)\libdapserverMD.dll.manifest -outputresource:$(INSTALLDLLDIR)\libdapserverMD.dll;2 465 del $(INSTALLDLLDIR)\libdapserverMD.dll.manifest 466 copy $(OBJDIR)\MD\libdapserverMD.lib $(INSTALLLIBDIR) 467 468 copy $(OBJDIR)\MD\getdap.exe* $(INSTALLBINDIR) 469 mt -nologo -manifest $(INSTALLBINDIR)\getdap.exe.manifest -outputresource:$(INSTALLBINDIR)\getdap.exe;1 470 del $(INSTALLBINDIR)\getdap.exe.manifest 471 copy $(OBJDIR)\MD\deflate.exe* $(INSTALLETCDIR) 472 mt -nologo -manifest $(INSTALLETCDIR)\deflate.exe.manifest -outputresource:$(INSTALLETCDIR)\deflate.exe;1 473 del $(INSTALLETCDIR)\deflate.exe.manifest 474 copy dods-datatypes.h $(INSTALLINCDIR) 475 copy xdr-datatypes.h $(INSTALLINCDIR) 476 copy $(SRCDIR)\*.h $(INSTALLINCDIR) 477 copy $(SRCDIR)\GNU\*.h $(INSTALLINCDIR)\GNU 478 copy $(SRCDIR)\win32\gl\regex.h $(INSTALLINCDIR) 479 480package: all mkpkgdirs document 481 copy $(OBJDIR)\MT\libdapMT.lib $(PKGLIBDIR) 482 copy $(OBJDIR)\MT\libdapclientMT.lib $(PKGLIBDIR) 483 copy $(OBJDIR)\MT\libdapserverMT.lib $(PKGLIBDIR) 484 485 copy $(OBJDIR)\MD\libdapMD.dll* $(PKGDLLDIR) 486 mt -nologo -manifest $(PKGDLLDIR)\libdapMD.dll.manifest -outputresource:$(PKGDLLDIR)\libdapMD.dll;2 487 del $(PKGDLLDIR)\libdapMD.dll.manifest 488 copy $(OBJDIR)\MD\libdapMD.lib $(PKGLIBDIR) 489 copy $(OBJDIR)\MD\libdapclientMD.dll* $(PKGDLLDIR) 490 mt -nologo -manifest $(PKGDLLDIR)\libdapclientMD.dll.manifest -outputresource:$(PKGDLLDIR)\libdapclientMD.dll;2 491 del $(PKGDLLDIR)\libdapclientMD.dll.manifest 492 copy $(OBJDIR)\MD\libdapclientMD.lib $(PKGLIBDIR) 493 copy $(OBJDIR)\MD\libdapserverMD.dll* $(PKGDLLDIR) 494 mt -nologo -manifest $(PKGDLLDIR)\libdapserverMD.dll.manifest -outputresource:$(PKGDLLDIR)\libdapserverMD.dll;2 495 del $(PKGDLLDIR)\libdapserverMD.dll.manifest 496 copy $(OBJDIR)\MD\libdapserverMD.lib $(PKGLIBDIR) 497 498 copy $(OBJDIR)\MD\getdap.exe* $(PKGBINDIR) 499 mt -nologo -manifest $(PKGBINDIR)\getdap.exe.manifest -outputresource:$(PKGBINDIR)\getdap.exe;1 500 del $(PKGBINDIR)\getdap.exe.manifest 501 copy $(OBJDIR)\MD\deflate.exe* $(PKGETCDIR) 502 mt -nologo -manifest $(PKGETCDIR)\deflate.exe.manifest -outputresource:$(PKGETCDIR)\deflate.exe;1 503 del $(PKGETCDIR)\deflate.exe.manifest 504 copy dods-datatypes.h $(PKGINCDIR) 505 copy xdr-datatypes.h $(PKGINCDIR) 506 copy $(SRCDIR)\*.h $(PKGINCDIR) 507 copy $(SRCDIR)\GNU\*.h $(PKGINCDIR)\GNU 508 copy $(SRCDIR)\win32\gl\regex.h $(PKGINCDIR) 509 510mkinstdirs: 511 @-md $(INSTALLLIBDIR) 512 @-md $(INSTALLBINDIR) 513 @-md $(INSTALLETCDIR) 514 @-md $(INSTALLDLLDIR) 515 @-md $(INSTALLINCDIR) 516 @-md $(INSTALLINCDIR)\GNU 517 518mkpkgdirs: 519 @-md $(PKGLIBDIR) 520 @-md $(PKGBINDIR) 521 @-md $(PKGETCDIR) 522 @-md $(PKGDLLDIR) 523 @-md $(PKGINCDIR) 524 @-md $(PKGINCDIR)\GNU 525 526document: 527 @-md $(PKGSAMPLEDIR) 528 copy $(SAMPLEDIR)\* $(PKGSAMPLEDIR) 529 copy $(DOCDIR)\readme.txt $(PKGDIR) 530 531clean: 532 @-rd /Q /S $(OBJDIR) $(PKGDIR) 533 @-del unistd.h 534 535grammarclean: clean 536 @-del $(SRCDIR)\*.tab.cc 537 @-del $(SRCDIR)\*.tab.hh 538 @-del $(SRCDIR)\lex.*.cc 539 540!INCLUDE "dependancies" 541 542 543 544