Fix CascadedPolygonUnion to discard non-polygonal components created during unioning
[geos.git] / src / Makefile.vc
blobef1268276f7f74ddbabdd19e793e29eab8aef153
1 # $Id$
3 # Building on Win32 with Visual C++ 7.0, 7.1, 8.0 or 9.0
4 ###############################################################################
5
6 # Produces:
7 #  geos.lib: static library for use of C or C++ API.
8 #  geos.dll: DLL - only exports the C API
9 #  geos_i.lib: stub library to link against for use of geos.dll. 
11 #  geos_d.lib: debug static library for use of C or C++ API.
12 #  geos_d.dll: debug DLL - only exports the C API
13 #  geos_i_d.lib: debug stub library to link against for use of geos.dll. 
15 # This makefile mostly maintained by Frank Warmerdam <warmerdam@pobox.com>
16 # with support by Mateusz Loskot <mateusz@loskot.net>
17 ###############################################################################
18 GEOS_ROOT=..
19 !INCLUDE $(GEOS_ROOT)\nmake.opt
20 !INCLUDE dirlist.mk
22 ###############################################################################
23 # Output location
24 # TODO: not yet supported
25 #OUT_DIR = $(GEOS_ROOT)\bin\$(BUILD_DIR)
27 ###############################################################################
28 # List of objects
30 OBJ_EXT = obj
31 EXT = $(OBJ_EXT)
33 OBJ = \
34     algorithm\Angle.$(EXT) \
35     algorithm\BoundaryNodeRule.$(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\IntersectionAdder.$(EXT) \
176         noding\IntersectionFinderAdder.$(EXT) \
177         noding\IteratedNoder.$(EXT) \
178         noding\MCIndexNoder.$(EXT) \
179         noding\MCIndexSegmentSetMutualIntersector.$(EXT) \
180         noding\NodedSegmentString.$(EXT) \
181         noding\NodingValidator.$(EXT) \
182         noding\Octant.$(EXT) \
183         noding\OrientedCoordinateArray.$(EXT) \
184         noding\ScaledNoder.$(EXT) \
185         noding\SegmentIntersectionDetector.$(EXT) \
186         noding\SegmentNode.$(EXT) \
187         noding\SegmentNodeList.$(EXT) \
188         noding\SegmentString.$(EXT) \
189         noding\SegmentStringUtil.$(EXT) \
190         noding\SimpleNoder.$(EXT) \
191         noding\SingleInteriorIntersectionFinder.$(EXT) \
192         noding\snapround\HotPixel.$(EXT) \
193         noding\snapround\MCIndexPointSnapper.$(EXT) \
194         noding\snapround\MCIndexSnapRounder.$(EXT) \
195         noding\snapround\SimpleSnapRounder.$(EXT) \
196         operation\GeometryGraphOperation.$(EXT) \
197         operation\IsSimpleOp.$(EXT) \
198         operation\buffer\BufferBuilder.$(EXT) \
199         operation\buffer\BufferInputLineSimplifier.$(EXT) \
200         operation\buffer\BufferParameters.$(EXT) \
201         operation\buffer\BufferOp.$(EXT) \
202         operation\buffer\BufferSubgraph.$(EXT) \
203         operation\buffer\OffsetCurveBuilder.$(EXT) \
204         operation\buffer\OffsetCurveSetBuilder.$(EXT) \
205         operation\buffer\OffsetSegmentGenerator.$(EXT) \
206         operation\buffer\RightmostEdgeFinder.$(EXT) \
207         operation\buffer\SubgraphDepthLocater.$(EXT) \
208         operation\distance\ConnectedElementLocationFilter.$(EXT) \
209         operation\distance\ConnectedElementPointFilter.$(EXT) \
210         operation\distance\DistanceOp.$(EXT) \
211         operation\distance\GeometryLocation.$(EXT) \
212         operation\linemerge\EdgeString.$(EXT) \
213         operation\linemerge\LineMergeDirectedEdge.$(EXT) \
214         operation\linemerge\LineMergeEdge.$(EXT) \
215         operation\linemerge\LineMergeGraph.$(EXT) \
216         operation\linemerge\LineMerger.$(EXT) \
217         operation\linemerge\LineSequencer.$(EXT) \
218         operation\overlay\EdgeSetNoder.$(EXT) \
219         operation\overlay\ElevationMatrix.$(EXT) \
220         operation\overlay\ElevationMatrixCell.$(EXT) \
221         operation\overlay\LineBuilder.$(EXT) \
222         operation\overlay\MaximalEdgeRing.$(EXT) \
223         operation\overlay\MinimalEdgeRing.$(EXT) \
224         operation\overlay\OverlayNodeFactory.$(EXT) \
225         operation\overlay\OverlayOp.$(EXT) \
226         operation\overlay\PointBuilder.$(EXT) \
227         operation\overlay\PolygonBuilder.$(EXT) \
228         operation\overlay\snap\GeometrySnapper.$(EXT) \
229         operation\overlay\snap\LineStringSnapper.$(EXT) \
230         operation\overlay\snap\SnapOverlayOp.$(EXT) \
231         operation\overlay\snap\SnapIfNeededOverlayOp.$(EXT) \
232         operation\overlay\validate\FuzzyPointLocator.$(EXT) \
233         operation\overlay\validate\OffsetPointGenerator.$(EXT) \
234         operation\overlay\validate\OverlayResultValidator.$(EXT) \
235         operation\polygonize\PolygonizeDirectedEdge.$(EXT) \
236         operation\polygonize\PolygonizeEdge.$(EXT) \
237         operation\polygonize\EdgeRing.$(EXT) \
238         operation\polygonize\PolygonizeGraph.$(EXT) \
239         operation\polygonize\Polygonizer.$(EXT) \
240         operation\predicate\RectangleContains.$(EXT) \
241         operation\predicate\RectangleIntersects.$(EXT) \
242         operation\predicate\SegmentIntersectionTester.$(EXT) \
243         operation\relate\EdgeEndBuilder.$(EXT) \
244         operation\relate\EdgeEndBundle.$(EXT) \
245         operation\relate\EdgeEndBundleStar.$(EXT) \
246         operation\relate\RelateComputer.$(EXT) \
247         operation\relate\RelateNode.$(EXT) \
248         operation\relate\RelateNodeFactory.$(EXT) \
249         operation\relate\RelateNodeGraph.$(EXT) \
250         operation\relate\RelateOp.$(EXT) \
251         operation\sharedpaths\SharedPathsOp.$(EXT) \
252         operation\union\CascadedPolygonUnion.$(EXT) \
253         operation\union\CascadedUnion.$(EXT) \
254         operation\union\PointGeometryUnion.$(EXT) \
255         operation\union\UnaryUnionOp.$(EXT) \
256         operation\valid\ConnectedInteriorTester.$(EXT) \
257         operation\valid\ConsistentAreaTester.$(EXT) \
258         operation\valid\IndexedNestedRingTester.$(EXT) \
259         operation\valid\IsValidOp.$(EXT) \
260         operation\valid\QuadtreeNestedRingTester.$(EXT) \
261         operation\valid\RepeatedPointTester.$(EXT) \
262         operation\valid\SimpleNestedRingTester.$(EXT) \
263         operation\valid\SweeplineNestedRingTester.$(EXT) \
264         operation\valid\TopologyValidationError.$(EXT) \
265         planargraph\DirectedEdge.$(EXT) \
266         planargraph\DirectedEdgeStar.$(EXT) \
267         planargraph\Edge.$(EXT) \
268         planargraph\Node.$(EXT) \
269         planargraph\NodeMap.$(EXT) \
270         planargraph\PlanarGraph.$(EXT) \
271         planargraph\Subgraph.$(EXT) \
272         planargraph\algorithm\ConnectedSubgraphFinder.$(EXT) \
273         precision\CommonBits.$(EXT) \
274         precision\CommonBitsOp.$(EXT) \
275         precision\CommonBitsRemover.$(EXT) \
276         precision\EnhancedPrecisionOp.$(EXT) \
277         precision\SimpleGeometryPrecisionReducer.$(EXT) \
278         simplify\DouglasPeuckerLineSimplifier.$(EXT) \
279         simplify\DouglasPeuckerSimplifier.$(EXT) \
280         simplify\LineSegmentIndex.$(EXT) \
281         simplify\TaggedLineSegment.$(EXT) \
282         simplify\TaggedLinesSimplifier.$(EXT) \
283         simplify\TaggedLineString.$(EXT) \
284         simplify\TaggedLineStringSimplifier.$(EXT) \
285         simplify\TopologyPreservingSimplifier.$(EXT) \
286         util\Assert.$(EXT) \
287         util\GeometricShapeFactory.$(EXT) \
288         util\math.$(EXT) \
289         util\Profiler.$(EXT) \
290         linearref\ExtractLineByLocation.$(EXT) \
291         linearref\LengthIndexOfPoint.$(EXT) \
292         linearref\LengthIndexedLine.$(EXT) \
293         linearref\LengthLocationMap.$(EXT) \
294         linearref\LinearGeometryBuilder.$(EXT) \
295         linearref\LinearIterator.$(EXT) \
296         linearref\LinearLocation.$(EXT) \
297         linearref\LocationIndexOfLine.$(EXT) \
298         linearref\LocationIndexOfPoint.$(EXT) \
299         ..\capi\geos_c.$(EXT) \
300         ..\capi\geos_ts_c.$(EXT) \
301         inlines.$(EXT)
303 TEST_EXE =      TestSweepLineSpeed.exe
305 ###############################################################################
306 # Build targets
308 default: $(LIBNAME) $(DLLNAME) $(CDLLNAME)
310 all: $(LIBNAME) $(DLLNAME) $(CDLLNAME) TestSweepLineSpeed.exe geostest.exe
312 check: all
313         TestSweepLineSpeed.exe
314         
316 $(LIBNAME):     $(GEOS_ROOT)\include\geos\platform.h $(GEOS_ROOT)\include\geos\version.h ..\capi\geos_c.h $(OBJ)
317         if exist $(LIBNAME) del $(LIBNAME)
318         $(LINK) /lib /out:$(LIBNAME) $(OBJ)
320 $(DLLNAME):     $(OBJ)
321         $(LINK) /dll /debug $(OBJ) /out:$(DLLNAME) /implib:$(SLIBNAME)
322         if exist $(DLLNAME).manifest mt -manifest $(DLLNAME).manifest -outputresource:$(DLLNAME);2
324 $(CDLLNAME): ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(DLLNAME)
325         $(LINK) /dll /debug ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(LIBNAME) /out:$(CDLLNAME) /implib:$(CLIBNAME)
326         if exist $(CDLLNAME).manifest mt -manifest $(CDLLNAME).manifest -outputresource:$(CDLLNAME);2
327   
328 $(GEOS_ROOT)\include\geos\platform.h: $(GEOS_ROOT)\include\geos\platform.h.vc
329         $(CP) $(GEOS_ROOT)\include\geos\platform.h.vc $(GEOS_ROOT)\include\geos\platform.h
331 $(GEOS_ROOT)\include\geos\version.h: $(GEOS_ROOT)\include\geos\version.h.vc
332         if not exist $(GEOS_ROOT)\include\geos\version.h $(CP) $(GEOS_ROOT)\include\geos\version.h.vc $(GEOS_ROOT)\include\geos\version.h
334 # geos_c.h should already be in distribution, if is not you'll
335 # have to run ./configure to recreate
336 ../capi/geos_c.h: ../capi/geos_c.h.in.
337         $(CP) ..\capi\geos_c.h.in ..\capi\geos_c.h
339 .cpp.obj:
340     $(CC) $(CFLAGS) /c $*.cpp /Fo$@
342 {..\capi}.cpp.obj:
343         $(CC) $(CFLAGS) /D "GEOS_DLL_EXPORT" /c $*.cpp /Fo$@
345 .c.obj:
346         $(CC) $(CFLAGS) /c $*.c /Fo$@
348 clean:
349     @ECHO "*** Cleaning GEOS source tree"
350         @IF EXIST $(LIBNAME)  $(RM) $(LIBNAME)
351         @IF EXIST $(SLIBNAME) $(RM) $(SLIBNAME)
352         @IF EXIST $(DLLNAME)  $(RM) $(DLLNAME)
353         @IF EXIST $(SLIBNAME) $(RM) $(SLIBNAME)
354         @IF EXIST $(CLIBNAME) $(RM) $(CLIBNAME)
355         @IF EXIST $(CDLLNAME) $(RM) $(CDLLNAME)
356         -@del ..\capi\*.obj
357         -@del *.exe
358         -@del *.exp
359         -@del *.ilk
360         -@del *.manifest
361         -@del *.obj
362         -@del *.pdb
363         -@FOR %d IN ( $(GEOS_DIRLIST) ) DO del %d\*.obj
365 TestSweepLineSpeed.exe: $(LIBNAME) \
366                 ..\tests\bigtest\GeometryTestFactory.obj \
367                 ..\tests\bigtest\TestSweepLineSpeed.obj
368         $(LINK) /debug /out:TestSweepLineSpeed.exe \
369                 ..\tests\bigtest\TestSweepLineSpeed.obj \
370                 ..\tests\bigtest\GeometryTestFactory.obj \
371                 $(LIBNAME)
373 geostest.exe: $(CDLLNAME) ..\tests\unit\capi\geostest.obj
374         $(LINK) /debug ..\tests\unit\capi\geostest.obj $(CLIBNAME)
376 # EOF