1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793
|
# Unix Makefile for reentrant libqhull, qhull, and rbox (default gcc/g++)
#
# make help
# See README.txt
# For qhulltest of the C++ interface, use Qt project file at src/qhull-all.pro
# For static builds, a simple alternative is src/libqhull_r/Makefile
#
# Variables
# DESTDIR directory for staged installs (GNU Makefile standards)
# PREFIX install directory for 'make install' (default /usr/local)
# BINDIR sub-directory where to copy executables
# DOCDIR sub-directory where to copy html documentation
# INCDIR sub-directory where to copy headers
# LIBDIR sub-directory where to copy libraries
# MANDIR sub-directory where to copy manual pages
# PCDIR sub-directory where to copy pkg-config files
# PRINTMAN command for printing manual pages
# PRINTC command for printing C files
# CC ANSI C or C++ compiler
# CC_OPTS1 options used to compile .c files
# CC_OPTS2 options used to link .o files
# CC_OPTS3 options to build shared libraries
# CXX ANSI C++ compiler
# CXX_OPTS1 options used to compile .cpp files
# CXX_OPTS2 options used to link .o files
# CC_WARNINGS warnings for .c programs
# CXX_WARNINGS warnings for .cpp programs
# SO file extension for libqhull_r (so-$VERSION or dll)
# SONAME_EXT SONAME extension for libqhull_r (so-$SOVERSION)
#
# LIBQHULLS_RBOX_OBJS .o files for linking
# LIBQHULLR_HDRS non-reentrant .h files
# LIBQHULLR_HDRS reentrant .h files
# CFILES .c files for printing
# CXXFILES .cpp files for printing
# TESTFILES .cpp test files for printing
# DOCFILES documentation files
# FILES miscellaneous files for printing
# HTMFILES documentation source files
# TFILES .txt versions of html files
# FILES all other files
# LIBQHULLS_RBOX_OBJS specifies the object files of libqhullstatic.a
#
# Results
# rbox Generates points sets for qhull, qconvex, etc.
# qhull Computes convex hull and related structures with reentrant libqhullstatic_r
# qconvex, qdelaunay, qhalf, qvoronoi
# Specializations of qhull for each geometric structure
# Built with non-reentrant libqhullstatic (somewhat faster)
# libqhull_r.so Shared library with reentrant code
# libqhullstatic.a Non-reentrant static library with static qh_qh struct
# Called 'static' to avoid naming conflicts
# libqhullstatic_r.a Reentrant, static library
# libqhullcpp.a C++ static library with libqhullstatic_r.a
# testqset Standalone test program for non-reentrant qset.c with mem.c
# testqset_r Standalone test program for reentrant qset_r.c with mem_r.c
# user_eg An example of the reentrant, shared library qhull_r
# user_eg2 An example of the reentrant, static library libqhullstatic_r
# user_eg3 An example of the C++ interface with libqhullcpp and libqhullstatic_r
#
# Targets
# make Build Qhull using gcc or another compiler
# make all
# make SO=dll For mingw on Windows, use SO=dll. It builds dlls
# make M32=-m32 Build 32-bit Qhull on a 64-bit host (less memory)
# make M32=-m32 FPIC= Build 32-bit Qhull on 64-bit host without '-fpic' (maybe faster)
# make bin/qvoronoi Produce bin/qvoronoi (etc.)
# make qhullx Produce qhull, qconvex etc. without using library
#
# make benchmark Benchmark of qhull precision and performance
# make benchmark 2>&1 | tee eg/q_benchmark.x
# make clean Remove object files
# make cleanall Remove generated files, build/*.dlr/, buildqt/, and buildvc/
# make doc Print documentation
# make help
# make install Copy results and documentation to BINDIR, DOCDIR, INCDIR, LIBDIR, MANDIR, PCDOC
# For debug libraries, please append '_d' (e.g., libqhull_rd)
# make uninstall Delete Qhull files from BINDIR, DOCDIR, INCDIR, LIBDIR, MANDIR, PCDOC
# make new Rebuild qhull and rbox from source
# make printall Print all files
# make qtest Quick test of rbox and qhull
# make test Quick test of qhull programs
# make testall Test programs for manual review with eg/q_test-ok.txt
# Windows -- make cleanall SO=dll all; cp lib/libqhull*.dll bin/
# make testall >eg/q_test.x 2>&1
# make testall 2>&1 | tee eg/q_test.x
# Build the C++ qhulltest with Qt
#
# $Id: //main/2019/qhull/Makefile#36 $
# Do not replace tabs with spaces. Needed for build rules
# Unix line endings (\n)
PREFIX ?= /usr/local
BINDIR ?= bin
INCDIR ?= include
LIBDIR ?= lib
DOCDIR ?= share/doc/qhull
MANDIR ?= share/man/man1
PCDIR ?= $(LIBDIR)/pkgconfig
ABS_BINDIR = $(DESTDIR)$(PREFIX)/$(BINDIR)
ABS_INCDIR = $(DESTDIR)$(PREFIX)/$(INCDIR)
ABS_LIBDIR = $(DESTDIR)$(PREFIX)/$(LIBDIR)
ABS_DOCDIR = $(DESTDIR)$(PREFIX)/$(DOCDIR)
ABS_MANDIR = $(DESTDIR)$(PREFIX)/$(MANDIR)
ABS_PCDIR = $(DESTDIR)$(PREFIX)/$(PCDIR)
# Define qhull_VERSION in CMakeLists.txt, Makefile, and qhull-warn.pri
# Truncated version in qhull-exports.def, qhull_p-exports.def, qhull_r-exports.def
# libqhull_r.so -- reentrant Qhull with qh_qhT passed as an argument.
qhull_VERSION=$(shell grep 'set.qhull_VERSION ' CMakeLists.txt | grep -o '[0-9.]\+' || echo 0unknown)
qhull_SOVERSION=$(shell grep 'set.qhull_SOVERSION ' CMakeLists.txt | grep -o '[0-9.]\+' || echo 0unknown)
SO = so.$(qhull_VERSION)
SONAME_EXT = so.$(qhull_SOVERSION)
# On MinGW,
# make SO=dll
# Copy lib/libqhull_r.dll to bin/
# if you do not have enscript, try a2ps or just use lpr. The files are text.
PRINTMAN = enscript -2rl
PRINTC = enscript -2r
# PRINTMAN = lpr
# PRINTC = lpr
#for Gnu's gcc compiler, -O3 for optimization, -g for debugging, -pg for profiling
# see below for gcc's CC_WARNINGS and CXX_WARNINGS
# Qhull uses less memory for 32-bit builds on 64-bit hosts
# Enable 32-bit builds with 'make M32=-m32'
# M32 = -m32
# -fpic is required for linking to shared libraries
# -fpic may be slower for 32-bit builds on 64-bit hosts
# Disable -fpic with 'make FPIC='
FPIC = -fpic
CC = gcc
CC_OPTS1 = -O3 -ansi -Isrc/ $(CC_WARNINGS) $(M32) $(FPIC)
CXX = g++
# libqhullcpp must be listed before libqhull_r, otherwise libqhull_r pulls in userprintf_r.c
CXX_OPTS1 = -std=c++98 -O3 -Isrc/ $(CXX_WARNINGS) $(M32) $(FPIC)
# for shared library link
CC_OPTS3 =
# for Sun's cc compiler, -fast or O2 for optimization, -g for debugging, -Xc for ANSI
#CC = cc
#CC_OPTS1 = -Xc -v -fast
# for Silicon Graphics cc compiler, -O2 for optimization, -g for debugging
#CC = cc
#CC_OPTS1 = -ansi -O2
# for Next cc compiler with fat executable
#CC = cc
#CC_OPTS1 = -ansi -O2 -arch m68k -arch i386 -arch hppa
# For loader, ld,
CC_OPTS2 = $(CC_OPTS1)
CXX_OPTS2 = $(CXX_OPTS1)
# Warnings for gcc
# [gcc 8.1 from may'2018] Compiles without error (-Werror)
# gcc -pedantic not used due to -Woverlength-strings. Maximum string length is less than 2000
# g++ -pedantic not used due to 'long long' warning.
CC_WARNINGS = -Wall -Wcast-qual -Wextra -Wwrite-strings -Wshadow -Wsign-conversion -Wconversion
CXX_WARNINGS = -Wall -Wcast-qual -Wextra -Wwrite-strings -Wno-sign-conversion -Wshadow -Wconversion
# All warnings for gcc
# Ignore these gcc warnings (-f*, Fortran only, Go only, ObjC only, Qhull issues)
##Ignore warnings that occur in Qhull and appear to be OK
# NOT_QHULL_WARN="aggregate-return|float-equal|format-nonliteral|format-signedness|old-style-cast|padded|redundant-decls|long-long|strict-overflow|switch-enum|traditional|traditional-conversion|unsafe-loop-optimizations|unsuffixed-float-constants|useless-cast|zero-as-null-pointer-constant"
##Ignore warnings that require an operand. Include them specifically if needed. Pattern may be a substring
# NOT_EQUAL_WARN="format-overflow<|normalized=[^> ]*>|larger-than=|larger-than-|abi=|array-bounds=|aligned-new=|catch-value=|format=|format-overflow=|format-truncation=|implicit-fallthrough=|normalized=[^.]|placement-new=[^.]|shift-overflow=[^.]|stack-usage=|strict-aliasing=|strict-overflow=|stringop-overflow=[^.]|unused-const-variable=[^.]"
##Ignore warnings that are GCC specific and occur in Qhull
# NOT_GCC_WARN="abi-tag|effc[+][+]|missing-format-attribute|missing-noreturn|namespaces|suggest-attribute|suggest-attribute=(format|malloc|noreturn|pure)|suggest-final-methods|suggest-final-types|suggest-override|templates"
## -Wstringop-truncation -- known issue Bug c++/85700
##Ignore the above warnings and warnings specific to Fortran, ObjC, etc
# NOT_CC_CXX_WARN="$NOT_GCC_WARN|$NOT_QHULL_WARN|aliasing|align-commons|ampersand|argument-mismatch|array-temporaries|assign-intercept|c-binding-type|character-truncation|compare-reals|conversion-extra|do-subscript|function-elimination|implicit-interface|implicit-procedure|integer-division|intrinsic-shadow|intrinsics-std|line-truncation|property-assign-default|protocol|real-q-constant|realloc-lhs|realloc-lhs-all|selector|shadow-ivar|strict-selector-match|surprising|tabs|target-lifetime|undeclared-selector|undefined-do-loop|underflow|unused-dummy-argument|use-without-only|zerotrip"
##Ignore these warnings and warnings for CC but not CXX and vice versa
# NOT_CC_WARNINGS="$NOT_CC_CXX_WARN|c[+][+][0-9xz]*-compat|abi-tag|argument-mismatch|catch-value|class-memaccess|conditionally-supported|conversion-null|ctor-dtor-privacy|delete-incomplete|delete-non-virtual-dtor|effc++|extra-semi|inherited-variadic-ctor|invalid-offsetof|literal-suffix|multiple-inheritance|namespaces|noexcept|noexcept-type|non-template-friend|non-virtual-dtor|overloaded-virtual|placement-new|pmf-conversions|register|reorder|sign-promo|sized-deallocation|strict-null-sentinel|subobject-linkage|suggest-override|synth|templates|terminate|useless-cast|virtual-inheritance|virtual-move-assign|zero-as-null-pointer-constant"
# NOT_CXX_WARNINGS="$NOT_CC_CXX_WARN|c[+][+]-compat|bad-function-cast|c90-c99-compat|c99-c11-compat|declaration-after-statement|designated-init|discarded-array-qualifiers|discarded-qualifiers|duplicate-decl-specifier|implicit|implicit-function-declaration|implicit-int|incompatible-pointer-types|int-conversion|jump-misses-init|missing-parameter-type|missing-prototypes|nested-externs|old-style-declaration|old-style-definition|override-init|override-init-side-effects|pointer-sign|pointer-to-int-cast|strict-prototypes"
# NOT_CXX_WARNINGS="$NOT_CXX_WARNINGS|sign-conversion"
##List of gcc warnings for CC_WARNINGS, excluding NOT_CC_WARNINGS and NOT_EQUAL_WARN, to bin/x.cc
# (echo -n -Wformat-overflow; echo " "; gcc --help=warnings) | sed -nr 's/^ *(-W[^ ]*) .*/\1/p' | sort -u | grep -vE "[-]W\$|-W(all|extra|$NOT_CC_WARNINGS)\$|$NOT_EQUAL_WARN" >bin/x.cc
##List gcc warnings for CXX_WARNINGS, excluding NOT_CXX_WARNINGS and NOT_EQUAL_WARN, bin/x.ccx
## -Wno-sign-conversion due to 'int' vs. 'size_t' for indexing, boolT, countT, and size_t returns
##..-Wno-old-style-cast due to warnings for libqhull_r macros
## Test CXX_WARNINGS with -Wsign-conversion and -Wold-style-cast
# (echo -n -Wno-old-style-cast -Wno-sign-conversion -Wformat-overflow; echo " "; gcc --help=warnings) | sed -nr 's/^ *(-W[^ ]*) .*/\1/p' | sort -u | grep -vE "[-]W\$|-W(all|extra|sign-conversion|$NOT_CXX_WARNINGS)\$|$NOT_EQUAL_WARN" >bin/x.cxx
##List of mismatched gcc warnings for NOT_CC_CXX_WARN, NOT_CC_WARNINGS, and NOT_CXX_WARNINGS to bin/x.1
# make cleanall SO=dll qhullx 2>&1 | grep "not for C" | sort -u > bin/x.1
##Test gcc warnings on Windows with mingw gcc to bin/x.2
# make cleanall SO=dll qhullx >bin/x.2 2>&1 # libqhull and libqhull_r
# make cleanall SO=dll bin/user_eg3 >bin/x.2 2>&1 # libqhullcpp
# make cleanall SO=dll all >bin/x.2 2>&1
##Summary list of warnings to bin/x.1 for review
# grep -vE 'Tools/mingw|mingw-w64|short unsigned int:9|string length .([0-9][0-9][0-9]|1[0-7][0-9][0-9]). is greater|from src/' bin/x.2 | grep -E -A6 'warning:|: error:' >bin/x.1
## [gcc 8.1 from may'2018] Compiles OK with these CC_WARNINGS and CXX_WARNINGS
# CC_WARNINGS = -Wformat-overflow -Wabi -Waddress -Waggressive-loop-optimizations -Walloc-zero -Walloca -Warray-bounds -Wattribute-alias -Wattributes -Wbad-function-cast -Wbool-compare -Wbool-operation -Wbuiltin-declaration-mismatch -Wbuiltin-macro-redefined -Wc90-c99-compat -Wc99-c11-compat -Wcast-align -Wcast-align=strict -Wcast-function-type -Wcast-qual -Wchar-subscripts -Wchkp -Wclobbered -Wcomment -Wcomments -Wconversion -Wcoverage-mismatch -Wcpp -Wdangling-else -Wdate-time -Wdeclaration-after-statement -Wdeprecated -Wdeprecated-declarations -Wdesignated-init -Wdisabled-optimization -Wdiscarded-array-qualifiers -Wdiscarded-qualifiers -Wdiv-by-zero -Wdouble-promotion -Wduplicate-decl-specifier -Wduplicated-branches -Wduplicated-cond -Wempty-body -Wendif-labels -Wenum-compare -Werror-implicit-function-declaration -Werror=implicit-function-declaration -Wexpansion-to-defined -Wfloat-conversion -Wformat -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-truncation -Wformat-y2k -Wformat-zero-length -Wframe-address -Wfree-nonheap-object -Whsa -Wif-not-aligned -Wignored-attributes -Wignored-qualifiers -Wimplicit -Wimplicit-fallthrough -Wimplicit-function-declaration -Wimplicit-int -Wincompatible-pointer-types -Winit-self -Winline -Wint-conversion -Wint-in-bool-context -Wint-to-pointer-cast -Winvalid-memory-model -Winvalid-pch -Wjump-misses-init -Wlogical-not-parentheses -Wlogical-op -Wlto-type-mismatch -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmissing-attributes -Wmissing-braces -Wmissing-declarations -Wmissing-field-initializers -Wmissing-include-dirs -Wmissing-parameter-type -Wmissing-prototypes -Wmultichar -Wmultistatement-macros -Wnarrowing -Wnested-externs -Wnonnull -Wnonnull-compare -Wnormalized -Wnull-dereference -Wodr -Wold-style-declaration -Wold-style-definition -Wopenmp-simd -Woverflow -Woverlength-strings -Woverride-init -Woverride-init-side-effects -Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wparentheses -Wpedantic -Wpedantic-ms-format -Wpointer-arith -Wpointer-compare -Wpointer-sign -Wpointer-to-int-cast -Wpragmas -Wpsabi -Wrestrict -Wreturn-local-addr -Wreturn-type -Wscalar-storage-order -Wsequence-point -Wshadow -Wshadow-compatible-local -Wshadow-local -Wshadow=compatible-local -Wshadow=global -Wshadow=local -Wshift-count-negative -Wshift-count-overflow -Wshift-negative-value -Wshift-overflow -Wsign-compare -Wsign-conversion -Wsizeof-array-argument -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wstack-protector -Wstrict-aliasing -Wstrict-prototypes -Wstringop-overflow -Wstringop-truncation -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wswitch -Wswitch-bool -Wswitch-default -Wswitch-unreachable -Wsync-nand -Wsystem-headers -Wtautological-compare -Wtrampolines -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-const-variable -Wunused-function -Wunused-label -Wunused-local-typedefs -Wunused-macros -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvarargs -Wvariadic-macros -Wvector-operation-performance -Wvla -Wvolatile-register-var -Wwrite-strings
# CXX_WARNINGS = -Wno-old-style-cast -Wno-sign-conversion -Wformat-overflow -Wabi -Waddress -Waggressive-loop-optimizations -Walloc-zero -Walloca -Warray-bounds -Wattribute-alias -Wattributes -Wbool-compare -Wbool-operation -Wbuiltin-declaration-mismatch -Wbuiltin-macro-redefined -Wc++0x-compat -Wc++11-compat -Wc++14-compat -Wc++17-compat -Wc++1z-compat -Wcast-align -Wcast-align=strict -Wcast-function-type -Wcast-qual -Wcatch-value -Wchar-subscripts -Wchkp -Wclass-memaccess -Wclobbered -Wcomment -Wcomments -Wconditionally-supported -Wconversion -Wconversion-null -Wcoverage-mismatch -Wcpp -Wctor-dtor-privacy -Wdangling-else -Wdate-time -Wdelete-incomplete -Wdelete-non-virtual-dtor -Wdeprecated -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wdouble-promotion -Wduplicated-branches -Wduplicated-cond -Wempty-body -Wendif-labels -Wenum-compare -Werror-implicit-function-declaration -Werror=implicit-function-declaration -Wexpansion-to-defined -Wextra-semi -Wfloat-conversion -Wformat -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-truncation -Wformat-y2k -Wformat-zero-length -Wframe-address -Wfree-nonheap-object -Whsa -Wif-not-aligned -Wignored-attributes -Wignored-qualifiers -Wimplicit-fallthrough -Winherited-variadic-ctor -Winit-self -Winline -Wint-in-bool-context -Wint-to-pointer-cast -Winvalid-memory-model -Winvalid-offsetof -Winvalid-pch -Wliteral-suffix -Wlogical-not-parentheses -Wlogical-op -Wlto-type-mismatch -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmissing-attributes -Wmissing-braces -Wmissing-declarations -Wmissing-field-initializers -Wmissing-include-dirs -Wmultichar -Wmultiple-inheritance -Wmultistatement-macros -Wnarrowing -Wnoexcept -Wnoexcept-type -Wnon-template-friend -Wnon-virtual-dtor -Wnonnull -Wnonnull-compare -Wnormalized -Wnull-dereference -Wodr -Wopenmp-simd -Woverflow -Woverlength-strings -Woverloaded-virtual -Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wparentheses -Wpedantic -Wpedantic-ms-format -Wplacement-new -Wpmf-conversions -Wpointer-arith -Wpointer-compare -Wpragmas -Wpsabi -Wregister -Wreorder -Wrestrict -Wreturn-local-addr -Wreturn-type -Wscalar-storage-order -Wsequence-point -Wshadow -Wshadow-compatible-local -Wshadow-local -Wshadow=compatible-local -Wshadow=global -Wshadow=local -Wshift-count-negative -Wshift-count-overflow -Wshift-negative-value -Wshift-overflow -Wsign-compare -Wsign-promo -Wsized-deallocation -Wsizeof-array-argument -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wstack-protector -Wstrict-aliasing -Wstrict-null-sentinel -Wstringop-overflow -Wstringop-truncation -Wsubobject-linkage -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wswitch -Wswitch-bool -Wswitch-default -Wswitch-unreachable -Wsync-nand -Wsynth -Wsystem-headers -Wtautological-compare -Wterminate -Wtrampolines -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-const-variable -Wunused-function -Wunused-label -Wunused-local-typedefs -Wunused-macros -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvarargs -Wvariadic-macros -Wvector-operation-performance -Wvirtual-inheritance -Wvirtual-move-assign -Wvla -Wvolatile-register-var -Wwrite-strings
# Default targets for make
all: bin-lib bin/rbox bin/qconvex bin/qdelaunay bin/qhalf bin/qvoronoi bin/qhull bin/testqset \
bin/testqset_r qtest bin/user_eg2 bin/user_eg3 bin/user_eg qconvex-prompt
help:
head -n 88 Makefile
bin-lib:
mkdir -p bin
mkdir -p lib
@echo "if user_eg or the shared library build fails, other targets remain OK"
# Remove intermediate files for all builds
# Deletes eg/*.x, *.x, and *.tmp
clean:
rm -f src/*/*.o src/qhulltest/RoadTest.h.cpp build/*/*/*.o build/*/*.o
rm -f src/*/*.obj build/*/*/*.obj build/*/*/*/*/*.obj build/*/*.obj
rm -f src/*/gmon.out bin/*.idb lib/*.idb build-cmake/*/*.idb
rm -f eg/*.x *.x *.tmp
rm -f build/*/*/*.a build/*/*/*.rsp build/moc/*.moc
rm -f build-cmake/*/*.obj build-cmake/*/*/*.obj build-cmake/*/*.ilk
@echo Remove linked C files from libqhull/ and libqhull_r/
rm -f src/libqhull/rbox.c src/libqhull/qconvex.c src/libqhull/qdelaun.c
rm -f src/libqhull/qhalf.c src/libqhull/qvoronoi.c src/libqhull/testqset.c
rm -f src/libqhull/unix.c src/libqhull/user_eg.c src/libqhull/user_eg2.c
rm -f src/libqhull_r/rbox_r.c src/libqhull_r/qconvex_r.c src/libqhull_r/qdelaun_r.c
rm -f src/libqhull_r/qhalf_r.c src/libqhull_r/qvoronoi_r.c src/libqhull_r/testqset_r.c
rm -f src/libqhull_r/unix_r.c src/libqhull_r/user_eg_r.c src/libqhull_r/user_eg2_r.c
rm -f src/libqhull_r/user_eg3_r.c
# Remove intermediate files and targets for all builds
# DevStudio prevents build/qhull.ncb deletes
cleanall: clean
rm -rf build/*.dir/
-rm -rf build/qhull.ncb
rm -rf buildvc/
rm -rf buildqt/
rm -rf build-qhull-all*/
rm -rf src/qhull_qh/
rm -rf gmon.out bin/gmon.out
rm -f bin/qconvex bin/qdelaunay bin/qhalf bin/qvoronoi bin/qhull
rm -f bin/rbox core bin/core bin/user_eg bin/user_eg2 bin/user_eg3
rm -f bin/testqset bin/testqset_r bin/qhulltest
rm -f bin/libqhull* bin/qhull*.dll bin/*.exe bin/*.pdb lib/*.pdb
rm -f build/*.dll build/*.exe build/*.a build/*.exp
rm -f build/*.lib build/*.pdb build/*.idb build/qhull-no-qt.sln
rm -f build-cmake/*/*.dll build-cmake/*/*.exe build-cmake/*/*.exp
rm -f build-cmake/*/*.lib build-cmake/*/*.pdb
rm -f eg/eg.* eg/t*.tmp
rm -f lib/libqhull* lib/qhull*.lib lib/qhull*.exp lib/qhull*.dll
rm -f src/libqhull*/*.exe src/libqhull*/libqhullstatic*.a src/libqhull*/core
rm -f src/libqhull*/qconvex src/libqhull*/qdelaunay src/libqhull*/qhalf
rm -f src/libqhull*/qvoronoi src/libqhull*/qhull src/libqhull*/rbox
rm -f src/libqhull*/user_eg src/libqhull*/user_eg2 src/libqhull*/user_eg3
doc:
$(PRINTMAN) $(TXTFILES) $(DOCFILES)
install: bin/qconvex bin/qdelaunay bin/qhalf bin/qhull bin/qvoronoi bin/rbox
mkdir -p $(ABS_BINDIR)
mkdir -p $(ABS_DOCDIR)
mkdir -p $(ABS_DOCDIR)/src
mkdir -p $(ABS_INCDIR)/libqhull
mkdir -p $(ABS_INCDIR)/libqhull_r
mkdir -p $(ABS_INCDIR)/libqhullcpp
mkdir -p $(ABS_LIBDIR)
mkdir -p $(ABS_MANDIR)
mkdir -p $(ABS_PCDIR)
cp bin/qconvex $(ABS_BINDIR)
cp bin/qdelaunay $(ABS_BINDIR)
cp bin/qhalf $(ABS_BINDIR)
cp bin/qhull $(ABS_BINDIR)
cp bin/qvoronoi $(ABS_BINDIR)
cp bin/rbox $(ABS_BINDIR)
cp -p html/qhull.man $(ABS_MANDIR)/qhull.1
cp -p html/rbox.man $(ABS_MANDIR)/rbox.1
cp -p README.txt REGISTER.txt Announce.txt COPYING.txt index.htm $(ABS_DOCDIR)/
cp -pr html $(ABS_DOCDIR)/
cp -p src/Changes.txt $(ABS_DOCDIR)/src/
cp -P lib/* $(ABS_LIBDIR)
cp src/libqhull/DEPRECATED.txt src/libqhull/*.h $(ABS_INCDIR)/libqhull
cp src/libqhull_r/*.h $(ABS_INCDIR)/libqhull_r
cp src/libqhullcpp/*.h $(ABS_INCDIR)/libqhullcpp
cp src/qhulltest/*.h $(ABS_INCDIR)/libqhullcpp
for lib in qhullstatic qhullstatic_r qhull_r qhullcpp; \
do sed \
-e 's#@qhull_VERSION@#$(qhull_VERSION)#' \
-e 's#@CMAKE_INSTALL_PREFIX@#$(PREFIX)#' \
-e 's#@LIB_INSTALL_DIR@#$(LIBDIR)#' \
-e 's#@INCLUDE_INSTALL_DIR@#$(INCDIR)#' \
-e 's#@LIBRARY_NAME@#'$$lib'#' \
-e 's#@LIBRARY_DESCRIPTION@#'$$lib'#' \
build/qhull.pc.in > $(ABS_PCDIR)/$$lib.pc; \
done
uninstall:
-(cd $(ABS_BINDIR) && rm -f qconvex qdelaunay qhalf qhull qvoronoi rbox)
-(cd $(ABS_BINDIR) && rm -f qconvex.exe qdelaunay.exe qhalf.exe qhull.exe qvoronoi.exe rbox.exe libqhull*.dll)
-(cd $(ABS_MANDIR) && rm -f qhull.1 rbox.1)
-(cd $(ABS_DOCDIR) && rm -f README.txt REGISTER.txt Announce.txt COPYING.txt index.htm src/Changes.txt)
-(cd $(ABS_DOCDIR) && rm -rf html)
-(cd $(ABS_LIBDIR) && rm -f libqhull*.a libqhull*.dll libqhull*.so* qhull*.lib qhull*.exp)
-(cd $(ABS_INCDIR) && rm -rf libqhull_r libqhull libqhullcpp)
-(cd $(ABS_PCDIR) && rm -f qhullstatic.pc qhullstatic_r.pc qhull_r.pc qhullcpp.pc)
-rmdir $(ABS_DOCDIR)/src
-rmdir $(ABS_DOCDIR)
new: cleanall all
printall: doc printh printc printf
printh:
$(PRINTC) $(LIBQHULL_HDRS)
$(PRINTC) $(LIBQHULLR_HDRS)
$(PRINTC) $(LIBQHULLCPP_HDRS)
printc:
$(PRINTC) $(CFILES)
$(PRINTC) $(CXXFILES)
$(PRINTC) $(TESTFILES)
printf:
$(PRINTC) $(FILES)
# for Windows, do not depend on bin/qhull,etc.
qtest:
@echo ============================================
@echo == make qtest ==============================
@echo ============================================
@echo -n "== "
@date
@echo
@echo ============================================
@echo == Test non-reentrant qset.c with mem.c ====
@echo ============================================
-bin/testqset 10000
@echo
@echo ============================================
@echo == Test reentrant qset_r.c with mem_r.c ====
@echo ============================================
-bin/testqset_r 10000
@echo
@echo ============================================
@echo == Run the qhull smoketest ====
@echo ============================================
-bin/rbox D4 | bin/qhull Tv
# for Windows, do not depend on bin/qhull,etc.
test: qtest
@echo ============================================
@echo == make test, after running qtest ==========
@echo ============================================
@echo
@echo ==============================
@echo ========= rbox/qhull =======
@echo ==============================
-bin/rbox D4 | bin/qhull Tv
@echo
@echo ==============================
@echo ========= qconvex ============
@echo ==============================
-bin/rbox 10 | bin/qconvex Tv
@echo
@echo ==============================
@echo ========= qdelaunay ==========
@echo ==============================
-bin/rbox 10 | bin/qdelaunay Tv
@echo
@echo ==============================
@echo ========= qhalf ==============
@echo ==============================
-bin/rbox 10 | bin/qconvex FQ FV n Tv | bin/qhalf Tv
@echo
@echo ==============================
@echo ========= qvoronoi ===========
@echo ==============================
-bin/rbox 10 | bin/qvoronoi Tv
@echo
@echo =================================
@echo ========= user_eg ===============
@echo == if fails under Windows =======
@echo == cp lib/libqhull_r.dll bin/ ==
@echo =================================
-bin/user_eg
@echo
@echo ==============================
@echo ========= user_eg2 ===========
@echo ==============================
-bin/user_eg2
@echo
@echo ==============================
@echo ========= user_eg3 ===========
@echo ==============================
-bin/user_eg3
-bin/user_eg3 rbox "10 D2" "2 D2" qhull "s p" facets
# make testall >eg/q_test.x 2>&1
testall: test
@echo ================================================
@echo == make testall, after running qtest and test ==
@echo ================================================
@echo -n "== "
@date
@echo
eg/q_eg
eg/q_egtest
bash -c eg/q_test
-eg/q_benchmark test 1 1 1 1
# make benchmark >eg/q_benchmark.x 2>&1
benchmark:
@echo ============================================
@echo == make benchmark ==========================
@echo == eg/qtest.sh ==========================
@echo ============================================
@echo -n "== "
@date
@echo
-eg/q_benchmark -10 -10 -10 -10
# last command for 'make all'
qconvex-prompt: bin/qconvex bin/rbox
bin/qconvex -?
@echo
@echo ============================================
@echo == Run the qconvex smoketest
@echo ============================================
bin/rbox D4 | bin/qconvex Tv
@echo
@echo ============================================
@echo == To enable user_eg
@echo ==
@echo == Windows -- make SO=dll
@echo '== cp -p lib/libqhull*.dll bin'
@echo ==
@echo == Unix/Macintosh -- make
@echo '== export LD_LIBRARY_PATH=$$PWD/lib:$$LD_LIBRARY_PATH'
@echo ============================================
@echo
@echo ============================================
@echo == To smoketest qhull programs
@echo '== make test'
@echo ============================================
@echo
@echo ============================================
@echo == To run qhull tests for manual review with eg/q_test-ok.txt
@echo '== make testall >eg/q_test.x 2>&1'
@echo '== make testall 2>&1 | tee eg/q_test.x'
@echo ============================================
@echo
@echo ============================================
@echo == To install qhull or show help
@echo '== make help'
@echo '== make install'
@echo ============================================
@echo
# libqhull is source files for non-reentrant Qhull
# libqhull_r is source files and a shared library for reentrant Qhull
L= src/libqhull
LR= src/libqhull_r
# libqhullstatic is a static library for non-reentrant Qhull
# libqhullstatic_r is a static library for reentrant Qhull
LS= src/libqhullstatic
LSR= src/libqhullstatic_r
# libqhullcpp is a static library for C++ files and libqhull_r
# qhulltest is a Qt test of libqhullcpp
LCPP= src/libqhullcpp
TCPP= src/qhulltest
LIBQHULL_HDRS = $(L)/user.h $(L)/libqhull.h $(L)/qhull_a.h $(L)/geom.h \
$(L)/io.h $(L)/mem.h $(L)/merge.h $(L)/poly.h $(L)/random.h \
$(L)/qset.h $(L)/stat.h
LIBQHULLR_HDRS = $(LR)/user_r.h $(LR)/libqhull_r.h $(LR)/qhull_ra.h $(LR)/geom_r.h \
$(LR)/io_r.h $(LR)/mem_r.h $(LR)/merge_r.h $(LR)/poly_r.h $(LR)/random_r.h \
$(LR)/qset_r.h $(LR)/stat_r.h
# LIBQHULLS_OBJS and LIBQHULLSR_OBJS ordered by frequency of execution with
# small files at end. Better locality.
LIBQHULLS_OBJS= $(LS)/global.o $(LS)/stat.o $(LS)/geom2.o $(LS)/poly2.o \
$(LS)/merge.o $(LS)/libqhull.o $(LS)/geom.o $(LS)/poly.o \
$(LS)/qset.o $(LS)/mem.o $(LS)/random.o
LIBQHULLS_USER_OBJS = $(LIBQHULLS_OBJS) $(LS)/usermem.o $(LS)/userprintf.o \
$(LS)/io.o $(LS)/user.o
LIBQHULLS_RBOX_OBJS = $(LIBQHULLS_USER_OBJS) $(LS)/rboxlib.o $(LS)/userprintf_rbox.o
LIBQHULLSR_OBJS = $(LSR)/global_r.o $(LSR)/stat_r.o $(LSR)/geom2_r.o $(LSR)/poly2_r.o \
$(LSR)/merge_r.o $(LSR)/libqhull_r.o $(LSR)/geom_r.o $(LSR)/poly_r.o \
$(LSR)/qset_r.o $(LSR)/mem_r.o $(LSR)/random_r.o
LIBQHULLSR_USER_OBJS = $(LIBQHULLSR_OBJS) $(LSR)/usermem_r.o $(LSR)/userprintf_r.o \
$(LSR)/io_r.o $(LSR)/user_r.o
LIBQHULLSR_RBOX_OBJS = $(LIBQHULLSR_USER_OBJS) $(LSR)/rboxlib_r.o $(LSR)/userprintf_rbox_r.o
LIBQHULLCPP_HDRS = $(LCPP)/RoadError.h $(LCPP)/RoadLogEvent.h $(LCPP)/Coordinates.h \
$(LCPP)/QhullHyperplane.h $(LCPP)/functionObjects.h $(LCPP)/PointCoordinates.h \
$(LCPP)/Qhull.h $(LCPP)/QhullError.h $(LCPP)/QhullFacet.h \
$(LCPP)/QhullFacetList.h $(LCPP)/QhullFacetSet.h $(LCPP)/QhullIterator.h \
$(LCPP)/QhullLinkedList.h $(LCPP)/QhullPoint.h $(LCPP)/QhullPoints.h \
$(LCPP)/QhullPointSet.h $(LCPP)/QhullQh.h $(LCPP)/QhullRidge.h \
$(LCPP)/QhullSet.h $(LCPP)/QhullSets.h $(LCPP)/QhullStat.h $(LCPP)/QhullUser.h \
$(LCPP)/QhullVertex.h $(LCPP)/QhullVertexSet.h $(LCPP)/RboxPoints.h
LIBQHULLCPP_OBJS = $(LCPP)/RoadError.o $(LCPP)/RoadLogEvent.o $(LCPP)/Coordinates.o \
$(LCPP)/PointCoordinates.o $(LCPP)/Qhull.o $(LCPP)/QhullFacet.o \
$(LCPP)/QhullFacetList.o $(LCPP)/QhullFacetSet.o \
$(LCPP)/QhullHyperplane.o $(LCPP)/QhullPoint.o $(LCPP)/QhullPoints.o \
$(LCPP)/QhullPointSet.o $(LCPP)/QhullQh.o $(LCPP)/QhullRidge.o \
$(LCPP)/QhullSet.o $(LCPP)/QhullStat.o $(LCPP)/QhullUser.o \
$(LCPP)/QhullVertex.o $(LCPP)/QhullVertexSet.o $(LCPP)/RboxPoints.o
# CFILES for non-reentrant Qhull, ordered alphabetically after libqhull.c
CFILES= src/qhull/unix.c $(L)/libqhull.c $(L)/geom.c $(L)/geom2.c $(L)/global.c $(L)/io.c \
$(L)/mem.c $(L)/merge.c $(L)/poly.c $(L)/poly2.c $(L)/random.c $(L)/rboxlib.c \
$(L)/qset.c $(L)/stat.c $(L)/user.c $(L)/usermem.c $(L)/userprintf.c $(L)/userprintf_rbox.c \
src/qconvex/qconvex.c src/qdelaunay/qdelaun.c src/qhalf/qhalf.c src/qvoronoi/qvoronoi.c
# CFILESR for reentrant Qhull, ordered alphabetically after libqhull.c
CFILESR= src/qhull/unix_r.c $(LSR)/libqhull_r.c $(LSR)/geom_r.c $(LSR)/geom2_r.c $(LSR)/global_r.c $(LSR)/io_r.c \
$(LSR)/mem_r.c $(LSR)/merge_r.c $(LSR)/poly_r.c $(LSR)/poly2_r.c $(LSR)/random_r.c $(LSR)/rboxlib_r.c \
$(LSR)/qset_r.c $(LSR)/stat_r.c $(LSR)/user_r.c $(LSR)/usermem_r.c $(LSR)/userprintf_r.c $(LSR)/userprintf_rbox_r.c \
src/qconvex/qconvex_r.c src/qdelaunay/qdelaun_r.c src/qhalf/qhalf_r.c src/qvoronoi/qvoronoi_r.c
# CXXFILES for C++ sources using libqhull_r (reentrant qhull), alphabetical
CXXFILES= $(LCPP)/Coordinates.cpp $(LCPP)/PointCoordinates.cpp \
$(LCPP)/Qhull.cpp $(LCPP)/QhullFacet.cpp \
$(LCPP)/QhullFacetList.cpp $(LCPP)/QhullFacetSet.cpp \
$(LCPP)/QhullHyperplane.cpp $(LCPP)/QhullPoint.cpp \
$(LCPP)/QhullPoints.cpp $(LCPP)/QhullPointSet.cpp $(LCPP)/QhullQh.cpp \
$(LCPP)/QhullRidge.cpp $(LCPP)/QhullSet.cpp $(LCPP)/QhullStat.cpp $(LCPP)/QhullUser.cpp \
$(LCPP)/QhullVertex.cpp $(LCPP)/QhullVertexSet.cpp $(LCPP)/RboxPoints.cpp \
$(LCPP)/RoadError.cpp $(LCPP)/RoadLogEvent.cpp src/user_eg3/user_eg3_r.cpp
# TESTFILES for Qt test of C++ sources using libqhull_r (reentrant qhull), alphabetical after qhulltest.cpp
TESTFILES= $(TCPP)/qhulltest.cpp $(TCPP)/Coordinates_test.cpp $(TCPP)/PointCoordinates_test.cpp \
$(TCPP)/Qhull_test.cpp $(TCPP)/QhullFacet_test.cpp $(TCPP)/QhullFacetList_test.cpp \
$(TCPP)/QhullFacetSet_test.cpp $(TCPP)/QhullHyperplane_test.cpp $(TCPP)/QhullLinkedList_test.cpp \
$(TCPP)/QhullPoint_test.cpp $(TCPP)/QhullPoints_test.cpp \
$(TCPP)/QhullPointSet_test.cpp $(TCPP)/QhullRidge_test.cpp \
$(TCPP)/QhullSet_test.cpp $(TCPP)/QhullVertex_test.cpp $(TCPP)/QhullVertexSet_test.cpp \
$(TCPP)/RboxPoints_test.cpp
TXTFILES= Announce.txt REGISTER.txt COPYING.txt README.txt src/Changes.txt
DOCFILES= html/rbox.txt html/qhull.txt
FILES= Makefile src/rbox/rbox.c src/user_eg/user_eg.c src/user_eg2/user_eg2.c \
src/testqset/testqset.c eg/q_test eg/q_egtest eg/q_eg
MANFILES= html/qhull.man html/rbox.man
# Source code is documented by src/libqhull/*.htm
HTMFILES= html/index.htm html/qh-quick.htm html/qh-impre.htm html/qh-eg.htm \
html/qh-optc.htm html/qh-opto.htm html/qh-optf.htm html/qh-optp.htm html/qh-optq.htm \
html/qh-c.htm html/qh-faq.htm html/qhull.htm html/qconvex.htm html/qdelaun.htm \
html/qh-geom.htm html/qh-globa.htm html/qh-io.htm html/qh-mem.htm html/qh-merge.htm \
html/qh-poly.htm html/qh-qhull.htm html/qh-set.htm html/qh-stat.htm html/qh-user.htm \
html/qconvex.htm html/qdelau_f.htm html/qdelaun.htm html/qhalf.htm html/qvoronoi.htm \
html/qvoron_f.htm html/rbox.htm
qhull/unix.o: $(L)/libqhull.h $(L)/user.h $(L)/mem.h
qconvex/qconvex.o: $(L)/libqhull.h $(L)/user.h $(L)/mem.h
qdelanay/qdelaun.o: $(L)/libqhull.h $(L)/user.h $(L)/mem.h
qhalf/qhalf.o: $(L)/libqhull.h $(L)/user.h $(L)/mem.h
qvoronoi/qvoronoi.o: $(L)/libqhull.h $(L)/user.h $(L)/mem.h
qhull/unix_r.o: $(LR)/libqhull_r.h $(LR)/user_r.h $(LR)/mem_r.h
qconvex/qconvex_r.o: $(LR)/libqhull_r.h $(LR)/user_r.h $(LR)/mem_r.h
qdelanay/qdelaun_r.o: $(LR)/libqhull_r.h $(LR)/user_r.h $(LR)/mem_r.h
qhalf/qhalf_r.o: $(LR)/libqhull_r.h $(LR)/user_r.h $(LR)/mem_r.h
qvoronoi/qvoronoi_r.o: $(LR)/libqhull_r.h $(LR)/user_r.h $(LR)/mem_r.h
$(LS)/libqhull.o: $(LIBQHULL_HDRS)
$(LS)/geom.o: $(LIBQHULL_HDRS)
$(LS)/geom2.o: $(LIBQHULL_HDRS)
$(LS)/global.o: $(LIBQHULL_HDRS)
$(LS)/io.o: $(LIBQHULL_HDRS)
$(LS)/mem.o: $(L)/mem.h
$(LS)/merge.o: $(LIBQHULL_HDRS)
$(LS)/poly.o: $(LIBQHULL_HDRS)
$(LS)/poly2.o: $(LIBQHULL_HDRS)
$(LS)/random.o: $(L)/libqhull.h $(L)/random.h $(L)/user.h
$(LS)/rboxlib.o: $(L)/libqhull.h $(L)/random.h $(L)/user.h
$(LS)/qset.o: $(L)/qset.h $(L)/mem.h
$(LS)/stat.o: $(LIBQHULL_HDRS)
$(LS)/user.o: $(LIBQHULL_HDRS)
$(LSR)/libqhull_r.o: $(LIBQHULLR_HDRS)
$(LSR)/geom_r.o: $(LIBQHULLR_HDRS)
$(LSR)/geom2_r.o: $(LIBQHULLR_HDRS)
$(LSR)/global_r.o: $(LIBQHULLR_HDRS)
$(LSR)/io_r.o: $(LIBQHULLR_HDRS)
$(LSR)/mem_r.o: $(LR)/mem_r.h
$(LSR)/merge_r.o: $(LIBQHULLR_HDRS)
$(LSR)/poly_r.o: $(LIBQHULLR_HDRS)
$(LSR)/poly2_r.o: $(LIBQHULLR_HDRS)
$(LSR)/random_r.o: $(LR)/libqhull_r.h $(LR)/random_r.h $(LR)/user_r.h $(LR)/mem_r.h
$(LSR)/rboxlib_r.o: $(LR)/libqhull_r.h $(LR)/random_r.h $(LR)/user_r.h $(LR)/mem_r.h
$(LSR)/qset_r.o: $(LR)/qset_r.h $(LR)/mem_r.h
$(LSR)/stat_r.o: $(LIBQHULLR_HDRS)
$(LSR)/user_r.o: $(LIBQHULLR_HDRS)
$(LCPP)/RoadError.o: $(LCPP)/RoadError.h $(LCPP)/RoadLogEvent.h
$(LCPP)/RoadLogEvent.o: $(LCPP)/RoadError.h
$(LCPP)/Coordinates.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/PointCoordinates.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/Qhull.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullFacet.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullFacetList.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullFacetSet.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullHyperplane.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullPoint.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullPoints.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullPointSet.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullQh.o: $(LIBQHULLR_HDRS)
$(LCPP)/QhullRidge.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullSet.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullStat.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullVertex.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullVertexSet.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/QhullUser.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
$(LCPP)/RboxPoints.o: $(LIBQHULLCPP_HDRS) $(LIBQHULLR_HDRS)
.c.o:
$(CC) -c $(CC_OPTS1) -o $@ $<
.cpp.o:
$(CXX) -c $(CXX_OPTS1) -o $@ $<
# qhullx -- Compile qhull without using a qhull library. Must be after LIBQHULLS_RBOX_OBJS
# For qconvex, rbox, and other programs, qhullx produces the same results as libqhull/Makefile
# For qhull, 'make qhullx' produces the same results as libqhull_r/Makefile
qhullx: src/qconvex/qconvex.o src/qdelaunay/qdelaun.o src/qhalf/qhalf.o src/qvoronoi/qvoronoi.o\
src/qhull/unix_r.o src/rbox/rbox.o src/testqset/testqset.o src/testqset_r/testqset_r.o\
$(LIBQHULLS_RBOX_OBJS) $(LIBQHULLSR_USER_OBJS) $(LS)/mem.o $(LS)/qset.o $(LS)/usermem.o
mkdir -p bin/
$(CC) -o bin/qconvex $(CC_OPTS2) -lm $(LIBQHULLS_USER_OBJS) src/qconvex/qconvex.o
$(CC) -o bin/qdelaunay $(CC_OPTS2) -lm $(LIBQHULLS_USER_OBJS) src/qdelaunay/qdelaun.o
$(CC) -o bin/qhalf $(CC_OPTS2) -lm $(LIBQHULLS_USER_OBJS) src/qhalf/qhalf.o
$(CC) -o bin/qvoronoi $(CC_OPTS2) -lm $(LIBQHULLS_USER_OBJS) src/qvoronoi/qvoronoi.o
$(CC) -o bin/qhull $(CC_OPTS2) -lm $(LIBQHULLSR_USER_OBJS) src/qhull/unix_r.o
$(CC) -o bin/rbox $(CC_OPTS2) -lm $(LIBQHULLS_RBOX_OBJS) src/rbox/rbox.o
$(CC) -o bin/testqset $(CC_OPTS2) -lm $(LS)/mem.o $(LS)/qset.o $(LS)/usermem.o src/testqset/testqset.o
$(CC) -o bin/testqset_r $(CC_OPTS2) -lm $(LSR)/mem_r.o $(LSR)/qset_r.o $(LSR)/usermem_r.o src/testqset_r/testqset_r.o
-bin/testqset 10000
-bin/testqset_r 10000
-bin/rbox D4 | bin/qhull
# The static library, libqhullstatic, contains non-reentrant code for Qhull. It is somewhat faster than reentrant libqhullstatic_r
$(LS)/libqhull.o: $(L)/libqhull.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/geom.o: $(L)/geom.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/geom2.o: $(L)/geom2.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/global.o: $(L)/global.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/io.o: $(L)/io.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/mem.o: $(L)/mem.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/merge.o: $(L)/merge.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/poly.o: $(L)/poly.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/poly2.o: $(L)/poly2.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/random.o: $(L)/random.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/rboxlib.o: $(L)/rboxlib.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/qset.o: $(L)/qset.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/stat.o: $(L)/stat.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/user.o: $(L)/user.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/usermem.o: $(L)/usermem.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/userprintf.o: $(L)/userprintf.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LS)/userprintf_rbox.o: $(L)/userprintf_rbox.c
$(CC) -c $(CC_OPTS1) -o $@ $<
# The static library, libqhullstatic_r, contains reentrant code with the same behavior as libqhullstatic
$(LSR)/libqhull_r.o: $(LR)/libqhull_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/geom_r.o: $(LR)/geom_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/geom2_r.o: $(LR)/geom2_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/global_r.o: $(LR)/global_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/io_r.o: $(LR)/io_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/mem_r.o: $(LR)/mem_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/merge_r.o: $(LR)/merge_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/poly_r.o: $(LR)/poly_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/poly2_r.o: $(LR)/poly2_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/random_r.o: $(LR)/random_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/rboxlib_r.o: $(LR)/rboxlib_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/qset_r.o: $(LR)/qset_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/stat_r.o: $(LR)/stat_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/user_r.o: $(LR)/user_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/usermem_r.o: $(LR)/usermem_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/userprintf_r.o: $(LR)/userprintf_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
$(LSR)/userprintf_rbox_r.o: $(LR)/userprintf_rbox_r.c
$(CC) -c $(CC_OPTS1) -o $@ $<
lib/libqhullstatic.a: $(LIBQHULLS_RBOX_OBJS)
@echo ==========================================
@echo ==== If 'ar' fails, try 'make qhullx' ====
@echo ==========================================
ar -rs $@ $^
#If 'ar -rs' fails, try using 'ar -s' with 'ranlib'
#ranlib $@
lib/libqhullstatic_r.a: $(LIBQHULLSR_RBOX_OBJS)
ar -rs $@ $^
#ranlib $@
# Do not create libqhullcpp as a shared library. Qhull C++ classes may change layout and size.
lib/libqhullcpp.a: $(LIBQHULLCPP_OBJS)
ar -rs $@ $^
#ranlib $@
lib/libqhull_r.$(SO): $(LIBQHULLSR_RBOX_OBJS)
$(CC) -shared -o $@ $(CC_OPTS3) $^
# the following line fails under MSYS, not needed for SO=dll
-(cd lib/ && ln -f -s libqhull_r.$(SO) libqhull_r.so)
-(cd lib/ && ln -f -s libqhull_r.$(SO) libqhull_r.$(SONAME_EXT))
# don't use ../qconvex. Does not work on Red Hat Linux
bin/qconvex: src/qconvex/qconvex.o lib/libqhullstatic.a
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic -lm
bin/qdelaunay: src/qdelaunay/qdelaun.o lib/libqhullstatic.a
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic -lm
bin/qhalf: src/qhalf/qhalf.o lib/libqhullstatic.a
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic -lm
bin/qvoronoi: src/qvoronoi/qvoronoi.o lib/libqhullstatic.a
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic -lm
bin/qhull: src/qhull/unix_r.o lib/libqhullstatic_r.a
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic_r -lm
-chmod +x eg/q_test eg/q_eg eg/q_egtest
bin/rbox: src/rbox/rbox.o lib/libqhullstatic.a
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic -lm
bin/testqset: src/testqset/testqset.o src/libqhull/qset.o src/libqhull/mem.o src/libqhull/usermem.o
$(CC) -o $@ $^ $(CC_OPTS2) -lm
bin/testqset_r: src/testqset_r/testqset_r.o src/libqhull_r/qset_r.o src/libqhull_r/mem_r.o src/libqhull_r/usermem_r.o
$(CC) -o $@ $^ $(CC_OPTS2) -lm
# You may use -lqhullstatic_r instead of -lqhull_r
bin/user_eg: src/user_eg/user_eg_r.o lib/libqhull_r.$(SO)
@echo -e '\n\n==================================================='
@echo -e '== If user_eg fails to link on a Windows host, use'
@echo -e '== "make SO=dll" and copy lib/libqhull_r.dll to bin/'
@echo -e '== Otherwise if user_eg fails to link, switch to -lqhullstatic_r'
@echo -e '===================================================\n'
$(CC) -o $@ $< $(CC_OPTS1) $(CC_OPTS3) -Llib -lqhull_r -lm
bin/user_eg2: src/user_eg2/user_eg2_r.o lib/libqhullstatic_r.a
@echo -e '\n\n==================================================='
@echo -e '== user_eg2 links to qhullstatic_r. It may use libqhull_r instead.'
@echo -e '===================================================\n'
$(CC) -o $@ $< $(CC_OPTS2) -Llib -lqhullstatic_r -lm
bin/user_eg3: src/user_eg3/user_eg3_r.o lib/libqhullstatic_r.a lib/libqhullcpp.a
$(CXX) -o $@ $< $(CXX_OPTS2) -Llib -lqhullcpp -lqhullstatic_r -lm
# end of Makefile
|