Root/poly2d/Makefile

1#
2# Makefile - Makefile of libpoly2d
3#
4# Written 2012, 2013, 2017 by Werner Almesberger
5# Copyright 2012, 2013, 2017 by Werner Almesberger
6#
7# This library is free software; you can redistribute it and/or
8# modify it under the terms of the GNU Lesser General Public
9# License as published by the Free Software Foundation; either
10# version 2.1 of the License, or (at your option) any later version.
11#
12
13PREFIX ?= /usr/local
14
15SHELL = /bin/bash
16
17LIB = libpoly2d.a
18OBJS = v2d_intersect.o v2d_line_distance.o \
19       p2d_area.o p2d_area_holes.o \
20       p2d_attrib.o p2d_contains_point.o p2d_contains_poly.o \
21       p2d_copy.o p2d_free.o p2d_gnuplot.o p2d_make.o p2d_offset.o \
22       p2d_hsort.o f2d_tri_holes.o f2d_tri.o
23
24CFLAGS_WARN = -Wall -Wshadow -Wmissing-prototypes \
25          -Wmissing-declarations -Wno-format-zero-length
26
27CFLAGS = $(CFLAGS_WARN) -g -std=gnu99
28CXXFLAGS = -Wall -frounding-math
29LDFLAGS =
30LDLIBS = -lm
31
32# ----- Verbosity control -----------------------------------------------------
33
34CC_normal := $(CC)
35CXX_normal := $(CXX)
36AR_normal := $(AR)
37DEPEND_normal := $(CPP) $(CFLAGS) -MM -MG
38DEPENDXX_normal := $(CPP) $(CXXFLAGS) -MM -MG
39
40CC_quiet = @echo " CC " $@ && $(CC_normal)
41CXX_quiet = @echo " CXX " $@ && $(CXX_normal)
42AR_quiet = @echo " AR " $@ && $(AR_normal)
43DEPEND_quiet = @$(DEPEND_normal)
44DEPENDXX_quiet = @$(DEPENDXX_normal)
45
46ifeq ($(V),1)
47    CC = $(CC_normal)
48    CXX = $(CXX_normal)
49    AR = $(AR_normal)
50    DEPEND = $(DEPEND_normal)
51    DEPENDXX = $(DEPENDXX_normal)
52else
53    CC = $(CC_quiet)
54    CXX = $(CXX_quiet)
55    AR = $(AR_quiet)
56    DEPEND = $(DEPEND_quiet)
57    DEPENDXX = $(DEPENDXX_quiet)
58endif
59
60# ----- Rules -----------------------------------------------------------------
61
62.PHONY: all clean spotless install uninstall
63.PHONY: test tests valgrind
64
65all: $(LIB)
66
67$(LIB): $(OBJS)
68        $(AR) cr $@ $^
69
70clean:
71        rm -f $(OBJS) $(OBJS:.o=.d)
72
73spotless: clean
74        rm -f $(LIB)
75
76# ----- Install / uninstall ---------------------------------------------------
77
78install: all
79        mkdir -p $(DESTDIR)/$(PREFIX)/bin/
80        install -m 755 $(MAIN) $(DESTDIR)/$(PREFIX)/bin/
81
82uninstall:
83        rm -f $(DESTDIR)/$(PREFIX)/bin/$(MAIN)
84
85# ----- Dependencies ----------------------------------------------------------
86
87# compile and generate dependencies, from fped, based on
88# http://scottmcpeak.com/autodepend/autodepend.html
89
90%.o: %.c
91        $(CC) -c $(CFLAGS) $*.c -o $*.o
92        $(DEPEND) $*.c | \
93          sed -e \
94            '/^\(.*:\)\? */{p;s///;s/ *\\\?$$/ /;s/ */:\n/g;H;}' \
95            -e '$${g;p;}' -e d >$*.d; \
96          [ "$${PIPESTATUS[*]}" = "0 0" ] || { rm -f $*.d; exit 1; }
97
98%.o: %.cpp
99        $(CXX) -c $(CXXFLAGS) $*.cpp -o $*.o
100        $(DEPENDXX) $*.cpp | \
101          sed -e \
102            '/^\(.*:\)\? */{p;s///;s/ *\\\?$$/ /;s/ */:\n/g;H;}' \
103            -e '$${g;p;}' -e d >$*.d; \
104          [ "$${PIPESTATUS[*]}" = "0 0" ] || { rm -f $*.d; exit 1; }
105
106-include $(OBJS:.o=.d)
107
108# ----- Tests -----------------------------------------------------------------
109
110test tests: all
111        LANG= sh -c \
112          'passed=0 && cd test && \
113          for n in [a-z]*; do \
114          [ $$n != core ] && SCRIPT=$$n . ./$$n; done; \
115          echo "Passed all $$passed tests"'
116
117valgrind:
118        VALGRIND="valgrind -q" $(MAKE) tests
119

Archive Download this file

Branches:
master



interactive