1# -*-makefile-gmake-*- (emacs mode) 2######################################################################### 3# 4# This file is part of the Yices SMT Solver. 5# Copyright (C) 2017 SRI International. 6# 7# Yices is free software: you can redistribute it and/or modify 8# it under the terms of the GNU General Public License as published by 9# the Free Software Foundation, either version 3 of the License, or 10# (at your option) any later version. 11# 12# Yices is distributed in the hope that it will be useful, 13# but WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15# GNU General Public License for more details. 16# 17# You should have received a copy of the GNU General Public License 18# along with Yices. If not, see <http://www.gnu.org/licenses/>. 19# 20######################################################################### 21 22 23# 24# Build Makefile 25# 26# Must be invoked with the following variables set 27# 28# YICES_TOP_DIR = top-level directory of Yices 29# YICES_MODE = build mode 30# YICES_MAKE_INCLUDE = configuration file to include 31# YICES_VERSION = full version 32# MAJOR = major version number 33# MINOR = minor version number 34# PATCH_LEVEL = patch level 35# ARCH = architecture (e.g, i686-pc-linux-gnu) 36# POSIXOS = OS (e.g., linux) 37# 38# Config variables are imported by including the file 39# $(YICES_TOP_DIR)/$(YICES_MAKE_INCLUDE) 40# 41# This file is constructed by running configure on the 42# host and it defines the compilation tools and flags 43# and the GMP libraries to use. 44# 45 46SHELL=/bin/sh 47 48ifeq (,$(YICES_TOP_DIR)) 49 $(error "YICES_TOP_DIR is undefined") 50endif 51 52ifeq (,$(YICES_MAKE_INCLUDE)) 53 $(error "YICES_MAKE_INCLUDE is undefined") 54endif 55 56include $(YICES_TOP_DIR)/$(YICES_MAKE_INCLUDE) 57 58# 59# ldconfig is used by the install rules. 60# We don't check for ldconfig in configure.ac (since that doesn't 61# make much sense). We use /sbin/ldconfig as default here. If that's 62# wrong, change it on the command line: 63# 64# make install LDCONFIG=... 65# 66LDCONFIG=/sbin/ldconfig 67 68# 69# Script/command to build a README file from a template 70# 71arm_android=$(findstring arm-linux-android,$(ARCH)) 72ifeq ($(arm_android),arm-linux-android) 73MKREADME=./utils/mkreadme-android 74else 75MKREADME=./utils/mkreadme 76endif 77 78# 79# Template + script to construct yices_version.c 80# 81template=./src/api/yices_version_template.txt 82MKVERSION=./utils/make_source_version 83 84# 85# Source directories 86# 87srcdir = src 88srcsubdirs = mt io terms utils solvers solvers/floyd_warshall \ 89 solvers/funs solvers/bv solvers/egraph solvers/cdcl solvers/simplex \ 90 parser_utils model scratch api frontend frontend/common \ 91 frontend/smt1 frontend/yices frontend/smt2 context exists_forall \ 92 mcsat mcsat/eq mcsat/uf mcsat/bool mcsat/ite mcsat/nra mcsat/bv \ 93 mcsat/bv/explain mcsat/utils 94 95testdir = tests/unit 96regressdir = tests/regress 97 98# 99# Build directory: for this architecture and mode 100# 101build_dir = build/$(ARCH)-$(YICES_MODE) 102 103# 104# Build subdirectories: we build two versions of Yices. One is 105# compiled and statically linked with GMP. The other one does not 106# include GMP so it requires GMP as a dynamic library at runtime. 107# 108# build/obj: object files (for version without GMP included) 109# build/lib: libraries (GMP not included) 110# build/bin: binaries (GMP not included) 111# 112# build/static_obj: object files (for version statically linked with GMP) 113# build/static_lib: libraries (GMP included) 114# build/static_bin: binaries linked statically with GMP (and other libraries if possible) 115# 116# build/static_dll_obj: for mingw and cygwin objectfiles to construct the static 117# variant of cygyices.dll or libyices.dll 118# 119dyn_objdir := $(build_dir)/obj 120dyn_libdir := $(build_dir)/lib 121dyn_bindir := $(build_dir)/bin 122 123static_objdir := $(build_dir)/static_obj 124static_libdir := $(build_dir)/static_lib 125static_bindir := $(build_dir)/static_bin 126 127static_dll_objdir := $(build_dir)/static_dll_obj 128 129dyn_objsubdirs := $(srcsubdirs:%=$(dyn_objdir)/%) 130static_objsubdirs := $(srcsubdirs:%=$(static_objdir)/%) 131static_dll_objsubdirs := $(srcsubdirs:%=$(static_dll_objdir)/%) 132 133# 134# Binary distributions: 135# 136# build_dir/dist: binaries + libraries with distribution not linked with GMP 137# build_dir/static_dist: includes GMP (statically linked) 138# 139dist_dir = $(build_dir) 140static_dist_dir = $(build_dir)/static_dist 141 142 143# 144# Directories and temporary file to build tarfiles 145# - we do this in two steps: the includes, binaries, and library files 146# to be distributed are constructed by invoking make -C src 147# and copied into $(dist_dir) 148# (what's required is defined in src/Makefile and may depend 149# on the OS + compilation mode). 150# - the full tar file is built from $(dist_dir) + the generic files 151# that are independent of OS and compilation modes 152# - the name of the tar file depends on ARCH + MODE 153# 154# All tarfiles are stored in ./distributions 155# 156distributions = ./distributions 157bindist_dir = yices-$(YICES_VERSION) 158 159ifeq ($(YICES_MODE),debug) 160 bindist_tarfile = $(bindist_dir)-$(ARCH)-dbg.tar.gz 161 static_bindist_tarfile = $(bindist_dir)-$(ARCH)-static-gmp-dbg.tar.gz 162else 163 bindist_tarfile = $(bindist_dir)-$(ARCH).tar.gz 164 static_bindist_tarfile = $(bindist_dir)-$(ARCH)-static-gmp.tar.gz 165endif 166 167 168 169# 170# Build subdirectories if they are missing 171# 172$(build_dir): 173 $(MKDIR_P) $(build_dir) 174 175$(dyn_objdir): 176 $(MKDIR_P) $(dyn_objdir) 177 178$(dyn_objsubdirs): 179 $(MKDIR_P) $@ 180 181$(dyn_libdir): 182 $(MKDIR_P) $(dyn_libdir) 183 184$(dyn_bindir): 185 $(MKDIR_P) $(dyn_bindir) 186 187$(static_objdir): 188 $(MKDIR_P) $(static_objdir) 189 190$(static_objsubdirs): 191 $(MKDIR_P) $@ 192 193$(static_dll_objdir): 194 $(MKDIR_P) $(static_dll_objdir) 195 196$(static_dll_objsubdirs): 197 $(MKDIR_P) $@ 198 199$(static_libdir): 200 $(MKDIR_P) $(static_libdir) 201 202$(static_bindir): 203 $(MKDIR_P) $(static_bindir) 204 205$(distdir): 206 $(MKDIR_P) $(distdir) 207 208$(static_distdir): 209 $(MKDIR_P) $(static_distdir) 210 211 212build_subdirs: $(build_dir) $(dyn_objsubdirs) $(dyn_libdir) $(dyn_bindir) 213 214static_build_subdirs-mingw static_build_subdirs-cygwin: $(static_dll_objsubdirs) 215 216static_build_subdirs-darwin static_build_subdirs-linux static_build_subdirs-unix static_build_subdirs-dragonfly static_build_subdirs-netbsd: 217 218static_build_subdirs: $(build_dir) $(static_objsubdirs) $(static_libdir) $(static_bindir) \ 219 static_build_subdirs-$(POSIXOS) 220 221.PHONY: build_subdirs static_build_subdirs static_build_subdirs-darwin static-build_subdirs-cygwin \ 222 static_build_subdirs-mingw static_build_subdirs-linux static_build_subdirs-unix \ 223 static_build_subdirs-dragonfly static_build_subdirs-netbsd 224 225# 226# Compilation 227# 228all: obj static-obj lib static-lib bin static-bin 229 230obj: build_subdirs version 231 @ echo "=== Building objects ===" 232 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) obj 233 234static-obj: static_build_subdirs version 235 @ echo "=== Building static objects ===" 236 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) static-obj 237 238lib: build_subdirs version 239 @ echo "=== Building libraries ===" 240 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) lib 241 242static-lib: static_build_subdirs build_subdirs version 243 @ echo "=== Building libraries with GMP ===" 244 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) static-lib 245 246bin: build_subdirs version 247 @ echo "=== Building binaries ===" 248 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) bin 249 250static-bin: static_build_subdirs version 251 @ echo "=== Building static binaries ===" 252 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) static-bin 253 254 255# 256# Force a new 'yices_version.c' to be generated. 257# Compilation date and mode, git revision, and version numbers 258# are copied into yices_version.c. 259# 260version: 261 $(MKVERSION) $(template) src/api/yices_$(YICES_MODE)_version.c $(YICES_VERSION) $(YICES_MODE) $(ARCH) 262 263.PHONY: version 264 265 266 267# 268# Tests: all use libyices.a in lib 269# Static tests: use libyices.a in static-lib 270# Don't regenerate the version file 271# 272test: build_subdirs version 273 @ echo "=== Building libraries ===" 274 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) lib 275 @ echo "=== Building tests ===" 276 @ $(MAKE) -C $(testdir) BUILD=../../$(build_dir) all 277 278static-test: static_build_subdirs version 279 @ echo "=== Building libraries with GMP ===" 280 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) static-lib 281 @ echo "=== Building tests ===" 282 @ $(MAKE) -C $(testdir) BUILD=../../$(build_dir) all-static 283 284# 285# Regressions 286# 287check: regress 288 289static-check: static-regress 290 291regress: build_subdirs version 292 @ echo "=== Building binaries ===" 293 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) bin 294 @ echo "=== Running regressions ===" 295 @ $(regressdir)/check.sh $(regressdir) $(build_dir)/bin 296 297 298static-regress: static_build_subdirs version 299 @ echo "=== Building binaries ===" 300 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) static-bin 301 @ echo "=== Running regressions ===" 302 @ $(regressdir)/check.sh $(regressdir) $(build_dir)/static_bin 303 304 305.PHONY: all obj static-obj lib static-lib bin static-bin test static-test \ 306 regress static-regress check static-check 307 308 309# 310# Documentation: for now we just build manual.pdf 311# this assumes latexmk is available 312# 313doc: 314 @ echo "=== Building the documentation ===" 315 @ (cd doc/manual ; \ 316 (latexmk -pdf manual || \ 317 (echo "===================================="; \ 318 echo " WARNING: can't run latexmk"; \ 319 echo " manual.pdf may be out-of-date"; \ 320 echo "===================================="; ))) 321 322 323documentation manual: doc 324 325.PHONY: doc documentation manual 326 327 328# 329# Binary distribution: 330# 331# On mingw, there's a manual step involved. So build the 332# distribution as follows: 333# 1) make dist (or make static-dist) 334# 2) from a Visual Studio console, 335# go to ./build/i686-pc-mingw32-release/dist/lib 336# then type 'lib /machine:x86 /def:libyices.def 337# 3) clean up: remove libyices.def and libyices.exp 338# from ./build/i686-pc-mingw32-release/dist/lib 339# 4) make tarfile (or make static-tarfile) 340# 341# On other platforms: make binary-distribution or make 342# static-distribution should work. 343# 344# On MacOS X, the tar command adds files of the form ._xxxx to store 345# metadata/extended file attributes. This gets ugly if we untar on 346# some other platform. To prevent generation of these ._xxxx files, it 347# is enough to set the environment variable COPYFILE_DISABLE to 1. We 348# do this systematically (even on other systems). Hopefully, 349# COPYFILE_DISABLE should not matter on other systems than MacOS X. 350# 351# We use a shell script ./util/mkreadme to make sure 352# the README file in the tarfile is up to date (probably 353# not foolproof) 354# 355$(distributions): 356 $(MKDIR_P) $(distributions) 357 358$(dist_dir): 359 $(MKDIR_P) $(dist_dir) 360 361$(static_dist_dir): 362 $(MKDIR_P) $(static_dist_dir) 363 364binary-distribution: dist tarfile 365 366static-distribution: static-dist static-tarfile 367 368dist: build_subdirs version $(dist_dir) 369 @ echo "=== Preparing binary distribution ===" 370 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) dist 371 372static-dist: static_build_subdirs build_subdirs version $(static_dist_dir) 373 @ echo "=== Preparing static binary distribution ===" 374 @ $(MAKE) -C $(srcdir) BUILD=../$(build_dir) static-dist 375 376 377tarfile: $(distributions) doc 378 @ echo "=== Building $(bindist_tarfile) ===" 379 rm -f -r $(bindist_dir) 380 $(MKDIR_P) $(bindist_dir) 381 cp -r $(dist_dir)/* $(bindist_dir) 382 cp etc/NOTICES $(bindist_dir) 383 cp LICENSE.txt $(bindist_dir)/LICENSE 384 $(MKREADME) $(dist_dir) etc/README.$(POSIXOS) > $(bindist_dir)/README 385 if test -f etc/install-yices.$(POSIXOS) ; then \ 386 cp etc/install-yices.$(POSIXOS) $(bindist_dir)/install-yices ; \ 387 chmod ug+x $(bindist_dir)/install-yices ; \ 388 fi 389 $(MKDIR_P) $(bindist_dir)/etc 390 cp etc/pstdint.h $(bindist_dir)/etc 391 $(MKDIR_P) $(bindist_dir)/examples 392 for file in `ls examples | $(EGREP) '\.ys$$|\.smt$$|\.c$$|\.smt2$$|\.cpp$$' ` ; do \ 393 cp examples/$$file $(bindist_dir)/examples ; \ 394 done || true 395 $(MKDIR_P) $(bindist_dir)/doc 396 cp doc/YICES-LANGUAGE $(bindist_dir)/doc 397 cp doc/manual/manual.pdf $(bindist_dir)/doc 398 chmod -R og+rX $(bindist_dir) 399 COPYFILE_DISABLE=1 tar -czf $(distributions)/$(bindist_tarfile) $(bindist_dir) 400 chmod -R og+rX $(distributions) 401 rm -f -r $(bindist_dir) 402 403static-tarfile: $(distributions) doc 404 @ echo "=== Building $(static_bindist_tarfile) ===" 405 rm -f -r $(bindist_dir) 406 $(MKDIR_P) $(bindist_dir) 407 cp -r $(static_dist_dir)/* $(bindist_dir) 408 cp etc/NOTICES $(bindist_dir) 409 cp LICENSE.txt $(bindist_dir)/LICENSE 410 $(MKREADME) $(static_dist_dir) etc/README.static.$(POSIXOS) > $(bindist_dir)/README 411 if test -f etc/install-yices.$(POSIXOS) ; then \ 412 cp etc/install-yices.$(POSIXOS) $(bindist_dir)/install-yices ; \ 413 chmod ug+x $(bindist_dir)/install-yices ; \ 414 fi 415 $(MKDIR_P) $(bindist_dir)/etc 416 cp etc/pstdint.h $(bindist_dir)/etc 417 $(MKDIR_P) $(bindist_dir)/examples 418 for file in `ls examples | $(EGREP) '\.ys$$|\.smt$$|\.c$$|\.smt2$$|\.cpp$$' ` ; do \ 419 cp examples/$$file $(bindist_dir)/examples ; \ 420 done || true 421 $(MKDIR_P) $(bindist_dir)/doc 422 cp doc/YICES-LANGUAGE $(bindist_dir)/doc 423 cp doc/manual/manual.pdf $(bindist_dir)/doc 424 chmod -R og+rX $(bindist_dir) 425 COPYFILE_DISABLE=1 tar -czf $(distributions)/$(static_bindist_tarfile) $(bindist_dir) 426 chmod -R og+rX $(distributions) 427 rm -f -r $(bindist_dir) 428 429 430.PHONY: binary-distribution static-distribution dist static-dist \ 431 tarfile static-tarfile 432 433 434 435# 436# Install from the source. 437# 438# The target directories are determined by ./configure: 439# bindir = where to put binaries 440# libdir = where to put the libraries 441# includedir = where to put the include files 442# 443# We assume 'make binary-distribution' was done first, 444# then we copy the $(dist_dir) content: 445# $(dist_dir)/bin into $(bindir) 446# $(dist_dir)/lib into $(libdir) 447# $(dist_dir)/include into $(includedir) 448# 449# Note: the default bindir, libdir, includedir are set by the 450# configure script, and are imported from $(YICES_MAKE_INCLUDE). 451# These defaults can be changed by using 'make install prefix=...' 452# 453# We also (try to) support the DESTDIR convention. 454# 455# The reason we don't want to force compilation in 'make install' is 456# that we typically need to do 'sudo make install' but we don't want 457# to compile with 'sudo make binary-distribution'. That can easily 458# fail if the source and build directory or file permissions are 459# wrong, or lead to other problems. 460# 461install: install-$(POSIXOS) 462 463install-default: 464 $(MKDIR_P) $(DESTDIR)$(bindir) 465 $(MKDIR_P) $(DESTDIR)$(libdir) 466 $(MKDIR_P) $(DESTDIR)$(includedir) 467 $(INSTALL) -m 664 $(dist_dir)/../../src/include/* $(DESTDIR)$(includedir) 468 $(INSTALL) $(dist_dir)/bin/* $(DESTDIR)$(bindir) 469 $(INSTALL) $(dist_dir)/lib/* $(DESTDIR)$(libdir) 470 471install-darwin: install-default 472 (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.$(MAJOR).dylib libyices.dylib) 473 474install-solaris: install-default 475 $(LDCONFIG) -n $(DESTDIR)$(libdir) && (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.so.$(YICES_VERSION) libyices.so) 476 477install-linux install-unix: install-default 478 $(LDCONFIG) -n $(DESTDIR)$(libdir) && (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.so.$(YICES_VERSION) libyices.so) 479 480# on FreeBSD: the library file is libyices.so.X.Y and ldconfig does not take -n 481# TODO: fix this. We must also create a symbolic link: libyices.so.X in libdir 482# the ldconfig manpage on FreeBSD says 'filenames must conform to the lib*.so.[0-9] pattern in order to 483# be added to the hints file.' In other words, ldconfig on FreeBSD doesn't create the symbolic link, 484# as on Linux. 485install-dragonfly: install-default 486 487install-netbsd: install-default 488 (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.so.$(YICES_VERSION) libyices.so) 489 490# 491# cygwin and mingw install: copy the DLLs in $(bindir) 492# 493install-cygwin: $(build_dir) $(dist_dir) 494 $(MKDIR_P) $(DESTDIR)$(bindir) 495 $(MKDIR_P) $(DESTDIR)$(libdir) 496 $(MKDIR_P) $(DESTDIR)$(includedir) 497 $(INSTALL) -m 664 $(dist_dir)/include/* $(DESTDIR)$(includedir) 498 $(INSTALL) $(dist_dir)/bin/* $(DESTDIR)$(bindir) 499 $(INSTALL) $(dist_dir)/lib/*.a $(DESTDIR)$(libdir) 500 501install-mingw: install-cygwin 502 503 504.PHONY: install install-default install-darwin install-solaris \ 505 install-linux install-dragonfly install-netbsd install-unix \ 506 install-cygwin install-mingw 507 508 509 510# 511# SOURCE DISTRIBUTION 512# 513srcdist_dir = yices-$(YICES_VERSION) 514srcdist_tarfile= yices-$(YICES_VERSION)-src.tar.gz 515 516# 517# Build the source tar file 518# 519# NOTE: chmod -R .. may fail on some Solaris versions 520# - a workaround is to use a GNU/fileutils version of chmod 521# instead of SUN's own version 522# - on CSL ungoliant: make sure /csl/bin is in the path before /bin 523# and /usr/bin 524# 525# For tests: we copy all unit tests and the regression tests in 526# arrays/bv/efsmt/mantis/wd. 527# 528source-distribution: $(distributions) doc 529 @ echo "=== Building $(srcdist_tarfile) ===" 530 rm -f -r $(srcdist_dir) 531 $(MKDIR_P) $(srcdist_dir) 532 cp install-sh config.guess configure configure.ac config.sub gmaketest $(srcdist_dir) 533 cp Makefile Makefile.build make.include.in $(srcdist_dir) 534 $(MKDIR_P) $(srcdist_dir)/autoconf 535 cp autoconf/* $(srcdist_dir)/autoconf 536 $(MKDIR_P) $(srcdist_dir)/configs 537 $(MKDIR_P) $(srcdist_dir)/etc 538 cp etc/README.source $(srcdist_dir)/README 539 cp etc/NOTICES $(srcdist_dir) 540 cp LICENSE.txt $(srcdist_dir)/LICENSE 541 cp etc/* $(srcdist_dir)/etc 542 $(MKDIR_P) $(srcdist_dir)/src 543 rsync -R `find src/ -name "Makefile" -or -name "*.c" -or -name "*.h" -or -name "*.txt"` $(srcdist_dir) 544 $(MKDIR_P) $(srcdist_dir)/doc 545 $(MKDIR_P) $(srcdist_dir)/doc/manual 546 cp doc/COMPILING doc/NOTES doc/YICES-LANGUAGE doc/GMP doc/manual/manual.pdf \ 547 $(srcdist_dir)/doc 548 cp doc/manual/*.pdf doc/manual/*.tex doc/manual/*.bib \ 549 doc/manual/*.cls doc/manual/*.sty doc/manual/*.eps doc/manual/*.fig \ 550 $(srcdist_dir)/doc/manual 551 $(MKDIR_P) $(srcdist_dir)/utils 552 cp utils/gmp-hack.h utils/mingw-build utils/setup-vs2010 utils/setup-vs2013 \ 553 utils/yices_parser.txt utils/yices_input_tables.h \ 554 utils/smt_parser.txt utils/smt_input_tables.h \ 555 utils/smt2_parser.txt utils/smt2_input_tables.h \ 556 utils/table_builder.c utils/truth_table_compiler.c \ 557 utils/mkreadme utils/mkreadme-android utils/make_source_version \ 558 utils/lib_name utils/gmp_version utils/yices_version \ 559 utils/remove_trailing_whitespaces \ 560 $(srcdist_dir)/utils 561 $(MKDIR_P) $(srcdist_dir)/examples 562 for file in `ls examples | $(EGREP) '\.ys$$|\.smt$$|\.c$$|\.smt2$$|\.cpp$$' ` ; do \ 563 cp examples/$$file $(srcdist_dir)/examples ; \ 564 done || true 565 $(MKDIR_P) $(srcdist_dir)/tests 566 cp -R tests/unit $(srcdist_dir)/tests 567 $(MKDIR_P) $(srcdist_dir)/tests/regress 568 for t in regress/arrays regress/bv regress/efsmt regress/mantis regress/wd ; do \ 569 cp -R tests/$$t $(srcdist_dir)/tests/regress ; \ 570 done 571 cp tests/regress/check.sh $(srcdist_dir)/tests/regress 572 chmod -R og+rX $(srcdist_dir) 573 COPYFILE_DISABLE=1 tar -czf $(distributions)/$(srcdist_tarfile) $(srcdist_dir) 574 chmod -R og+rX $(distributions) 575 rm -f -r $(srcdist_dir) 576 577.PHONY: source-distribution 578 579 580 581# 582# CLEANUP 583# 584 585# 586# Basic clean: delete build sub-directories for architecture + mode 587# 588clean: 589 rm -rf $(build_dir)/* 590 591# 592# Arch clean: delete all build subdirectories for an architecture 593# 594arch-clean: 595 rm -rf build/$(ARCH)-* 596 597# 598# All clean delete all build directories 599# - also clean the src directory 600# 601all-clean: 602 rm -rf build/* 603 $(MAKE) -C $(srcdir) clean 604 605.PHONY: clean arch-clean all-clean 606 607 608 609# 610# Helper rule for debugging Makefiles and configure 611# 612show-details: 613 @ echo 614 @ echo "*** Recursive Makefile ***" 615 @ echo 616 @ echo "target is $@" 617 @ echo 618 @ echo "ARCH is $(ARCH)" 619 @ echo "POSIXOS is $(POSIXOS)" 620 @ echo "YICES_TOP_DIR is $(YICES_TOP_DIR)" 621 @ echo "YICES_MAKE_INCLUDE is $(YICES_MAKE_INCLUDE)" 622 @ echo "YICES_MODE is $(YICES_MODE)" 623 @ echo "YICES_VERSION is $(YICES_VERSION)" 624 @ echo "MAJOR is $(MAJOR)" 625 @ echo "MINOR is $(MINOR)" 626 @ echo "PATCH_LEVEL is $(PATCH_LEVEL)" 627 @ echo 628 @ echo "Configuration" 629 @ echo " EXEEXT = $(EXEEXT)" 630 @ echo " SED = $(SED)" 631 @ echo " LN_S = $(LN_S)" 632 @ echo " MKDIR_P = $(MKDIR_P)" 633 @ echo " CC = $(CC)" 634 @ echo " CPPFLAGS = $(CPPFLAGS)" 635 @ echo " CFLAGS = $(CFLAGS)" 636 @ echo " LIBS = $(LIBS)" 637 @ echo " LDFLAGS = $(LDFLAGS)" 638 @ echo " LD = $(LD)" 639 @ echo " AR = $(AR)" 640 @ echo " RANLIB = $(RANLIB)" 641 @ echo " GPERF = $(GPERF)" 642 @ echo " STRIP = $(STRIP)" 643 @ echo 644 @ echo " NO_STACK_PROTECTOR = $(NO_STACK_PROTECTOR)" 645 @ echo 646 @ echo " STATIC_GMP = $(STATIC_GMP)" 647 @ echo " STATIC_GMP_INCLUDE_DIR = $(STATIC_GMP_INCLUDE_DIR)" 648 @ echo 649 @ echo " PIC_GMP = $(PIC_GMP)" 650 @ echo " PIC_GMP_INCLUDE_DIR = $(PIC_GMP_INCLUDE_DIR)" 651 @ echo 652 @ echo " ENABLE_MCSAT = $(ENABLE_MCSAT)" 653 @ echo 654 @ echo " STATIC_LIBPOLY = $(STATIC_LIBPOLY)" 655 @ echo " STATIC_LIBPOLY_INCLUDE_DIR = $(STATIC_LIBPOLY_INCLUDE_DIR)" 656 @ echo 657 @ echo " PIC_LIBPOLY = $(PIC_LIBPOLY)" 658 @ echo " PIC_LIBPOLY_INCLUDE_DIR = $(PIC_LIBPOLY_INCLUDE_DIR)" 659 @ echo 660 661 662.PHONY: show-details 663 664 665# 666# Make sure everything here is serialized 667# The sub makes can be run in parallel so option -j x should be allowed 668# 669.NOTPARALLEL: 670