Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Analysis.AlgorithmBehavior/qhull-2012.1/src/libqhull/Makefile @ 10635

Last change on this file since 10635 was 10207, checked in by ascheibe, 11 years ago

#1886 added a unit test for volume calculation and the qhull library

File size: 6.7 KB
Line 
1# Simple gcc Makefile for qhull and rbox (default gcc/g++)
2#
3#       see README.txt 
4#       
5# Results
6# qhull     Computes convex hulls and related structures
7#       qconvex, qdelaunay, qhalf, qvoronoi
8#                 Specializations of qhull for each geometric structure
9# user_eg   An example of using shared library qhull6_p (with qh_QHpointer)
10#       user_eg2  An example of using shared library qhull (without qh_QHpointer)
11#       testqset  Standalone test of qset.c with mem.c
12#       libqhullstatic.a Static library for qhull
13#
14# Make targets
15#       make             Produce all of the results
16#       make qhull_all   Produce qconvex, etc.
17#                        Links program sources into src/libqhull
18#       make qtest       Quick test of qset, rbox, and qhull
19#       make doc         Print documentation
20#       make install     Copy qhull, rbox, qhull.1, rbox.1 to BINDIR, MANDIR
21#       make new         Rebuild qhull and rbox from source
22#
23#       make printall    Print all files
24#       make clean       Remove object files
25#       make cleanall    Remove generated files
26#
27#       BINDIR           directory where to copy executables
28#       DESTDIR          destination directory
29#       DOCDIR           directory where to copy html documentation
30#       INCDIR           directory where to copy headers
31#       LIBDIR           directory where to copy libraries
32#       MANDIR           directory where to copy manual pages
33#       PRINTMAN         command for printing manual pages
34#       PRINTC           command for printing C files
35#       CC               ANSI C or C++ compiler
36#       CC_OPTS1         options used to compile .c files
37#       CC_OPTS2         options used to link .o files
38#       CC_OPTS3         options to build shared libraries
39#
40#       LIBQHULL_OBJS    .o files for linking
41#       LIBQHULL_HDRS    .h files for printing
42#       CFILES           .c files for printing
43#       DOCFILES         documentation files
44#       FILES            miscellaneous files for printing
45#       TFILES           .txt versions of html files
46#       FILES            all other files
47#       LIBQHULL_OBJS    specifies the object files of libqhullstatic.a
48#
49# Do not replace tabs with spaces.  Needed by 'make' for build rules
50
51# You may build the qhull programs without using a library
52# make qhullx
53
54DESTDIR = /usr/local
55BINDIR  = $(DESTDIR)/bin
56INCDIR  = $(DESTDIR)/include
57LIBDIR  = $(DESTDIR)/lib
58DOCDIR  = $(DESTDIR)/share/doc/qhull
59MANDIR  = $(DESTDIR)/share/man/man1
60
61# if you do not have enscript, try a2ps or just use lpr.  The files are text.
62PRINTMAN = enscript -2rl
63PRINTC = enscript -2r
64# PRINTMAN = lpr
65# PRINTC = lpr
66
67#for Gnu's gcc compiler, -O2 for optimization, -g for debugging
68CC        = gcc
69CC_OPTS1  = -O2 -fPIC -ansi $(CC_WARNINGS)
70
71# for Sun's cc compiler, -fast or O2 for optimization, -g for debugging, -Xc for ANSI
72#CC       = cc
73#CC_OPTS1 = -Xc -v -fast
74
75# for Silicon Graphics cc compiler, -O2 for optimization, -g for debugging
76#CC       = cc
77#CC_OPTS1 = -ansi -O2
78
79# for Next cc compiler with fat executable
80#CC       = cc
81#CC_OPTS1 = -ansi -O2 -arch m68k -arch i386 -arch hppa
82
83# For loader, ld,
84CC_OPTS2 = $(CC_OPTS1)
85CXX_OPTS2 = $(CXX_OPTS1)
86
87# Default targets for make
88     
89all: qhull_links qhull_all qtest
90
91clean:
92  rm -f *.o
93  # Delete linked files from other directories [qhull_links]
94  rm -f qconvex.c unix.c qdelaun.c qhalf.c qvoronoi.c rbox.c
95  rm -f user_eg.c user_eg2.c testqset.c
96 
97cleanall: clean
98  rm -f qconvex qdelaunay qhalf qvoronoi qhull *.exe
99  rm -f core user_eg user_eg2 testqset libqhullstatic.a
100
101doc:
102  $(PRINTMAN) $(TXTFILES) $(DOCFILES)
103
104install:
105  mkdir -p $(BINDIR)
106  mkdir -p $(DOCDIR)
107  mkdir -p $(INCDIR)/libqhull
108  mkdir -p $(MANDIR)
109  cp -p qconvex qdelaunay qhalf qhull qvoronoi rbox $(BINDIR)
110  cp -p libqhullstatic.a $(LIBDIR)
111  cp -p ../../html/qhull.man $(MANDIR)/qhull.1
112  cp -p ../../html/rbox.man $(MANDIR)/rbox.1
113  cp -p ../../html/* $(DOCDIR)
114  cp *.h $(INCDIR)/libqhull
115
116new:  cleanall all
117
118printall: doc printh printc printf
119
120printh:
121  $(PRINTC) $(LIBQHULL_HDRS)
122
123printc:
124  $(PRINTC) $(CFILES)
125
126# LIBQHULL_OBJS_1 ordered by frequency of execution with small files at end.  Better locality.
127# Same definitions as ../../Makefile
128
129LIBQHULLS_OBJS_1= global.o stat.o geom2.o poly2.o merge.o \
130        libqhull.o geom.o poly.o qset.o mem.o random.o
131
132LIBQHULLS_OBJS_2= $(LIBQHULLS_OBJS_1) usermem.o userprintf.o io.o user.o
133
134LIBQHULLS_OBJS= $(LIBQHULLS_OBJS_2)  rboxlib.o userprintf_rbox.o
135
136LIBQHULL_HDRS= user.h libqhull.h qhull_a.h geom.h \
137        io.h mem.h merge.h poly.h random.h \
138        qset.h stat.h
139
140# CFILES ordered alphabetically after libqhull.c
141CFILES= ../qhull/unix.c libqhull.c geom.c geom2.c global.c io.c \
142  mem.c merge.c poly.c poly2.c random.c rboxlib.c \
143  qset.c stat.c user.c usermem.c userprintf.c \
144  ../qconvex/qconvex.c ../qdelaunay/qdelaun.c ../qhalf/qhalf.c ../qvoronoi/qvoronoi.c
145
146TXTFILES= ../../Announce.txt ../../REGISTER.txt ../../COPYING.txt ../../README.txt ../Changes.txt
147DOCFILES= ../../html/rbox.txt ../../html/qhull.txt
148
149.c.o:
150  $(CC) -c $(CC_OPTS1) -o $@ $<
151
152# Work around problems with ../ in Red Hat Linux
153qhull_links:
154  [ -f qconvex.c ]  || ln -s ../qconvex/qconvex.c
155  [ -f qdelaun.c ]  || ln -s ../qdelaunay/qdelaun.c
156  [ -f qhalf.c ]    || ln -s ../qhalf/qhalf.c
157  [ -f qvoronoi.c ] || ln -s ../qvoronoi/qvoronoi.c
158  [ -f qhull.c ]    || ln -s ../qhull/unix.c
159  [ -f rbox.c ]     || ln -s ../rbox/rbox.c
160  [ -f user_eg.c ]     || ln -s ../user_eg/user_eg.c
161  [ -f user_eg2.c ]     || ln -s ../user_eg2/user_eg2.c
162  [ -f testqset.c ]     || ln -s ../testqset/testqset.c
163
164# compile qhull without using bin/libqhullstatic.a
165qhull_all: qconvex.o qdelaun.o qhalf.o qvoronoi.o unix.o user_eg.o user_eg2.o rbox.o testqset.o $(LIBQHULLS_OBJS)
166  $(CC) -o qconvex $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_2) qconvex.o
167  $(CC) -o qdelaunay $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_2) qdelaun.o
168  $(CC) -o qhalf $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_2) qhalf.o
169  $(CC) -o qvoronoi $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_2) qvoronoi.o
170  $(CC) -o qhull $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_2) unix.o
171  $(CC) -o rbox $(CC_OPTS2) -lm rbox.o rboxlib.o random.o usermem.o userprintf_rbox.o
172  $(CC) -o user_eg $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_2) user_eg.o
173  $(CC) -o user_eg2 $(CC_OPTS2) -lm $(LIBQHULLS_OBJS_1) user_eg2.o  usermem.o userprintf.o io.o
174  $(CC) -o testqset $(CC_OPTS2) -lm mem.o qset.o testqset.o
175  -ar -rs libqhullstatic.a $(LIBQHULLS_OBJS)
176  #libqhullstatic.a is not needed for qhull
177  #If 'ar -rs' fails try using 'ar -s' with 'ranlib'
178  #ranlib libqhullstatic.a
179
180qtest:
181  @echo Testing qset.c and mem.c with testqset
182  ./testqset 10000
183  @echo Run the qhull smoketest
184  ./rbox D4 | ./qhull
185 
186# end of Makefile
Note: See TracBrowser for help on using the repository browser.