update date on news
[geos.git] / src / Makefile.vc
blob9a41ccc585eac44b1a88912e2e7101a7acd3fafc
2 # Building on Win32 with Visual C++ 7.0, 7.1, 8.0 or 9.0
3 ###############################################################################
4
5 # Produces:
6 #  geos.lib: static library for use of C or C++ API.
7 #  geos.dll: DLL - only exports the C API
8 #  geos_i.lib: stub library to link against for use of geos.dll. 
10 #  geos_d.lib: debug static library for use of C or C++ API.
11 #  geos_d.dll: debug DLL - only exports the C API
12 #  geos_i_d.lib: debug stub library to link against for use of geos.dll. 
14 # This makefile mostly maintained by Frank Warmerdam <warmerdam@pobox.com>
15 # with support by Mateusz Loskot <mateusz@loskot.net>
16 ###############################################################################
17 GEOS_ROOT=..
18 !INCLUDE $(GEOS_ROOT)\nmake.opt
19 !INCLUDE dirlist.mk
21 ###############################################################################
22 # Output location
23 # TODO: not yet supported
24 #OUT_DIR = $(GEOS_ROOT)\bin\$(BUILD_DIR)
26 ###############################################################################
27 # List of objects
29 OBJ_EXT = obj
30 EXT = $(OBJ_EXT)
32 OBJ = \
33     algorithm\Angle.$(EXT) \
34     algorithm\BoundaryNodeRule.$(EXT) \
35     algorithm\Centroid.$(EXT) \
36         algorithm\CentroidArea.$(EXT) \
37         algorithm\CentroidLine.$(EXT) \
38         algorithm\CentroidPoint.$(EXT) \
39         algorithm\CGAlgorithms.$(EXT) \
40         algorithm\ConvexHull.$(EXT) \
41         algorithm\HCoordinate.$(EXT) \
42         algorithm\InteriorPointArea.$(EXT) \
43         algorithm\InteriorPointLine.$(EXT) \
44         algorithm\InteriorPointPoint.$(EXT) \
45         algorithm\LineIntersector.$(EXT) \
46         algorithm\MCPointInRing.$(EXT) \
47         algorithm\MinimumDiameter.$(EXT) \
48         algorithm\NotRepresentableException.$(EXT) \
49         algorithm\PointLocator.$(EXT) \
50         algorithm\RayCrossingCounter.$(EXT) \
51         algorithm\RobustDeterminant.$(EXT) \
52         algorithm\SimplePointInRing.$(EXT) \
53         algorithm\SIRtreePointInRing.$(EXT) \
54         algorithm\distance\DiscreteHausdorffDistance.$(EXT) \
55         algorithm\distance\DistanceToPoint.$(EXT) \
56         algorithm\locate\IndexedPointInAreaLocator.$(EXT) \
57         algorithm\locate\PointOnGeometryLocator.$(EXT) \
58         algorithm\locate\SimplePointInAreaLocator.$(EXT) \
59         geom\Coordinate.$(EXT) \
60         geom\CoordinateArraySequence.$(EXT) \
61         geom\CoordinateArraySequenceFactory.$(EXT) \
62         geom\CoordinateSequence.$(EXT) \
63         geom\CoordinateSequenceFactory.$(EXT) \
64         geom\Dimension.$(EXT) \
65         geom\Envelope.$(EXT) \
66         geom\Geometry.$(EXT) \
67         geom\GeometryCollection.$(EXT) \
68         geom\GeometryComponentFilter.$(EXT) \
69         geom\GeometryFactory.$(EXT) \
70         geom\GeometryList.$(EXT) \
71         geom\IntersectionMatrix.$(EXT) \
72         geom\LinearRing.$(EXT) \
73         geom\LineSegment.$(EXT) \
74         geom\LineString.$(EXT) \
75         geom\Location.$(EXT) \
76         geom\MultiLineString.$(EXT) \
77         geom\MultiPoint.$(EXT) \
78         geom\MultiPolygon.$(EXT) \
79         geom\Point.$(EXT) \
80         geom\Polygon.$(EXT) \
81         geom\PrecisionModel.$(EXT) \
82         geom\Triangle.$(EXT) \
83         geom\util\ComponentCoordinateExtracter.$(EXT) \
84         geom\util\CoordinateOperation.$(EXT) \
85         geom\util\GeometryEditor.$(EXT) \
86         geom\util\GeometryTransformer.$(EXT) \
87         geom\util\GeometryCombiner.$(EXT) \
88         geom\util\ShortCircuitedGeometryVisitor.$(EXT) \
89         geom\util\SineStarFactory.$(EXT) \
90         geom\prep\AbstractPreparedPolygonContains.$(EXT) \
91         geom\prep\BasicPreparedGeometry.$(EXT) \
92         geom\prep\PreparedGeometry.$(EXT) \
93         geom\prep\PreparedGeometryFactory.$(EXT) \
94         geom\prep\PreparedLineString.$(EXT) \
95         geom\prep\PreparedLineStringIntersects.$(EXT) \
96         geom\prep\PreparedPoint.$(EXT) \
97         geom\prep\PreparedPolygon.$(EXT) \
98         geom\prep\PreparedPolygonContains.$(EXT) \
99         geom\prep\PreparedPolygonContainsProperly.$(EXT) \
100         geom\prep\PreparedPolygonCovers.$(EXT) \
101         geom\prep\PreparedPolygonIntersects.$(EXT) \
102         geom\prep\PreparedPolygonPredicate.$(EXT) \
103         geomgraph\Depth.$(EXT) \
104         geomgraph\DirectedEdge.$(EXT) \
105         geomgraph\DirectedEdgeStar.$(EXT) \
106         geomgraph\Edge.$(EXT) \
107         geomgraph\EdgeEnd.$(EXT) \
108         geomgraph\EdgeEndStar.$(EXT) \
109         geomgraph\EdgeIntersectionList.$(EXT) \
110         geomgraph\EdgeList.$(EXT) \
111         geomgraph\EdgeNodingValidator.$(EXT) \
112         geomgraph\EdgeRing.$(EXT) \
113         geomgraph\GeometryGraph.$(EXT) \
114         geomgraph\GraphComponent.$(EXT) \
115         geomgraph\Label.$(EXT) \
116         geomgraph\Node.$(EXT) \
117         geomgraph\NodeFactory.$(EXT) \
118         geomgraph\NodeMap.$(EXT) \
119         geomgraph\PlanarGraph.$(EXT) \
120         geomgraph\Position.$(EXT) \
121         geomgraph\Quadrant.$(EXT) \
122         geomgraph\TopologyLocation.$(EXT) \
123         geomgraph\index\MonotoneChainEdge.$(EXT) \
124         geomgraph\index\MonotoneChainIndexer.$(EXT) \
125         geomgraph\index\SegmentIntersector.$(EXT) \
126         geomgraph\index\SimpleEdgeSetIntersector.$(EXT) \
127         geomgraph\index\SimpleMCSweepLineIntersector.$(EXT) \
128         geomgraph\index\SimpleSweepLineIntersector.$(EXT) \
129         geomgraph\index\SweepLineEvent.$(EXT) \
130         geomgraph\index\SweepLineSegment.$(EXT) \
131         index\bintree\Bintree.$(EXT) \
132         index\bintree\Interval.$(EXT) \
133         index\bintree\Key.$(EXT) \
134         index\bintree\Node.$(EXT) \
135         index\bintree\NodeBase.$(EXT) \
136         index\bintree\Root.$(EXT) \
137         index\chain\MonotoneChain.$(EXT) \
138         index\chain\MonotoneChainBuilder.$(EXT) \
139         index\chain\MonotoneChainOverlapAction.$(EXT) \
140         index\chain\MonotoneChainSelectAction.$(EXT) \
141         index\intervalrtree\IntervalRTreeBranchNode.$(EXT) \
142         index\intervalrtree\IntervalRTreeLeafNode.$(EXT) \
143         index\intervalrtree\IntervalRTreeNode.$(EXT) \
144         index\intervalrtree\SortedPackedIntervalRTree.$(EXT) \
145         index\quadtree\DoubleBits.$(EXT) \
146         index\quadtree\IntervalSize.$(EXT) \
147         index\quadtree\Key.$(EXT) \
148         index\quadtree\Node.$(EXT) \
149         index\quadtree\NodeBase.$(EXT) \
150         index\quadtree\Root.$(EXT) \
151         index\quadtree\Quadtree.$(EXT) \
152         index\strtree\AbstractNode.$(EXT) \
153         index\strtree\AbstractSTRtree.$(EXT) \
154         index\strtree\Interval.$(EXT) \
155         index\strtree\ItemBoundable.$(EXT) \
156         index\strtree\SIRtree.$(EXT) \
157         index\strtree\STRtree.$(EXT) \
158         index\sweepline\SweepLineEvent.$(EXT) \
159         index\sweepline\SweepLineIndex.$(EXT) \
160         index\sweepline\SweepLineInterval.$(EXT) \
161         io\ByteOrderDataInStream.$(EXT) \
162         io\ByteOrderValues.$(EXT) \
163         io\CLocalizer.$(EXT) \
164         io\ParseException.$(EXT) \
165         io\StringTokenizer.$(EXT) \
166         io\Unload.$(EXT) \
167         io\WKBReader.$(EXT) \
168         io\WKBWriter.$(EXT) \
169         io\WKTReader.$(EXT) \
170         io\WKTWriter.$(EXT) \
171         io\Writer.$(EXT) \
172         noding\BasicSegmentString.$(EXT) \
173         noding\FastNodingValidator.$(EXT) \
174         noding\FastSegmentSetIntersectionFinder.$(EXT) \
175     noding\GeometryNoder.$(EXT) \
176         noding\IntersectionAdder.$(EXT) \
177         noding\IntersectionFinderAdder.$(EXT) \
178         noding\IteratedNoder.$(EXT) \
179         noding\MCIndexNoder.$(EXT) \
180         noding\MCIndexSegmentSetMutualIntersector.$(EXT) \
181         noding\NodedSegmentString.$(EXT) \
182         noding\NodingValidator.$(EXT) \
183         noding\Octant.$(EXT) \
184         noding\OrientedCoordinateArray.$(EXT) \
185         noding\ScaledNoder.$(EXT) \
186         noding\SegmentIntersectionDetector.$(EXT) \
187         noding\SegmentNode.$(EXT) \
188         noding\SegmentNodeList.$(EXT) \
189         noding\SegmentString.$(EXT) \
190         noding\SegmentStringUtil.$(EXT) \
191         noding\SimpleNoder.$(EXT) \
192         noding\SingleInteriorIntersectionFinder.$(EXT) \
193         noding\snapround\HotPixel.$(EXT) \
194         noding\snapround\MCIndexPointSnapper.$(EXT) \
195         noding\snapround\MCIndexSnapRounder.$(EXT) \
196         noding\snapround\SimpleSnapRounder.$(EXT) \
197         operation\GeometryGraphOperation.$(EXT) \
198         operation\IsSimpleOp.$(EXT) \
199         operation\buffer\BufferBuilder.$(EXT) \
200         operation\buffer\BufferInputLineSimplifier.$(EXT) \
201         operation\buffer\BufferParameters.$(EXT) \
202         operation\buffer\BufferOp.$(EXT) \
203         operation\buffer\BufferSubgraph.$(EXT) \
204         operation\buffer\OffsetCurveBuilder.$(EXT) \
205         operation\buffer\OffsetCurveSetBuilder.$(EXT) \
206         operation\buffer\OffsetSegmentGenerator.$(EXT) \
207         operation\buffer\RightmostEdgeFinder.$(EXT) \
208         operation\buffer\SubgraphDepthLocater.$(EXT) \
209         operation\distance\ConnectedElementLocationFilter.$(EXT) \
210         operation\distance\ConnectedElementPointFilter.$(EXT) \
211         operation\distance\DistanceOp.$(EXT) \
212         operation\distance\GeometryLocation.$(EXT) \
213         operation\linemerge\EdgeString.$(EXT) \
214         operation\linemerge\LineMergeDirectedEdge.$(EXT) \
215         operation\linemerge\LineMergeEdge.$(EXT) \
216         operation\linemerge\LineMergeGraph.$(EXT) \
217         operation\linemerge\LineMerger.$(EXT) \
218         operation\linemerge\LineSequencer.$(EXT) \
219         operation\overlay\EdgeSetNoder.$(EXT) \
220         operation\overlay\ElevationMatrix.$(EXT) \
221         operation\overlay\ElevationMatrixCell.$(EXT) \
222         operation\overlay\LineBuilder.$(EXT) \
223         operation\overlay\MaximalEdgeRing.$(EXT) \
224         operation\overlay\MinimalEdgeRing.$(EXT) \
225         operation\overlay\OverlayNodeFactory.$(EXT) \
226         operation\overlay\OverlayOp.$(EXT) \
227         operation\overlay\PointBuilder.$(EXT) \
228         operation\overlay\PolygonBuilder.$(EXT) \
229         operation\overlay\snap\GeometrySnapper.$(EXT) \
230         operation\overlay\snap\LineStringSnapper.$(EXT) \
231         operation\overlay\snap\SnapOverlayOp.$(EXT) \
232         operation\overlay\snap\SnapIfNeededOverlayOp.$(EXT) \
233         operation\overlay\validate\FuzzyPointLocator.$(EXT) \
234         operation\overlay\validate\OffsetPointGenerator.$(EXT) \
235         operation\overlay\validate\OverlayResultValidator.$(EXT) \
236         operation\polygonize\PolygonizeDirectedEdge.$(EXT) \
237         operation\polygonize\PolygonizeEdge.$(EXT) \
238         operation\polygonize\EdgeRing.$(EXT) \
239         operation\polygonize\PolygonizeGraph.$(EXT) \
240         operation\polygonize\Polygonizer.$(EXT) \
241         operation\predicate\RectangleContains.$(EXT) \
242         operation\predicate\RectangleIntersects.$(EXT) \
243         operation\predicate\SegmentIntersectionTester.$(EXT) \
244         operation\relate\EdgeEndBuilder.$(EXT) \
245         operation\relate\EdgeEndBundle.$(EXT) \
246         operation\relate\EdgeEndBundleStar.$(EXT) \
247         operation\relate\RelateComputer.$(EXT) \
248         operation\relate\RelateNode.$(EXT) \
249         operation\relate\RelateNodeFactory.$(EXT) \
250         operation\relate\RelateNodeGraph.$(EXT) \
251         operation\relate\RelateOp.$(EXT) \
252         operation\sharedpaths\SharedPathsOp.$(EXT) \
253         operation\union\CascadedPolygonUnion.$(EXT) \
254         operation\union\CascadedUnion.$(EXT) \
255         operation\union\PointGeometryUnion.$(EXT) \
256         operation\union\UnaryUnionOp.$(EXT) \
257         operation\valid\ConnectedInteriorTester.$(EXT) \
258         operation\valid\ConsistentAreaTester.$(EXT) \
259         operation\valid\IndexedNestedRingTester.$(EXT) \
260         operation\valid\IsValidOp.$(EXT) \
261         operation\valid\QuadtreeNestedRingTester.$(EXT) \
262         operation\valid\RepeatedPointTester.$(EXT) \
263         operation\valid\SimpleNestedRingTester.$(EXT) \
264         operation\valid\SweeplineNestedRingTester.$(EXT) \
265         operation\valid\TopologyValidationError.$(EXT) \
266         planargraph\DirectedEdge.$(EXT) \
267         planargraph\DirectedEdgeStar.$(EXT) \
268         planargraph\Edge.$(EXT) \
269         planargraph\Node.$(EXT) \
270         planargraph\NodeMap.$(EXT) \
271         planargraph\PlanarGraph.$(EXT) \
272         planargraph\Subgraph.$(EXT) \
273         planargraph\algorithm\ConnectedSubgraphFinder.$(EXT) \
274         precision\CommonBits.$(EXT) \
275         precision\CommonBitsOp.$(EXT) \
276         precision\CommonBitsRemover.$(EXT) \
277         precision\EnhancedPrecisionOp.$(EXT) \
278         precision\GeometryPrecisionReducer.$(EXT) \
279         precision\PrecisionReducerCoordinateOperation.$(EXT) \
280         precision\SimpleGeometryPrecisionReducer.$(EXT) \
281         simplify\DouglasPeuckerLineSimplifier.$(EXT) \
282         simplify\DouglasPeuckerSimplifier.$(EXT) \
283         simplify\LineSegmentIndex.$(EXT) \
284         simplify\TaggedLineSegment.$(EXT) \
285         simplify\TaggedLinesSimplifier.$(EXT) \
286         simplify\TaggedLineString.$(EXT) \
287         simplify\TaggedLineStringSimplifier.$(EXT) \
288         simplify\TopologyPreservingSimplifier.$(EXT) \
289         triangulate\DelaunayTriangulationBuilder.$(EXT) \
290         triangulate\IncrementalDelaunayTriangulator.$(EXT) \
291         triangulate\quadedge\LastFoundQuadEdgeLocator.$(EXT) \
292         triangulate\quadedge\LocateFailureException.$(EXT) \
293         triangulate\quadedge\QuadEdge.$(EXT) \
294         triangulate\quadedge\QuadEdgeLocator.$(EXT) \
295         triangulate\quadedge\QuadEdgeSubdivision.$(EXT) \
296         triangulate\quadedge\TrianglePredicate.$(EXT) \
297         triangulate\quadedge\TriangleVisitor.$(EXT) \
298         triangulate\quadedge\Vertex.$(EXT) \
299         util\Assert.$(EXT) \
300         util\GeometricShapeFactory.$(EXT) \
301     util\Interrupt.$(EXT) \
302         util\math.$(EXT) \
303         util\Profiler.$(EXT) \
304         linearref\ExtractLineByLocation.$(EXT) \
305         linearref\LengthIndexOfPoint.$(EXT) \
306         linearref\LengthIndexedLine.$(EXT) \
307         linearref\LengthLocationMap.$(EXT) \
308         linearref\LinearGeometryBuilder.$(EXT) \
309         linearref\LinearIterator.$(EXT) \
310         linearref\LinearLocation.$(EXT) \
311         linearref\LocationIndexOfLine.$(EXT) \
312         linearref\LocationIndexOfPoint.$(EXT) \
313         ..\capi\geos_c.$(EXT) \
314         ..\capi\geos_ts_c.$(EXT) \
315         inlines.$(EXT)
317 TEST_EXE =      TestSweepLineSpeed.exe
319 ###############################################################################
320 # Build targets
322 default: $(LIBNAME) $(DLLNAME) $(CDLLNAME)
324 all: $(LIBNAME) $(DLLNAME) $(CDLLNAME) TestSweepLineSpeed.exe geostest.exe
326 check: all
327         TestSweepLineSpeed.exe
328         
330 $(LIBNAME):     $(GEOS_ROOT)\include\geos\platform.h $(GEOS_ROOT)\include\geos\version.h ..\capi\geos_c.h $(OBJ)
331         if exist $(LIBNAME) del $(LIBNAME)
332         $(LINK) /lib /out:$(LIBNAME) $(OBJ)
334 $(DLLNAME):     $(OBJ)
335         $(LINK) /dll /debug $(LINKER_FLAGS) $(OBJ) /out:$(DLLNAME) /implib:$(SLIBNAME)
336         if exist $(DLLNAME).manifest mt -manifest $(DLLNAME).manifest -outputresource:$(DLLNAME);2
338 $(CDLLNAME): ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(DLLNAME)
339         $(LINK) /dll /debug $(LINKER_FLAGS) ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(LIBNAME) /out:$(CDLLNAME) /implib:$(CLIBNAME)
340         if exist $(CDLLNAME).manifest mt -manifest $(CDLLNAME).manifest -outputresource:$(CDLLNAME);2
341   
342 $(GEOS_ROOT)\include\geos\platform.h: $(GEOS_ROOT)\include\geos\platform.h.vc
343         $(CP) $(GEOS_ROOT)\include\geos\platform.h.vc $(GEOS_ROOT)\include\geos\platform.h
345 $(GEOS_ROOT)\include\geos\version.h: $(GEOS_ROOT)\include\geos\version.h.vc
346         if not exist $(GEOS_ROOT)\include\geos\version.h $(CP) $(GEOS_ROOT)\include\geos\version.h.vc $(GEOS_ROOT)\include\geos\version.h
348 # geos_c.h should already be in distribution, if is not you'll
349 # have to run ./configure to recreate
350 ../capi/geos_c.h: ../capi/geos_c.h.in.
351         $(CP) ..\capi\geos_c.h.in ..\capi\geos_c.h
353 .cpp.obj:
354     $(CC) $(CFLAGS) /c $*.cpp /Fo$@
356 {..\capi}.cpp.obj:
357         $(CC) $(CFLAGS) /D "GEOS_DLL_EXPORT" /c $*.cpp /Fo$@
359 .c.obj:
360         $(CC) $(CFLAGS) /c $*.c /Fo$@
362 clean:
363     @ECHO "*** Cleaning GEOS source tree"
364         @IF EXIST $(LIBNAME)  $(RM) $(LIBNAME)
365         @IF EXIST $(SLIBNAME) $(RM) $(SLIBNAME)
366         @IF EXIST $(DLLNAME)  $(RM) $(DLLNAME)
367         @IF EXIST $(SLIBNAME) $(RM) $(SLIBNAME)
368         @IF EXIST $(CLIBNAME) $(RM) $(CLIBNAME)
369         @IF EXIST $(CDLLNAME) $(RM) $(CDLLNAME)
370         -@del /s *.exe
371         -@del /s *.exp
372         -@del /s *.ilk
373         -@del /s *.manifest
374         -@del /s *.obj
375         -@del /s *.pdb
377 TestSweepLineSpeed.exe: $(LIBNAME) \
378                 ..\tests\bigtest\GeometryTestFactory.obj \
379                 ..\tests\bigtest\TestSweepLineSpeed.obj
380         $(LINK) /debug /out:TestSweepLineSpeed.exe \
381                 ..\tests\bigtest\TestSweepLineSpeed.obj \
382                 ..\tests\bigtest\GeometryTestFactory.obj \
383                 $(LIBNAME)
385 geostest.exe: $(CDLLNAME) ..\tests\unit\capi\geostest.obj
386         $(LINK) /debug ..\tests\unit\capi\geostest.obj $(CLIBNAME)
388 # EOF