Changes in / [b1e63ac5:208e5be]
- Files:
-
- 6 added
- 2 deleted
- 51 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified .gitignore ¶
rb1e63ac5 r208e5be 42 42 src/Parser/parser.cc 43 43 src/Parser/parser.h 44 src/Parser/parser.hh 44 45 45 46 tools/prettyprinter/parser.output … … 47 48 tools/prettyprinter/parser.cc 48 49 tools/prettyprinter/parser.h 50 tools/prettyprinter/parser.hh 49 51 tools/prettyprinter/pretty 50 52 tools/pretty … … 54 56 doc/user/pointer1.tex 55 57 doc/user/pointer2.tex 58 doc/user/EHMHierarchy.tex -
TabularUnified Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 19 18 ############################################################################### 20 19 VPATH = @srcdir@ 20 am__is_gnu_make = { \ 21 if test -z '$(MAKELEVEL)'; then \ 22 false; \ 23 elif test -n '$(MAKE_HOST)'; then \ 24 true; \ 25 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 26 true; \ 27 else \ 28 false; \ 29 fi; \ 30 } 31 am__make_running_with_option = \ 32 case $${target_option-} in \ 33 ?) ;; \ 34 *) echo "am__make_running_with_option: internal error: invalid" \ 35 "target option '$${target_option-}' specified" >&2; \ 36 exit 1;; \ 37 esac; \ 38 has_opt=no; \ 39 sane_makeflags=$$MAKEFLAGS; \ 40 if $(am__is_gnu_make); then \ 41 sane_makeflags=$$MFLAGS; \ 42 else \ 43 case $$MAKEFLAGS in \ 44 *\\[\ \ ]*) \ 45 bs=\\; \ 46 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 47 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 48 esac; \ 49 fi; \ 50 skip_next=no; \ 51 strip_trailopt () \ 52 { \ 53 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 54 }; \ 55 for flg in $$sane_makeflags; do \ 56 test $$skip_next = yes && { skip_next=no; continue; }; \ 57 case $$flg in \ 58 *=*|--*) continue;; \ 59 -*I) strip_trailopt 'I'; skip_next=yes;; \ 60 -*I?*) strip_trailopt 'I';; \ 61 -*O) strip_trailopt 'O'; skip_next=yes;; \ 62 -*O?*) strip_trailopt 'O';; \ 63 -*l) strip_trailopt 'l'; skip_next=yes;; \ 64 -*l?*) strip_trailopt 'l';; \ 65 -[dEDm]) skip_next=yes;; \ 66 -[JT]) skip_next=yes;; \ 67 esac; \ 68 case $$flg in \ 69 *$$target_option*) has_opt=yes; break;; \ 70 esac; \ 71 done; \ 72 test $$has_opt = yes 73 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 21 75 pkgdatadir = $(datadir)/@PACKAGE@ 22 76 pkgincludedir = $(includedir)/@PACKAGE@ … … 38 92 host_triplet = @host@ 39 93 subdir = . 40 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \41 $(srcdir)/Makefile.in $(srcdir)/config.h.in \42 $(top_srcdir)/configure INSTALL automake/compile \43 automake/config.guess automake/config.sub automake/depcomp \44 automake/install-sh automake/missing automake/ylwrap45 94 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 46 95 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 47 96 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 48 97 $(ACLOCAL_M4) 98 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ 99 $(am__configure_deps) $(am__DIST_COMMON) 49 100 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ 50 101 configure.lineno config.status.lineno … … 53 104 CONFIG_CLEAN_FILES = 54 105 CONFIG_CLEAN_VPATH_FILES = 106 AM_V_P = $(am__v_P_@AM_V@) 107 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 108 am__v_P_0 = false 109 am__v_P_1 = : 55 110 AM_V_GEN = $(am__v_GEN_@AM_V@) 56 111 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 57 am__v_GEN_0 = @echo " GEN " $@; 112 am__v_GEN_0 = @echo " GEN " $@; 113 am__v_GEN_1 = 58 114 AM_V_at = $(am__v_at_@AM_V@) 59 115 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 60 116 am__v_at_0 = @ 117 am__v_at_1 = 61 118 SOURCES = 62 119 DIST_SOURCES = 63 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ 64 html-recursive info-recursive install-data-recursive \ 65 install-dvi-recursive install-exec-recursive \ 66 install-html-recursive install-info-recursive \ 67 install-pdf-recursive install-ps-recursive install-recursive \ 68 installcheck-recursive installdirs-recursive pdf-recursive \ 69 ps-recursive uninstall-recursive 120 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ 121 ctags-recursive dvi-recursive html-recursive info-recursive \ 122 install-data-recursive install-dvi-recursive \ 123 install-exec-recursive install-html-recursive \ 124 install-info-recursive install-pdf-recursive \ 125 install-ps-recursive install-recursive installcheck-recursive \ 126 installdirs-recursive pdf-recursive ps-recursive \ 127 tags-recursive uninstall-recursive 128 am__can_run_installinfo = \ 129 case $$AM_UPDATE_INFO_DIR in \ 130 n|no|NO) false;; \ 131 *) (install-info --version) >/dev/null 2>&1;; \ 132 esac 70 133 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ 71 134 distclean-recursive maintainer-clean-recursive 72 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ 73 $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ 74 distdir dist dist-all distcheck 135 am__recursive_targets = \ 136 $(RECURSIVE_TARGETS) \ 137 $(RECURSIVE_CLEAN_TARGETS) \ 138 $(am__extra_recursive_targets) 139 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ 140 cscope distdir dist dist-all distcheck 141 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ 142 $(LISP)config.h.in 143 # Read a list of newline-separated strings from the standard input, 144 # and print each of them once, without duplicates. Input order is 145 # *not* preserved. 146 am__uniquify_input = $(AWK) '\ 147 BEGIN { nonempty = 0; } \ 148 { items[$$0] = 1; nonempty = 1; } \ 149 END { if (nonempty) { for (i in items) print i; }; } \ 150 ' 151 # Make sure the list of sources is unique. This is necessary because, 152 # e.g., the same source file might be shared among _SOURCES variables 153 # for different programs/libraries. 154 am__define_uniq_tagged_files = \ 155 list='$(am__tagged_files)'; \ 156 unique=`for i in $$list; do \ 157 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 158 done | $(am__uniquify_input)` 75 159 ETAGS = etags 76 160 CTAGS = ctags 161 CSCOPE = cscope 77 162 DIST_SUBDIRS = $(SUBDIRS) 163 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ 164 $(top_srcdir)/automake/compile \ 165 $(top_srcdir)/automake/config.guess \ 166 $(top_srcdir)/automake/config.sub \ 167 $(top_srcdir)/automake/install-sh \ 168 $(top_srcdir)/automake/missing INSTALL README automake/compile \ 169 automake/config.guess automake/config.sub automake/depcomp \ 170 automake/install-sh automake/missing automake/ylwrap 78 171 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 79 172 distdir = $(PACKAGE)-$(VERSION) … … 85 178 || { sleep 5 && rm -rf "$(distdir)"; }; \ 86 179 else :; fi 180 am__post_remove_distdir = $(am__remove_distdir) 87 181 am__relativize = \ 88 182 dir0=`pwd`; \ … … 112 206 DIST_ARCHIVES = $(distdir).tar.gz 113 207 GZIP_ENV = --best 208 DIST_TARGETS = dist-gzip 114 209 distuninstallcheck_listfiles = find . -type f -print 115 210 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ … … 227 322 program_transform_name = @program_transform_name@ 228 323 psdir = @psdir@ 324 runstatedir = @runstatedir@ 229 325 sbindir = @sbindir@ 230 326 sharedstatedir = @sharedstatedir@ … … 258 354 $(am__cd) $(top_srcdir) && \ 259 355 $(AUTOMAKE) --foreign Makefile 260 .PRECIOUS: Makefile261 356 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 262 357 @case '$?' in \ … … 279 374 280 375 config.h: stamp-h1 281 @ if test ! -f $@; then rm -f stamp-h1; else :; fi282 @ if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi376 @test -f $@ || rm -f stamp-h1 377 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 283 378 284 379 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status … … 294 389 295 390 # This directory's subdirectories are mostly independent; you can cd 296 # into them and run `make' without going through this Makefile. 297 # To change the values of `make' variables: instead of editing Makefiles, 298 # (1) if the variable is set in `config.status', edit `config.status' 299 # (which will cause the Makefiles to be regenerated when you run `make'); 300 # (2) otherwise, pass the desired values on the `make' command line. 301 $(RECURSIVE_TARGETS): 302 @fail= failcom='exit 1'; \ 303 for f in x $$MAKEFLAGS; do \ 304 case $$f in \ 305 *=* | --[!k]*);; \ 306 *k*) failcom='fail=yes';; \ 307 esac; \ 308 done; \ 391 # into them and run 'make' without going through this Makefile. 392 # To change the values of 'make' variables: instead of editing Makefiles, 393 # (1) if the variable is set in 'config.status', edit 'config.status' 394 # (which will cause the Makefiles to be regenerated when you run 'make'); 395 # (2) otherwise, pass the desired values on the 'make' command line. 396 $(am__recursive_targets): 397 @fail=; \ 398 if $(am__make_keepgoing); then \ 399 failcom='fail=yes'; \ 400 else \ 401 failcom='exit 1'; \ 402 fi; \ 309 403 dot_seen=no; \ 310 404 target=`echo $@ | sed s/-recursive//`; \ 311 list='$(SUBDIRS)'; for subdir in $$list; do \ 405 case "$@" in \ 406 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ 407 *) list='$(SUBDIRS)' ;; \ 408 esac; \ 409 for subdir in $$list; do \ 312 410 echo "Making $$target in $$subdir"; \ 313 411 if test "$$subdir" = "."; then \ … … 324 422 fi; test -z "$$fail" 325 423 326 $(RECURSIVE_CLEAN_TARGETS): 327 @fail= failcom='exit 1'; \ 328 for f in x $$MAKEFLAGS; do \ 329 case $$f in \ 330 *=* | --[!k]*);; \ 331 *k*) failcom='fail=yes';; \ 332 esac; \ 333 done; \ 334 dot_seen=no; \ 335 case "$@" in \ 336 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ 337 *) list='$(SUBDIRS)' ;; \ 338 esac; \ 339 rev=''; for subdir in $$list; do \ 340 if test "$$subdir" = "."; then :; else \ 341 rev="$$subdir $$rev"; \ 342 fi; \ 343 done; \ 344 rev="$$rev ."; \ 345 target=`echo $@ | sed s/-recursive//`; \ 346 for subdir in $$rev; do \ 347 echo "Making $$target in $$subdir"; \ 348 if test "$$subdir" = "."; then \ 349 local_target="$$target-am"; \ 350 else \ 351 local_target="$$target"; \ 352 fi; \ 353 ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ 354 || eval $$failcom; \ 355 done && test -z "$$fail" 356 tags-recursive: 357 list='$(SUBDIRS)'; for subdir in $$list; do \ 358 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ 359 done 360 ctags-recursive: 361 list='$(SUBDIRS)'; for subdir in $$list; do \ 362 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ 363 done 364 365 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 366 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 367 unique=`for i in $$list; do \ 368 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 369 done | \ 370 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 371 END { if (nonempty) { for (i in files) print i; }; }'`; \ 372 mkid -fID $$unique 373 tags: TAGS 374 375 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ 376 $(TAGS_FILES) $(LISP) 424 ID: $(am__tagged_files) 425 $(am__define_uniq_tagged_files); mkid -fID $$unique 426 tags: tags-recursive 427 TAGS: tags 428 429 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 377 430 set x; \ 378 431 here=`pwd`; \ … … 390 443 fi; \ 391 444 done; \ 392 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ 393 unique=`for i in $$list; do \ 394 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 395 done | \ 396 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 397 END { if (nonempty) { for (i in files) print i; }; }'`; \ 445 $(am__define_uniq_tagged_files); \ 398 446 shift; \ 399 447 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 407 455 fi; \ 408 456 fi 409 ctags: CTAGS 410 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ 411 $(TAGS_FILES) $(LISP) 412 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ 413 unique=`for i in $$list; do \ 414 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 415 done | \ 416 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 417 END { if (nonempty) { for (i in files) print i; }; }'`; \ 457 ctags: ctags-recursive 458 459 CTAGS: ctags 460 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 461 $(am__define_uniq_tagged_files); \ 418 462 test -z "$(CTAGS_ARGS)$$unique" \ 419 463 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 424 468 && $(am__cd) $(top_srcdir) \ 425 469 && gtags -i $(GTAGS_ARGS) "$$here" 470 cscope: cscope.files 471 test ! -s cscope.files \ 472 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) 473 clean-cscope: 474 -rm -f cscope.files 475 cscope.files: clean-cscope cscopelist 476 cscopelist: cscopelist-recursive 477 478 cscopelist-am: $(am__tagged_files) 479 list='$(am__tagged_files)'; \ 480 case "$(srcdir)" in \ 481 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 482 *) sdir=$(subdir)/$(srcdir) ;; \ 483 esac; \ 484 for i in $$list; do \ 485 if test -f "$$i"; then \ 486 echo "$(subdir)/$$i"; \ 487 else \ 488 echo "$$sdir/$$i"; \ 489 fi; \ 490 done >> $(top_builddir)/cscope.files 426 491 427 492 distclean-tags: 428 493 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 494 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files 429 495 430 496 distdir: $(DISTFILES) … … 462 528 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ 463 529 if test "$$subdir" = .; then :; else \ 464 test -d "$(distdir)/$$subdir" \ 465 || $(MKDIR_P) "$(distdir)/$$subdir" \ 466 || exit 1; \ 467 fi; \ 468 done 469 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ 470 if test "$$subdir" = .; then :; else \ 530 $(am__make_dryrun) \ 531 || test -d "$(distdir)/$$subdir" \ 532 || $(MKDIR_P) "$(distdir)/$$subdir" \ 533 || exit 1; \ 471 534 dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ 472 535 $(am__relativize); \ … … 497 560 dist-gzip: distdir 498 561 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz 499 $(am__ remove_distdir)562 $(am__post_remove_distdir) 500 563 501 564 dist-bzip2: distdir 502 565 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 503 $(am__ remove_distdir)566 $(am__post_remove_distdir) 504 567 505 568 dist-lzip: distdir 506 569 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz 507 $(am__remove_distdir) 508 509 dist-lzma: distdir 510 tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma 511 $(am__remove_distdir) 570 $(am__post_remove_distdir) 512 571 513 572 dist-xz: distdir 514 573 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz 515 $(am__ remove_distdir)574 $(am__post_remove_distdir) 516 575 517 576 dist-tarZ: distdir 577 @echo WARNING: "Support for distribution archives compressed with" \ 578 "legacy program 'compress' is deprecated." >&2 579 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 518 580 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z 519 $(am__ remove_distdir)581 $(am__post_remove_distdir) 520 582 521 583 dist-shar: distdir 584 @echo WARNING: "Support for shar distribution archives is" \ 585 "deprecated." >&2 586 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 522 587 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz 523 $(am__ remove_distdir)588 $(am__post_remove_distdir) 524 589 525 590 dist-zip: distdir 526 591 -rm -f $(distdir).zip 527 592 zip -rq $(distdir).zip $(distdir) 528 $(am__ remove_distdir)529 530 dist dist-all: distdir531 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz532 $(am__ remove_distdir)593 $(am__post_remove_distdir) 594 595 dist dist-all: 596 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' 597 $(am__post_remove_distdir) 533 598 534 599 # This target untars the dist file and tries a VPATH configuration. Then … … 541 606 *.tar.bz2*) \ 542 607 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ 543 *.tar.lzma*) \544 lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\545 608 *.tar.lz*) \ 546 609 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ … … 554 617 unzip $(distdir).zip ;;\ 555 618 esac 556 chmod -R a-w $(distdir) ; chmod a+w $(distdir)557 mkdir $(distdir)/_build558 mkdir $(distdir)/_ inst619 chmod -R a-w $(distdir) 620 chmod u+w $(distdir) 621 mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst 559 622 chmod a-w $(distdir) 560 623 test -d $(distdir)/_build || exit 0; \ … … 562 625 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ 563 626 && am__cwd=`pwd` \ 564 && $(am__cd) $(distdir)/_build \565 && ../ configure --srcdir=.. --prefix="$$dc_install_base"\627 && $(am__cd) $(distdir)/_build/sub \ 628 && ../../configure \ 566 629 $(AM_DISTCHECK_CONFIGURE_FLAGS) \ 567 630 $(DISTCHECK_CONFIGURE_FLAGS) \ 631 --srcdir=../.. --prefix="$$dc_install_base" \ 568 632 && $(MAKE) $(AM_MAKEFLAGS) \ 569 633 && $(MAKE) $(AM_MAKEFLAGS) dvi \ … … 588 652 && cd "$$am__cwd" \ 589 653 || exit 1 590 $(am__ remove_distdir)654 $(am__post_remove_distdir) 591 655 @(echo "$(distdir) archives ready for distribution: "; \ 592 656 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ … … 723 787 uninstall-am: 724 788 725 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ 726 ctags-recursive install-am install-strip tags-recursive 727 728 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ 729 all all-am am--refresh check check-am clean clean-generic \ 730 ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ 731 dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ 789 .MAKE: $(am__recursive_targets) all install-am install-strip 790 791 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ 792 am--refresh check check-am clean clean-cscope clean-generic \ 793 cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ 794 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ 732 795 distcheck distclean distclean-generic distclean-hdr \ 733 796 distclean-tags distcleancheck distdir distuninstallcheck dvi \ … … 739 802 installcheck installcheck-am installdirs installdirs-am \ 740 803 maintainer-clean maintainer-clean-generic mostlyclean \ 741 mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ 742 uninstall uninstall-am 804 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 805 uninstall-am 806 807 .PRECIOUS: Makefile 743 808 744 809 -
TabularUnified aclocal.m4 ¶
rb1e63ac5 r208e5be 1 # generated automatically by aclocal 1.11.3 -*- Autoconf -*- 2 3 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 4 # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, 5 # Inc. 1 # generated automatically by aclocal 1.15 -*- Autoconf -*- 2 3 # Copyright (C) 1996-2014 Free Software Foundation, Inc. 4 6 5 # This file is free software; the Free Software Foundation 7 6 # gives unlimited permission to copy and/or distribute it, … … 13 12 # PARTICULAR PURPOSE. 14 13 14 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) 15 15 m4_ifndef([AC_AUTOCONF_VERSION], 16 16 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl 17 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.6 8],,18 [m4_warning([this file was generated for autoconf 2.6 8.17 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, 18 [m4_warning([this file was generated for autoconf 2.69. 19 19 You have another version of autoconf. It may work, but is not guaranteed to. 20 20 If you have problems, you may need to regenerate the build system entirely. 21 To do so, use the procedure documented by the package, typically `autoreconf'.])]) 22 23 # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software 24 # Foundation, Inc. 25 # 26 # This file is free software; the Free Software Foundation 27 # gives unlimited permission to copy and/or distribute it, 28 # with or without modifications, as long as this notice is preserved. 29 30 # serial 1 21 To do so, use the procedure documented by the package, typically 'autoreconf'.])]) 22 23 # Copyright (C) 2002-2014 Free Software Foundation, Inc. 24 # 25 # This file is free software; the Free Software Foundation 26 # gives unlimited permission to copy and/or distribute it, 27 # with or without modifications, as long as this notice is preserved. 31 28 32 29 # AM_AUTOMAKE_VERSION(VERSION) … … 36 33 # (This private macro should not be called outside this file.) 37 34 AC_DEFUN([AM_AUTOMAKE_VERSION], 38 [am__api_version='1.1 1'35 [am__api_version='1.15' 39 36 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to 40 37 dnl require some minimum version. Point them to the right macro. 41 m4_if([$1], [1.1 1.3], [],38 m4_if([$1], [1.15], [], 42 39 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl 43 40 ]) … … 55 52 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. 56 53 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], 57 [AM_AUTOMAKE_VERSION([1.1 1.3])dnl54 [AM_AUTOMAKE_VERSION([1.15])dnl 58 55 m4_ifndef([AC_AUTOCONF_VERSION], 59 56 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl … … 62 59 # Figure out how to run the assembler. -*- Autoconf -*- 63 60 64 # Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 65 # 66 # This file is free software; the Free Software Foundation 67 # gives unlimited permission to copy and/or distribute it, 68 # with or without modifications, as long as this notice is preserved. 69 70 # serial 5 61 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 62 # 63 # This file is free software; the Free Software Foundation 64 # gives unlimited permission to copy and/or distribute it, 65 # with or without modifications, as long as this notice is preserved. 71 66 72 67 # AM_PROG_AS … … 84 79 # AM_AUX_DIR_EXPAND -*- Autoconf -*- 85 80 86 # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. 87 # 88 # This file is free software; the Free Software Foundation 89 # gives unlimited permission to copy and/or distribute it, 90 # with or without modifications, as long as this notice is preserved. 91 92 # serial 1 81 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 82 # 83 # This file is free software; the Free Software Foundation 84 # gives unlimited permission to copy and/or distribute it, 85 # with or without modifications, as long as this notice is preserved. 93 86 94 87 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets 95 # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to96 # `$srcdir', `$srcdir/..', or `$srcdir/../..'.88 # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to 89 # '$srcdir', '$srcdir/..', or '$srcdir/../..'. 97 90 # 98 91 # Of course, Automake must honor this variable whenever it calls a … … 113 106 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir 114 107 # are both prefixed by $srcdir. In an in-source build this is usually 115 # harmless because $srcdir is `.', but things will broke when you108 # harmless because $srcdir is '.', but things will broke when you 116 109 # start a VPATH build or use an absolute $srcdir. 117 110 # … … 131 124 132 125 AC_DEFUN([AM_AUX_DIR_EXPAND], 133 [dnl Rely on autoconf to set up CDPATH properly. 134 AC_PREREQ([2.50])dnl 135 # expand $ac_aux_dir to an absolute path 136 am_aux_dir=`cd $ac_aux_dir && pwd` 126 [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl 127 # Expand $ac_aux_dir to an absolute path. 128 am_aux_dir=`cd "$ac_aux_dir" && pwd` 137 129 ]) 138 130 139 131 # AM_COND_IF -*- Autoconf -*- 140 132 141 # Copyright (C) 2008, 2010 Free Software Foundation, Inc. 142 # 143 # This file is free software; the Free Software Foundation 144 # gives unlimited permission to copy and/or distribute it, 145 # with or without modifications, as long as this notice is preserved. 146 147 # serial 3 133 # Copyright (C) 2008-2014 Free Software Foundation, Inc. 134 # 135 # This file is free software; the Free Software Foundation 136 # gives unlimited permission to copy and/or distribute it, 137 # with or without modifications, as long as this notice is preserved. 148 138 149 139 # _AM_COND_IF … … 155 145 m4_define([_AM_COND_ELSE]) 156 146 m4_define([_AM_COND_ENDIF]) 157 158 147 159 148 # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) … … 179 168 # AM_CONDITIONAL -*- Autoconf -*- 180 169 181 # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 182 # Free Software Foundation, Inc. 183 # 184 # This file is free software; the Free Software Foundation 185 # gives unlimited permission to copy and/or distribute it, 186 # with or without modifications, as long as this notice is preserved. 187 188 # serial 9 170 # Copyright (C) 1997-2014 Free Software Foundation, Inc. 171 # 172 # This file is free software; the Free Software Foundation 173 # gives unlimited permission to copy and/or distribute it, 174 # with or without modifications, as long as this notice is preserved. 189 175 190 176 # AM_CONDITIONAL(NAME, SHELL-CONDITION) … … 192 178 # Define a conditional. 193 179 AC_DEFUN([AM_CONDITIONAL], 194 [AC_PREREQ( 2.52)dnl195 ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],196 180 [AC_PREREQ([2.52])dnl 181 m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], 182 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl 197 183 AC_SUBST([$1_TRUE])dnl 198 184 AC_SUBST([$1_FALSE])dnl … … 213 199 fi])]) 214 200 215 # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 216 # 2010, 2011 Free Software Foundation, Inc. 217 # 218 # This file is free software; the Free Software Foundation 219 # gives unlimited permission to copy and/or distribute it, 220 # with or without modifications, as long as this notice is preserved. 221 222 # serial 12 223 224 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be 201 # Copyright (C) 1999-2014 Free Software Foundation, Inc. 202 # 203 # This file is free software; the Free Software Foundation 204 # gives unlimited permission to copy and/or distribute it, 205 # with or without modifications, as long as this notice is preserved. 206 207 208 # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be 225 209 # written in clear, in which case automake, when reading aclocal.m4, 226 210 # will think it sees a *use*, and therefore will trigger all it's … … 232 216 # ---------------------- 233 217 # See how the compiler implements dependency checking. 234 # NAME is "CC", "CXX", " GCJ", or "OBJC".218 # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". 235 219 # We try a few techniques and use that to set a single cache variable. 236 220 # … … 245 229 AC_REQUIRE([AM_DEP_TRACK])dnl 246 230 247 ifelse([$1], CC, [depcc="$CC" am_compiler_list=], 248 [$1], CXX, [depcc="$CXX" am_compiler_list=], 249 [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], 250 [$1], UPC, [depcc="$UPC" am_compiler_list=], 251 [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], 252 [depcc="$$1" am_compiler_list=]) 231 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], 232 [$1], [CXX], [depcc="$CXX" am_compiler_list=], 233 [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], 234 [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], 235 [$1], [UPC], [depcc="$UPC" am_compiler_list=], 236 [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], 237 [depcc="$$1" am_compiler_list=]) 253 238 254 239 AC_CACHE_CHECK([dependency style of $depcc], … … 258 243 # making bogus files that we don't know about and never remove. For 259 244 # instance it was reported that on HP-UX the gcc test will end up 260 # making a dummy file named `D' -- because `-MD' means `put the output261 # in D '.245 # making a dummy file named 'D' -- because '-MD' means "put the output 246 # in D". 262 247 rm -rf conftest.dir 263 248 mkdir conftest.dir … … 299 284 for i in 1 2 3 4 5 6; do 300 285 echo '#include "conftst'$i'.h"' >> sub/conftest.c 301 # Using `: > sub/conftst$i.h'creates only sub/conftst1.h with302 # Solaris 8's {/usr,}/bin/sh.303 touchsub/conftst$i.h286 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with 287 # Solaris 10 /bin/sh. 288 echo '/* dummy */' > sub/conftst$i.h 304 289 done 305 290 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 306 291 307 # We check with `-c' and `-o' for the sake of the "dashmstdout"292 # We check with '-c' and '-o' for the sake of the "dashmstdout" 308 293 # mode. It turns out that the SunPro C++ compiler does not properly 309 # handle `-M -o', and we need to detect this. Also, some Intel310 # versions had trouble with output in subdirs 294 # handle '-M -o', and we need to detect this. Also, some Intel 295 # versions had trouble with output in subdirs. 311 296 am__obj=sub/conftest.${OBJEXT-o} 312 297 am__minus_obj="-o $am__obj" … … 317 302 ;; 318 303 nosideeffect) 319 # after this tag, mechanisms are not by side-effect, so they'll320 # only be used when explicitly requested 304 # After this tag, mechanisms are not by side-effect, so they'll 305 # only be used when explicitly requested. 321 306 if test "x$enable_dependency_tracking" = xyes; then 322 307 continue … … 326 311 ;; 327 312 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 328 # This compiler won't grok `-c -o', but also, the minuso test has313 # This compiler won't grok '-c -o', but also, the minuso test has 329 314 # not run yet. These depmodes are late enough in the game, and 330 315 # so weak that their functioning should not be impacted. … … 374 359 # ------------- 375 360 # Choose a directory name for dependency files. 376 # This macro is AC_REQUIREd in _AM_DEPENDENCIES 361 # This macro is AC_REQUIREd in _AM_DEPENDENCIES. 377 362 AC_DEFUN([AM_SET_DEPDIR], 378 363 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl … … 384 369 # ------------ 385 370 AC_DEFUN([AM_DEP_TRACK], 386 [AC_ARG_ENABLE(dependency-tracking, 387 [ --disable-dependency-tracking speeds up one-time build 388 --enable-dependency-tracking do not reject slow dependency extractors]) 371 [AC_ARG_ENABLE([dependency-tracking], [dnl 372 AS_HELP_STRING( 373 [--enable-dependency-tracking], 374 [do not reject slow dependency extractors]) 375 AS_HELP_STRING( 376 [--disable-dependency-tracking], 377 [speeds up one-time build])]) 389 378 if test "x$enable_dependency_tracking" != xno; then 390 379 am_depcomp="$ac_aux_dir/depcomp" … … 401 390 # Generate code to set up dependency tracking. -*- Autoconf -*- 402 391 403 # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 404 # Free Software Foundation, Inc. 405 # 406 # This file is free software; the Free Software Foundation 407 # gives unlimited permission to copy and/or distribute it, 408 # with or without modifications, as long as this notice is preserved. 409 410 #serial 5 392 # Copyright (C) 1999-2014 Free Software Foundation, Inc. 393 # 394 # This file is free software; the Free Software Foundation 395 # gives unlimited permission to copy and/or distribute it, 396 # with or without modifications, as long as this notice is preserved. 397 411 398 412 399 # _AM_OUTPUT_DEPENDENCY_COMMANDS … … 414 401 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], 415 402 [{ 416 # Autoconf 2.62quotes --file arguments for eval, but not when files403 # Older Autoconf quotes --file arguments for eval, but not when files 417 404 # are listed without --file. Let's play safe and only enable the eval 418 405 # if we detect the quoting. … … 427 414 mf=`echo "$mf" | sed -e 's/:.*$//'` 428 415 # Check whether this is an Automake generated Makefile or not. 429 # We used to match only the files named `Makefile.in', but416 # We used to match only the files named 'Makefile.in', but 430 417 # some people rename them; so instead we look at the file content. 431 418 # Grep'ing the first line is not enough: some people post-process … … 439 426 fi 440 427 # Extract the definition of DEPDIR, am__include, and am__quote 441 # from the Makefile without running `make'.428 # from the Makefile without running 'make'. 442 429 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` 443 430 test -z "$DEPDIR" && continue 444 431 am__include=`sed -n 's/^am__include = //p' < "$mf"` 445 test -z " am__include" && continue432 test -z "$am__include" && continue 446 433 am__quote=`sed -n 's/^am__quote = //p' < "$mf"` 447 # When using ansi2knr, U may be empty or an underscore; expand it448 U=`sed -n 's/^U = //p' < "$mf"`449 434 # Find all dependency output files, they are included files with 450 435 # $(DEPDIR) in their names. We invoke sed twice because it is the … … 453 438 for file in `sed -n " 454 439 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ 455 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do440 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do 456 441 # Make sure the directory exists. 457 442 test -f "$dirpart/$file" && continue … … 471 456 # 472 457 # This code is only required when automatic dependency tracking 473 # is enabled. FIXME. This creates each `.P' file that we will458 # is enabled. FIXME. This creates each '.P' file that we will 474 459 # need in order to bootstrap the dependency handling code. 475 460 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], … … 481 466 # Do all the work for Automake. -*- Autoconf -*- 482 467 483 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 484 # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. 485 # 486 # This file is free software; the Free Software Foundation 487 # gives unlimited permission to copy and/or distribute it, 488 # with or without modifications, as long as this notice is preserved. 489 490 # serial 16 468 # Copyright (C) 1996-2014 Free Software Foundation, Inc. 469 # 470 # This file is free software; the Free Software Foundation 471 # gives unlimited permission to copy and/or distribute it, 472 # with or without modifications, as long as this notice is preserved. 491 473 492 474 # This macro actually does too much. Some checks are only needed if 493 475 # your package does certain things. But this isn't really a big deal. 476 477 dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. 478 m4_define([AC_PROG_CC], 479 m4_defn([AC_PROG_CC]) 480 [_AM_PROG_CC_C_O 481 ]) 494 482 495 483 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) … … 505 493 # release and drop the old call support. 506 494 AC_DEFUN([AM_INIT_AUTOMAKE], 507 [AC_PREREQ([2.6 2])dnl495 [AC_PREREQ([2.65])dnl 508 496 dnl Autoconf wants to disallow AM_ names. We explicitly allow 509 497 dnl the ones we care about. … … 534 522 dnl Distinguish between old-style and new-style calls. 535 523 m4_ifval([$2], 536 [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl 524 [AC_DIAGNOSE([obsolete], 525 [$0: two- and three-arguments forms are deprecated.]) 526 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl 537 527 AC_SUBST([PACKAGE], [$1])dnl 538 528 AC_SUBST([VERSION], [$2])], 539 529 [_AM_SET_OPTIONS([$1])dnl 540 530 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. 541 m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, 531 m4_if( 532 m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), 533 [ok:ok],, 542 534 [m4_fatal([AC_INIT should be called with package and version arguments])])dnl 543 535 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl … … 545 537 546 538 _AM_IF_OPTION([no-define],, 547 [AC_DEFINE_UNQUOTED( PACKAGE, "$PACKAGE", [Name of package])548 AC_DEFINE_UNQUOTED( VERSION, "$VERSION", [Version number of package])])dnl539 [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) 540 AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl 549 541 550 542 # Some tools Automake needs. 551 543 AC_REQUIRE([AM_SANITY_CHECK])dnl 552 544 AC_REQUIRE([AC_ARG_PROGRAM])dnl 553 AM_MISSING_PROG( ACLOCAL, aclocal-${am__api_version})554 AM_MISSING_PROG( AUTOCONF, autoconf)555 AM_MISSING_PROG( AUTOMAKE, automake-${am__api_version})556 AM_MISSING_PROG( AUTOHEADER, autoheader)557 AM_MISSING_PROG( MAKEINFO, makeinfo)545 AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) 546 AM_MISSING_PROG([AUTOCONF], [autoconf]) 547 AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) 548 AM_MISSING_PROG([AUTOHEADER], [autoheader]) 549 AM_MISSING_PROG([MAKEINFO], [makeinfo]) 558 550 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl 559 551 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl 560 AC_REQUIRE([AM_PROG_MKDIR_P])dnl 561 # We need awk for the "check" target. The system "awk" is bad on 562 # some platforms. 552 AC_REQUIRE([AC_PROG_MKDIR_P])dnl 553 # For better backward compatibility. To be removed once Automake 1.9.x 554 # dies out for good. For more background, see: 555 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> 556 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> 557 AC_SUBST([mkdir_p], ['$(MKDIR_P)']) 558 # We need awk for the "check" target (and possibly the TAP driver). The 559 # system "awk" is bad on some platforms. 563 560 AC_REQUIRE([AC_PROG_AWK])dnl 564 561 AC_REQUIRE([AC_PROG_MAKE_SET])dnl … … 569 566 _AM_IF_OPTION([no-dependencies],, 570 567 [AC_PROVIDE_IFELSE([AC_PROG_CC], 571 [_AM_DEPENDENCIES( CC)],572 [ define([AC_PROG_CC],573 defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl568 [_AM_DEPENDENCIES([CC])], 569 [m4_define([AC_PROG_CC], 570 m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl 574 571 AC_PROVIDE_IFELSE([AC_PROG_CXX], 575 [_AM_DEPENDENCIES( CXX)],576 [ define([AC_PROG_CXX],577 defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl572 [_AM_DEPENDENCIES([CXX])], 573 [m4_define([AC_PROG_CXX], 574 m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl 578 575 AC_PROVIDE_IFELSE([AC_PROG_OBJC], 579 [_AM_DEPENDENCIES(OBJC)], 580 [define([AC_PROG_OBJC], 581 defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl 582 ]) 583 _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl 584 dnl The `parallel-tests' driver may need to know about EXEEXT, so add the 585 dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro 586 dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. 576 [_AM_DEPENDENCIES([OBJC])], 577 [m4_define([AC_PROG_OBJC], 578 m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl 579 AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], 580 [_AM_DEPENDENCIES([OBJCXX])], 581 [m4_define([AC_PROG_OBJCXX], 582 m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl 583 ]) 584 AC_REQUIRE([AM_SILENT_RULES])dnl 585 dnl The testsuite driver may need to know about EXEEXT, so add the 586 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This 587 dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. 587 588 AC_CONFIG_COMMANDS_PRE(dnl 588 589 [m4_provide_if([_AM_COMPILER_EXEEXT], 589 590 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl 590 ]) 591 592 dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not 591 592 # POSIX will say in a future version that running "rm -f" with no argument 593 # is OK; and we want to be able to make that assumption in our Makefile 594 # recipes. So use an aggressive probe to check that the usage we want is 595 # actually supported "in the wild" to an acceptable degree. 596 # See automake bug#10828. 597 # To make any issue more visible, cause the running configure to be aborted 598 # by default if the 'rm' program in use doesn't match our expectations; the 599 # user can still override this though. 600 if rm -f && rm -fr && rm -rf; then : OK; else 601 cat >&2 <<'END' 602 Oops! 603 604 Your 'rm' program seems unable to run without file operands specified 605 on the command line, even when the '-f' option is present. This is contrary 606 to the behaviour of most rm programs out there, and not conforming with 607 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> 608 609 Please tell bug-automake@gnu.org about your system, including the value 610 of your $PATH and any error possibly output before this message. This 611 can help us improve future automake versions. 612 613 END 614 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then 615 echo 'Configuration will proceed anyway, since you have set the' >&2 616 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 617 echo >&2 618 else 619 cat >&2 <<'END' 620 Aborting the configuration process, to ensure you take notice of the issue. 621 622 You can download and install GNU coreutils to get an 'rm' implementation 623 that behaves properly: <http://www.gnu.org/software/coreutils/>. 624 625 If you want to complete the configuration process using your problematic 626 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM 627 to "yes", and re-run configure. 628 629 END 630 AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) 631 fi 632 fi 633 dnl The trailing newline in this macro's definition is deliberate, for 634 dnl backward compatibility and to allow trailing 'dnl'-style comments 635 dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. 636 ]) 637 638 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not 593 639 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further 594 640 dnl mangled by Autoconf and run in a shell conditional statement. 595 641 m4_define([_AC_COMPILER_EXEEXT], 596 642 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) 597 598 643 599 644 # When config.status generates a header, we must update the stamp-h file. … … 618 663 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) 619 664 620 # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, 621 # Inc. 622 # 623 # This file is free software; the Free Software Foundation 624 # gives unlimited permission to copy and/or distribute it, 625 # with or without modifications, as long as this notice is preserved. 626 627 # serial 1 665 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 666 # 667 # This file is free software; the Free Software Foundation 668 # gives unlimited permission to copy and/or distribute it, 669 # with or without modifications, as long as this notice is preserved. 628 670 629 671 # AM_PROG_INSTALL_SH … … 632 674 AC_DEFUN([AM_PROG_INSTALL_SH], 633 675 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 634 if test x"${install_sh }" != xset; then676 if test x"${install_sh+set}" != xset; then 635 677 case $am_aux_dir in 636 678 *\ * | *\ *) … … 640 682 esac 641 683 fi 642 AC_SUBST(install_sh)]) 643 644 # Copyright (C) 2003, 2005 Free Software Foundation, Inc. 645 # 646 # This file is free software; the Free Software Foundation 647 # gives unlimited permission to copy and/or distribute it, 648 # with or without modifications, as long as this notice is preserved. 649 650 # serial 2 684 AC_SUBST([install_sh])]) 685 686 # Copyright (C) 2003-2014 Free Software Foundation, Inc. 687 # 688 # This file is free software; the Free Software Foundation 689 # gives unlimited permission to copy and/or distribute it, 690 # with or without modifications, as long as this notice is preserved. 651 691 652 692 # Check whether the underlying file-system supports filenames … … 666 706 # From Jim Meyering 667 707 668 # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 669 # 2011 Free Software Foundation, Inc. 670 # 671 # This file is free software; the Free Software Foundation 672 # gives unlimited permission to copy and/or distribute it, 673 # with or without modifications, as long as this notice is preserved. 674 675 # serial 5 708 # Copyright (C) 1996-2014 Free Software Foundation, Inc. 709 # 710 # This file is free software; the Free Software Foundation 711 # gives unlimited permission to copy and/or distribute it, 712 # with or without modifications, as long as this notice is preserved. 676 713 677 714 # AM_MAINTAINER_MODE([DEFAULT-MODE]) 678 715 # ---------------------------------- 679 716 # Control maintainer-specific portions of Makefiles. 680 # Default is to disable them, unless `enable' is passed literally.681 # For symmetry, `disable' may be passed as well. Anyway, the user717 # Default is to disable them, unless 'enable' is passed literally. 718 # For symmetry, 'disable' may be passed as well. Anyway, the user 682 719 # can override the default with the --enable/--disable switch. 683 720 AC_DEFUN([AM_MAINTAINER_MODE], … … 690 727 dnl maintainer-mode's default is 'disable' unless 'enable' is passed 691 728 AC_ARG_ENABLE([maintainer-mode], 692 [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful 693 (and sometimes confusing) to the casual installer], 694 [USE_MAINTAINER_MODE=$enableval], 695 [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) 729 [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], 730 am_maintainer_other[ make rules and dependencies not useful 731 (and sometimes confusing) to the casual installer])], 732 [USE_MAINTAINER_MODE=$enableval], 733 [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) 696 734 AC_MSG_RESULT([$USE_MAINTAINER_MODE]) 697 735 AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) … … 701 739 ) 702 740 703 AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])704 705 741 # Check to see how 'make' treats includes. -*- Autoconf -*- 706 742 707 # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. 708 # 709 # This file is free software; the Free Software Foundation 710 # gives unlimited permission to copy and/or distribute it, 711 # with or without modifications, as long as this notice is preserved. 712 713 # serial 4 743 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 744 # 745 # This file is free software; the Free Software Foundation 746 # gives unlimited permission to copy and/or distribute it, 747 # with or without modifications, as long as this notice is preserved. 714 748 715 749 # AM_MAKE_INCLUDE() … … 730 764 # First try GNU make style include. 731 765 echo "include confinc" > confmf 732 # Ignore all kinds of additional output from `make'.766 # Ignore all kinds of additional output from 'make'. 733 767 case `$am_make -s -f confmf 2> /dev/null` in #( 734 768 *the\ am__doit\ target*) … … 755 789 ]) 756 790 757 # Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008758 # Free Software Foundation, Inc.759 #760 # This file is free software; the Free Software Foundation761 # gives unlimited permission to copy and/or distribute it,762 # with or without modifications, as long as this notice is preserved.763 764 # serial 6765 766 # AM_PROG_CC_C_O767 # --------------768 # Like AC_PROG_CC_C_O, but changed for automake.769 AC_DEFUN([AM_PROG_CC_C_O],770 [AC_REQUIRE([AC_PROG_CC_C_O])dnl771 AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl772 AC_REQUIRE_AUX_FILE([compile])dnl773 # FIXME: we rely on the cache variable name because774 # there is no other way.775 set dummy $CC776 am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`777 eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o778 if test "$am_t" != yes; then779 # Losing compiler, so override with the script.780 # FIXME: It is wrong to rewrite CC.781 # But if we don't then we get into trouble of one sort or another.782 # A longer-term fix would be to have automake use am__CC in this case,783 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"784 CC="$am_aux_dir/compile $CC"785 fi786 dnl Make sure AC_PROG_CC is never called again, or it will override our787 dnl setting of CC.788 m4_define([AC_PROG_CC],789 [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])790 ])791 792 791 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- 793 792 794 # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 795 # Free Software Foundation, Inc. 796 # 797 # This file is free software; the Free Software Foundation 798 # gives unlimited permission to copy and/or distribute it, 799 # with or without modifications, as long as this notice is preserved. 800 801 # serial 6 793 # Copyright (C) 1997-2014 Free Software Foundation, Inc. 794 # 795 # This file is free software; the Free Software Foundation 796 # gives unlimited permission to copy and/or distribute it, 797 # with or without modifications, as long as this notice is preserved. 802 798 803 799 # AM_MISSING_PROG(NAME, PROGRAM) … … 808 804 AC_SUBST($1)]) 809 805 810 811 806 # AM_MISSING_HAS_RUN 812 807 # ------------------ 813 # Define MISSING if not defined so far and test if it supports --run.814 # If it does, set am_missing_run to use it, otherwise, to nothing.808 # Define MISSING if not defined so far and test if it is modern enough. 809 # If it is, set am_missing_run to use it, otherwise, to nothing. 815 810 AC_DEFUN([AM_MISSING_HAS_RUN], 816 811 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl … … 825 820 fi 826 821 # Use eval to expand $SHELL 827 if eval "$MISSING -- run true"; then828 am_missing_run="$MISSING --run"822 if eval "$MISSING --is-lightweight"; then 823 am_missing_run="$MISSING " 829 824 else 830 825 am_missing_run= 831 AC_MSG_WARN([`missing' script is too old or missing]) 832 fi 833 ]) 834 835 # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, 836 # Inc. 837 # 838 # This file is free software; the Free Software Foundation 839 # gives unlimited permission to copy and/or distribute it, 840 # with or without modifications, as long as this notice is preserved. 841 842 # serial 1 843 844 # AM_PROG_MKDIR_P 845 # --------------- 846 # Check for `mkdir -p'. 847 AC_DEFUN([AM_PROG_MKDIR_P], 848 [AC_PREREQ([2.60])dnl 849 AC_REQUIRE([AC_PROG_MKDIR_P])dnl 850 dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, 851 dnl while keeping a definition of mkdir_p for backward compatibility. 852 dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. 853 dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of 854 dnl Makefile.ins that do not define MKDIR_P, so we do our own 855 dnl adjustment using top_builddir (which is defined more often than 856 dnl MKDIR_P). 857 AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl 858 case $mkdir_p in 859 [[\\/$]]* | ?:[[\\/]]*) ;; 860 */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; 861 esac 826 AC_MSG_WARN(['missing' script is too old or missing]) 827 fi 862 828 ]) 863 829 864 830 # Helper functions for option handling. -*- Autoconf -*- 865 831 866 # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software 867 # Foundation, Inc. 868 # 869 # This file is free software; the Free Software Foundation 870 # gives unlimited permission to copy and/or distribute it, 871 # with or without modifications, as long as this notice is preserved. 872 873 # serial 5 832 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 833 # 834 # This file is free software; the Free Software Foundation 835 # gives unlimited permission to copy and/or distribute it, 836 # with or without modifications, as long as this notice is preserved. 874 837 875 838 # _AM_MANGLE_OPTION(NAME) … … 882 845 # Set option NAME. Presently that only means defining a flag for this option. 883 846 AC_DEFUN([_AM_SET_OPTION], 884 [m4_define(_AM_MANGLE_OPTION([$1]), 1)])847 [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) 885 848 886 849 # _AM_SET_OPTIONS(OPTIONS) … … 896 859 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) 897 860 861 # Copyright (C) 1999-2014 Free Software Foundation, Inc. 862 # 863 # This file is free software; the Free Software Foundation 864 # gives unlimited permission to copy and/or distribute it, 865 # with or without modifications, as long as this notice is preserved. 866 867 # _AM_PROG_CC_C_O 868 # --------------- 869 # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC 870 # to automatically call this. 871 AC_DEFUN([_AM_PROG_CC_C_O], 872 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 873 AC_REQUIRE_AUX_FILE([compile])dnl 874 AC_LANG_PUSH([C])dnl 875 AC_CACHE_CHECK( 876 [whether $CC understands -c and -o together], 877 [am_cv_prog_cc_c_o], 878 [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) 879 # Make sure it works both with $CC and with simple cc. 880 # Following AC_PROG_CC_C_O, we do the test twice because some 881 # compilers refuse to overwrite an existing .o file with -o, 882 # though they will create one. 883 am_cv_prog_cc_c_o=yes 884 for am_i in 1 2; do 885 if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ 886 && test -f conftest2.$ac_objext; then 887 : OK 888 else 889 am_cv_prog_cc_c_o=no 890 break 891 fi 892 done 893 rm -f core conftest* 894 unset am_i]) 895 if test "$am_cv_prog_cc_c_o" != yes; then 896 # Losing compiler, so override with the script. 897 # FIXME: It is wrong to rewrite CC. 898 # But if we don't then we get into trouble of one sort or another. 899 # A longer-term fix would be to have automake use am__CC in this case, 900 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" 901 CC="$am_aux_dir/compile $CC" 902 fi 903 AC_LANG_POP([C])]) 904 905 # For backward compatibility. 906 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) 907 908 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 909 # 910 # This file is free software; the Free Software Foundation 911 # gives unlimited permission to copy and/or distribute it, 912 # with or without modifications, as long as this notice is preserved. 913 914 # AM_RUN_LOG(COMMAND) 915 # ------------------- 916 # Run COMMAND, save the exit status in ac_status, and log it. 917 # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) 918 AC_DEFUN([AM_RUN_LOG], 919 [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD 920 ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD 921 ac_status=$? 922 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD 923 (exit $ac_status); }]) 924 898 925 # Check to make sure that the build environment is sane. -*- Autoconf -*- 899 926 900 # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 901 # Free Software Foundation, Inc. 902 # 903 # This file is free software; the Free Software Foundation 904 # gives unlimited permission to copy and/or distribute it, 905 # with or without modifications, as long as this notice is preserved. 906 907 # serial 5 927 # Copyright (C) 1996-2014 Free Software Foundation, Inc. 928 # 929 # This file is free software; the Free Software Foundation 930 # gives unlimited permission to copy and/or distribute it, 931 # with or without modifications, as long as this notice is preserved. 908 932 909 933 # AM_SANITY_CHECK … … 911 935 AC_DEFUN([AM_SANITY_CHECK], 912 936 [AC_MSG_CHECKING([whether build environment is sane]) 913 # Just in case914 sleep 1915 echo timestamp > conftest.file916 937 # Reject unsafe characters in $srcdir or the absolute working directory 917 938 # name. Accept space and tab only in the latter. … … 924 945 case $srcdir in 925 946 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) 926 AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;947 AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; 927 948 esac 928 949 929 # Do `set' in a subshell so we don't clobber the current shell's950 # Do 'set' in a subshell so we don't clobber the current shell's 930 951 # arguments. Must try -L first in case configure is actually a 931 952 # symlink; some systems play weird games with the mod time of symlinks … … 933 954 # directory). 934 955 if ( 935 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` 936 if test "$[*]" = "X"; then 937 # -L didn't work. 938 set X `ls -t "$srcdir/configure" conftest.file` 939 fi 940 rm -f conftest.file 941 if test "$[*]" != "X $srcdir/configure conftest.file" \ 942 && test "$[*]" != "X conftest.file $srcdir/configure"; then 943 944 # If neither matched, then we have a broken ls. This can happen 945 # if, for instance, CONFIG_SHELL is bash and it inherits a 946 # broken ls alias from the environment. This has actually 947 # happened. Such a system could not be considered "sane". 948 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken 949 alias in your environment]) 950 fi 951 956 am_has_slept=no 957 for am_try in 1 2; do 958 echo "timestamp, slept: $am_has_slept" > conftest.file 959 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` 960 if test "$[*]" = "X"; then 961 # -L didn't work. 962 set X `ls -t "$srcdir/configure" conftest.file` 963 fi 964 if test "$[*]" != "X $srcdir/configure conftest.file" \ 965 && test "$[*]" != "X conftest.file $srcdir/configure"; then 966 967 # If neither matched, then we have a broken ls. This can happen 968 # if, for instance, CONFIG_SHELL is bash and it inherits a 969 # broken ls alias from the environment. This has actually 970 # happened. Such a system could not be considered "sane". 971 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken 972 alias in your environment]) 973 fi 974 if test "$[2]" = conftest.file || test $am_try -eq 2; then 975 break 976 fi 977 # Just in case. 978 sleep 1 979 am_has_slept=yes 980 done 952 981 test "$[2]" = conftest.file 953 982 ) … … 959 988 Check your system clock]) 960 989 fi 961 AC_MSG_RESULT(yes)]) 962 963 # Copyright (C) 2009, 2011 Free Software Foundation, Inc. 964 # 965 # This file is free software; the Free Software Foundation 966 # gives unlimited permission to copy and/or distribute it, 967 # with or without modifications, as long as this notice is preserved. 968 969 # serial 2 990 AC_MSG_RESULT([yes]) 991 # If we didn't sleep, we still need to ensure time stamps of config.status and 992 # generated files are strictly newer. 993 am_sleep_pid= 994 if grep 'slept: no' conftest.file >/dev/null 2>&1; then 995 ( sleep 1 ) & 996 am_sleep_pid=$! 997 fi 998 AC_CONFIG_COMMANDS_PRE( 999 [AC_MSG_CHECKING([that generated files are newer than configure]) 1000 if test -n "$am_sleep_pid"; then 1001 # Hide warnings about reused PIDs. 1002 wait $am_sleep_pid 2>/dev/null 1003 fi 1004 AC_MSG_RESULT([done])]) 1005 rm -f conftest.file 1006 ]) 1007 1008 # Copyright (C) 2009-2014 Free Software Foundation, Inc. 1009 # 1010 # This file is free software; the Free Software Foundation 1011 # gives unlimited permission to copy and/or distribute it, 1012 # with or without modifications, as long as this notice is preserved. 970 1013 971 1014 # AM_SILENT_RULES([DEFAULT]) 972 1015 # -------------------------- 973 1016 # Enable less verbose build rules; with the default set to DEFAULT 974 # ( `yes' being less verbose, `no'or empty being verbose).1017 # ("yes" being less verbose, "no" or empty being verbose). 975 1018 AC_DEFUN([AM_SILENT_RULES], 976 [AC_ARG_ENABLE([silent-rules], 977 [ --enable-silent-rules less verbose build output (undo: `make V=1') 978 --disable-silent-rules verbose build output (undo: `make V=0')]) 979 case $enable_silent_rules in 980 yes) AM_DEFAULT_VERBOSITY=0;; 981 no) AM_DEFAULT_VERBOSITY=1;; 982 *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; 1019 [AC_ARG_ENABLE([silent-rules], [dnl 1020 AS_HELP_STRING( 1021 [--enable-silent-rules], 1022 [less verbose build output (undo: "make V=1")]) 1023 AS_HELP_STRING( 1024 [--disable-silent-rules], 1025 [verbose build output (undo: "make V=0")])dnl 1026 ]) 1027 case $enable_silent_rules in @%:@ ((( 1028 yes) AM_DEFAULT_VERBOSITY=0;; 1029 no) AM_DEFAULT_VERBOSITY=1;; 1030 *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; 983 1031 esac 984 1032 dnl 985 dnl A few `make' implementations (e.g., NonStop OS and NextStep)1033 dnl A few 'make' implementations (e.g., NonStop OS and NextStep) 986 1034 dnl do not support nested variable expansions. 987 1035 dnl See automake bug#9928 and bug#10237. … … 1001 1049 fi]) 1002 1050 if test $am_cv_make_support_nested_variables = yes; then 1003 dnl Using `$V' instead of `$(V)' breaks IRIX make.1051 dnl Using '$V' instead of '$(V)' breaks IRIX make. 1004 1052 AM_V='$(V)' 1005 1053 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' … … 1018 1066 ]) 1019 1067 1020 # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. 1021 # 1022 # This file is free software; the Free Software Foundation 1023 # gives unlimited permission to copy and/or distribute it, 1024 # with or without modifications, as long as this notice is preserved. 1025 1026 # serial 1 1068 # Copyright (C) 2001-2014 Free Software Foundation, Inc. 1069 # 1070 # This file is free software; the Free Software Foundation 1071 # gives unlimited permission to copy and/or distribute it, 1072 # with or without modifications, as long as this notice is preserved. 1027 1073 1028 1074 # AM_PROG_INSTALL_STRIP 1029 1075 # --------------------- 1030 # One issue with vendor `install' (even GNU) is that you can't1076 # One issue with vendor 'install' (even GNU) is that you can't 1031 1077 # specify the program used to strip binaries. This is especially 1032 1078 # annoying in cross-compiling environments, where the build's strip 1033 1079 # is unlikely to handle the host's binaries. 1034 1080 # Fortunately install-sh will honor a STRIPPROG variable, so we 1035 # always use install-sh in `make install-strip', and initialize1081 # always use install-sh in "make install-strip", and initialize 1036 1082 # STRIPPROG with the value of the STRIP variable (set by the user). 1037 1083 AC_DEFUN([AM_PROG_INSTALL_STRIP], 1038 1084 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl 1039 # Installed binaries are usually stripped using `strip' when the user1040 # run `make install-strip'. However `strip' might not be the right1085 # Installed binaries are usually stripped using 'strip' when the user 1086 # run "make install-strip". However 'strip' might not be the right 1041 1087 # tool to use in cross-compilation environments, therefore Automake 1042 # will honor the `STRIP' environment variable to overrule this program.1043 dnl Don't test for $cross_compiling = yes, because it might be `maybe'.1088 # will honor the 'STRIP' environment variable to overrule this program. 1089 dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. 1044 1090 if test "$cross_compiling" != no; then 1045 1091 AC_CHECK_TOOL([STRIP], [strip], :) … … 1048 1094 AC_SUBST([INSTALL_STRIP_PROGRAM])]) 1049 1095 1050 # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. 1051 # 1052 # This file is free software; the Free Software Foundation 1053 # gives unlimited permission to copy and/or distribute it, 1054 # with or without modifications, as long as this notice is preserved. 1055 1056 # serial 3 1096 # Copyright (C) 2006-2014 Free Software Foundation, Inc. 1097 # 1098 # This file is free software; the Free Software Foundation 1099 # gives unlimited permission to copy and/or distribute it, 1100 # with or without modifications, as long as this notice is preserved. 1057 1101 1058 1102 # _AM_SUBST_NOTMAKE(VARIABLE) … … 1069 1113 # Check how to create a tarball. -*- Autoconf -*- 1070 1114 1071 # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. 1072 # 1073 # This file is free software; the Free Software Foundation 1074 # gives unlimited permission to copy and/or distribute it, 1075 # with or without modifications, as long as this notice is preserved. 1076 1077 # serial 2 1115 # Copyright (C) 2004-2014 Free Software Foundation, Inc. 1116 # 1117 # This file is free software; the Free Software Foundation 1118 # gives unlimited permission to copy and/or distribute it, 1119 # with or without modifications, as long as this notice is preserved. 1078 1120 1079 1121 # _AM_PROG_TAR(FORMAT) 1080 1122 # -------------------- 1081 1123 # Check how to create a tarball in format FORMAT. 1082 # FORMAT should be one of `v7', `ustar', or `pax'.1124 # FORMAT should be one of 'v7', 'ustar', or 'pax'. 1083 1125 # 1084 1126 # Substitute a variable $(am__tar) that is a command … … 1090 1132 # a tarball read from stdin. 1091 1133 # $(am__untar) < result.tar 1134 # 1092 1135 AC_DEFUN([_AM_PROG_TAR], 1093 1136 [# Always define AMTAR for backward compatibility. Yes, it's still used 1094 1137 # in the wild :-( We should find a proper way to deprecate it ... 1095 1138 AC_SUBST([AMTAR], ['$${TAR-tar}']) 1139 1140 # We'll loop over all known methods to create a tar archive until one works. 1141 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' 1142 1096 1143 m4_if([$1], [v7], 1097 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], 1098 [m4_case([$1], [ustar],, [pax],, 1099 [m4_fatal([Unknown tar format])]) 1100 AC_MSG_CHECKING([how to create a $1 tar archive]) 1101 # Loop over all known methods to create a tar archive until one works. 1102 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' 1103 _am_tools=${am_cv_prog_tar_$1-$_am_tools} 1104 # Do not fold the above two line into one, because Tru64 sh and 1105 # Solaris sh will not grok spaces in the rhs of `-'. 1106 for _am_tool in $_am_tools 1107 do 1108 case $_am_tool in 1109 gnutar) 1110 for _am_tar in tar gnutar gtar; 1111 do 1112 AM_RUN_LOG([$_am_tar --version]) && break 1113 done 1114 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' 1115 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' 1116 am__untar="$_am_tar -xf -" 1117 ;; 1118 plaintar) 1119 # Must skip GNU tar: if it does not support --format= it doesn't create 1120 # ustar tarball either. 1121 (tar --version) >/dev/null 2>&1 && continue 1122 am__tar='tar chf - "$$tardir"' 1123 am__tar_='tar chf - "$tardir"' 1124 am__untar='tar xf -' 1125 ;; 1126 pax) 1127 am__tar='pax -L -x $1 -w "$$tardir"' 1128 am__tar_='pax -L -x $1 -w "$tardir"' 1129 am__untar='pax -r' 1130 ;; 1131 cpio) 1132 am__tar='find "$$tardir" -print | cpio -o -H $1 -L' 1133 am__tar_='find "$tardir" -print | cpio -o -H $1 -L' 1134 am__untar='cpio -i -H $1 -d' 1135 ;; 1136 none) 1137 am__tar=false 1138 am__tar_=false 1139 am__untar=false 1140 ;; 1141 esac 1142 1143 # If the value was cached, stop now. We just wanted to have am__tar 1144 # and am__untar set. 1145 test -n "${am_cv_prog_tar_$1}" && break 1146 1147 # tar/untar a dummy directory, and stop if the command works 1144 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], 1145 1146 [m4_case([$1], 1147 [ustar], 1148 [# The POSIX 1988 'ustar' format is defined with fixed-size fields. 1149 # There is notably a 21 bits limit for the UID and the GID. In fact, 1150 # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 1151 # and bug#13588). 1152 am_max_uid=2097151 # 2^21 - 1 1153 am_max_gid=$am_max_uid 1154 # The $UID and $GID variables are not portable, so we need to resort 1155 # to the POSIX-mandated id(1) utility. Errors in the 'id' calls 1156 # below are definitely unexpected, so allow the users to see them 1157 # (that is, avoid stderr redirection). 1158 am_uid=`id -u || echo unknown` 1159 am_gid=`id -g || echo unknown` 1160 AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) 1161 if test $am_uid -le $am_max_uid; then 1162 AC_MSG_RESULT([yes]) 1163 else 1164 AC_MSG_RESULT([no]) 1165 _am_tools=none 1166 fi 1167 AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) 1168 if test $am_gid -le $am_max_gid; then 1169 AC_MSG_RESULT([yes]) 1170 else 1171 AC_MSG_RESULT([no]) 1172 _am_tools=none 1173 fi], 1174 1175 [pax], 1176 [], 1177 1178 [m4_fatal([Unknown tar format])]) 1179 1180 AC_MSG_CHECKING([how to create a $1 tar archive]) 1181 1182 # Go ahead even if we have the value already cached. We do so because we 1183 # need to set the values for the 'am__tar' and 'am__untar' variables. 1184 _am_tools=${am_cv_prog_tar_$1-$_am_tools} 1185 1186 for _am_tool in $_am_tools; do 1187 case $_am_tool in 1188 gnutar) 1189 for _am_tar in tar gnutar gtar; do 1190 AM_RUN_LOG([$_am_tar --version]) && break 1191 done 1192 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' 1193 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' 1194 am__untar="$_am_tar -xf -" 1195 ;; 1196 plaintar) 1197 # Must skip GNU tar: if it does not support --format= it doesn't create 1198 # ustar tarball either. 1199 (tar --version) >/dev/null 2>&1 && continue 1200 am__tar='tar chf - "$$tardir"' 1201 am__tar_='tar chf - "$tardir"' 1202 am__untar='tar xf -' 1203 ;; 1204 pax) 1205 am__tar='pax -L -x $1 -w "$$tardir"' 1206 am__tar_='pax -L -x $1 -w "$tardir"' 1207 am__untar='pax -r' 1208 ;; 1209 cpio) 1210 am__tar='find "$$tardir" -print | cpio -o -H $1 -L' 1211 am__tar_='find "$tardir" -print | cpio -o -H $1 -L' 1212 am__untar='cpio -i -H $1 -d' 1213 ;; 1214 none) 1215 am__tar=false 1216 am__tar_=false 1217 am__untar=false 1218 ;; 1219 esac 1220 1221 # If the value was cached, stop now. We just wanted to have am__tar 1222 # and am__untar set. 1223 test -n "${am_cv_prog_tar_$1}" && break 1224 1225 # tar/untar a dummy directory, and stop if the command works. 1226 rm -rf conftest.dir 1227 mkdir conftest.dir 1228 echo GrepMe > conftest.dir/file 1229 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) 1230 rm -rf conftest.dir 1231 if test -s conftest.tar; then 1232 AM_RUN_LOG([$am__untar <conftest.tar]) 1233 AM_RUN_LOG([cat conftest.dir/file]) 1234 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break 1235 fi 1236 done 1148 1237 rm -rf conftest.dir 1149 mkdir conftest.dir 1150 echo GrepMe > conftest.dir/file 1151 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) 1152 rm -rf conftest.dir 1153 if test -s conftest.tar; then 1154 AM_RUN_LOG([$am__untar <conftest.tar]) 1155 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break 1156 fi 1157 done 1158 rm -rf conftest.dir 1159 1160 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) 1161 AC_MSG_RESULT([$am_cv_prog_tar_$1])]) 1238 1239 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) 1240 AC_MSG_RESULT([$am_cv_prog_tar_$1])]) 1241 1162 1242 AC_SUBST([am__tar]) 1163 1243 AC_SUBST([am__untar]) -
TabularUnified automake/config.guess ¶
rb1e63ac5 r208e5be 1 /usr/share/automake-1.1 1/config.guess1 /usr/share/automake-1.15/config.guess -
TabularUnified automake/config.sub ¶
rb1e63ac5 r208e5be 1 /usr/share/automake-1.1 1/config.sub1 /usr/share/automake-1.15/config.sub -
TabularUnified automake/missing ¶
rb1e63ac5 r208e5be 1 1 #! /bin/sh 2 # Common stub for a few missing GNU programs while installing. 3 4 scriptversion=2012-01-06.13; # UTC 5 6 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 7 # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. 8 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 2 # Common wrapper for a few potentially missing GNU programs. 3 4 scriptversion=2013-10-28.13; # UTC 5 6 # Copyright (C) 1996-2014 Free Software Foundation, Inc. 7 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 9 8 10 9 # This program is free software; you can redistribute it and/or modify … … 27 26 28 27 if test $# -eq 0; then 29 echo 1>&2 "Try \`$0 --help' for more information"28 echo 1>&2 "Try '$0 --help' for more information" 30 29 exit 1 31 30 fi 32 31 33 run=:34 sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'35 sed_minuso='s/.* -o \([^ ]*\).*/\1/p'36 37 # In the cases where this matters, `missing' is being run in the38 # srcdir already.39 if test -f configure.ac; then40 configure_ac=configure.ac41 else42 configure_ac=configure.in43 fi44 45 msg="missing on your system"46 47 32 case $1 in 48 --run) 49 # Try to run requested program, and just exit if it succeeds. 50 run= 51 shift 52 "$@" && exit 0 53 # Exit code 63 means version mismatch. This often happens 54 # when the user try to use an ancient version of a tool on 55 # a file that requires a minimum version. In this case we 56 # we should proceed has if the program had been absent, or 57 # if --run hadn't been passed. 58 if test $? = 63; then 59 run=: 60 msg="probably too old" 61 fi 62 ;; 33 34 --is-lightweight) 35 # Used by our autoconf macros to check whether the available missing 36 # script is modern enough. 37 exit 0 38 ;; 39 40 --run) 41 # Back-compat with the calling convention used by older automake. 42 shift 43 ;; 63 44 64 45 -h|--h|--he|--hel|--help) … … 66 47 $0 [OPTION]... PROGRAM [ARGUMENT]... 67 48 68 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an 69 error status if there is no known handling for PROGRAM.49 Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due 50 to PROGRAM being missing or too old. 70 51 71 52 Options: 72 53 -h, --help display this help and exit 73 54 -v, --version output version information and exit 74 --run try to run the given command, and emulate it if it fails75 55 76 56 Supported PROGRAM values: 77 aclocal touch file \`aclocal.m4' 78 autoconf touch file \`configure' 79 autoheader touch file \`config.h.in' 80 autom4te touch the output file, or create a stub one 81 automake touch all \`Makefile.in' files 82 bison create \`y.tab.[ch]', if possible, from existing .[ch] 83 flex create \`lex.yy.c', if possible, from existing .c 84 help2man touch the output file 85 lex create \`lex.yy.c', if possible, from existing .c 86 makeinfo touch the output file 87 yacc create \`y.tab.[ch]', if possible, from existing .[ch] 88 89 Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and 90 \`g' are ignored when checking the name. 57 aclocal autoconf autoheader autom4te automake makeinfo 58 bison yacc flex lex help2man 59 60 Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 61 'g' are ignored when checking the name. 91 62 92 63 Send bug reports to <bug-automake@gnu.org>." … … 100 71 101 72 -*) 102 echo 1>&2 "$0: Unknown \`$1' option"103 echo 1>&2 "Try \`$0 --help' for more information"73 echo 1>&2 "$0: unknown '$1' option" 74 echo 1>&2 "Try '$0 --help' for more information" 104 75 exit 1 105 76 ;; … … 107 78 esac 108 79 109 # normalize program name to check for. 110 program=`echo "$1" | sed ' 111 s/^gnu-//; t 112 s/^gnu//; t 113 s/^g//; t'` 114 115 # Now exit if we have it, but it failed. Also exit now if we 116 # don't have it and --version was passed (most likely to detect 117 # the program). This is about non-GNU programs, so use $1 not 118 # $program. 119 case $1 in 120 lex*|yacc*) 121 # Not GNU programs, they don't have --version. 122 ;; 123 124 *) 125 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 126 # We have it, but it failed. 127 exit 1 128 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 129 # Could not run --version or --help. This is probably someone 130 # running `$TOOL --version' or `$TOOL --help' to check whether 131 # $TOOL exists and not knowing $TOOL uses missing. 132 exit 1 133 fi 134 ;; 135 esac 136 137 # If it does not exist, or fails to run (possibly an outdated version), 138 # try to emulate it. 139 case $program in 140 aclocal*) 141 echo 1>&2 "\ 142 WARNING: \`$1' is $msg. You should only need it if 143 you modified \`acinclude.m4' or \`${configure_ac}'. You might want 144 to install the \`Automake' and \`Perl' packages. Grab them from 145 any GNU archive site." 146 touch aclocal.m4 147 ;; 148 149 autoconf*) 150 echo 1>&2 "\ 151 WARNING: \`$1' is $msg. You should only need it if 152 you modified \`${configure_ac}'. You might want to install the 153 \`Autoconf' and \`GNU m4' packages. Grab them from any GNU 154 archive site." 155 touch configure 156 ;; 157 158 autoheader*) 159 echo 1>&2 "\ 160 WARNING: \`$1' is $msg. You should only need it if 161 you modified \`acconfig.h' or \`${configure_ac}'. You might want 162 to install the \`Autoconf' and \`GNU m4' packages. Grab them 163 from any GNU archive site." 164 files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` 165 test -z "$files" && files="config.h" 166 touch_files= 167 for f in $files; do 168 case $f in 169 *:*) touch_files="$touch_files "`echo "$f" | 170 sed -e 's/^[^:]*://' -e 's/:.*//'`;; 171 *) touch_files="$touch_files $f.in";; 172 esac 173 done 174 touch $touch_files 175 ;; 176 177 automake*) 178 echo 1>&2 "\ 179 WARNING: \`$1' is $msg. You should only need it if 180 you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 181 You might want to install the \`Automake' and \`Perl' packages. 182 Grab them from any GNU archive site." 183 find . -type f -name Makefile.am -print | 184 sed 's/\.am$/.in/' | 185 while read f; do touch "$f"; done 186 ;; 187 188 autom4te*) 189 echo 1>&2 "\ 190 WARNING: \`$1' is needed, but is $msg. 191 You might have modified some files without having the 192 proper tools for further handling them. 193 You can get \`$1' as part of \`Autoconf' from any GNU 194 archive site." 195 196 file=`echo "$*" | sed -n "$sed_output"` 197 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 198 if test -f "$file"; then 199 touch $file 200 else 201 test -z "$file" || exec >$file 202 echo "#! /bin/sh" 203 echo "# Created by GNU Automake missing as a replacement of" 204 echo "# $ $@" 205 echo "exit 0" 206 chmod +x $file 207 exit 1 208 fi 209 ;; 210 211 bison*|yacc*) 212 echo 1>&2 "\ 213 WARNING: \`$1' $msg. You should only need it if 214 you modified a \`.y' file. You may need the \`Bison' package 215 in order for those modifications to take effect. You can get 216 \`Bison' from any GNU archive site." 217 rm -f y.tab.c y.tab.h 218 if test $# -ne 1; then 219 eval LASTARG=\${$#} 220 case $LASTARG in 221 *.y) 222 SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` 223 if test -f "$SRCFILE"; then 224 cp "$SRCFILE" y.tab.c 225 fi 226 SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` 227 if test -f "$SRCFILE"; then 228 cp "$SRCFILE" y.tab.h 229 fi 230 ;; 231 esac 232 fi 233 if test ! -f y.tab.h; then 234 echo >y.tab.h 235 fi 236 if test ! -f y.tab.c; then 237 echo 'main() { return 0; }' >y.tab.c 238 fi 239 ;; 240 241 lex*|flex*) 242 echo 1>&2 "\ 243 WARNING: \`$1' is $msg. You should only need it if 244 you modified a \`.l' file. You may need the \`Flex' package 245 in order for those modifications to take effect. You can get 246 \`Flex' from any GNU archive site." 247 rm -f lex.yy.c 248 if test $# -ne 1; then 249 eval LASTARG=\${$#} 250 case $LASTARG in 251 *.l) 252 SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` 253 if test -f "$SRCFILE"; then 254 cp "$SRCFILE" lex.yy.c 255 fi 256 ;; 257 esac 258 fi 259 if test ! -f lex.yy.c; then 260 echo 'main() { return 0; }' >lex.yy.c 261 fi 262 ;; 263 264 help2man*) 265 echo 1>&2 "\ 266 WARNING: \`$1' is $msg. You should only need it if 267 you modified a dependency of a manual page. You may need the 268 \`Help2man' package in order for those modifications to take 269 effect. You can get \`Help2man' from any GNU archive site." 270 271 file=`echo "$*" | sed -n "$sed_output"` 272 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 273 if test -f "$file"; then 274 touch $file 275 else 276 test -z "$file" || exec >$file 277 echo ".ab help2man is required to generate this page" 278 exit $? 279 fi 280 ;; 281 282 makeinfo*) 283 echo 1>&2 "\ 284 WARNING: \`$1' is $msg. You should only need it if 285 you modified a \`.texi' or \`.texinfo' file, or any other file 286 indirectly affecting the aspect of the manual. The spurious 287 call might also be the consequence of using a buggy \`make' (AIX, 288 DU, IRIX). You might want to install the \`Texinfo' package or 289 the \`GNU make' package. Grab either from any GNU archive site." 290 # The file to touch is that specified with -o ... 291 file=`echo "$*" | sed -n "$sed_output"` 292 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 293 if test -z "$file"; then 294 # ... or it is the one specified with @setfilename ... 295 infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` 296 file=`sed -n ' 297 /^@setfilename/{ 298 s/.* \([^ ]*\) *$/\1/ 299 p 300 q 301 }' $infile` 302 # ... or it is derived from the source name (dir/f.texi becomes f.info) 303 test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info 304 fi 305 # If the file does not exist, the user really needs makeinfo; 306 # let's fail without touching anything. 307 test -f $file || exit 1 308 touch $file 309 ;; 310 311 *) 312 echo 1>&2 "\ 313 WARNING: \`$1' is needed, and is $msg. 314 You might have modified some files without having the 315 proper tools for further handling them. Check the \`README' file, 316 it often tells you about the needed prerequisites for installing 317 this package. You may also peek at any GNU archive site, in case 318 some other package would contain this missing \`$1' program." 319 exit 1 320 ;; 321 esac 322 323 exit 0 80 # Run the given program, remember its exit status. 81 "$@"; st=$? 82 83 # If it succeeded, we are done. 84 test $st -eq 0 && exit 0 85 86 # Also exit now if we it failed (or wasn't found), and '--version' was 87 # passed; such an option is passed most likely to detect whether the 88 # program is present and works. 89 case $2 in --version|--help) exit $st;; esac 90 91 # Exit code 63 means version mismatch. This often happens when the user 92 # tries to use an ancient version of a tool on a file that requires a 93 # minimum version. 94 if test $st -eq 63; then 95 msg="probably too old" 96 elif test $st -eq 127; then 97 # Program was missing. 98 msg="missing on your system" 99 else 100 # Program was found and executed, but failed. Give up. 101 exit $st 102 fi 103 104 perl_URL=http://www.perl.org/ 105 flex_URL=http://flex.sourceforge.net/ 106 gnu_software_URL=http://www.gnu.org/software 107 108 program_details () 109 { 110 case $1 in 111 aclocal|automake) 112 echo "The '$1' program is part of the GNU Automake package:" 113 echo "<$gnu_software_URL/automake>" 114 echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" 115 echo "<$gnu_software_URL/autoconf>" 116 echo "<$gnu_software_URL/m4/>" 117 echo "<$perl_URL>" 118 ;; 119 autoconf|autom4te|autoheader) 120 echo "The '$1' program is part of the GNU Autoconf package:" 121 echo "<$gnu_software_URL/autoconf/>" 122 echo "It also requires GNU m4 and Perl in order to run:" 123 echo "<$gnu_software_URL/m4/>" 124 echo "<$perl_URL>" 125 ;; 126 esac 127 } 128 129 give_advice () 130 { 131 # Normalize program name to check for. 132 normalized_program=`echo "$1" | sed ' 133 s/^gnu-//; t 134 s/^gnu//; t 135 s/^g//; t'` 136 137 printf '%s\n' "'$1' is $msg." 138 139 configure_deps="'configure.ac' or m4 files included by 'configure.ac'" 140 case $normalized_program in 141 autoconf*) 142 echo "You should only need it if you modified 'configure.ac'," 143 echo "or m4 files included by it." 144 program_details 'autoconf' 145 ;; 146 autoheader*) 147 echo "You should only need it if you modified 'acconfig.h' or" 148 echo "$configure_deps." 149 program_details 'autoheader' 150 ;; 151 automake*) 152 echo "You should only need it if you modified 'Makefile.am' or" 153 echo "$configure_deps." 154 program_details 'automake' 155 ;; 156 aclocal*) 157 echo "You should only need it if you modified 'acinclude.m4' or" 158 echo "$configure_deps." 159 program_details 'aclocal' 160 ;; 161 autom4te*) 162 echo "You might have modified some maintainer files that require" 163 echo "the 'autom4te' program to be rebuilt." 164 program_details 'autom4te' 165 ;; 166 bison*|yacc*) 167 echo "You should only need it if you modified a '.y' file." 168 echo "You may want to install the GNU Bison package:" 169 echo "<$gnu_software_URL/bison/>" 170 ;; 171 lex*|flex*) 172 echo "You should only need it if you modified a '.l' file." 173 echo "You may want to install the Fast Lexical Analyzer package:" 174 echo "<$flex_URL>" 175 ;; 176 help2man*) 177 echo "You should only need it if you modified a dependency" \ 178 "of a man page." 179 echo "You may want to install the GNU Help2man package:" 180 echo "<$gnu_software_URL/help2man/>" 181 ;; 182 makeinfo*) 183 echo "You should only need it if you modified a '.texi' file, or" 184 echo "any other file indirectly affecting the aspect of the manual." 185 echo "You might want to install the Texinfo package:" 186 echo "<$gnu_software_URL/texinfo/>" 187 echo "The spurious makeinfo call might also be the consequence of" 188 echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" 189 echo "want to install GNU make:" 190 echo "<$gnu_software_URL/make/>" 191 ;; 192 *) 193 echo "You might have modified some files without having the proper" 194 echo "tools for further handling them. Check the 'README' file, it" 195 echo "often tells you about the needed prerequisites for installing" 196 echo "this package. You may also peek at any GNU archive site, in" 197 echo "case some other package contains this missing '$1' program." 198 ;; 199 esac 200 } 201 202 give_advice "$1" | sed -e '1s/^/WARNING: /' \ 203 -e '2,$s/^/ /' >&2 204 205 # Propagate the correct exit status (expected to be 127 for a program 206 # not found, 63 for a program that failed due to version mismatch). 207 exit $st 324 208 325 209 # Local variables: -
TabularUnified config.h.in ¶
rb1e63ac5 r208e5be 120 120 /* Define to 1 if the system has the type `_Bool'. */ 121 121 #undef HAVE__BOOL 122 123 /* Define to 1 if your C compiler doesn't accept -c and -o together. */124 #undef NO_MINUS_C_MINUS_O125 122 126 123 /* Name of package */ -
TabularUnified configure ¶
rb1e63ac5 r208e5be 1 1 #! /bin/sh 2 2 # Guess values for system-dependent variables and create Makefiles. 3 # Generated by GNU Autoconf 2.6 8for cfa-cc 1.0.0.0.3 # Generated by GNU Autoconf 2.69 for cfa-cc 1.0.0.0. 4 4 # 5 5 # Report bugs to <cforall@plg.uwaterloo.ca>. 6 6 # 7 7 # 8 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 9 # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software 10 # Foundation, Inc. 8 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. 11 9 # 12 10 # … … 137 135 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH 138 136 137 # Use a proper internal environment variable to ensure we don't fall 138 # into an infinite loop, continuously re-executing ourselves. 139 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then 140 _as_can_reexec=no; export _as_can_reexec; 141 # We cannot yet assume a decent shell, so we have to provide a 142 # neutralization value for shells without unset; and this also 143 # works around shells that cannot unset nonexistent variables. 144 # Preserve -v and -x to the replacement shell. 145 BASH_ENV=/dev/null 146 ENV=/dev/null 147 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV 148 case $- in # (((( 149 *v*x* | *x*v* ) as_opts=-vx ;; 150 *v* ) as_opts=-v ;; 151 *x* ) as_opts=-x ;; 152 * ) as_opts= ;; 153 esac 154 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} 155 # Admittedly, this is quite paranoid, since all the known shells bail 156 # out after a failed `exec'. 157 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 158 as_fn_exit 255 159 fi 160 # We don't want this to propagate to other subprocesses. 161 { _as_can_reexec=; unset _as_can_reexec;} 139 162 if test "x$CONFIG_SHELL" = x; then 140 163 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : … … 170 193 exitcode=1; echo positional parameters were not saved. 171 194 fi 172 test x\$exitcode = x0 || exit 1" 195 test x\$exitcode = x0 || exit 1 196 test -x / || exit 1" 173 197 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO 174 198 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO … … 215 239 216 240 if test "x$CONFIG_SHELL" != x; then : 217 # We cannot yet assume a decent shell, so we have to provide a 218 # neutralization value for shells without unset; and this also 219 # works around shells that cannot unset nonexistent variables. 220 # Preserve -v and -x to the replacement shell. 221 BASH_ENV=/dev/null 222 ENV=/dev/null 223 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV 224 export CONFIG_SHELL 225 case $- in # (((( 226 *v*x* | *x*v* ) as_opts=-vx ;; 227 *v* ) as_opts=-v ;; 228 *x* ) as_opts=-x ;; 229 * ) as_opts= ;; 230 esac 231 exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} 241 export CONFIG_SHELL 242 # We cannot yet assume a decent shell, so we have to provide a 243 # neutralization value for shells without unset; and this also 244 # works around shells that cannot unset nonexistent variables. 245 # Preserve -v and -x to the replacement shell. 246 BASH_ENV=/dev/null 247 ENV=/dev/null 248 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV 249 case $- in # (((( 250 *v*x* | *x*v* ) as_opts=-vx ;; 251 *v* ) as_opts=-v ;; 252 *x* ) as_opts=-x ;; 253 * ) as_opts= ;; 254 esac 255 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} 256 # Admittedly, this is quite paranoid, since all the known shells bail 257 # out after a failed `exec'. 258 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 259 exit 255 232 260 fi 233 261 … … 332 360 333 361 } # as_fn_mkdir_p 362 363 # as_fn_executable_p FILE 364 # ----------------------- 365 # Test if FILE is an executable regular file. 366 as_fn_executable_p () 367 { 368 test -f "$1" && test -x "$1" 369 } # as_fn_executable_p 334 370 # as_fn_append VAR VALUE 335 371 # ---------------------- … … 453 489 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } 454 490 491 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have 492 # already done that, so ensure we don't try to do so again and fall 493 # in an infinite loop. This has already happened in practice. 494 _as_can_reexec=no; export _as_can_reexec 455 495 # Don't try to exec as it changes $[0], causing all sort of problems 456 496 # (the dirname of $[0] is not the place where we might find the … … 487 527 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 488 528 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 489 # In both cases, we have to default to `cp -p '.529 # In both cases, we have to default to `cp -pR'. 490 530 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 491 as_ln_s='cp -p '531 as_ln_s='cp -pR' 492 532 elif ln conf$$.file conf$$ 2>/dev/null; then 493 533 as_ln_s=ln 494 534 else 495 as_ln_s='cp -p '535 as_ln_s='cp -pR' 496 536 fi 497 537 else 498 as_ln_s='cp -p '538 as_ln_s='cp -pR' 499 539 fi 500 540 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file … … 508 548 fi 509 549 510 if test -x / >/dev/null 2>&1; then 511 as_test_x='test -x' 512 else 513 if ls -dL / >/dev/null 2>&1; then 514 as_ls_L_option=L 515 else 516 as_ls_L_option= 517 fi 518 as_test_x=' 519 eval sh -c '\'' 520 if test -d "$1"; then 521 test -d "$1/."; 522 else 523 case $1 in #( 524 -*)set "./$1";; 525 esac; 526 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( 527 ???[sx]*):;;*)false;;esac;fi 528 '\'' sh 529 ' 530 fi 531 as_executable_p=$as_test_x 550 as_test_x='test -x' 551 as_executable_p=as_fn_executable_p 532 552 533 553 # Sed expression to map a string onto a valid CPP name. … … 718 738 oldincludedir 719 739 includedir 740 runstatedir 720 741 localstatedir 721 742 sharedstatedir … … 803 824 sharedstatedir='${prefix}/com' 804 825 localstatedir='${prefix}/var' 826 runstatedir='${localstatedir}/run' 805 827 includedir='${prefix}/include' 806 828 oldincludedir='/usr/include' … … 1055 1077 silent=yes ;; 1056 1078 1079 -runstatedir | --runstatedir | --runstatedi | --runstated \ 1080 | --runstate | --runstat | --runsta | --runst | --runs \ 1081 | --run | --ru | --r) 1082 ac_prev=runstatedir ;; 1083 -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ 1084 | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ 1085 | --run=* | --ru=* | --r=*) 1086 runstatedir=$ac_optarg ;; 1087 1057 1088 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) 1058 1089 ac_prev=sbindir ;; … … 1192 1223 datadir sysconfdir sharedstatedir localstatedir includedir \ 1193 1224 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ 1194 libdir localedir mandir 1225 libdir localedir mandir runstatedir 1195 1226 do 1196 1227 eval ac_val=\$$ac_var … … 1220 1251 if test "x$build_alias" = x; then 1221 1252 cross_compiling=maybe 1222 $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.1223 If a cross compiler is detected then cross compile mode will be used" >&21224 1253 elif test "x$build_alias" != "x$host_alias"; then 1225 1254 cross_compiling=yes … … 1347 1376 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1348 1377 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 1378 --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] 1349 1379 --libdir=DIR object code libraries [EPREFIX/lib] 1350 1380 --includedir=DIR C header files [PREFIX/include] … … 1385 1415 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) 1386 1416 --enable-FEATURE[=ARG] include FEATURE [ARG=yes] 1387 --enable-silent-rules less verbose build output (undo: `make V=1') 1388 --disable-silent-rules verbose build output (undo: `make V=0') 1389 --disable-maintainer-mode disable make rules and dependencies not useful 1390 (and sometimes confusing) to the casual installer 1417 --enable-silent-rules less verbose build output (undo: "make V=1") 1418 --disable-silent-rules verbose build output (undo: "make V=0") 1419 --disable-maintainer-mode 1420 disable make rules and dependencies not useful (and 1421 sometimes confusing) to the casual installer 1391 1422 --enable-target-release Build and install the release target 1392 1423 --enable-target-debug Build and install the debug target 1393 1424 --enable-threading Build and install libcfa with threading support 1394 1425 (Enabled by default) 1395 --disable-dependency-tracking speeds up one-time build 1396 --enable-dependency-tracking do not reject slow dependency extractors 1426 --enable-dependency-tracking 1427 do not reject slow dependency extractors 1428 --disable-dependency-tracking 1429 speeds up one-time build 1397 1430 1398 1431 Optional Packages: … … 1489 1522 cat <<\_ACEOF 1490 1523 cfa-cc configure 1.0.0.0 1491 generated by GNU Autoconf 2.6 81492 1493 Copyright (C) 201 0Free Software Foundation, Inc.1524 generated by GNU Autoconf 2.69 1525 1526 Copyright (C) 2012 Free Software Foundation, Inc. 1494 1527 This configure script is free software; the Free Software Foundation 1495 1528 gives unlimited permission to copy, distribute and modify it. … … 1605 1638 } && test -s conftest$ac_exeext && { 1606 1639 test "$cross_compiling" = yes || 1607 $as_test_x conftest$ac_exeext1640 test -x conftest$ac_exeext 1608 1641 }; then : 1609 1642 ac_retval=0 … … 1971 2004 { 1972 2005 static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; 1973 test_array [0] = 0 2006 test_array [0] = 0; 2007 return test_array [0]; 1974 2008 1975 2009 ; … … 1987 2021 static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) 1988 2022 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; 1989 test_array [0] = 0 2023 test_array [0] = 0; 2024 return test_array [0]; 1990 2025 1991 2026 ; … … 2044 2079 { 2045 2080 static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; 2046 test_array [0] = 0 2081 test_array [0] = 0; 2082 return test_array [0]; 2047 2083 2048 2084 ; … … 2077 2113 2078 2114 It was created by cfa-cc $as_me 1.0.0.0, which was 2079 generated by GNU Autoconf 2.6 8. Invocation command line was2115 generated by GNU Autoconf 2.69. Invocation command line was 2080 2116 2081 2117 $ $0 $@ … … 2461 2497 fi 2462 2498 2463 case $enable_silent_rules in 2464 yes) AM_DEFAULT_VERBOSITY=0;;2465 no)AM_DEFAULT_VERBOSITY=1;;2466 *)AM_DEFAULT_VERBOSITY=1;;2499 case $enable_silent_rules in # ((( 2500 yes) AM_DEFAULT_VERBOSITY=0;; 2501 no) AM_DEFAULT_VERBOSITY=1;; 2502 *) AM_DEFAULT_VERBOSITY=1;; 2467 2503 esac 2468 2504 am_make=${MAKE-make} … … 2496 2532 2497 2533 2498 am__api_version='1.1 1'2534 am__api_version='1.15' 2499 2535 2500 2536 # Find a good install program. We prefer a C program (faster), … … 2535 2571 for ac_prog in ginstall scoinst install; do 2536 2572 for ac_exec_ext in '' $ac_executable_extensions; do 2537 if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then2573 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then 2538 2574 if test $ac_prog = install && 2539 2575 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then … … 2593 2629 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 2594 2630 $as_echo_n "checking whether build environment is sane... " >&6; } 2595 # Just in case2596 sleep 12597 echo timestamp > conftest.file2598 2631 # Reject unsafe characters in $srcdir or the absolute working directory 2599 2632 # name. Accept space and tab only in the latter. … … 2606 2639 case $srcdir in 2607 2640 *[\\\"\#\$\&\'\`$am_lf\ \ ]*) 2608 as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;2641 as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; 2609 2642 esac 2610 2643 2611 # Do `set' in a subshell so we don't clobber the current shell's2644 # Do 'set' in a subshell so we don't clobber the current shell's 2612 2645 # arguments. Must try -L first in case configure is actually a 2613 2646 # symlink; some systems play weird games with the mod time of symlinks … … 2615 2648 # directory). 2616 2649 if ( 2617 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` 2618 if test "$*" = "X"; then 2619 # -L didn't work. 2620 set X `ls -t "$srcdir/configure" conftest.file` 2621 fi 2622 rm -f conftest.file 2623 if test "$*" != "X $srcdir/configure conftest.file" \ 2624 && test "$*" != "X conftest.file $srcdir/configure"; then 2625 2626 # If neither matched, then we have a broken ls. This can happen 2627 # if, for instance, CONFIG_SHELL is bash and it inherits a 2628 # broken ls alias from the environment. This has actually 2629 # happened. Such a system could not be considered "sane". 2630 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken 2631 alias in your environment" "$LINENO" 5 2632 fi 2633 2650 am_has_slept=no 2651 for am_try in 1 2; do 2652 echo "timestamp, slept: $am_has_slept" > conftest.file 2653 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` 2654 if test "$*" = "X"; then 2655 # -L didn't work. 2656 set X `ls -t "$srcdir/configure" conftest.file` 2657 fi 2658 if test "$*" != "X $srcdir/configure conftest.file" \ 2659 && test "$*" != "X conftest.file $srcdir/configure"; then 2660 2661 # If neither matched, then we have a broken ls. This can happen 2662 # if, for instance, CONFIG_SHELL is bash and it inherits a 2663 # broken ls alias from the environment. This has actually 2664 # happened. Such a system could not be considered "sane". 2665 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken 2666 alias in your environment" "$LINENO" 5 2667 fi 2668 if test "$2" = conftest.file || test $am_try -eq 2; then 2669 break 2670 fi 2671 # Just in case. 2672 sleep 1 2673 am_has_slept=yes 2674 done 2634 2675 test "$2" = conftest.file 2635 2676 ) … … 2643 2684 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 2644 2685 $as_echo "yes" >&6; } 2686 # If we didn't sleep, we still need to ensure time stamps of config.status and 2687 # generated files are strictly newer. 2688 am_sleep_pid= 2689 if grep 'slept: no' conftest.file >/dev/null 2>&1; then 2690 ( sleep 1 ) & 2691 am_sleep_pid=$! 2692 fi 2693 2694 rm -f conftest.file 2695 2645 2696 test "$program_prefix" != NONE && 2646 2697 program_transform_name="s&^&$program_prefix&;$program_transform_name" … … 2653 2704 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` 2654 2705 2655 # expand $ac_aux_dir to an absolute path2656 am_aux_dir=`cd $ac_aux_dir&& pwd`2706 # Expand $ac_aux_dir to an absolute path. 2707 am_aux_dir=`cd "$ac_aux_dir" && pwd` 2657 2708 2658 2709 if test x"${MISSING+set}" != xset; then … … 2665 2716 fi 2666 2717 # Use eval to expand $SHELL 2667 if eval "$MISSING -- run true"; then2668 am_missing_run="$MISSING --run"2718 if eval "$MISSING --is-lightweight"; then 2719 am_missing_run="$MISSING " 2669 2720 else 2670 2721 am_missing_run= 2671 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&52672 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}2673 fi 2674 2675 if test x"${install_sh }" != xset; then2722 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 2723 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} 2724 fi 2725 2726 if test x"${install_sh+set}" != xset; then 2676 2727 case $am_aux_dir in 2677 2728 *\ * | *\ *) … … 2682 2733 fi 2683 2734 2684 # Installed binaries are usually stripped using `strip' when the user2685 # run `make install-strip'. However `strip' might not be the right2735 # Installed binaries are usually stripped using 'strip' when the user 2736 # run "make install-strip". However 'strip' might not be the right 2686 2737 # tool to use in cross-compilation environments, therefore Automake 2687 # will honor the `STRIP' environment variable to overrule this program.2738 # will honor the 'STRIP' environment variable to overrule this program. 2688 2739 if test "$cross_compiling" != no; then 2689 2740 if test -n "$ac_tool_prefix"; then … … 2704 2755 test -z "$as_dir" && as_dir=. 2705 2756 for ac_exec_ext in '' $ac_executable_extensions; do 2706 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then2757 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2707 2758 ac_cv_prog_STRIP="${ac_tool_prefix}strip" 2708 2759 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 2744 2795 test -z "$as_dir" && as_dir=. 2745 2796 for ac_exec_ext in '' $ac_executable_extensions; do 2746 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then2797 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2747 2798 ac_cv_prog_ac_ct_STRIP="strip" 2748 2799 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 2795 2846 for ac_prog in mkdir gmkdir; do 2796 2847 for ac_exec_ext in '' $ac_executable_extensions; do 2797 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }|| continue2848 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue 2798 2849 case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 2799 2850 'mkdir (GNU coreutils) '* | \ … … 2824 2875 $as_echo "$MKDIR_P" >&6; } 2825 2876 2826 mkdir_p="$MKDIR_P"2827 case $mkdir_p in2828 [\\/$]* | ?:[\\/]*) ;;2829 */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;2830 esac2831 2832 2877 for ac_prog in gawk mawk nawk awk 2833 2878 do … … 2848 2893 test -z "$as_dir" && as_dir=. 2849 2894 for ac_exec_ext in '' $ac_executable_extensions; do 2850 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then2895 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2851 2896 ac_cv_prog_AWK="$ac_prog" 2852 2897 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 2962 3007 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} 2963 3008 2964 # We need awk for the "check" target. The system "awk" is bad on 2965 # some platforms. 3009 # For better backward compatibility. To be removed once Automake 1.9.x 3010 # dies out for good. For more background, see: 3011 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> 3012 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> 3013 mkdir_p='$(MKDIR_P)' 3014 3015 # We need awk for the "check" target (and possibly the TAP driver). The 3016 # system "awk" is bad on some platforms. 2966 3017 # Always define AMTAR for backward compatibility. Yes, it's still used 2967 3018 # in the wild :-( We should find a proper way to deprecate it ... 2968 3019 AMTAR='$${TAR-tar}' 2969 3020 3021 3022 # We'll loop over all known methods to create a tar archive until one works. 3023 _am_tools='gnutar pax cpio none' 3024 2970 3025 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' 2971 3026 … … 2973 3028 2974 3029 3030 3031 3032 # POSIX will say in a future version that running "rm -f" with no argument 3033 # is OK; and we want to be able to make that assumption in our Makefile 3034 # recipes. So use an aggressive probe to check that the usage we want is 3035 # actually supported "in the wild" to an acceptable degree. 3036 # See automake bug#10828. 3037 # To make any issue more visible, cause the running configure to be aborted 3038 # by default if the 'rm' program in use doesn't match our expectations; the 3039 # user can still override this though. 3040 if rm -f && rm -fr && rm -rf; then : OK; else 3041 cat >&2 <<'END' 3042 Oops! 3043 3044 Your 'rm' program seems unable to run without file operands specified 3045 on the command line, even when the '-f' option is present. This is contrary 3046 to the behaviour of most rm programs out there, and not conforming with 3047 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> 3048 3049 Please tell bug-automake@gnu.org about your system, including the value 3050 of your $PATH and any error possibly output before this message. This 3051 can help us improve future automake versions. 3052 3053 END 3054 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then 3055 echo 'Configuration will proceed anyway, since you have set the' >&2 3056 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 3057 echo >&2 3058 else 3059 cat >&2 <<'END' 3060 Aborting the configuration process, to ensure you take notice of the issue. 3061 3062 You can download and install GNU coreutils to get an 'rm' implementation 3063 that behaves properly: <http://www.gnu.org/software/coreutils/>. 3064 3065 If you want to complete the configuration process using your problematic 3066 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM 3067 to "yes", and re-run configure. 3068 3069 END 3070 as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 3071 fi 3072 fi 2975 3073 2976 3074 … … 3102 3200 test -z "$as_dir" && as_dir=. 3103 3201 for ac_exec_ext in '' $ac_executable_extensions; do 3104 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then3202 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 3105 3203 ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext" 3106 3204 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 3430 3528 test -z "$as_dir" && as_dir=. 3431 3529 for ac_exec_ext in '' $ac_executable_extensions; do 3432 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then3530 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 3433 3531 ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" 3434 3532 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 3474 3572 test -z "$as_dir" && as_dir=. 3475 3573 for ac_exec_ext in '' $ac_executable_extensions; do 3476 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then3574 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 3477 3575 ac_cv_prog_ac_ct_CXX="$ac_prog" 3478 3576 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 3927 4025 # First try GNU make style include. 3928 4026 echo "include confinc" > confmf 3929 # Ignore all kinds of additional output from `make'.4027 # Ignore all kinds of additional output from 'make'. 3930 4028 case `$am_make -s -f confmf 2> /dev/null` in #( 3931 4029 *the\ am__doit\ target*) … … 3983 4081 # making bogus files that we don't know about and never remove. For 3984 4082 # instance it was reported that on HP-UX the gcc test will end up 3985 # making a dummy file named `D' -- because `-MD' means `put the output3986 # in D '.4083 # making a dummy file named 'D' -- because '-MD' means "put the output 4084 # in D". 3987 4085 rm -rf conftest.dir 3988 4086 mkdir conftest.dir … … 4019 4117 for i in 1 2 3 4 5 6; do 4020 4118 echo '#include "conftst'$i'.h"' >> sub/conftest.c 4021 # Using `: > sub/conftst$i.h'creates only sub/conftst1.h with4022 # Solaris 8's {/usr,}/bin/sh.4023 touchsub/conftst$i.h4119 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with 4120 # Solaris 10 /bin/sh. 4121 echo '/* dummy */' > sub/conftst$i.h 4024 4122 done 4025 4123 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 4026 4124 4027 # We check with `-c' and `-o' for the sake of the "dashmstdout"4125 # We check with '-c' and '-o' for the sake of the "dashmstdout" 4028 4126 # mode. It turns out that the SunPro C++ compiler does not properly 4029 # handle `-M -o', and we need to detect this. Also, some Intel4030 # versions had trouble with output in subdirs 4127 # handle '-M -o', and we need to detect this. Also, some Intel 4128 # versions had trouble with output in subdirs. 4031 4129 am__obj=sub/conftest.${OBJEXT-o} 4032 4130 am__minus_obj="-o $am__obj" … … 4037 4135 ;; 4038 4136 nosideeffect) 4039 # after this tag, mechanisms are not by side-effect, so they'll4040 # only be used when explicitly requested 4137 # After this tag, mechanisms are not by side-effect, so they'll 4138 # only be used when explicitly requested. 4041 4139 if test "x$enable_dependency_tracking" = xyes; then 4042 4140 continue … … 4046 4144 ;; 4047 4145 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 4048 # This compiler won't grok `-c -o', but also, the minuso test has4146 # This compiler won't grok '-c -o', but also, the minuso test has 4049 4147 # not run yet. These depmodes are late enough in the game, and 4050 4148 # so weak that their functioning should not be impacted. … … 4122 4220 test -z "$as_dir" && as_dir=. 4123 4221 for ac_exec_ext in '' $ac_executable_extensions; do 4124 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then4222 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 4125 4223 ac_cv_prog_CC="${ac_tool_prefix}gcc" 4126 4224 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4162 4260 test -z "$as_dir" && as_dir=. 4163 4261 for ac_exec_ext in '' $ac_executable_extensions; do 4164 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then4262 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 4165 4263 ac_cv_prog_ac_ct_CC="gcc" 4166 4264 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4215 4313 test -z "$as_dir" && as_dir=. 4216 4314 for ac_exec_ext in '' $ac_executable_extensions; do 4217 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then4315 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 4218 4316 ac_cv_prog_CC="${ac_tool_prefix}cc" 4219 4317 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4256 4354 test -z "$as_dir" && as_dir=. 4257 4355 for ac_exec_ext in '' $ac_executable_extensions; do 4258 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then4356 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 4259 4357 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then 4260 4358 ac_prog_rejected=yes … … 4314 4412 test -z "$as_dir" && as_dir=. 4315 4413 for ac_exec_ext in '' $ac_executable_extensions; do 4316 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then4414 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 4317 4415 ac_cv_prog_CC="$ac_tool_prefix$ac_prog" 4318 4416 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4358 4456 test -z "$as_dir" && as_dir=. 4359 4457 for ac_exec_ext in '' $ac_executable_extensions; do 4360 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then4458 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 4361 4459 ac_cv_prog_ac_ct_CC="$ac_prog" 4362 4460 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4554 4652 #include <stdarg.h> 4555 4653 #include <stdio.h> 4556 #include <sys/types.h> 4557 #include <sys/stat.h> 4654 struct stat; 4558 4655 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ 4559 4656 struct buf { int x; }; … … 4640 4737 ac_compiler_gnu=$ac_cv_c_compiler_gnu 4641 4738 4739 ac_ext=c 4740 ac_cpp='$CPP $CPPFLAGS' 4741 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 4742 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 4743 ac_compiler_gnu=$ac_cv_c_compiler_gnu 4744 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 4745 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } 4746 if ${am_cv_prog_cc_c_o+:} false; then : 4747 $as_echo_n "(cached) " >&6 4748 else 4749 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 4750 /* end confdefs.h. */ 4751 4752 int 4753 main () 4754 { 4755 4756 ; 4757 return 0; 4758 } 4759 _ACEOF 4760 # Make sure it works both with $CC and with simple cc. 4761 # Following AC_PROG_CC_C_O, we do the test twice because some 4762 # compilers refuse to overwrite an existing .o file with -o, 4763 # though they will create one. 4764 am_cv_prog_cc_c_o=yes 4765 for am_i in 1 2; do 4766 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 4767 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 4768 ac_status=$? 4769 echo "$as_me:$LINENO: \$? = $ac_status" >&5 4770 (exit $ac_status); } \ 4771 && test -f conftest2.$ac_objext; then 4772 : OK 4773 else 4774 am_cv_prog_cc_c_o=no 4775 break 4776 fi 4777 done 4778 rm -f core conftest* 4779 unset am_i 4780 fi 4781 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 4782 $as_echo "$am_cv_prog_cc_c_o" >&6; } 4783 if test "$am_cv_prog_cc_c_o" != yes; then 4784 # Losing compiler, so override with the script. 4785 # FIXME: It is wrong to rewrite CC. 4786 # But if we don't then we get into trouble of one sort or another. 4787 # A longer-term fix would be to have automake use am__CC in this case, 4788 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" 4789 CC="$am_aux_dir/compile $CC" 4790 fi 4791 ac_ext=c 4792 ac_cpp='$CPP $CPPFLAGS' 4793 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 4794 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 4795 ac_compiler_gnu=$ac_cv_c_compiler_gnu 4796 4797 4642 4798 depcc="$CC" am_compiler_list= 4643 4799 … … 4651 4807 # making bogus files that we don't know about and never remove. For 4652 4808 # instance it was reported that on HP-UX the gcc test will end up 4653 # making a dummy file named `D' -- because `-MD' means `put the output4654 # in D '.4809 # making a dummy file named 'D' -- because '-MD' means "put the output 4810 # in D". 4655 4811 rm -rf conftest.dir 4656 4812 mkdir conftest.dir … … 4687 4843 for i in 1 2 3 4 5 6; do 4688 4844 echo '#include "conftst'$i'.h"' >> sub/conftest.c 4689 # Using `: > sub/conftst$i.h'creates only sub/conftst1.h with4690 # Solaris 8's {/usr,}/bin/sh.4691 touchsub/conftst$i.h4845 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with 4846 # Solaris 10 /bin/sh. 4847 echo '/* dummy */' > sub/conftst$i.h 4692 4848 done 4693 4849 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 4694 4850 4695 # We check with `-c' and `-o' for the sake of the "dashmstdout"4851 # We check with '-c' and '-o' for the sake of the "dashmstdout" 4696 4852 # mode. It turns out that the SunPro C++ compiler does not properly 4697 # handle `-M -o', and we need to detect this. Also, some Intel4698 # versions had trouble with output in subdirs 4853 # handle '-M -o', and we need to detect this. Also, some Intel 4854 # versions had trouble with output in subdirs. 4699 4855 am__obj=sub/conftest.${OBJEXT-o} 4700 4856 am__minus_obj="-o $am__obj" … … 4705 4861 ;; 4706 4862 nosideeffect) 4707 # after this tag, mechanisms are not by side-effect, so they'll4708 # only be used when explicitly requested 4863 # After this tag, mechanisms are not by side-effect, so they'll 4864 # only be used when explicitly requested. 4709 4865 if test "x$enable_dependency_tracking" = xyes; then 4710 4866 continue … … 4714 4870 ;; 4715 4871 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 4716 # This compiler won't grok `-c -o', but also, the minuso test has4872 # This compiler won't grok '-c -o', but also, the minuso test has 4717 4873 # not run yet. These depmodes are late enough in the game, and 4718 4874 # so weak that their functioning should not be impacted. … … 4786 4942 # making bogus files that we don't know about and never remove. For 4787 4943 # instance it was reported that on HP-UX the gcc test will end up 4788 # making a dummy file named `D' -- because `-MD' means `put the output4789 # in D '.4944 # making a dummy file named 'D' -- because '-MD' means "put the output 4945 # in D". 4790 4946 rm -rf conftest.dir 4791 4947 mkdir conftest.dir … … 4820 4976 for i in 1 2 3 4 5 6; do 4821 4977 echo '#include "conftst'$i'.h"' >> sub/conftest.c 4822 # Using `: > sub/conftst$i.h'creates only sub/conftst1.h with4823 # Solaris 8's {/usr,}/bin/sh.4824 touchsub/conftst$i.h4978 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with 4979 # Solaris 10 /bin/sh. 4980 echo '/* dummy */' > sub/conftst$i.h 4825 4981 done 4826 4982 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 4827 4983 4828 # We check with `-c' and `-o' for the sake of the "dashmstdout"4984 # We check with '-c' and '-o' for the sake of the "dashmstdout" 4829 4985 # mode. It turns out that the SunPro C++ compiler does not properly 4830 # handle `-M -o', and we need to detect this. Also, some Intel4831 # versions had trouble with output in subdirs 4986 # handle '-M -o', and we need to detect this. Also, some Intel 4987 # versions had trouble with output in subdirs. 4832 4988 am__obj=sub/conftest.${OBJEXT-o} 4833 4989 am__minus_obj="-o $am__obj" … … 4838 4994 ;; 4839 4995 nosideeffect) 4840 # after this tag, mechanisms are not by side-effect, so they'll4841 # only be used when explicitly requested 4996 # After this tag, mechanisms are not by side-effect, so they'll 4997 # only be used when explicitly requested. 4842 4998 if test "x$enable_dependency_tracking" = xyes; then 4843 4999 continue … … 4847 5003 ;; 4848 5004 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 4849 # This compiler won't grok `-c -o', but also, the minuso test has5005 # This compiler won't grok '-c -o', but also, the minuso test has 4850 5006 # not run yet. These depmodes are late enough in the game, and 4851 5007 # so weak that their functioning should not be impacted. … … 4901 5057 4902 5058 4903 if test "x$CC" != xcc; then4904 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&54905 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }4906 else4907 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&54908 $as_echo_n "checking whether cc understands -c and -o together... " >&6; }4909 fi4910 set dummy $CC; ac_cc=`$as_echo "$2" |4911 sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`4912 if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :4913 $as_echo_n "(cached) " >&64914 else4915 cat confdefs.h - <<_ACEOF >conftest.$ac_ext4916 /* end confdefs.h. */4917 4918 int4919 main ()4920 {4921 4922 ;4923 return 0;4924 }4925 _ACEOF4926 # Make sure it works both with $CC and with simple cc.4927 # We do the test twice because some compilers refuse to overwrite an4928 # existing .o file with -o, though they will create one.4929 ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'4930 rm -f conftest2.*4931 if { { case "(($ac_try" in4932 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;4933 *) ac_try_echo=$ac_try;;4934 esac4935 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""4936 $as_echo "$ac_try_echo"; } >&54937 (eval "$ac_try") 2>&54938 ac_status=$?4939 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&54940 test $ac_status = 0; } &&4941 test -f conftest2.$ac_objext && { { case "(($ac_try" in4942 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;4943 *) ac_try_echo=$ac_try;;4944 esac4945 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""4946 $as_echo "$ac_try_echo"; } >&54947 (eval "$ac_try") 2>&54948 ac_status=$?4949 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&54950 test $ac_status = 0; };4951 then4952 eval ac_cv_prog_cc_${ac_cc}_c_o=yes4953 if test "x$CC" != xcc; then4954 # Test first that cc exists at all.4955 if { ac_try='cc -c conftest.$ac_ext >&5'4956 { { case "(($ac_try" in4957 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;4958 *) ac_try_echo=$ac_try;;4959 esac4960 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""4961 $as_echo "$ac_try_echo"; } >&54962 (eval "$ac_try") 2>&54963 ac_status=$?4964 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&54965 test $ac_status = 0; }; }; then4966 ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'4967 rm -f conftest2.*4968 if { { case "(($ac_try" in4969 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;4970 *) ac_try_echo=$ac_try;;4971 esac4972 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""4973 $as_echo "$ac_try_echo"; } >&54974 (eval "$ac_try") 2>&54975 ac_status=$?4976 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&54977 test $ac_status = 0; } &&4978 test -f conftest2.$ac_objext && { { case "(($ac_try" in4979 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;4980 *) ac_try_echo=$ac_try;;4981 esac4982 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""4983 $as_echo "$ac_try_echo"; } >&54984 (eval "$ac_try") 2>&54985 ac_status=$?4986 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&54987 test $ac_status = 0; };4988 then4989 # cc works too.4990 :4991 else4992 # cc exists but doesn't like -o.4993 eval ac_cv_prog_cc_${ac_cc}_c_o=no4994 fi4995 fi4996 fi4997 else4998 eval ac_cv_prog_cc_${ac_cc}_c_o=no4999 fi5000 rm -f core conftest*5001 5002 fi5003 if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then5004 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&55005 $as_echo "yes" >&6; }5006 else5007 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&55008 $as_echo "no" >&6; }5009 5010 $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h5011 5012 fi5013 5014 # FIXME: we rely on the cache variable name because5015 # there is no other way.5016 set dummy $CC5017 am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`5018 eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o5019 if test "$am_t" != yes; then5020 # Losing compiler, so override with the script.5021 # FIXME: It is wrong to rewrite CC.5022 # But if we don't then we get into trouble of one sort or another.5023 # A longer-term fix would be to have automake use am__CC in this case,5024 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"5025 CC="$am_aux_dir/compile $CC"5026 fi5027 5028 5059 # deprecated 5029 5060 # These are often not installed and people miss seeing the "no", so stop the configure. … … 5046 5077 test -z "$as_dir" && as_dir=. 5047 5078 for ac_exec_ext in '' $ac_executable_extensions; do 5048 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then5079 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 5049 5080 ac_cv_prog_YACC="$ac_prog" 5050 5081 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5091 5122 test -z "$as_dir" && as_dir=. 5092 5123 for ac_exec_ext in '' $ac_executable_extensions; do 5093 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then5124 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 5094 5125 ac_cv_prog_LEX="$ac_prog" 5095 5126 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5123 5154 c { yymore (); } 5124 5155 d { yyless (1); } 5125 e { yyless (input () != 0); } 5156 e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ 5157 yyless ((input () != 0)); } 5126 5158 f { unput (yytext[0]); } 5127 5159 . { BEGIN INITIAL; } … … 5281 5313 test -z "$as_dir" && as_dir=. 5282 5314 for ac_exec_ext in '' $ac_executable_extensions; do 5283 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then5315 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 5284 5316 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" 5285 5317 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5321 5353 test -z "$as_dir" && as_dir=. 5322 5354 for ac_exec_ext in '' $ac_executable_extensions; do 5323 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then5355 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 5324 5356 ac_cv_prog_ac_ct_RANLIB="ranlib" 5325 5357 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5514 5546 for ac_exec_ext in '' $ac_executable_extensions; do 5515 5547 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" 5516 { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; }|| continue5548 as_fn_executable_p "$ac_path_GREP" || continue 5517 5549 # Check for GNU ac_path_GREP and select it if it is found. 5518 5550 # Check for GNU $ac_path_GREP … … 5580 5612 for ac_exec_ext in '' $ac_executable_extensions; do 5581 5613 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" 5582 { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; }|| continue5614 as_fn_executable_p "$ac_path_EGREP" || continue 5583 5615 # Check for GNU ac_path_EGREP and select it if it is found. 5584 5616 # Check for GNU $ac_path_EGREP … … 5919 5951 $ac_includes_default 5920 5952 int 5921 find_stack_direction ( )5953 find_stack_direction (int *addr, int depth) 5922 5954 { 5923 static char *addr = 0; 5924 auto char dummy; 5925 if (addr == 0) 5926 { 5927 addr = &dummy; 5928 return find_stack_direction (); 5929 } 5930 else 5931 return (&dummy > addr) ? 1 : -1; 5955 int dir, dummy = 0; 5956 if (! addr) 5957 addr = &dummy; 5958 *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; 5959 dir = depth ? find_stack_direction (addr, depth - 1) : 0; 5960 return dir + dummy; 5932 5961 } 5933 5962 5934 5963 int 5935 main ( )5964 main (int argc, char **argv) 5936 5965 { 5937 return find_stack_direction ( ) < 0;5966 return find_stack_direction (0, argc + !argv + 20) < 0; 5938 5967 } 5939 5968 _ACEOF … … 5980 6009 /* end confdefs.h. */ 5981 6010 5982 #include <stdbool.h>5983 #ifndef bool5984 "error: bool is not defined"5985 #endif5986 #ifndef false5987 "error: false is not defined"5988 #endif5989 #if false5990 "error: false is not 0"5991 #endif5992 #ifndef true5993 "error: true is not defined"5994 #endif5995 #if true != 15996 "error: true is not 1"5997 #endif5998 #ifndef __bool_true_false_are_defined5999 "error: __bool_true_false_are_defined is not defined"6000 #endif6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6011 #include <stdbool.h> 6012 #ifndef bool 6013 "error: bool is not defined" 6014 #endif 6015 #ifndef false 6016 "error: false is not defined" 6017 #endif 6018 #if false 6019 "error: false is not 0" 6020 #endif 6021 #ifndef true 6022 "error: true is not defined" 6023 #endif 6024 #if true != 1 6025 "error: true is not 1" 6026 #endif 6027 #ifndef __bool_true_false_are_defined 6028 "error: __bool_true_false_are_defined is not defined" 6029 #endif 6030 6031 struct s { _Bool s: 1; _Bool t; } s; 6032 6033 char a[true == 1 ? 1 : -1]; 6034 char b[false == 0 ? 1 : -1]; 6035 char c[__bool_true_false_are_defined == 1 ? 1 : -1]; 6036 char d[(bool) 0.5 == true ? 1 : -1]; 6037 /* See body of main program for 'e'. */ 6038 char f[(_Bool) 0.0 == false ? 1 : -1]; 6039 char g[true]; 6040 char h[sizeof (_Bool)]; 6041 char i[sizeof s.t]; 6042 enum { j = false, k = true, l = false * true, m = true * 256 }; 6043 /* The following fails for 6044 HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ 6045 _Bool n[m]; 6046 char o[sizeof n == m * sizeof n[0] ? 1 : -1]; 6047 char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; 6048 /* Catch a bug in an HP-UX C compiler. See 6049 http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html 6050 http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html 6051 */ 6052 _Bool q = true; 6053 _Bool *pq = &q; 6025 6054 6026 6055 int … … 6028 6057 { 6029 6058 6030 6031 6032 6033 6034 6035 6059 bool e = &s; 6060 *pq |= q; 6061 *pq |= ! q; 6062 /* Refer to every declared value, to avoid compiler optimizations. */ 6063 return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l 6064 + !m + !n + !o + !p + !q + !pq); 6036 6065 6037 6066 ; … … 6048 6077 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 6049 6078 $as_echo "$ac_cv_header_stdbool_h" >&6; } 6050 ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"6079 ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" 6051 6080 if test "x$ac_cv_type__Bool" = xyes; then : 6052 6081 … … 6057 6086 6058 6087 fi 6088 6059 6089 6060 6090 if test $ac_cv_header_stdbool_h = yes; then … … 6363 6393 6364 6394 6395 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 6396 $as_echo_n "checking that generated files are newer than configure... " >&6; } 6397 if test -n "$am_sleep_pid"; then 6398 # Hide warnings about reused PIDs. 6399 wait $am_sleep_pid 2>/dev/null 6400 fi 6401 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 6402 $as_echo "done" >&6; } 6365 6403 if test -n "$EXEEXT"; then 6366 6404 am__EXEEXT_TRUE= … … 6705 6743 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 6706 6744 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 6707 # In both cases, we have to default to `cp -p '.6745 # In both cases, we have to default to `cp -pR'. 6708 6746 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 6709 as_ln_s='cp -p '6747 as_ln_s='cp -pR' 6710 6748 elif ln conf$$.file conf$$ 2>/dev/null; then 6711 6749 as_ln_s=ln 6712 6750 else 6713 as_ln_s='cp -p '6751 as_ln_s='cp -pR' 6714 6752 fi 6715 6753 else 6716 as_ln_s='cp -p '6754 as_ln_s='cp -pR' 6717 6755 fi 6718 6756 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file … … 6774 6812 fi 6775 6813 6776 if test -x / >/dev/null 2>&1; then 6777 as_test_x='test -x' 6778 else 6779 if ls -dL / >/dev/null 2>&1; then 6780 as_ls_L_option=L 6781 else 6782 as_ls_L_option= 6783 fi 6784 as_test_x=' 6785 eval sh -c '\'' 6786 if test -d "$1"; then 6787 test -d "$1/."; 6788 else 6789 case $1 in #( 6790 -*)set "./$1";; 6791 esac; 6792 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( 6793 ???[sx]*):;;*)false;;esac;fi 6794 '\'' sh 6795 ' 6796 fi 6797 as_executable_p=$as_test_x 6814 6815 # as_fn_executable_p FILE 6816 # ----------------------- 6817 # Test if FILE is an executable regular file. 6818 as_fn_executable_p () 6819 { 6820 test -f "$1" && test -x "$1" 6821 } # as_fn_executable_p 6822 as_test_x='test -x' 6823 as_executable_p=as_fn_executable_p 6798 6824 6799 6825 # Sed expression to map a string onto a valid CPP name. … … 6817 6843 ac_log=" 6818 6844 This file was extended by cfa-cc $as_me 1.0.0.0, which was 6819 generated by GNU Autoconf 2.6 8. Invocation command line was6845 generated by GNU Autoconf 2.69. Invocation command line was 6820 6846 6821 6847 CONFIG_FILES = $CONFIG_FILES … … 6883 6909 ac_cs_version="\\ 6884 6910 cfa-cc config.status 1.0.0.0 6885 configured by $0, generated by GNU Autoconf 2.6 8,6911 configured by $0, generated by GNU Autoconf 2.69, 6886 6912 with options \\"\$ac_cs_config\\" 6887 6913 6888 Copyright (C) 201 0Free Software Foundation, Inc.6914 Copyright (C) 2012 Free Software Foundation, Inc. 6889 6915 This config.status script is free software; the Free Software Foundation 6890 6916 gives unlimited permission to copy, distribute and modify it." … … 6977 7003 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 6978 7004 if \$ac_cs_recheck; then 6979 set X '$SHELL''$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion7005 set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion 6980 7006 shift 6981 7007 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 … … 7619 7645 case $ac_file$ac_mode in 7620 7646 "depfiles":C) test x"$AMDEP_TRUE" != x"" || { 7621 # Autoconf 2.62quotes --file arguments for eval, but not when files7647 # Older Autoconf quotes --file arguments for eval, but not when files 7622 7648 # are listed without --file. Let's play safe and only enable the eval 7623 7649 # if we detect the quoting. … … 7632 7658 mf=`echo "$mf" | sed -e 's/:.*$//'` 7633 7659 # Check whether this is an Automake generated Makefile or not. 7634 # We used to match only the files named `Makefile.in', but7660 # We used to match only the files named 'Makefile.in', but 7635 7661 # some people rename them; so instead we look at the file content. 7636 7662 # Grep'ing the first line is not enough: some people post-process … … 7666 7692 fi 7667 7693 # Extract the definition of DEPDIR, am__include, and am__quote 7668 # from the Makefile without running `make'.7694 # from the Makefile without running 'make'. 7669 7695 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` 7670 7696 test -z "$DEPDIR" && continue 7671 7697 am__include=`sed -n 's/^am__include = //p' < "$mf"` 7672 test -z " am__include" && continue7698 test -z "$am__include" && continue 7673 7699 am__quote=`sed -n 's/^am__quote = //p' < "$mf"` 7674 # When using ansi2knr, U may be empty or an underscore; expand it7675 U=`sed -n 's/^U = //p' < "$mf"`7676 7700 # Find all dependency output files, they are included files with 7677 7701 # $(DEPDIR) in their names. We invoke sed twice because it is the … … 7680 7704 for file in `sed -n " 7681 7705 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ 7682 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do7706 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do 7683 7707 # Make sure the directory exists. 7684 7708 test -f "$dirpart/$file" && continue -
TabularUnified configure.ac ¶
rb1e63ac5 r208e5be 9 9 AM_SILENT_RULES([no]) 10 10 11 AM_INIT_AUTOMAKE 11 AM_INIT_AUTOMAKE([subdir-objects]) 12 12 AM_MAINTAINER_MODE(enable) # may require auto* software to be installed 13 13 -
TabularUnified doc/LaTeXmacros/lstlang.sty ¶
rb1e63ac5 r208e5be 8 8 %% Created On : Sat May 13 16:34:42 2017 9 9 %% Last Modified By : Peter A. Buhr 10 %% Last Modified On : Fri May 26 12:47:09201711 %% Update Count : 810 %% Last Modified On : Thu Jun 22 07:40:31 2017 11 %% Update Count : 10 12 12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 13 13 … … 116 116 _Atomic, coroutine, is_coroutine, is_monitor, is_thread, monitor, mutex, nomutex, 117 117 resume, suspend, thread, _Thread_local, yield}, 118 moredirectives={defined,include_next}% 118 119 } 119 120 -
TabularUnified doc/generic_types/mail ¶
rb1e63ac5 r208e5be 78 78 79 79 - OOPSLA'17 Submissions 80 81 82 83 From: "OOPSLA'17 HotCRP" <noreply@oopsla17.hotcrp.com> 84 Subject: [OOPSLA'17] Paper #20 "Generic and Tuple Types with Efficient..." 85 To: Peter Buhr <pabuhr@uwaterloo.ca> 86 Cc: jonathan.aldrich@cs.cmu.edu 87 Reply-To: jonathan.aldrich@cs.cmu.edu 88 Date: Wed, 7 Jun 2017 13:33:40 +0000 (UTC) 89 90 Dear Peter Buhr, 91 92 The author response period for OOPSLA has started, and will continue until 93 the end of June 10th (Anywhere on Earth). No email with a snapshot of your 94 reviews will be sent: you can see the live version of reviews (including 95 current updates) on the HotCRP system (links at the bottom). 96 97 An author response should aim to: 98 -correct reviewers' mistakes or misunderstandings 99 -offer new information only when this addresses reviewers' concerns (e.g., 100 "I wonder if A might work better..."; "we tried that, but...") 101 -answer explicit questions by the reviewers. The key questions will be in a 102 designated "Questions for Author Response" entry of a review. 103 104 Please keep in mind that an author response is *not* a "rebuttal". You are 105 not rebutting an opponent's arguments with your own, in front of an 106 audience that weighs both sets of arguments. Instead, your audience is the 107 same reviewers who offered the comments in the first place, and their 108 subjective weighing of different factors is very unlikely to change. 109 110 During author response, please keep in mind that the reviewers are still 111 unaware of author identity. If you need to refer to author-identifying 112 information during your response, the ideal course of action is to place it 113 at an external location and include a URL, with an explicit warning (e.g., 114 "WARNING: following this link will reveal author identity"). 115 116 As with all external resources, your response should be self-contained, 117 without consulting them. That is, the author-visible external URL is just 118 evidence, but the claim that this evidence supports should be clear in the 119 response text. For instance: 120 "we have received public feedback from the developers of X that confirm the 121 issue [supporting URL] (WARNING: following this link will reveal author 122 identity)" 123 124 Your paper's access information is below: 125 126 Title: Generic and Tuple Types with Efficient Dynamic Layout in C∀ 127 Paper site: https://oopsla17.hotcrp.com/paper/20 128 129 Use the link below to sign in to the site. 130 131 https://oopsla17.hotcrp.com/?email=pabuhr%40uwaterloo.ca 132 133 Please contact me <jonathan.aldrich@cs.cmu.edu> with any questions or 134 concerns. 135 136 Best Regards and wishes for a constructive response, 137 138 Jonathan Aldrich 139 140 141 142 From: "OOPSLA'17 HotCRP" <noreply@oopsla17.hotcrp.com> 143 Subject: [OOPSLA'17] Paper #20 "Generic and Tuple Types with Efficient..." 144 To: Peter Buhr <pabuhr@uwaterloo.ca> 145 Cc: jonathan.aldrich@cs.cmu.edu 146 Reply-To: jonathan.aldrich@cs.cmu.edu 147 Date: Tue, 20 Jun 2017 00:33:10 +0000 (UTC) 148 149 Dear Peter Buhr, 150 151 I regret to inform you that your submission to OOPSLA'17 listed below has not 152 been selected for the second phase of the review process. I understand this is 153 not welcome news but selection was very competitive: 157 of the 223 papers 154 submitted did not advance to the second phase. For several of these, there was 155 a clear impression that in the future they can evolve into some of the 156 strongest results of our community. 157 158 Title: Generic and Tuple Types with Efficient Dynamic Layout in C∀ 159 Paper site: https://oopsla17.hotcrp.com/paper/20 160 Login link: https://oopsla17.hotcrp.com/?email=pabuhr%40uwaterloo.ca 161 162 Below you will find reviews, as well as author-visible comments--the latter may 163 include further communication. I hope you will find the reviewers' feedback 164 useful. 165 166 Best Regards, 167 168 - Jonathan Aldrich <jonathan.aldrich@cs.cmu.edu>, for OOPSLA 2017 169 Submissions 170 171 172 173 =========================================================================== 174 OOPSLA'17 Review #20A 175 --------------------------------------------------------------------------- 176 Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀ 177 --------------------------------------------------------------------------- 178 179 Overall merit: C. Weak paper, though I will not fight 180 strongly against it 181 Confidence: X. I am an expert in this area 182 183 ===== Paper summary ===== 184 185 This presents an extension of the C programming language that tries to preserve the character of the existing language, while adding tuples and generics. Unlike C++ templates, generics preserve separate compilation. Types are represented at runtime, if needed, by size and alignment values, along with pointers to the code for any needed operators. A microbenchmark performance comparison is provided. 186 187 ===== Comments for author ===== 188 189 This is an interesting extension to C, that may be of interest to some C programmers. It generally seems to be fairly well engineered, and mostly respects C's design goals. 190 191 Unfortunately, there have been enough proposals for extended C dialects that this sort of design is tough to sell. And I don't think the evaluation really went far enough to make that case. 192 193 The ideas in the paper don't appear to be fundamentally new. The idea of passing types as runtime objects has certainly been explored before. An additional ancient reference is http://dl.acm.org/citation.cfm?doid=13310.13330. 194 195 There seems to be a new idea of minimally describing types using alignment and size attributes instead of (?) pointers to assignment operators and the like. But this scheme is not very well described. Notably, it is not clear how, say, a struct with atomic field or bit-fields would be described. 196 197 I wasn't quite clear on the extent to which operator overloading is supported. The MAX example appears to me like it would be quite controversial among C programmers. 198 199 It is not obvious that type inference here always converges. An outline of the algorithm would be useful. 200 201 Above all, this needs experience results from a more complete implementation. 202 203 Details: 204 205 Relying on TIOBE here seems a bit dubious. Since it counts web pages, and C isn't exactly new and hot, it may actually understate your case. 206 207 The print example seems a little simplistic, since it's not clear how it handles formatting. 208 209 "does not using the return type" 210 211 ===== Questions for authors’ response ===== 212 213 How are atomics, volatile, and bit-fields in structs handled? 214 215 =========================================================================== 216 OOPSLA'17 Review #20B 217 --------------------------------------------------------------------------- 218 Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀ 219 --------------------------------------------------------------------------- 220 221 Overall merit: D. Reject 222 Confidence: X. I am an expert in this area 223 224 ===== Paper summary ===== 225 226 The authors present an extension to C, adding universal polymorphism and tuples. These features are described in prose. There is an implementation, though this is not described in depth in the paper. There is a benchmark evaluation. 227 228 ===== Comments for author ===== 229 230 The paper is well-written and the concepts explained well. It is nice to see work in the low-level/C space - I believe that it is an area that has not been well-served by the OOPSLA community. My concerns with the paper are that the contribution is rather small and the concepts are not well-evaluated; specifically this is a language design paper and there is no attempt to evaluate the actual language design. 231 232 While it is reasonable to describe only a couple of features in a paper, I would then expect a detailed description of the implementation and/or a formalism with proven safety properties and a thorough evaluation of the design. For a paper which only describes the design of a language the bar is higher than two features - for example, a description of a 'large' language such as D or Rust, even then I would expect a stronger evaluation. 233 234 ## On the design of C-forall 235 236 There are some interesting points in the design of generics, notably the otype/dtype distinction. The design seems reasonable and follows what I would expect from other languages. The design for tuples is more unusual - the usual design of simple anonymous records with anonymous fields is extended with a mix of 'spread'ing, variadics, and implicit conversions. Importantly, the authors neither justify nor evaluate this departure - that is a severe omission for this paper. Furthermore, the only in-depth description of the implementation in the paper concerns tuples, and it seems to me that this is only interesting because of the unusual design - further reason for justifying it. 237 238 ## Evaluation 239 240 The paper evaluates the implementation of C-forall with (effectively) a single micro-benchmark. That benchmark seems to show that C-forall performs worse than C++ on every measure, but this is not really discussed. 241 242 A better performance evaluation would consist of multiple tests, both micro-benchmarks and realistic code and would test C-forall compared to alternatives (D, Rust, Go, etc.) not just C/C++. 243 244 However, performance is not the really interesting thing to test here. The authors propose a new language and while performance is an important consideration for systems languages, it is far from the most important. I would like to see the usability of the language tested with user studies of different kinds (various levels of skill-level and coding scenarios). The authors could also use case studies or programming idioms to compare programming in C-forall vs the alternatives (again, comparing with D, Rust, etc. is more interesting to me than C). 245 246 Finally, in designing C-forall, the authors make several assumptions about why C programmers use C. These should be backed up either with evaluation or citation. Statements in the paper certainly do not reflect my experience discussing language design with C programmers, and I would like to see them verified. 247 248 249 ## Related work 250 251 The related work section is broad and gives good descriptions of other languages. However, the comparisons between languages focus more on the high-level goals of the language. It would be more interesting to focus on the details of the languages - the comparisons between Cyclone, C++, Java, and C-forall generics are good, I would like to see more of this with D and Rust, which are the more modern alternatives to C-forall (for example, Rust's notion of Sized and ?Sized types seems similar to otypes/dtypes). 252 253 The related work is really missing any discussion of why the C-forall design choices are better than other languages. To clarify, I mean the specific design of generics and tuples, c.f., the suitability of the language in general because of garbage collection or learning difficulties. 254 255 =========================================================================== 256 OOPSLA'17 Review #20C 257 --------------------------------------------------------------------------- 258 Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀ 259 --------------------------------------------------------------------------- 260 261 Overall merit: D. Reject 262 Confidence: Z. I am not an expert; my evaluation 263 is that of an informed outsider 264 265 ===== Paper summary ===== 266 267 The paper presents two language features of "Cforall": generics and tuples. 268 269 ===== Comments for author ===== 270 271 The authors really need to talk about C++ as early as possible IMHO. That's the first thing that came to mind when reading the abstract: how is this different from C++? 272 273 Comparison with C++: 274 The main difference with C++ seems to be that Cforall favors separate compilation at the expense of runtime overhead while C++ systematically avoids any runtime overhead (at the expense of slow compilation times). C++ approach makes more sense IMHO. While it's true that people where using C for almost everything 30 years ago, that is just not true anymore. Most people writing C today are doing system programming, otherwise there would be using a higher level programming language (C#, Java etc ...). 275 Now, when doing system programming, one needs very fine grain control over the resources: memory layout, etc ... 276 It is pretty clear to me that the people writing that kind of code will favor generics that do not cost any overhead at runtime, otherwise they would be writing Java in the first place. 277 The authors need to better justify the runtime overhead, or give escape hatches for those who don't want to pay that cost at runtime. 278 They very often go back to the benefit of separate compilation, but that's not enough IMHO. Here is a proposal: why not have 2 modes, one called debug mode, used while developing the code, that would compile generics with a runtime overhead. Another, called production, that would unfold the world like C++ does? 279 280 About Tuples: 281 The section about tuples is too long. I would have spent more time explaining generics. 282 283 Feedback: 284 "This installation base" 285 Unclear what you mean by that. 286 287 "Prior projects ... but failed ..." 288 Hummm ... What about C++. 289 290 "... object-oriented or functional programming with garbage collection ..." 291 You are really mixing apples and oranges here. Many C programmers have nothing agains object-oriented features, not even functional programming (C++ 11 adds 292 a bunch of features proving my point), but it's clear that most of them feel very strongly against automated garbage collection. 293 294 "In many cases, C++ is often ..." 295 This sentence feels like it is coming out of nowhere. 296 297 "... the polymorphic runtime-cost ..." 298 Is there any way to avoid that overhead? It's true it will make the compiler faster, but there are cases where the user might not want to pay for 299 the overhead at runtime. Is there a way to force the compiler to specialize the code? 300 301 "... to write a type-safe Cforall wrapper malloc based ..." 302 That cannot be true in general. Malloc produces a pointer (of any type), given an integer (the size). 303 It looks like Cforall is assuming that the integer is the result of a call to sizeof (a good practice in C). 304 However, if that's the case, it should be explained. 305 306 "... allows variable overloading ..." 307 How are conflict resolved? In other words, what happens when two variables could be used? 308 309 "... reuses the generated structure declarations where appropriate." 310 This is too vague. 311 312 "... have multiple outcomes, some exceptional." 313 Humm, I would say these two things are distinct. Let's just way that this way of presenting things is strange, I woulds ay that a function can either 314 return one or multiple values or throw an exception. Not that some of the values returned are "exceptional". 315 316 "The type-resolver ..." 317 What's that? Type-checker? Type-inference? 318 319 "... applies C conversions." 320 Noooo! That's exactly what leads to very subtle bugs. Is there any way to stop those conversions from happening? 321 322 "The minimal cost ..." 323 In what regard? Runtime cost? How does the "resolver" know how expensive the conversions are? 324 325 "z = 10 // mass assignments" 326 That stuff is completely unreadable. Why not introduce a new operator? 327 328 "... roughly equivalent time ..." 329 Well, C++ looks faster to me. 330 331 "... is restricted because the resolution does not using ..." 332 Did you mean, does not use? 333 334 "... D and go are garbage collected ..." 335 Yes, but in D, the use of the GC is optional. 336 337 "... while respecting the talent and skill of C programmers." 338 Are you implying that other approaches are not? 339 340 "On the surface, the project may appear as a rehash of similar mechanisms in C++." 341 Absolutely. 342 343 "... integration with C and its programmers ..." 344 Bold claim. What makes you think you are integrated with programmers? Number of users? 345 346 "... inline annotation at polymorphic function call sites to create a template-specialization ..." 347 This should have been mentioned sooner. Plus conflating inlining and specialization is unfortunate. 348 Does "inline" also inline the function? Or does it only specialize the code? 349 If it also inline, that's a very unfortunate design. I might want to specialize the code, but without inlining ... 350 How do I specialize a recursive function? -
TabularUnified doc/proposals/references.md ¶
rb1e63ac5 r208e5be 17 17 derived rvalue types such as pointer types may include qualifiers; 18 18 `const int *` is a distinct type from `int *`, though the latter is safely 19 convert able to the former.19 convertible to the former. 20 20 In general, any number of qualifiers can be safely added to the 21 21 pointed-to-type of a pointer type, e.g. `int *` converts safely to … … 23 23 `const volatile int *`. 24 24 25 Since lvalues are preci cely "addressable objects", in C, only lvalues can be25 Since lvalues are precisely "addressable objects", in C, only lvalues can be 26 26 used as the operand of the `&` address-of operator. 27 27 Similarly, only modifiable lvalues may be used as the assigned-to … … 147 147 call "lvalue of type `T`" as `T&`. 148 148 There's also an obvious argument that lvalues of a (possibly-qualified) type 149 `T` should be convert able to references of type `T`, where `T` is also149 `T` should be convertible to references of type `T`, where `T` is also 150 150 so-qualified (e.g. lvalue `int` to `int&`, lvalue `const char` to 151 151 `const char&`). 152 152 By similar arguments to pointer types, qualifiers should be addable to the 153 153 referred-to type of a reference (e.g. `int&` to `const int&`). 154 As a note, since pointer arithmetic is explic tly not defined on `T&`,154 As a note, since pointer arithmetic is explicitly not defined on `T&`, 155 155 `restrict T&` should be allowable and would have alias-analysis rules that 156 156 are actually comprehensible to mere mortals. -
TabularUnified doc/user/Makefile ¶
rb1e63ac5 r208e5be 12 12 13 13 FIGURES = ${addsuffix .tex, \ 14 EHMHierarchy \ 14 15 Cdecl \ 15 16 pointer1 \ -
TabularUnified doc/user/user.tex ¶
rb1e63ac5 r208e5be 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Fri Jun 16 12:00:01201714 %% Update Count : 2 43313 %% Last Modified On : Sun Jul 2 09:49:56 2017 14 %% Update Count : 2503 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 25 25 \usepackage{textcomp} 26 26 \usepackage[latin1]{inputenc} 27 % Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore28 % removes it as a variable-name character so keyworks in variables are highlighted29 \DeclareTextCommandDefault{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}30 31 27 32 28 \usepackage{fullpage,times,comment} … … 48 44 \renewcommand{\UrlFont}{\small\sf} 49 45 46 % Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore 47 % removes it as a variable-name character so keywords in variables are highlighted. MUST APPEAR 48 % AFTER HYPERREF. 49 \renewcommand{\_}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.075ex}}} 50 \renewcommand{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.075ex}}} 51 50 52 \setlength{\topmargin}{-0.45in} % move running title into header 51 53 \setlength{\headsep}{0.25in} … … 110 112 \renewcommand{\subsectionmark}[1]{\markboth{\thesubsection\quad #1}{\thesubsection\quad #1}} 111 113 \pagenumbering{roman} 112 %\linenumbers % comment out to turn off line numbering114 \linenumbers % comment out to turn off line numbering 113 115 114 116 \maketitle … … 477 479 #endif // ! otype 478 480 479 # include_next<bfd.h> §\C{// must have internal check for multiple expansion}§481 #®include_next® <bfd.h> §\C{// must have internal check for multiple expansion}§ 480 482 481 483 #if defined( otype ) && defined( __CFA_BFD_H__ ) §\C{// reset only if set}§ … … 487 489 \label{f:InterpositionHeaderFile} 488 490 \end{figure} 489 490 491 \section{Declarations}492 \label{s:Declarations}493 494 C declaration syntax is notoriously confusing and error prone.495 For example, many C programmers are confused by a declaration as simple as:496 \begin{quote2}497 \begin{tabular}{@{}ll@{}}498 \begin{cfa}499 int * x[5]500 \end{cfa}501 &502 \raisebox{-0.75\totalheight}{\input{Cdecl}}503 \end{tabular}504 \end{quote2}505 Is this an array of 5 pointers to integers or a \Index{pointer} to an array of 5 integers?506 The fact this declaration is unclear to many C programmers means there are \Index{productivity} and \Index{safety} issues even for basic programs.507 Another example of confusion results from the fact that a routine name and its parameters are embedded within the return type, mimicking the way the return value is used at the routine's call site.508 For example, a routine returning a \Index{pointer} to an array of integers is defined and used in the following way:509 \begin{cfa}510 int ®(*®f®())[®5®]® {...}; §\C{definition}§511 ... ®(*®f®())[®3®]® += 1; §\C{usage}§512 \end{cfa}513 Essentially, the return type is wrapped around the routine name in successive layers (like an \Index{onion}).514 While attempting to make the two contexts consistent is a laudable goal, it has not worked out in practice.515 516 \CFA provides its own type, variable and routine declarations, using a different syntax.517 The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right of the base type.518 In the following example, \R{red} is the base type and \B{blue} is qualifiers.519 The \CFA declarations move the qualifiers to the left of the base type, \ie move the blue to the left of the red, while the qualifiers have the same meaning but are ordered left to right to specify a variable's type.520 \begin{quote2}521 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}522 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\523 \begin{cfa}524 ß[5] *ß ®int® x1;525 ß* [5]ß ®int® x2;526 ß[* [5] int]ß f®( int p )®;527 \end{cfa}528 &529 \begin{cfa}530 ®int® ß*ß x1 ß[5]ß;531 ®int® ß(*ßx2ß)[5]ß;532 ßint (*ßf®( int p )®ß)[5]ß;533 \end{cfa}534 \end{tabular}535 \end{quote2}536 The only exception is \Index{bit field} specification, which always appear to the right of the base type.537 % Specifically, the character ©*© is used to indicate a pointer, square brackets ©[©\,©]© are used to represent an array or function return value, and parentheses ©()© are used to indicate a routine parameter.538 However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list.539 For instance, variables ©x© and ©y© of type \Index{pointer} to integer are defined in \CFA as follows:540 \begin{quote2}541 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}542 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\543 \begin{cfa}544 ®*® int x, y;545 \end{cfa}546 &547 \begin{cfa}548 int ®*®x, ®*®y;549 \end{cfa}550 \end{tabular}551 \end{quote2}552 The downside of this semantics is the need to separate regular and \Index{pointer} declarations:553 \begin{quote2}554 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}555 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\556 \begin{cfa}557 ®*® int x;558 int y;559 \end{cfa}560 &561 \begin{cfa}562 int ®*®x, y;563 564 \end{cfa}565 \end{tabular}566 \end{quote2}567 which is \Index{prescribing} a safety benefit.568 Other examples are:569 \begin{quote2}570 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}571 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\572 \begin{cfa}573 [ 5 ] int z;574 [ 5 ] * char w;575 * [ 5 ] double v;576 struct s {577 int f0:3;578 * int f1;579 [ 5 ] * int f2;580 };581 \end{cfa}582 &583 \begin{cfa}584 int z[ 5 ];585 char * w[ 5 ];586 double (* v)[ 5 ];587 struct s {588 int f0:3;589 int * f1;590 int * f2[ 5 ]591 };592 \end{cfa}593 &594 \begin{cfa}595 // array of 5 integers596 // array of 5 pointers to char597 // pointer to array of 5 doubles598 599 // common bit field syntax600 601 602 603 \end{cfa}604 \end{tabular}605 \end{quote2}606 607 All type qualifiers, \eg ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, \eg:608 \begin{quote2}609 \begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}610 \multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}} \\611 \begin{cfa}612 const * const int x;613 const * [ 5 ] const int y;614 \end{cfa}615 &616 \begin{cfa}617 int const * const x;618 const int (* const y)[ 5 ]619 \end{cfa}620 &621 \begin{cfa}622 // const pointer to const integer623 // const pointer to array of 5 const integers624 \end{cfa}625 \end{tabular}626 \end{quote2}627 All declaration qualifiers, \eg ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}628 The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} \eg:629 \begin{quote2}630 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}631 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\632 \begin{cfa}633 extern [ 5 ] int x;634 static * const int y;635 \end{cfa}636 &637 \begin{cfa}638 int extern x[ 5 ];639 const int static * y;640 \end{cfa}641 &642 \begin{cfa}643 // externally visible array of 5 integers644 // internally visible pointer to constant int645 \end{cfa}646 \end{tabular}647 \end{quote2}648 649 The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-routine ©sizeof©:650 \begin{quote2}651 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}652 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\653 \begin{cfa}654 y = (®* int®)x;655 i = sizeof(®[ 5 ] * int®);656 \end{cfa}657 &658 \begin{cfa}659 y = (®int *®)x;660 i = sizeof(®int * [ 5 ]®);661 \end{cfa}662 \end{tabular}663 \end{quote2}664 665 Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration.666 Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style.667 Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems.668 669 670 \section{Pointer/Reference}671 672 C provides a \newterm{pointer type};673 \CFA adds a \newterm{reference type}.674 These types may be derived from an object or routine type, called the \newterm{referenced type}.675 Objects of these types contain an \newterm{address}, which is normally a location in memory, but may also address memory-mapped registers in hardware devices.676 An integer constant expression with the value 0, or such an expression cast to type ©void *©, is called a \newterm{null-pointer constant}.\footnote{677 One way to conceptualize the null pointer is that no variable is placed at this address, so the null-pointer address can be used to denote an uninitialized pointer/reference object;678 \ie the null pointer is guaranteed to compare unequal to a pointer to any object or routine.}679 An address is \newterm{sound}, if it points to a valid memory location in scope, \ie within the program's execution-environment and has not been freed.680 Dereferencing an \newterm{unsound} address, including the null pointer, is \Index{undefined}, often resulting in a \Index{memory fault}.681 682 A program \newterm{object} is a region of data storage in the execution environment, the contents of which can represent values.683 In most cases, objects are located in memory at an address, and the variable name for an object is an implicit address to the object generated by the compiler and automatically dereferenced, as in:684 \begin{quote2}685 \begin{tabular}{@{}ll@{\hspace{2em}}l@{}}686 \begin{cfa}687 int x;688 x = 3;689 int y;690 y = x;691 \end{cfa}692 &693 \raisebox{-0.45\totalheight}{\input{pointer1}}694 &695 \begin{cfa}696 int * ®const® x = (int *)100697 *x = 3; // implicit dereference698 int * ®const® y = (int *)104;699 *y = *x; // implicit dereference700 \end{cfa}701 \end{tabular}702 \end{quote2}703 where the right example is how the compiler logically interprets the variables in the left example.704 Since a variable name only points to one address during its lifetime, it is an \Index{immutable} \Index{pointer};705 hence, the implicit type of pointer variables ©x© and ©y© are constant pointers in the compiler interpretation.706 In general, variable addresses are stored in instructions instead of loaded from memory, and hence may not occupy storage.707 These approaches are contrasted in the following:708 \begin{quote2}709 \begin{tabular}{@{}l|l@{}}710 \multicolumn{1}{c|}{explicit variable address} & \multicolumn{1}{c}{implicit variable address} \\711 \hline712 \begin{cfa}713 lda r1,100 // load address of x714 ld r2,(r1) // load value of x715 lda r3,104 // load address of y716 st r2,(r3) // store x into y717 \end{cfa}718 &719 \begin{cfa}720 721 ld r2,(100) // load value of x722 723 st r2,(104) // store x into y724 \end{cfa}725 \end{tabular}726 \end{quote2}727 Finally, the immutable nature of a variable's address and the fact that there is no storage for the variable pointer means pointer assignment\index{pointer!assignment}\index{assignment!pointer} is impossible.728 Therefore, the expression ©x = y© has only one meaning, ©*x = *y©, \ie manipulate values, which is why explicitly writing the dereferences is unnecessary even though it occurs implicitly as part of \Index{instruction decoding}.729 730 A \Index{pointer}/\Index{reference} object is a generalization of an object variable-name, \ie a mutable address that can point to more than one memory location during its lifetime.731 (Similarly, an integer variable can contain multiple integer literals during its lifetime versus an integer constant representing a single literal during its lifetime, and like a variable name, may not occupy storage if the literal is embedded directly into instructions.)732 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, \eg:733 \begin{quote2}734 \begin{tabular}{@{}l@{\hspace{2em}}l@{}}735 \begin{cfa}736 int x, y, ®*® p1, ®*® p2, ®**® p3;737 p1 = ®&®x; // p1 points to x738 p2 = p1; // p2 points to x739 p1 = ®&®y; // p1 points to y740 p3 = &p2; // p3 points to p2741 \end{cfa}742 &743 \raisebox{-0.5\totalheight}{\input{pointer2.pstex_t}}744 \end{tabular}745 \end{quote2}746 747 Notice, an address has a \Index{duality}\index{address!duality}: a location in memory or the value at that location.748 In many cases, a compiler might be able to infer the best meaning for these two cases.749 For example, \Index*{Algol68}~\cite{Algol68} infers pointer dereferencing to select the best meaning for each pointer usage750 \begin{cfa}751 p2 = p1 + x; §\C{// compiler infers *p2 = *p1 + x;}§752 \end{cfa}753 Algol68 infers the following dereferencing ©*p2 = *p1 + x©, because adding the arbitrary integer value in ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation.754 Unfortunately, automatic dereferencing does not work in all cases, and so some mechanism is necessary to fix incorrect choices.755 756 Rather than inferring dereference, most programming languages pick one implicit dereferencing semantics, and the programmer explicitly indicates the other to resolve address-duality.757 In C, objects of pointer type always manipulate the pointer object's address:758 \begin{cfa}759 p1 = p2; §\C{// p1 = p2\ \ rather than\ \ *p1 = *p2}§760 p2 = p1 + x; §\C{// p2 = p1 + x\ \ rather than\ \ *p2 = *p1 + x}§761 \end{cfa}762 even though the assignment to ©p2© is likely incorrect, and the programmer probably meant:763 \begin{cfa}764 p1 = p2; §\C{// pointer address assignment}§765 ®*®p2 = ®*®p1 + x; §\C{// pointed-to value assignment / operation}§766 \end{cfa}767 The C semantics work well for situations where manipulation of addresses is the primary meaning and data is rarely accessed, such as storage management (©malloc©/©free©).768 769 However, in most other situations, the pointed-to value is requested more often than the pointer address.770 \begin{cfa}771 *p2 = ((*p1 + *p2) * (**p3 - *p1)) / (**p3 - 15);772 \end{cfa}773 In this case, it is tedious to explicitly write the dereferencing, and error prone when pointer arithmetic is allowed.774 It is better to have the compiler generate the dereferencing and have no implicit pointer arithmetic:775 \begin{cfa}776 p2 = ((p1 + p2) * (p3 - p1)) / (p3 - 15);777 \end{cfa}778 779 To support this common case, a reference type is introduced in \CFA, denoted by ©&©, which is the opposite dereference semantics to a pointer type, making the value at the pointed-to location the implicit semantics for dereferencing (similar but not the same as \CC \Index{reference type}s).780 \begin{cfa}781 int x, y, ®&® r1, ®&® r2, ®&&® r3;782 ®&®r1 = &x; §\C{// r1 points to x}§783 ®&®r2 = &r1; §\C{// r2 points to x}§784 ®&®r1 = &y; §\C{// r1 points to y}§785 ®&&®r3 = ®&®&r2; §\C{// r3 points to r2}§786 r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15); §\C{// implicit dereferencing}§787 \end{cfa}788 Except for auto-dereferencing by the compiler, this reference example is the same as the previous pointer example.789 Hence, a reference behaves like the variable name for the current variable it is pointing-to.790 One way to conceptualize a reference is via a rewrite rule, where the compiler inserts a dereference operator before the reference variable for each reference qualifier in a declaration, so the previous example becomes:791 \begin{cfa}792 ®*®r2 = ((®*®r1 + ®*®r2) ®*® (®**®r3 - ®*®r1)) / (®**®r3 - 15);793 \end{cfa}794 When a reference operation appears beside a dereference operation, \eg ©&*©, they cancel out.795 However, in C, the cancellation always yields a value (\Index{rvalue}).\footnote{796 The unary ©&© operator yields the address of its operand.797 If the operand has type ``type'', the result has type ``pointer to type''.798 If the operand is the result of a unary ©*© operator, neither that operator nor the ©&© operator is evaluated and the result is as if both were omitted, except that the constraints on the operators still apply and the result is not an lvalue.~\cite[\S~6.5.3.2--3]{C11}}799 For a \CFA reference type, the cancellation on the left-hand side of assignment leaves the reference as an address (\Index{lvalue}):800 \begin{cfa}801 (&®*®)r1 = &x; §\C{// (\&*) cancel giving address in r1 not variable pointed-to by r1}§802 \end{cfa}803 Similarly, the address of a reference can be obtained for assignment or computation (\Index{rvalue}):804 \begin{cfa}805 (&(&®*®)®*®)r3 = &(&®*®)r2; §\C{// (\&*) cancel giving address in r2, (\&(\&*)*) cancel giving address in r3}§806 \end{cfa}807 Cancellation\index{cancellation!pointer/reference}\index{pointer!cancellation} works to arbitrary depth.808 809 Fundamentally, pointer and reference objects are functionally interchangeable because both contain addresses.810 \begin{cfa}811 int x, *p1 = &x, **p2 = &p1, ***p3 = &p2,812 &r1 = x, &&r2 = r1, &&&r3 = r2;813 ***p3 = 3; §\C{// change x}§814 r3 = 3; §\C{// change x, ***r3}§815 **p3 = ...; §\C{// change p1}§816 &r3 = ...; §\C{// change r1, (\&*)**r3, 1 cancellation}§817 *p3 = ...; §\C{// change p2}§818 &&r3 = ...; §\C{// change r2, (\&(\&*)*)*r3, 2 cancellations}§819 &&&r3 = p3; §\C{// change r3 to p3, (\&(\&(\&*)*)*)r3, 3 cancellations}§820 \end{cfa}821 Furthermore, both types are equally performant, as the same amount of dereferencing occurs for both types.822 Therefore, the choice between them is based solely on whether the address is dereferenced frequently or infrequently, which dictates the amount of implicit dereferencing aid from the compiler.823 824 As for a pointer type, a reference type may have qualifiers:825 \begin{cfa}826 const int cx = 5; §\C{// cannot change cx;}§827 const int & cr = cx; §\C{// cannot change what cr points to}§828 ®&®cr = &cx; §\C{// can change cr}§829 cr = 7; §\C{// error, cannot change cx}§830 int & const rc = x; §\C{// must be initialized}§831 ®&®rc = &x; §\C{// error, cannot change rc}§832 const int & const crc = cx; §\C{// must be initialized}§833 crc = 7; §\C{// error, cannot change cx}§834 ®&®crc = &cx; §\C{// error, cannot change crc}§835 \end{cfa}836 Hence, for type ©& const©, there is no pointer assignment, so ©&rc = &x© is disallowed, and \emph{the address value cannot be the null pointer unless an arbitrary pointer is coerced\index{coercion} into the reference}:837 \begin{cfa}838 int & const cr = *0; §\C{// where 0 is the int * zero}§839 \end{cfa}840 Note, constant reference-types do not prevent \Index{addressing errors} because of explicit storage-management:841 \begin{cfa}842 int & const cr = *malloc();843 cr = 5;844 free( &cr );845 cr = 7; §\C{// unsound pointer dereference}§846 \end{cfa}847 848 The position of the ©const© qualifier \emph{after} the pointer/reference qualifier causes confuse for C programmers.849 The ©const© qualifier cannot be moved before the pointer/reference qualifier for C style-declarations;850 \CFA-style declarations (see \VRef{s:Declarations}) attempt to address this issue:851 \begin{quote2}852 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}853 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\854 \begin{cfa}855 ®const® * ®const® * const int ccp;856 ®const® & ®const® & const int ccr;857 \end{cfa}858 &859 \begin{cfa}860 const int * ®const® * ®const® ccp;861 862 \end{cfa}863 \end{tabular}864 \end{quote2}865 where the \CFA declaration is read left-to-right.866 867 Finally, like pointers, references are usable and composable with other type operators and generators.868 \begin{cfa}869 int w, x, y, z, & ar[3] = { x, y, z }; §\C{// initialize array of references}§870 &ar[1] = &w; §\C{// change reference array element}§871 typeof( ar[1] ) p; §\C{// (gcc) is int, i.e., the type of referenced object}§872 typeof( &ar[1] ) q; §\C{// (gcc) is int \&, i.e., the type of reference}§873 sizeof( ar[1] ) == sizeof( int ); §\C{// is true, i.e., the size of referenced object}§874 sizeof( &ar[1] ) == sizeof( int *) §\C{// is true, i.e., the size of a reference}§875 \end{cfa}876 877 In contrast to \CFA reference types, \Index*[C++]{\CC{}}'s reference types are all ©const© references, preventing changes to the reference address, so only value assignment is possible, which eliminates half of the \Index{address duality}.878 Also, \CC does not allow \Index{array}s\index{array!reference} of reference\footnote{879 The reason for disallowing arrays of reference is unknown, but possibly comes from references being ethereal (like a textual macro), and hence, replaceable by the referant object.}880 \Index*{Java}'s reference types to objects (all Java objects are on the heap) are like C pointers, which always manipulate the address, and there is no (bit-wise) object assignment, so objects are explicitly cloned by shallow or deep copying, which eliminates half of the address duality.881 882 883 \subsection{Initialization}884 885 \Index{Initialization} is different than \Index{assignment} because initialization occurs on the empty (uninitialized) storage on an object, while assignment occurs on possibly initialized storage of an object.886 There are three initialization contexts in \CFA: declaration initialization, argument/parameter binding, return/temporary binding.887 Because the object being initialized has no value, there is only one meaningful semantics with respect to address duality: it must mean address as there is no pointed-to value.888 In contrast, the left-hand side of assignment has an address that has a duality.889 Therefore, for pointer/reference initialization, the initializing value must be an address not a value.890 \begin{cfa}891 int * p = &x; §\C{// assign address of x}§892 ®int * p = x;® §\C{// assign value of x}§893 int & r = x; §\C{// must have address of x}§894 \end{cfa}895 Like the previous example with C pointer-arithmetic, it is unlikely assigning the value of ©x© into a pointer is meaningful (again, a warning is usually given).896 Therefore, for safety, this context requires an address, so it is superfluous to require explicitly taking the address of the initialization object, even though the type is incorrect.897 Note, this is strictly a convenience and safety feature for a programmer.898 Hence, \CFA allows ©r© to be assigned ©x© because it infers a reference for ©x©, by implicitly inserting a address-of operator, ©&©, and it is an error to put an ©&© because the types no longer match due to the implicit dereference.899 Unfortunately, C allows ©p© to be assigned with ©&x© (address) or ©x© (value), but most compilers warn about the latter assignment as being potentially incorrect.900 Similarly, when a reference type is used for a parameter/return type, the call-site argument does not require a reference operator for the same reason.901 \begin{cfa}902 int & f( int & r ); §\C{// reference parameter and return}§903 z = f( x ) + f( y ); §\C{// reference operator added, temporaries needed for call results}§904 \end{cfa}905 Within routine ©f©, it is possible to change the argument by changing the corresponding parameter, and parameter ©r© can be locally reassigned within ©f©.906 Since operator routine ©?+?© takes its arguments by value, the references returned from ©f© are used to initialize compiler generated temporaries with value semantics that copy from the references.907 \begin{cfa}908 int temp1 = f( x ), temp2 = f( y );909 z = temp1 + temp2;910 \end{cfa}911 This \Index{implicit referencing} is crucial for reducing the syntactic burden for programmers when using references;912 otherwise references have the same syntactic burden as pointers in these contexts.913 914 When a pointer/reference parameter has a ©const© value (immutable), it is possible to pass literals and expressions.915 \begin{cfa}916 void f( ®const® int & cr );917 void g( ®const® int * cp );918 f( 3 ); g( ®&®3 );919 f( x + y ); g( ®&®(x + y) );920 \end{cfa}921 Here, the compiler passes the address to the literal 3 or the temporary for the expression ©x + y©, knowing the argument cannot be changed through the parameter.922 The ©&© before the constant/expression for the pointer-type parameter (©g©) is a \CFA extension necessary to type match and is a common requirement before a variable in C (\eg ©scanf©).923 Importantly, ©&3© may not be equal to ©&3©, where the references occur across calls because the temporaries maybe different on each call.924 925 \CFA \emph{extends} this semantics to a mutable pointer/reference parameter, and the compiler implicitly creates the necessary temporary (copying the argument), which is subsequently pointed-to by the reference parameter and can be changed.\footnote{926 If whole program analysis is possible, and shows the parameter is not assigned, \ie it is ©const©, the temporary is unnecessary.}927 \begin{cfa}928 void f( int & r );929 void g( int * p );930 f( 3 ); g( ®&®3 ); §\C{// compiler implicit generates temporaries}§931 f( x + y ); g( ®&®(x + y) ); §\C{// compiler implicit generates temporaries}§932 \end{cfa}933 Essentially, there is an implicit \Index{rvalue} to \Index{lvalue} conversion in this case.\footnote{934 This conversion attempts to address the \newterm{const hell} problem, when the innocent addition of a ©const© qualifier causes a cascade of type failures, requiring an unknown number of additional ©const© qualifiers, until it is discovered a ©const© qualifier cannot be added and all the ©const© qualifiers must be removed.}935 The implicit conversion allows seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call.936 937 %\CFA attempts to handle pointers and references in a uniform, symmetric manner.938 Finally, C handles \Index{routine object}s in an inconsistent way.939 A routine object is both a pointer and a reference (\Index{particle and wave}).940 \begin{cfa}941 void f( int i );942 void (*fp)( int ); §\C{// routine pointer}§943 fp = f; §\C{// reference initialization}§944 fp = &f; §\C{// pointer initialization}§945 fp = *f; §\C{// reference initialization}§946 fp(3); §\C{// reference invocation}§947 (*fp)(3); §\C{// pointer invocation}§948 \end{cfa}949 While C's treatment of routine objects has similarity to inferring a reference type in initialization contexts, the examples are assignment not initialization, and all possible forms of assignment are possible (©f©, ©&f©, ©*f©) without regard for type.950 Instead, a routine object should be referenced by a ©const© reference:951 \begin{cfa}952 ®const® void (®&® fr)( int ) = f; §\C{// routine reference}§953 fr = ... §\C{// error, cannot change code}§954 &fr = ...; §\C{// changing routine reference}§955 fr( 3 ); §\C{// reference call to f}§956 (*fr)(3); §\C{// error, incorrect type}§957 \end{cfa}958 because the value of the routine object is a routine literal, \ie the routine code is normally immutable during execution.\footnote{959 Dynamic code rewriting is possible but only in special circumstances.}960 \CFA allows this additional use of references for routine objects in an attempt to give a more consistent meaning for them.961 962 963 \subsection{Address-of Semantics}964 965 In C, ©&E© is an rvalue for any expression ©E©.966 \CFA extends the ©&© (address-of) operator as follows:967 \begin{itemize}968 \item969 if ©R© is an \Index{rvalue} of type ©T &$_1$...&$_r$© where $r \ge 1$ references (©&© symbols) than ©&R© has type ©T ®*®&$_{\color{red}2}$...&$_{\color{red}r}$©, \ie ©T© pointer with $r-1$ references (©&© symbols).970 971 \item972 if ©L© is an \Index{lvalue} of type ©T &$_1$...&$_l$© where $l \ge 0$ references (©&© symbols) then ©&L© has type ©T ®*®&$_{\color{red}1}$...&$_{\color{red}l}$©, \ie ©T© pointer with $l$ references (©&© symbols).973 \end{itemize}974 The following example shows the first rule applied to different \Index{rvalue} contexts:975 \begin{cfa}976 int x, * px, ** ppx, *** pppx, **** ppppx;977 int & rx = x, && rrx = rx, &&& rrrx = rrx ;978 x = rrrx; // rrrx is an lvalue with type int &&& (equivalent to x)979 px = &rrrx; // starting from rrrx, &rrrx is an rvalue with type int *&&& (&x)980 ppx = &&rrrx; // starting from &rrrx, &&rrrx is an rvalue with type int **&& (&rx)981 pppx = &&&rrrx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (&rrx)982 ppppx = &&&&rrrx; // starting from &&&rrrx, &&&&rrrx is an rvalue with type int **** (&rrrx)983 \end{cfa}984 The following example shows the second rule applied to different \Index{lvalue} contexts:985 \begin{cfa}986 int x, * px, ** ppx, *** pppx;987 int & rx = x, && rrx = rx, &&& rrrx = rrx ;988 rrrx = 2; // rrrx is an lvalue with type int &&& (equivalent to x)989 &rrrx = px; // starting from rrrx, &rrrx is an rvalue with type int *&&& (rx)990 &&rrrx = ppx; // starting from &rrrx, &&rrrx is an rvalue with type int **&& (rrx)991 &&&rrrx = pppx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (rrrx)992 \end{cfa}993 994 995 \subsection{Conversions}996 997 C provides a basic implicit conversion to simplify variable usage:998 \begin{enumerate}999 \setcounter{enumi}{-1}1000 \item1001 lvalue to rvalue conversion: ©cv T© converts to ©T©, which allows implicit variable dereferencing.1002 \begin{cfa}1003 int x;1004 x + 1; // lvalue variable (int) converts to rvalue for expression1005 \end{cfa}1006 An rvalue has no type qualifiers (©cv©), so the lvalue qualifiers are dropped.1007 \end{enumerate}1008 \CFA provides three new implicit conversion for reference types to simplify reference usage.1009 \begin{enumerate}1010 \item1011 reference to rvalue conversion: ©cv T &© converts to ©T©, which allows implicit reference dereferencing.1012 \begin{cfa}1013 int x, &r = x, f( int p );1014 x = ®r® + f( ®r® ); // lvalue reference converts to rvalue1015 \end{cfa}1016 An rvalue has no type qualifiers (©cv©), so the reference qualifiers are dropped.1017 1018 \item1019 lvalue to reference conversion: \lstinline[deletekeywords={lvalue}]@lvalue-type cv1 T@ converts to ©cv2 T &©, which allows implicitly converting variables to references.1020 \begin{cfa}1021 int x, &r = ®x®, f( int & p ); // lvalue variable (int) convert to reference (int &)1022 f( ®x® ); // lvalue variable (int) convert to reference (int &)1023 \end{cfa}1024 Conversion can restrict a type, where ©cv1© $\le$ ©cv2©, \eg passing an ©int© to a ©const volatile int &©, which has low cost.1025 Conversion can expand a type, where ©cv1© $>$ ©cv2©, \eg passing a ©const volatile int© to an ©int &©, which has high cost (\Index{warning});1026 furthermore, if ©cv1© has ©const© but not ©cv2©, a temporary variable is created to preserve the immutable lvalue.1027 1028 \item1029 rvalue to reference conversion: ©T© converts to ©cv T &©, which allows binding references to temporaries.1030 \begin{cfa}1031 int x, & f( int & p );1032 f( ®x + 3® ); // rvalue parameter (int) implicitly converts to lvalue temporary reference (int &)1033 ®&f®(...) = &x; // rvalue result (int &) implicitly converts to lvalue temporary reference (int &)1034 \end{cfa}1035 In both case, modifications to the temporary are inaccessible (\Index{warning}).1036 Conversion expands the temporary-type with ©cv©, which is low cost since the temporary is inaccessible.1037 \end{enumerate}1038 1039 1040 \begin{comment}1041 From: Richard Bilson <rcbilson@gmail.com>1042 Date: Wed, 13 Jul 2016 01:58:58 +00001043 Subject: Re: pointers / references1044 To: "Peter A. Buhr" <pabuhr@plg2.cs.uwaterloo.ca>1045 1046 As a general comment I would say that I found the section confusing, as you move back and forth1047 between various real and imagined programming languages. If it were me I would rewrite into two1048 subsections, one that specifies precisely the syntax and semantics of reference variables and1049 another that provides the rationale.1050 1051 I don't see any obvious problems with the syntax or semantics so far as I understand them. It's not1052 obvious that the description you're giving is complete, but I'm sure you'll find the special cases1053 as you do the implementation.1054 1055 My big gripes are mostly that you're not being as precise as you need to be in your terminology, and1056 that you say a few things that aren't actually true even though I generally know what you mean.1057 1058 20 C provides a pointer type; CFA adds a reference type. Both types contain an address, which is normally a1059 21 location in memory.1060 1061 An address is not a location in memory; an address refers to a location in memory. Furthermore it1062 seems weird to me to say that a type "contains" an address; rather, objects of that type do.1063 1064 21 Special addresses are used to denote certain states or access co-processor memory. By1065 22 convention, no variable is placed at address 0, so addresses like 0, 1, 2, 3 are often used to denote no-value1066 23 or other special states.1067 1068 This isn't standard C at all. There has to be one null pointer representation, but it doesn't have1069 to be a literal zero representation and there doesn't have to be more than one such representation.1070 1071 23 Often dereferencing a special state causes a memory fault, so checking is necessary1072 24 during execution.1073 1074 I don't see the connection between the two clauses here. I feel like if a bad pointer will not cause1075 a memory fault then I need to do more checking, not less.1076 1077 24 If the programming language assigns addresses, a program's execution is sound, \ie all1078 25 addresses are to valid memory locations.1079 1080 You haven't said what it means to "assign" an address, but if I use my intuitive understanding of1081 the term I don't see how this can be true unless you're assuming automatic storage management.1082 1083 1 Program variables are implicit pointers to memory locations generated by the compiler and automatically1084 2 dereferenced, as in:1085 1086 There is no reason why a variable needs to have a location in memory, and indeed in a typical1087 program many variables will not. In standard terminology an object identifier refers to data in the1088 execution environment, but not necessarily in memory.1089 1090 13 A pointer/reference is a generalization of a variable name, \ie a mutable address that can point to more1091 14 than one memory location during its lifetime.1092 1093 I feel like you're off the reservation here. In my world there are objects of pointer type, which1094 seem to be what you're describing here, but also pointer values, which can be stored in an object of1095 pointer type but don't necessarily have to be. For example, how would you describe the value denoted1096 by "&main" in a C program? I would call it a (function) pointer, but that doesn't satisfy your1097 definition.1098 1099 16 not occupy storage as the literal is embedded directly into instructions.) Hence, a pointer occupies memory1100 17 to store its current address, and the pointer's value is loaded by dereferencing, e.g.:1101 1102 As with my general objection regarding your definition of variables, there is no reason why a1103 pointer variable (object of pointer type) needs to occupy memory.1104 1105 21 p2 = p1 + x; // compiler infers *p2 = *p1 + x;1106 1107 What language are we in now?1108 1109 24 pointer usage. However, in C, the following cases are ambiguous, especially with pointer arithmetic:1110 25 p1 = p2; // p1 = p2 or *p1 = *p21111 1112 This isn't ambiguous. it's defined to be the first option.1113 1114 26 p1 = p1 + 1; // p1 = p1 + 1 or *p1 = *p1 + 11115 1116 Again, this statement is not ambiguous.1117 1118 13 example. Hence, a reference behaves like the variable name for the current variable it is pointing-to. The1119 14 simplest way to understand a reference is to imagine the compiler inserting a dereference operator before1120 15 the reference variable for each reference qualifier in a declaration, e.g.:1121 1122 It's hard for me to understand who the audience for this part is. I think a practical programmer is1123 likely to be satisfied with "a reference behaves like the variable name for the current variable it1124 is pointing-to," maybe with some examples. Your "simplest way" doesn't strike me as simpler than1125 that. It feels like you're trying to provide a more precise definition for the semantics of1126 references, but it isn't actually precise enough to be a formal specification. If you want to1127 express the semantics of references using rewrite rules that's a great way to do it, but lay the1128 rules out clearly, and when you're showing an example of rewriting keep your1129 references/pointers/values separate (right now, you use \eg "r3" to mean a reference, a pointer,1130 and a value).1131 1132 24 Cancellation works to arbitrary depth, and pointer and reference values are interchangeable because both1133 25 contain addresses.1134 1135 Except they're not interchangeable, because they have different and incompatible types.1136 1137 40 Interestingly, C++ deals with the address duality by making the pointed-to value the default, and prevent-1138 41 ing changes to the reference address, which eliminates half of the duality. Java deals with the address duality1139 42 by making address assignment the default and requiring field assignment (direct or indirect via methods),1140 43 \ie there is no builtin bit-wise or method-wise assignment, which eliminates half of the duality.1141 1142 I can follow this but I think that's mostly because I already understand what you're trying to1143 say. I don't think I've ever heard the term "method-wise assignment" and I don't see you defining1144 it. Furthermore Java does have value assignment of basic (non-class) types, so your summary here1145 feels incomplete. (If it were me I'd drop this paragraph rather than try to save it.)1146 1147 11 Hence, for type & const, there is no pointer assignment, so &rc = &x is disallowed, and the address value1148 12 cannot be 0 unless an arbitrary pointer is assigned to the reference.1149 1150 Given the pains you've taken to motivate every little bit of the semantics up until now, this last1151 clause ("the address value cannot be 0") comes out of the blue. It seems like you could have1152 perfectly reasonable semantics that allowed the initialization of null references.1153 1154 12 In effect, the compiler is managing the1155 13 addresses for type & const not the programmer, and by a programming discipline of only using references1156 14 with references, address errors can be prevented.1157 1158 Again, is this assuming automatic storage management?1159 1160 18 rary binding. For reference initialization (like pointer), the initializing value must be an address (lvalue) not1161 19 a value (rvalue).1162 1163 This sentence appears to suggest that an address and an lvalue are the same thing.1164 1165 20 int * p = &x; // both &x and x are possible interpretations1166 1167 Are you saying that we should be considering "x" as a possible interpretation of the initializer1168 "&x"? It seems to me that this expression has only one legitimate interpretation in context.1169 1170 21 int & r = x; // x unlikely interpretation, because of auto-dereferencing1171 1172 You mean, we can initialize a reference using an integer value? Surely we would need some sort of1173 cast to induce that interpretation, no?1174 1175 22 Hence, the compiler implicitly inserts a reference operator, &, before the initialization expression.1176 1177 But then the expression would have pointer type, which wouldn't be compatible with the type of r.1178 1179 22 Similarly,1180 23 when a reference is used for a parameter/return type, the call-site argument does not require a reference1181 24 operator.1182 1183 Furthermore, it would not be correct to use a reference operator.1184 1185 45 The implicit conversion allows1186 1 seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call.1187 2 While C' attempts to handle pointers and references in a uniform, symmetric manner, C handles routine1188 3 variables in an inconsistent way: a routine variable is both a pointer and a reference (particle and wave).1189 1190 After all this talk of how expressions can have both pointer and value interpretations, you're1191 disparaging C because it has expressions that have both pointer and value interpretations?1192 1193 On Sat, Jul 9, 2016 at 4:18 PM Peter A. Buhr <pabuhr@plg.uwaterloo.ca> wrote:1194 > Aaron discovered a few places where "&"s are missing and where there are too many "&", which are1195 > corrected in the attached updated. None of the text has changed, if you have started reading1196 > already.1197 \end{comment}1198 1199 1200 \section{Routine Definition}1201 1202 \CFA also supports a new syntax for routine definition, as well as \Celeven and K\&R routine syntax.1203 The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, \eg:1204 \begin{cfa}1205 ®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) {1206 §\emph{routine body}§1207 }1208 \end{cfa}1209 where routine ©f© has three output (return values) and three input parameters.1210 Existing C syntax cannot be extended with multiple return types because it is impossible to embed a single routine name within multiple return type specifications.1211 1212 In detail, the brackets, ©[]©, enclose the result type, where each return value is named and that name is a local variable of the particular return type.\footnote{1213 \Index*{Michael Tiemann}, with help from \Index*{Doug Lea}, provided named return values in g++, circa 1989.}1214 The value of each local return variable is automatically returned at routine termination.1215 Declaration qualifiers can only appear at the start of a routine definition, \eg:1216 \begin{cfa}1217 ®extern® [ int x ] g( int y ) {§\,§}1218 \end{cfa}1219 Lastly, if there are no output parameters or input parameters, the brackets and/or parentheses must still be specified;1220 in both cases the type is assumed to be void as opposed to old style C defaults of int return type and unknown parameter types, respectively, as in:1221 \begin{cfa}1222 [§\,§] g(); §\C{// no input or output parameters}§1223 [ void ] g( void ); §\C{// no input or output parameters}§1224 \end{cfa}1225 1226 Routine f is called as follows:1227 \begin{cfa}1228 [ i, j, ch ] = f( 3, 'a', ch );1229 \end{cfa}1230 The list of return values from f and the grouping on the left-hand side of the assignment is called a \newterm{return list} and discussed in Section 12.1231 1232 \CFA style declarations cannot be used to declare parameters for K\&R style routine definitions because of the following ambiguity:1233 \begin{cfa}1234 int (*f(x))[ 5 ] int x; {}1235 \end{cfa}1236 The string ``©int (*f(x))[ 5 ]©'' declares a K\&R style routine of type returning a pointer to an array of 5 integers, while the string ``©[ 5 ] int x©'' declares a \CFA style parameter x of type array of 5 integers.1237 Since the strings overlap starting with the open bracket, ©[©, there is an ambiguous interpretation for the string.1238 As well, \CFA-style declarations cannot be used to declare parameters for C-style routine-definitions because of the following ambiguity:1239 \begin{cfa}1240 typedef int foo;1241 int f( int (* foo) ); §\C{// foo is redefined as a parameter name}§1242 \end{cfa}1243 The string ``©int (* foo)©'' declares a C-style named-parameter of type pointer to an integer (the parenthesis are superfluous), while the same string declares a \CFA style unnamed parameter of type routine returning integer with unnamed parameter of type pointer to foo.1244 The redefinition of a type name in a parameter list is the only context in C where the character ©*© can appear to the left of a type name, and \CFA relies on all type qualifier characters appearing to the right of the type name.1245 The inability to use \CFA declarations in these two contexts is probably a blessing because it precludes programmers from arbitrarily switching between declarations forms within a declaration contexts.1246 1247 C-style declarations can be used to declare parameters for \CFA style routine definitions, \eg:1248 \begin{cfa}1249 [ int ] f( * int, int * ); §\C{// returns an integer, accepts 2 pointers to integers}§1250 [ * int, int * ] f( int ); §\C{// returns 2 pointers to integers, accepts an integer}§1251 \end{cfa}1252 The reason for allowing both declaration styles in the new context is for backwards compatibility with existing preprocessor macros that generate C-style declaration-syntax, as in:1253 \begin{cfa}1254 #define ptoa( n, d ) int (*n)[ d ]1255 int f( ptoa( p, 5 ) ) ... §\C{// expands to int f( int (*p)[ 5 ] )}§1256 [ int ] f( ptoa( p, 5 ) ) ... §\C{// expands to [ int ] f( int (*p)[ 5 ] )}§1257 \end{cfa}1258 Again, programmers are highly encouraged to use one declaration form or the other, rather than mixing the forms.1259 1260 1261 \subsection{Named Return Values}1262 1263 \Index{Named return values} handle the case where it is necessary to define a local variable whose value is then returned in a ©return© statement, as in:1264 \begin{cfa}1265 int f() {1266 int x;1267 ... x = 0; ... x = y; ...1268 return x;1269 }1270 \end{cfa}1271 Because the value in the return variable is automatically returned when a \CFA routine terminates, the ©return© statement \emph{does not} contain an expression, as in:1272 \newline1273 \begin{minipage}{\linewidth}1274 \begin{cfa}1275 ®[ int x, int y ]® f() {1276 int z;1277 ... x = 0; ... y = z; ...1278 ®return;® §\C{// implicitly return x, y}§1279 }1280 \end{cfa}1281 \end{minipage}1282 \newline1283 When the return is encountered, the current values of ©x© and ©y© are returned to the calling routine.1284 As well, ``falling off the end'' of a routine without a ©return© statement is permitted, as in:1285 \begin{cfa}1286 [ int x, int y ] f() {1287 ...1288 } §\C{// implicitly return x, y}§1289 \end{cfa}1290 In this case, the current values of ©x© and ©y© are returned to the calling routine just as if a ©return© had been encountered.1291 1292 Named return values may be used in conjunction with named parameter values;1293 specifically, a return and parameter can have the same name.1294 \begin{cfa}1295 [ int x, int y ] f( int, x, int y ) {1296 ...1297 } §\C{// implicitly return x, y}§1298 \end{cfa}1299 This notation allows the compiler to eliminate temporary variables in nested routine calls.1300 \begin{cfa}1301 [ int x, int y ] f( int, x, int y ); §\C{// prototype declaration}§1302 int a, b;1303 [a, b] = f( f( f( a, b ) ) );1304 \end{cfa}1305 While the compiler normally ignores parameters names in prototype declarations, here they are used to eliminate temporary return-values by inferring that the results of each call are the inputs of the next call, and ultimately, the left-hand side of the assignment.1306 Hence, even without the body of routine ©f© (separate compilation), it is possible to perform a global optimization across routine calls.1307 The compiler warns about naming inconsistencies between routine prototype and definition in this case, and behaviour is \Index{undefined} if the programmer is inconsistent.1308 1309 1310 \subsection{Routine Prototype}1311 1312 The syntax of the new routine prototype declaration follows directly from the new routine definition syntax;1313 as well, parameter names are optional, \eg:1314 \begin{cfa}1315 [ int x ] f (); §\C{// returning int with no parameters}§1316 [ * int ] g (int y); §\C{// returning pointer to int with int parameter}§1317 [ ] h ( int, char ); §\C{// returning no result with int and char parameters}§1318 [ * int, int ] j ( int ); §\C{// returning pointer to int and int, with int parameter}§1319 \end{cfa}1320 This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa).1321 It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), \eg:1322 \begin{quote2}1323 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}1324 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1325 \begin{cfa}1326 [ int ] f( int ), g;1327 \end{cfa}1328 &1329 \begin{cfa}1330 int f( int ), g( int );1331 \end{cfa}1332 \end{tabular}1333 \end{quote2}1334 Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} \eg:1335 \begin{cfa}1336 extern [ int ] f ( int );1337 static [ int ] g ( int );1338 \end{cfa}1339 1340 1341 \section{Routine Pointers}1342 1343 The syntax for pointers to \CFA routines specifies the pointer name on the right, \eg:1344 \begin{cfa}1345 * [ int x ] () fp; §\C{// pointer to routine returning int with no parameters}§1346 * [ * int ] (int y) gp; §\C{// pointer to routine returning pointer to int with int parameter}§1347 * [ ] (int,char) hp; §\C{// pointer to routine returning no result with int and char parameters}§1348 * [ * int,int ] ( int ) jp; §\C{// pointer to routine returning pointer to int and int, with int parameter}§1349 \end{cfa}1350 While parameter names are optional, \emph{a routine name cannot be specified};1351 for example, the following is incorrect:1352 \begin{cfa}1353 * [ int x ] f () fp; §\C{// routine name "f" is not allowed}§1354 \end{cfa}1355 1356 1357 \section{Named and Default Arguments}1358 1359 Named\index{named arguments}\index{arguments!named} and default\index{default arguments}\index{arguments!default} arguments~\cite{Hardgrave76}\footnote{1360 Francez~\cite{Francez77} proposed a further extension to the named-parameter passing style, which specifies what type of communication (by value, by reference, by name) the argument is passed to the routine.}1361 are two mechanisms to simplify routine call.1362 Both mechanisms are discussed with respect to \CFA.1363 \begin{description}1364 \item[Named (or Keyword) Arguments:]1365 provide the ability to specify an argument to a routine call using the parameter name rather than the position of the parameter.1366 For example, given the routine:1367 \begin{cfa}1368 void p( int x, int y, int z ) {...}1369 \end{cfa}1370 a positional call is:1371 \begin{cfa}1372 p( 4, 7, 3 );1373 \end{cfa}1374 whereas a named (keyword) call may be:1375 \begin{cfa}1376 p( z : 3, x : 4, y : 7 ); §\C{// rewrite $\Rightarrow$ p( 4, 7, 3 )}§1377 \end{cfa}1378 Here the order of the arguments is unimportant, and the names of the parameters are used to associate argument values with the corresponding parameters.1379 The compiler rewrites a named call into a positional call.1380 The advantages of named parameters are:1381 \begin{itemize}1382 \item1383 Remembering the names of the parameters may be easier than the order in the routine definition.1384 \item1385 Parameter names provide documentation at the call site (assuming the names are descriptive).1386 \item1387 Changes can be made to the order or number of parameters without affecting the call (although the call must still be recompiled).1388 \end{itemize}1389 1390 Unfortunately, named arguments do not work in C-style programming-languages because a routine prototype is not required to specify parameter names, nor do the names in the prototype have to match with the actual definition.1391 For example, the following routine prototypes and definition are all valid.1392 \begin{cfa}1393 void p( int, int, int ); §\C{// equivalent prototypes}§1394 void p( int x, int y, int z );1395 void p( int y, int x, int z );1396 void p( int z, int y, int x );1397 void p( int q, int r, int s ) {} §\C{// match with this definition}§1398 \end{cfa}1399 Forcing matching parameter names in routine prototypes with corresponding routine definitions is possible, but goes against a strong tradition in C programming.1400 Alternatively, prototype definitions can be eliminated by using a two-pass compilation, and implicitly creating header files for exports.1401 The former is easy to do, while the latter is more complex.1402 1403 Furthermore, named arguments do not work well in a \CFA-style programming-languages because they potentially introduces a new criteria for type matching.1404 For example, it is technically possible to disambiguate between these two overloaded definitions of ©f© based on named arguments at the call site:1405 \begin{cfa}1406 int f( int i, int j );1407 int f( int x, double y );1408 1409 f( j : 3, i : 4 ); §\C{// 1st f}§1410 f( x : 7, y : 8.1 ); §\C{// 2nd f}§1411 f( 4, 5 ); §\C{// ambiguous call}§1412 \end{cfa}1413 However, named arguments compound routine resolution in conjunction with conversions:1414 \begin{cfa}1415 f( i : 3, 5.7 ); §\C{// ambiguous call ?}§1416 \end{cfa}1417 Depending on the cost associated with named arguments, this call could be resolvable or ambiguous.1418 Adding named argument into the routine resolution algorithm does not seem worth the complexity.1419 Therefore, \CFA does \emph{not} attempt to support named arguments.1420 1421 \item[Default Arguments]1422 provide the ability to associate a default value with a parameter so it can be optionally specified in the argument list.1423 For example, given the routine:1424 \begin{cfa}1425 void p( int x = 1, int y = 2, int z = 3 ) {...}1426 \end{cfa}1427 the allowable positional calls are:1428 \begin{cfa}1429 p(); §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§1430 p( 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§1431 p( 4, 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§1432 p( 4, 4, 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 4, 4 )}§1433 // empty arguments1434 p( , 4, 4 ); §\C{// rewrite $\Rightarrow$ p( 1, 4, 4 )}§1435 p( 4, , 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 2, 4 )}§1436 p( 4, 4, ); §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§1437 p( 4, , ); §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§1438 p( , 4, ); §\C{// rewrite $\Rightarrow$ p( 1, 4, 3 )}§1439 p( , , 4 ); §\C{// rewrite $\Rightarrow$ p( 1, 2, 4 )}§1440 p( , , ); §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§1441 \end{cfa}1442 Here the missing arguments are inserted from the default values in the parameter list.1443 The compiler rewrites missing default values into explicit positional arguments.1444 The advantages of default values are:1445 \begin{itemize}1446 \item1447 Routines with a large number of parameters are often very generalized, giving a programmer a number of different options on how a computation is performed.1448 For many of these kinds of routines, there are standard or default settings that work for the majority of computations.1449 Without default values for parameters, a programmer is forced to specify these common values all the time, resulting in long argument lists that are error prone.1450 \item1451 When a routine's interface is augmented with new parameters, it extends the interface providing generalizability\footnote{1452 ``It should be possible for the implementor of an abstraction to increase its generality.1453 So long as the modified abstraction is a generalization of the original, existing uses of the abstraction will not require change.1454 It might be possible to modify an abstraction in a manner which is not a generalization without affecting existing uses, but, without inspecting the modules in which the uses occur, this possibility cannot be determined.1455 This criterion precludes the addition of parameters, unless these parameters have default or inferred values that are valid for all possible existing applications.''~\cite[p.~128]{Cormack90}}1456 (somewhat like the generalization provided by inheritance for classes).1457 That is, all existing calls are still valid, although the call must still be recompiled.1458 \end{itemize}1459 The only disadvantage of default arguments is that unintentional omission of an argument may not result in a compiler-time error.1460 Instead, a default value is used, which may not be the programmer's intent.1461 1462 Default values may only appear in a prototype versus definition context:1463 \begin{cfa}1464 void p( int x, int y = 2, int z = 3 ); §\C{// prototype: allowed}§1465 void p( int, int = 2, int = 3 ); §\C{// prototype: allowed}§1466 void p( int x, int y = 2, int z = 3 ) {} §\C{// definition: not allowed}§1467 \end{cfa}1468 The reason for this restriction is to allow separate compilation.1469 Multiple prototypes with different default values is an error.1470 \end{description}1471 1472 Ellipse (``...'') arguments present problems when used with default arguments.1473 The conflict occurs because both named and ellipse arguments must appear after positional arguments, giving two possibilities:1474 \begin{cfa}1475 p( /* positional */, ... , /* named */ );1476 p( /* positional */, /* named */, ... );1477 \end{cfa}1478 While it is possible to implement both approaches, the first possibly is more complex than the second, \eg:1479 \begin{cfa}1480 p( int x, int y, int z, ... );1481 p( 1, 4, 5, 6, z : 3, y : 2 ); §\C{// assume p( /* positional */, ... , /* named */ );}§1482 p( 1, z : 3, y : 2, 4, 5, 6 ); §\C{// assume p( /* positional */, /* named */, ... );}§1483 \end{cfa}1484 In the first call, it is necessary for the programmer to conceptually rewrite the call, changing named arguments into positional, before knowing where the ellipse arguments begin.1485 Hence, this approach seems significantly more difficult, and hence, confusing and error prone.1486 In the second call, the named arguments separate the positional and ellipse arguments, making it trivial to read the call.1487 1488 The problem is exacerbated with default arguments, \eg:1489 \begin{cfa}1490 void p( int x, int y = 2, int z = 3... );1491 p( 1, 4, 5, 6, z : 3 ); §\C{// assume p( /* positional */, ... , /* named */ );}§1492 p( 1, z : 3, 4, 5, 6 ); §\C{// assume p( /* positional */, /* named */, ... );}§1493 \end{cfa}1494 The first call is an error because arguments 4 and 5 are actually positional not ellipse arguments;1495 therefore, argument 5 subsequently conflicts with the named argument z : 3.1496 In the second call, the default value for y is implicitly inserted after argument 1 and the named arguments separate the positional and ellipse arguments, making it trivial to read the call.1497 For these reasons, \CFA requires named arguments before ellipse arguments.1498 Finally, while ellipse arguments are needed for a small set of existing C routines, like printf, the extended \CFA type system largely eliminates the need for ellipse arguments (see Section 24), making much of this discussion moot.1499 1500 Default arguments and overloading (see Section 24) are complementary.1501 While in theory default arguments can be simulated with overloading, as in:1502 \begin{quote2}1503 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}1504 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{default arguments}} & \multicolumn{1}{c}{\textbf{overloading}} \\1505 \begin{cfa}1506 void p( int x, int y = 2, int z = 3 ) {...}1507 1508 1509 \end{cfa}1510 &1511 \begin{cfa}1512 void p( int x, int y, int z ) {...}1513 void p( int x ) { p( x, 2, 3 ); }1514 void p( int x, int y ) { p( x, y, 3 ); }1515 \end{cfa}1516 \end{tabular}1517 \end{quote2}1518 the number of required overloaded routines is linear in the number of default values, which is unacceptable growth.1519 In general, overloading should only be used over default arguments if the body of the routine is significantly different.1520 Furthermore, overloading cannot handle accessing default arguments in the middle of a positional list, via a missing argument, such as:1521 \begin{cfa}1522 p( 1, /* default */, 5 ); §\C{// rewrite $\Rightarrow$ p( 1, 2, 5 )}§1523 \end{cfa}1524 1525 Given the \CFA restrictions above, both named and default arguments are backwards compatible.1526 \Index*[C++]{\CC{}} only supports default arguments;1527 \Index*{Ada} supports both named and default arguments.1528 1529 1530 \section{Unnamed Structure Fields}1531 1532 C requires each field of a structure to have a name, except for a bit field associated with a basic type, \eg:1533 \begin{cfa}1534 struct {1535 int f1; §\C{// named field}§1536 int f2 : 4; §\C{// named field with bit field size}§1537 int : 3; §\C{// unnamed field for basic type with bit field size}§1538 int ; §\C{// disallowed, unnamed field}§1539 int *; §\C{// disallowed, unnamed field}§1540 int (*)( int ); §\C{// disallowed, unnamed field}§1541 };1542 \end{cfa}1543 This requirement is relaxed by making the field name optional for all field declarations; therefore, all the field declarations in the example are allowed.1544 As for unnamed bit fields, an unnamed field is used for padding a structure to a particular size.1545 A list of unnamed fields is also supported, \eg:1546 \begin{cfa}1547 struct {1548 int , , ; §\C{// 3 unnamed fields}§1549 }1550 \end{cfa}1551 1552 1553 \section{Nesting}1554 1555 Nesting of types and routines is useful for controlling name visibility (\newterm{name hiding}).1556 1557 1558 \subsection{Type Nesting}1559 1560 \CFA allows \Index{type nesting}, and type qualification of the nested types (see \VRef[Figure]{f:TypeNestingQualification}), where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification.1561 \begin{figure}1562 \centering1563 \begin{tabular}{@{}l@{\hspace{3em}}l|l@{}}1564 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{C Type Nesting}} & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}} & \multicolumn{1}{|c}{\textbf{\CFA}} \\1565 \hline1566 \begin{cfa}1567 struct S {1568 enum C { R, G, B };1569 struct T {1570 union U { int i, j; };1571 enum C c;1572 short int i, j;1573 };1574 struct T t;1575 } s;1576 1577 int fred() {1578 s.t.c = R;1579 struct T t = { R, 1, 2 };1580 enum C c;1581 union U u;1582 }1583 \end{cfa}1584 &1585 \begin{cfa}1586 enum C { R, G, B };1587 union U { int i, j; };1588 struct T {1589 enum C c;1590 short int i, j;1591 };1592 struct S {1593 struct T t;1594 } s;1595 1596 1597 1598 1599 1600 1601 1602 \end{cfa}1603 &1604 \begin{cfa}1605 struct S {1606 enum C { R, G, B };1607 struct T {1608 union U { int i, j; };1609 enum C c;1610 short int i, j;1611 };1612 struct T t;1613 } s;1614 1615 int fred() {1616 s.t.c = ®S.®R; // type qualification1617 struct ®S.®T t = { ®S.®R, 1, 2 };1618 enum ®S.®C c;1619 union ®S.T.®U u;1620 }1621 \end{cfa}1622 \end{tabular}1623 \caption{Type Nesting / Qualification}1624 \label{f:TypeNestingQualification}1625 \end{figure}1626 In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope.1627 In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``©.©'' for type qualification, as does \Index*{Java}, rather than the \CC type-selection operator ``©::©''.1628 1629 1630 \subsection{Routine Nesting}1631 1632 While \CFA does not provide object programming by putting routines into structures, it does rely heavily on locally nested routines to redefine operations at or close to a call site.1633 For example, the C quick-sort is wrapped into the following polymorphic \CFA routine:1634 \begin{cfa}1635 forall( otype T | { int ?<?( T, T ); } )1636 void qsort( const T * arr, size_t dimension );1637 \end{cfa}1638 which can be used to sort in ascending and descending order by locally redefining the less-than operator into greater-than.1639 \begin{cfa}1640 const unsigned int size = 5;1641 int ia[size];1642 ... §\C{// assign values to array ia}§1643 qsort( ia, size ); §\C{// sort ascending order using builtin ?<?}§1644 {1645 ®int ?<?( int x, int y ) { return x > y; }® §\C{// nested routine}§1646 qsort( ia, size ); §\C{// sort descending order by local redefinition}§1647 }1648 \end{cfa}1649 1650 Nested routines are not first-class, meaning a nested routine cannot be returned if it has references to variables in its enclosing blocks;1651 the only exception is references to the external block of the translation unit, as these variables persist for the duration of the program.1652 The following program in undefined in \CFA (and Indexc{gcc})1653 \begin{cfa}1654 [* [int]( int )] foo() { §\C{// int (*foo())( int )}§1655 int ®i® = 7;1656 int bar( int p ) {1657 ®i® += 1; §\C{// dependent on local variable}§1658 sout | ®i® | endl;1659 }1660 return bar; §\C{// undefined because of local dependence}§1661 }1662 int main() {1663 * [int]( int ) fp = foo(); §\C{// int (*fp)( int )}§1664 sout | fp( 3 ) | endl;1665 }1666 \end{cfa}1667 because1668 1669 Currently, there are no \Index{lambda} expressions, \ie unnamed routines because routine names are very important to properly select the correct routine.1670 1671 1672 \section{Tuples}1673 1674 In C and \CFA, lists of elements appear in several contexts, such as the parameter list for a routine call.1675 (More contexts are added shortly.)1676 A list of such elements is called a \newterm{lexical list}.1677 The general syntax of a lexical list is:1678 \begin{cfa}1679 [ §\emph{exprlist}§ ]1680 \end{cfa}1681 where ©$\emph{exprlist}$© is a list of one or more expressions separated by commas.1682 The brackets, ©[]©, allow differentiating between lexical lists and expressions containing the C comma operator.1683 The following are examples of lexical lists:1684 \begin{cfa}1685 [ x, y, z ]1686 [ 2 ]1687 [ v+w, x*y, 3.14159, f() ]1688 \end{cfa}1689 Tuples are permitted to contain sub-tuples (\ie nesting), such as ©[ [ 14, 21 ], 9 ]©, which is a 2-element tuple whose first element is itself a tuple.1690 Note, a tuple is not a record (structure);1691 a record denotes a single value with substructure, whereas a tuple is multiple values with no substructure (see flattening coercion in Section 12.1).1692 In essence, tuples are largely a compile time phenomenon, having little or no runtime presence.1693 1694 Tuples can be organized into compile-time tuple variables;1695 these variables are of \newterm{tuple type}.1696 Tuple variables and types can be used anywhere lists of conventional variables and types can be used.1697 The general syntax of a tuple type is:1698 \begin{cfa}1699 [ §\emph{typelist}§ ]1700 \end{cfa}1701 where ©$\emph{typelist}$© is a list of one or more legal \CFA or C type specifications separated by commas, which may include other tuple type specifications.1702 Examples of tuple types include:1703 \begin{cfa}1704 [ unsigned int, char ]1705 [ double, double, double ]1706 [ * int, int * ] §\C{// mix of CFA and ANSI}§1707 [ * [ 5 ] int, * * char, * [ [ int, int ] ] (int, int) ]1708 \end{cfa}1709 Like tuples, tuple types may be nested, such as ©[ [ int, int ], int ]©, which is a 2-element tuple type whose first element is itself a tuple type.1710 1711 Examples of declarations using tuple types are:1712 \begin{cfa}1713 [ int, int ] x; §\C{// 2 element tuple, each element of type int}§1714 * [ char, char ] y; §\C{// pointer to a 2 element tuple}§1715 [ [ int, int ] ] z ([ int, int ]);1716 \end{cfa}1717 The last example declares an external routine that expects a 2 element tuple as an input parameter and returns a 2 element tuple as its result.1718 1719 As mentioned, tuples can appear in contexts requiring a list of value, such as an argument list of a routine call.1720 In unambiguous situations, the tuple brackets may be omitted, \eg a tuple that appears as an argument may have its1721 square brackets omitted for convenience; therefore, the following routine invocations are equivalent:1722 \begin{cfa}1723 f( [ 1, x+2, fred() ] );1724 f( 1, x+2, fred() );1725 \end{cfa}1726 Also, a tuple or a tuple variable may be used to supply all or part of an argument list for a routine expecting multiple input parameters or for a routine expecting a tuple as an input parameter.1727 For example, the following are all legal:1728 \begin{cfa}1729 [ int, int ] w1;1730 [ int, int, int ] w2;1731 [ void ] f (int, int, int); /* three input parameters of type int */1732 [ void ] g ([ int, int, int ]); /* 3 element tuple as input */1733 f( [ 1, 2, 3 ] );1734 f( w1, 3 );1735 f( 1, w1 );1736 f( w2 );1737 g( [ 1, 2, 3 ] );1738 g( w1, 3 );1739 g( 1, w1 );1740 g( w2 );1741 \end{cfa}1742 Note, in all cases 3 arguments are supplied even though the syntax may appear to supply less than 3. As mentioned, a1743 tuple does not have structure like a record; a tuple is simply converted into a list of components.1744 \begin{rationale}1745 The present implementation of \CFA does not support nested routine calls when the inner routine returns multiple values; \ie a statement such as ©g( f() )© is not supported.1746 Using a temporary variable to store the results of the inner routine and then passing this variable to the outer routine works, however.1747 \end{rationale}1748 1749 A tuple can contain a C comma expression, provided the expression containing the comma operator is enclosed in parentheses.1750 For instance, the following tuples are equivalent:1751 \begin{cfa}1752 [ 1, 3, 5 ]1753 [ 1, (2, 3), 5 ]1754 \end{cfa}1755 The second element of the second tuple is the expression (2, 3), which yields the result 3.1756 This requirement is the same as for comma expressions in argument lists.1757 1758 Type qualifiers, \ie const and volatile, may modify a tuple type.1759 The meaning is the same as for a type qualifier modifying an aggregate type [Int99, x 6.5.2.3(7),x 6.7.3(11)], \ie the qualifier is distributed across all of the types in the tuple, \eg:1760 \begin{cfa}1761 const volatile [ int, float, const int ] x;1762 \end{cfa}1763 is equivalent to:1764 \begin{cfa}1765 [ const volatile int, const volatile float, const volatile int ] x;1766 \end{cfa}1767 Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, \eg:1768 \begin{cfa}1769 extern [ int, int ] w1;1770 static [ int, int, int ] w2;1771 \end{cfa}1772 \begin{rationale}1773 Unfortunately, C's syntax for subscripts precluded treating them as tuples.1774 The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©.1775 Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, \eg ©f[g()]© always means a single subscript value because there is only one set of brackets.1776 Fixing this requires a major change to C because the syntactic form ©M[i, j, k]© already has a particular meaning: ©i, j, k© is a comma expression.1777 \end{rationale}1778 1779 1780 \subsection{Tuple Coercions}1781 1782 There are four coercions that can be performed on tuples and tuple variables: closing, opening, flattening and structuring.1783 In addition, the coercion of dereferencing can be performed on a tuple variable to yield its value(s), as for other variables.1784 A \newterm{closing coercion} takes a set of values and converts it into a tuple value, which is a contiguous set of values, as in:1785 \begin{cfa}1786 [ int, int, int, int ] w;1787 w = [ 1, 2, 3, 4 ];1788 \end{cfa}1789 First the right-hand tuple is closed into a tuple value and then the tuple value is assigned.1790 1791 An \newterm{opening coercion} is the opposite of closing; a tuple value is converted into a tuple of values, as in:1792 \begin{cfa}1793 [ a, b, c, d ] = w1794 \end{cfa}1795 ©w© is implicitly opened to yield a tuple of four values, which are then assigned individually.1796 1797 A \newterm{flattening coercion} coerces a nested tuple, \ie a tuple with one or more components, which are themselves tuples, into a flattened tuple, which is a tuple whose components are not tuples, as in:1798 \begin{cfa}1799 [ a, b, c, d ] = [ 1, [ 2, 3 ], 4 ];1800 \end{cfa}1801 First the right-hand tuple is flattened and then the values are assigned individually.1802 Flattening is also performed on tuple types.1803 For example, the type ©[ int, [ int, int ], int ]© can be coerced, using flattening, into the type ©[ int, int, int, int ]©.1804 1805 A \newterm{structuring coercion} is the opposite of flattening;1806 a tuple is structured into a more complex nested tuple.1807 For example, structuring the tuple ©[ 1, 2, 3, 4 ]© into the tuple ©[ 1, [ 2, 3 ], 4 ]© or the tuple type ©[ int, int, int, int ]© into the tuple type ©[ int, [ int, int ], int ]©.1808 In the following example, the last assignment illustrates all the tuple coercions:1809 \begin{cfa}1810 [ int, int, int, int ] w = [ 1, 2, 3, 4 ];1811 int x = 5;1812 [ x, w ] = [ w, x ]; §\C{// all four tuple coercions}§1813 \end{cfa}1814 Starting on the right-hand tuple in the last assignment statement, w is opened, producing a tuple of four values;1815 therefore, the right-hand tuple is now the tuple ©[ [ 1, 2, 3, 4 ], 5 ]©.1816 This tuple is then flattened, yielding ©[ 1, 2, 3, 4, 5 ]©, which is structured into ©[ 1, [ 2, 3, 4, 5 ] ]© to match the tuple type of the left-hand side.1817 The tuple ©[ 2, 3, 4, 5 ]© is then closed to create a tuple value.1818 Finally, ©x© is assigned ©1© and ©w© is assigned the tuple value using multiple assignment (see Section 14).1819 \begin{rationale}1820 A possible additional language extension is to use the structuring coercion for tuples to initialize a complex record with a tuple.1821 \end{rationale}1822 1823 1824 \section{Mass Assignment}1825 1826 \CFA permits assignment to several variables at once using mass assignment~\cite{CLU}.1827 Mass assignment has the following form:1828 \begin{cfa}1829 [ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = §\emph{expr}§;1830 \end{cfa}1831 \index{lvalue}1832 The left-hand side is a tuple of \emph{lvalues}, which is a list of expressions each yielding an address, \ie any data object that can appear on the left-hand side of a conventional assignment statement.1833 ©$\emph{expr}$© is any standard arithmetic expression.1834 Clearly, the types of the entities being assigned must be type compatible with the value of the expression.1835 1836 Mass assignment has parallel semantics, \eg the statement:1837 \begin{cfa}1838 [ x, y, z ] = 1.5;1839 \end{cfa}1840 is equivalent to:1841 \begin{cfa}1842 x = 1.5; y = 1.5; z = 1.5;1843 \end{cfa}1844 This semantics is not the same as the following in C:1845 \begin{cfa}1846 x = y = z = 1.5;1847 \end{cfa}1848 as conversions between intermediate assignments may lose information.1849 A more complex example is:1850 \begin{cfa}1851 [ i, y[i], z ] = a + b;1852 \end{cfa}1853 which is equivalent to:1854 \begin{cfa}1855 t = a + b;1856 a1 = &i; a2 = &y[i]; a3 = &z;1857 *a1 = t; *a2 = t; *a3 = t;1858 \end{cfa}1859 The temporary ©t© is necessary to store the value of the expression to eliminate conversion issues.1860 The temporaries for the addresses are needed so that locations on the left-hand side do not change as the values are assigned.1861 In this case, ©y[i]© uses the previous value of ©i© and not the new value set at the beginning of the mass assignment.1862 1863 1864 \section{Multiple Assignment}1865 1866 \CFA also supports the assignment of several values at once, known as multiple assignment~\cite{CLU,Galletly96}.1867 Multiple assignment has the following form:1868 \begin{cfa}1869 [ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = [ §\emph{expr}§, ... , §\emph{expr}§ ];1870 \end{cfa}1871 \index{lvalue}1872 The left-hand side is a tuple of \emph{lvalues}, and the right-hand side is a tuple of \emph{expr}s.1873 Each \emph{expr} appearing on the right-hand side of a multiple assignment statement is assigned to the corresponding \emph{lvalues} on the left-hand side of the statement using parallel semantics for each assignment.1874 An example of multiple assignment is:1875 \begin{cfa}1876 [ x, y, z ] = [ 1, 2, 3 ];1877 \end{cfa}1878 Here, the values ©1©, ©2© and ©3© are assigned, respectively, to the variables ©x©, ©y© and ©z©.1879 A more complex example is:1880 \begin{cfa}1881 [ i, y[ i ], z ] = [ 1, i, a + b ];1882 \end{cfa}1883 Here, the values ©1©, ©i© and ©a + b© are assigned to the variables ©i©, ©y[i]© and ©z©, respectively.1884 Note, the parallel semantics of1885 multiple assignment ensures:1886 \begin{cfa}1887 [ x, y ] = [ y, x ];1888 \end{cfa}1889 correctly interchanges (swaps) the values stored in ©x© and ©y©.1890 The following cases are errors:1891 \begin{cfa}1892 [ a, b, c ] = [ 1, 2, 3, 4 ];1893 [ a, b, c ] = [ 1, 2 ];1894 \end{cfa}1895 because the number of entities in the left-hand tuple is unequal with the right-hand tuple.1896 1897 As for all tuple contexts in C, side effects should not be used because C does not define an ordering for the evaluation of the elements of a tuple;1898 both these examples produce indeterminate results:1899 \begin{cfa}1900 f( x++, x++ ); §\C{// C routine call with side effects in arguments}§1901 [ v1, v2 ] = [ x++, x++ ]; §\C{// side effects in righthand side of multiple assignment}§1902 \end{cfa}1903 1904 1905 \section{Cascade Assignment}1906 1907 As in C, \CFA mass and multiple assignments can be cascaded, producing cascade assignment.1908 Cascade assignment has the following form:1909 \begin{cfa}1910 §\emph{tuple}§ = §\emph{tuple}§ = ... = §\emph{tuple}§;1911 \end{cfa}1912 and it has the same parallel semantics as for mass and multiple assignment.1913 Some examples of cascade assignment are:1914 \begin{cfa}1915 x1 = y1 = x2 = y2 = 0;1916 [ x1, y1 ] = [ x2, y2 ] = [ x3, y3 ];1917 [ x1, y1 ] = [ x2, y2 ] = 0;1918 [ x1, y1 ] = z = 0;1919 \end{cfa}1920 As in C, the rightmost assignment is performed first, \ie assignment parses right to left.1921 1922 1923 \section{Field Tuples}1924 1925 Tuples may be used to select multiple fields of a record by field name.1926 Its general form is:1927 \begin{cfa}1928 §\emph{expr}§ . [ §\emph{fieldlist}§ ]1929 §\emph{expr}§ -> [ §\emph{fieldlist}§ ]1930 \end{cfa}1931 \emph{expr} is any expression yielding a value of type record, \eg ©struct©, ©union©.1932 Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}.1933 A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is1934 the following:1935 \begin{cfa}1936 struct s {1937 int f1, f2;1938 char f3;1939 double f4;1940 } v;1941 v.[ f3, f1, f2 ] = ['x', 11, 17 ]; §\C{// equivalent to v.f3 = 'x', v.f1 = 11, v.f2 = 17}§1942 f( v.[ f3, f1, f2 ] ); §\C{// equivalent to f( v.f3, v.f1, v.f2 )}§1943 \end{cfa}1944 Note, the fields appearing in a record-field tuple may be specified in any order;1945 also, it is unnecessary to specify all the fields of a struct in a multiple record-field tuple.1946 1947 If a field of a ©struct© is itself another ©struct©, multiple fields of this subrecord can be specified using a nested record-field tuple, as in the following example:1948 \begin{cfa}1949 struct inner {1950 int f2, f3;1951 };1952 struct outer {1953 int f1;1954 struct inner i;1955 double f4;1956 } o;1957 1958 o.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];1959 \end{cfa}1960 491 1961 492 … … 2249 780 still works. 2250 781 Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments. 2251 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, e.g.:782 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, \eg: 2252 783 \begin{cfa} 2253 784 ®choose® ( i ) { … … 2397 928 2398 929 930 \subsection{Exception Hierarchy} 931 932 An exception type can be derived from another exception type, just like deriving a subclass from a class, providing a kind of polymorphism among exception types. 933 The exception-type hierarchy that is created is used to organize exception types, similar to a class hierarchy in object-oriented languages, \eg: 934 \begin{center} 935 \input{EHMHierarchy} 936 \end{center} 937 A programmer can then choose to handle an exception at different degrees of specificity along the hierarchy; 938 derived exception-types support a more flexible programming style. 939 For example, higher-level code should catch general exceptions to reduce coupling to the specific implementation at the lower levels; 940 unnecessary coupling may force changes in higher-level code when low-level code changes. 941 A consequence of derived exception-types is that multiple exceptions may match, \eg: 942 \begin{cfa} 943 catch( Arithmetic ) 944 \end{cfa} 945 matches all three derived exception-types: ©DivideByZero©, ©Overflow©, and ©Underflow©. 946 Because the propagation mechanisms perform a simple linear search of the handler clause for a guarded block, and selects the first matching handler, the order of catch clauses in the handler clause becomes important, \eg: 947 \begin{cfa} 948 try { 949 ... 950 } catch( Overflow ) { // must appear first 951 // handle overflow 952 } catch( Arithmetic ) 953 // handle other arithmetic issues 954 } 955 \end{cfa} 956 \newterm{Multiple derivation} among exception is not supported. 957 958 959 \section{Declarations} 960 \label{s:Declarations} 961 962 C declaration syntax is notoriously confusing and error prone. 963 For example, many C programmers are confused by a declaration as simple as: 964 \begin{quote2} 965 \begin{tabular}{@{}ll@{}} 966 \begin{cfa} 967 int * x[5] 968 \end{cfa} 969 & 970 \raisebox{-0.75\totalheight}{\input{Cdecl}} 971 \end{tabular} 972 \end{quote2} 973 Is this an array of 5 pointers to integers or a \Index{pointer} to an array of 5 integers? 974 The fact this declaration is unclear to many C programmers means there are \Index{productivity} and \Index{safety} issues even for basic programs. 975 Another example of confusion results from the fact that a routine name and its parameters are embedded within the return type, mimicking the way the return value is used at the routine's call site. 976 For example, a routine returning a \Index{pointer} to an array of integers is defined and used in the following way: 977 \begin{cfa} 978 int ®(*®f®())[®5®]® {...}; §\C{definition}§ 979 ... ®(*®f®())[®3®]® += 1; §\C{usage}§ 980 \end{cfa} 981 Essentially, the return type is wrapped around the routine name in successive layers (like an \Index{onion}). 982 While attempting to make the two contexts consistent is a laudable goal, it has not worked out in practice. 983 984 \CFA provides its own type, variable and routine declarations, using a different syntax. 985 The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right of the base type. 986 In the following example, \R{red} is the base type and \B{blue} is qualifiers. 987 The \CFA declarations move the qualifiers to the left of the base type, \ie move the blue to the left of the red, while the qualifiers have the same meaning but are ordered left to right to specify a variable's type. 988 \begin{quote2} 989 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 990 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 991 \begin{cfa} 992 ß[5] *ß ®int® x1; 993 ß* [5]ß ®int® x2; 994 ß[* [5] int]ß f®( int p )®; 995 \end{cfa} 996 & 997 \begin{cfa} 998 ®int® ß*ß x1 ß[5]ß; 999 ®int® ß(*ßx2ß)[5]ß; 1000 ßint (*ßf®( int p )®ß)[5]ß; 1001 \end{cfa} 1002 \end{tabular} 1003 \end{quote2} 1004 The only exception is \Index{bit field} specification, which always appear to the right of the base type. 1005 % Specifically, the character ©*© is used to indicate a pointer, square brackets ©[©\,©]© are used to represent an array or function return value, and parentheses ©()© are used to indicate a routine parameter. 1006 However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list. 1007 For instance, variables ©x© and ©y© of type \Index{pointer} to integer are defined in \CFA as follows: 1008 \begin{quote2} 1009 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 1010 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1011 \begin{cfa} 1012 ®*® int x, y; 1013 \end{cfa} 1014 & 1015 \begin{cfa} 1016 int ®*®x, ®*®y; 1017 \end{cfa} 1018 \end{tabular} 1019 \end{quote2} 1020 The downside of this semantics is the need to separate regular and \Index{pointer} declarations: 1021 \begin{quote2} 1022 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 1023 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1024 \begin{cfa} 1025 ®*® int x; 1026 int y; 1027 \end{cfa} 1028 & 1029 \begin{cfa} 1030 int ®*®x, y; 1031 1032 \end{cfa} 1033 \end{tabular} 1034 \end{quote2} 1035 which is \Index{prescribing} a safety benefit. 1036 Other examples are: 1037 \begin{quote2} 1038 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}} 1039 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\ 1040 \begin{cfa} 1041 [ 5 ] int z; 1042 [ 5 ] * char w; 1043 * [ 5 ] double v; 1044 struct s { 1045 int f0:3; 1046 * int f1; 1047 [ 5 ] * int f2; 1048 }; 1049 \end{cfa} 1050 & 1051 \begin{cfa} 1052 int z[ 5 ]; 1053 char * w[ 5 ]; 1054 double (* v)[ 5 ]; 1055 struct s { 1056 int f0:3; 1057 int * f1; 1058 int * f2[ 5 ] 1059 }; 1060 \end{cfa} 1061 & 1062 \begin{cfa} 1063 // array of 5 integers 1064 // array of 5 pointers to char 1065 // pointer to array of 5 doubles 1066 1067 // common bit field syntax 1068 1069 1070 1071 \end{cfa} 1072 \end{tabular} 1073 \end{quote2} 1074 1075 All type qualifiers, \eg ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, \eg: 1076 \begin{quote2} 1077 \begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}} 1078 \multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}} \\ 1079 \begin{cfa} 1080 const * const int x; 1081 const * [ 5 ] const int y; 1082 \end{cfa} 1083 & 1084 \begin{cfa} 1085 int const * const x; 1086 const int (* const y)[ 5 ] 1087 \end{cfa} 1088 & 1089 \begin{cfa} 1090 // const pointer to const integer 1091 // const pointer to array of 5 const integers 1092 \end{cfa} 1093 \end{tabular} 1094 \end{quote2} 1095 All declaration qualifiers, \eg ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier} 1096 The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} \eg: 1097 \begin{quote2} 1098 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}} 1099 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\ 1100 \begin{cfa} 1101 extern [ 5 ] int x; 1102 static * const int y; 1103 \end{cfa} 1104 & 1105 \begin{cfa} 1106 int extern x[ 5 ]; 1107 const int static * y; 1108 \end{cfa} 1109 & 1110 \begin{cfa} 1111 // externally visible array of 5 integers 1112 // internally visible pointer to constant int 1113 \end{cfa} 1114 \end{tabular} 1115 \end{quote2} 1116 1117 The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-routine ©sizeof©: 1118 \begin{quote2} 1119 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 1120 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1121 \begin{cfa} 1122 y = (®* int®)x; 1123 i = sizeof(®[ 5 ] * int®); 1124 \end{cfa} 1125 & 1126 \begin{cfa} 1127 y = (®int *®)x; 1128 i = sizeof(®int * [ 5 ]®); 1129 \end{cfa} 1130 \end{tabular} 1131 \end{quote2} 1132 1133 Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration. 1134 Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style. 1135 Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems. 1136 1137 1138 \section{Pointer/Reference} 1139 1140 C provides a \newterm{pointer type}; 1141 \CFA adds a \newterm{reference type}. 1142 These types may be derived from an object or routine type, called the \newterm{referenced type}. 1143 Objects of these types contain an \newterm{address}, which is normally a location in memory, but may also address memory-mapped registers in hardware devices. 1144 An integer constant expression with the value 0, or such an expression cast to type ©void *©, is called a \newterm{null-pointer constant}.\footnote{ 1145 One way to conceptualize the null pointer is that no variable is placed at this address, so the null-pointer address can be used to denote an uninitialized pointer/reference object; 1146 \ie the null pointer is guaranteed to compare unequal to a pointer to any object or routine.} 1147 An address is \newterm{sound}, if it points to a valid memory location in scope, \ie within the program's execution-environment and has not been freed. 1148 Dereferencing an \newterm{unsound} address, including the null pointer, is \Index{undefined}, often resulting in a \Index{memory fault}. 1149 1150 A program \newterm{object} is a region of data storage in the execution environment, the contents of which can represent values. 1151 In most cases, objects are located in memory at an address, and the variable name for an object is an implicit address to the object generated by the compiler and automatically dereferenced, as in: 1152 \begin{quote2} 1153 \begin{tabular}{@{}ll@{\hspace{2em}}l@{}} 1154 \begin{cfa} 1155 int x; 1156 x = 3; 1157 int y; 1158 y = x; 1159 \end{cfa} 1160 & 1161 \raisebox{-0.45\totalheight}{\input{pointer1}} 1162 & 1163 \begin{cfa} 1164 int * ®const® x = (int *)100 1165 *x = 3; // implicit dereference 1166 int * ®const® y = (int *)104; 1167 *y = *x; // implicit dereference 1168 \end{cfa} 1169 \end{tabular} 1170 \end{quote2} 1171 where the right example is how the compiler logically interprets the variables in the left example. 1172 Since a variable name only points to one address during its lifetime, it is an \Index{immutable} \Index{pointer}; 1173 hence, the implicit type of pointer variables ©x© and ©y© are constant pointers in the compiler interpretation. 1174 In general, variable addresses are stored in instructions instead of loaded from memory, and hence may not occupy storage. 1175 These approaches are contrasted in the following: 1176 \begin{quote2} 1177 \begin{tabular}{@{}l|l@{}} 1178 \multicolumn{1}{c|}{explicit variable address} & \multicolumn{1}{c}{implicit variable address} \\ 1179 \hline 1180 \begin{cfa} 1181 lda r1,100 // load address of x 1182 ld r2,(r1) // load value of x 1183 lda r3,104 // load address of y 1184 st r2,(r3) // store x into y 1185 \end{cfa} 1186 & 1187 \begin{cfa} 1188 1189 ld r2,(100) // load value of x 1190 1191 st r2,(104) // store x into y 1192 \end{cfa} 1193 \end{tabular} 1194 \end{quote2} 1195 Finally, the immutable nature of a variable's address and the fact that there is no storage for the variable pointer means pointer assignment\index{pointer!assignment}\index{assignment!pointer} is impossible. 1196 Therefore, the expression ©x = y© has only one meaning, ©*x = *y©, \ie manipulate values, which is why explicitly writing the dereferences is unnecessary even though it occurs implicitly as part of \Index{instruction decoding}. 1197 1198 A \Index{pointer}/\Index{reference} object is a generalization of an object variable-name, \ie a mutable address that can point to more than one memory location during its lifetime. 1199 (Similarly, an integer variable can contain multiple integer literals during its lifetime versus an integer constant representing a single literal during its lifetime, and like a variable name, may not occupy storage if the literal is embedded directly into instructions.) 1200 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, \eg: 1201 \begin{quote2} 1202 \begin{tabular}{@{}l@{\hspace{2em}}l@{}} 1203 \begin{cfa} 1204 int x, y, ®*® p1, ®*® p2, ®**® p3; 1205 p1 = ®&®x; // p1 points to x 1206 p2 = p1; // p2 points to x 1207 p1 = ®&®y; // p1 points to y 1208 p3 = &p2; // p3 points to p2 1209 \end{cfa} 1210 & 1211 \raisebox{-0.5\totalheight}{\input{pointer2.pstex_t}} 1212 \end{tabular} 1213 \end{quote2} 1214 1215 Notice, an address has a \Index{duality}\index{address!duality}: a location in memory or the value at that location. 1216 In many cases, a compiler might be able to infer the best meaning for these two cases. 1217 For example, \Index*{Algol68}~\cite{Algol68} infers pointer dereferencing to select the best meaning for each pointer usage 1218 \begin{cfa} 1219 p2 = p1 + x; §\C{// compiler infers *p2 = *p1 + x;}§ 1220 \end{cfa} 1221 Algol68 infers the following dereferencing ©*p2 = *p1 + x©, because adding the arbitrary integer value in ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation. 1222 Unfortunately, automatic dereferencing does not work in all cases, and so some mechanism is necessary to fix incorrect choices. 1223 1224 Rather than inferring dereference, most programming languages pick one implicit dereferencing semantics, and the programmer explicitly indicates the other to resolve address-duality. 1225 In C, objects of pointer type always manipulate the pointer object's address: 1226 \begin{cfa} 1227 p1 = p2; §\C{// p1 = p2\ \ rather than\ \ *p1 = *p2}§ 1228 p2 = p1 + x; §\C{// p2 = p1 + x\ \ rather than\ \ *p2 = *p1 + x}§ 1229 \end{cfa} 1230 even though the assignment to ©p2© is likely incorrect, and the programmer probably meant: 1231 \begin{cfa} 1232 p1 = p2; §\C{// pointer address assignment}§ 1233 ®*®p2 = ®*®p1 + x; §\C{// pointed-to value assignment / operation}§ 1234 \end{cfa} 1235 The C semantics work well for situations where manipulation of addresses is the primary meaning and data is rarely accessed, such as storage management (©malloc©/©free©). 1236 1237 However, in most other situations, the pointed-to value is requested more often than the pointer address. 1238 \begin{cfa} 1239 *p2 = ((*p1 + *p2) * (**p3 - *p1)) / (**p3 - 15); 1240 \end{cfa} 1241 In this case, it is tedious to explicitly write the dereferencing, and error prone when pointer arithmetic is allowed. 1242 It is better to have the compiler generate the dereferencing and have no implicit pointer arithmetic: 1243 \begin{cfa} 1244 p2 = ((p1 + p2) * (p3 - p1)) / (p3 - 15); 1245 \end{cfa} 1246 1247 To support this common case, a reference type is introduced in \CFA, denoted by ©&©, which is the opposite dereference semantics to a pointer type, making the value at the pointed-to location the implicit semantics for dereferencing (similar but not the same as \CC \Index{reference type}s). 1248 \begin{cfa} 1249 int x, y, ®&® r1, ®&® r2, ®&&® r3; 1250 ®&®r1 = &x; §\C{// r1 points to x}§ 1251 ®&®r2 = &r1; §\C{// r2 points to x}§ 1252 ®&®r1 = &y; §\C{// r1 points to y}§ 1253 ®&&®r3 = ®&®&r2; §\C{// r3 points to r2}§ 1254 r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15); §\C{// implicit dereferencing}§ 1255 \end{cfa} 1256 Except for auto-dereferencing by the compiler, this reference example is the same as the previous pointer example. 1257 Hence, a reference behaves like the variable name for the current variable it is pointing-to. 1258 One way to conceptualize a reference is via a rewrite rule, where the compiler inserts a dereference operator before the reference variable for each reference qualifier in a declaration, so the previous example becomes: 1259 \begin{cfa} 1260 ®*®r2 = ((®*®r1 + ®*®r2) ®*® (®**®r3 - ®*®r1)) / (®**®r3 - 15); 1261 \end{cfa} 1262 When a reference operation appears beside a dereference operation, \eg ©&*©, they cancel out. 1263 However, in C, the cancellation always yields a value (\Index{rvalue}).\footnote{ 1264 The unary ©&© operator yields the address of its operand. 1265 If the operand has type ``type'', the result has type ``pointer to type''. 1266 If the operand is the result of a unary ©*© operator, neither that operator nor the ©&© operator is evaluated and the result is as if both were omitted, except that the constraints on the operators still apply and the result is not an lvalue.~\cite[\S~6.5.3.2--3]{C11}} 1267 For a \CFA reference type, the cancellation on the left-hand side of assignment leaves the reference as an address (\Index{lvalue}): 1268 \begin{cfa} 1269 (&®*®)r1 = &x; §\C{// (\&*) cancel giving address in r1 not variable pointed-to by r1}§ 1270 \end{cfa} 1271 Similarly, the address of a reference can be obtained for assignment or computation (\Index{rvalue}): 1272 \begin{cfa} 1273 (&(&®*®)®*®)r3 = &(&®*®)r2; §\C{// (\&*) cancel giving address in r2, (\&(\&*)*) cancel giving address in r3}§ 1274 \end{cfa} 1275 Cancellation\index{cancellation!pointer/reference}\index{pointer!cancellation} works to arbitrary depth. 1276 1277 Fundamentally, pointer and reference objects are functionally interchangeable because both contain addresses. 1278 \begin{cfa} 1279 int x, *p1 = &x, **p2 = &p1, ***p3 = &p2, 1280 &r1 = x, &&r2 = r1, &&&r3 = r2; 1281 ***p3 = 3; §\C{// change x}§ 1282 r3 = 3; §\C{// change x, ***r3}§ 1283 **p3 = ...; §\C{// change p1}§ 1284 &r3 = ...; §\C{// change r1, (\&*)**r3, 1 cancellation}§ 1285 *p3 = ...; §\C{// change p2}§ 1286 &&r3 = ...; §\C{// change r2, (\&(\&*)*)*r3, 2 cancellations}§ 1287 &&&r3 = p3; §\C{// change r3 to p3, (\&(\&(\&*)*)*)r3, 3 cancellations}§ 1288 \end{cfa} 1289 Furthermore, both types are equally performant, as the same amount of dereferencing occurs for both types. 1290 Therefore, the choice between them is based solely on whether the address is dereferenced frequently or infrequently, which dictates the amount of implicit dereferencing aid from the compiler. 1291 1292 As for a pointer type, a reference type may have qualifiers: 1293 \begin{cfa} 1294 const int cx = 5; §\C{// cannot change cx;}§ 1295 const int & cr = cx; §\C{// cannot change what cr points to}§ 1296 ®&®cr = &cx; §\C{// can change cr}§ 1297 cr = 7; §\C{// error, cannot change cx}§ 1298 int & const rc = x; §\C{// must be initialized}§ 1299 ®&®rc = &x; §\C{// error, cannot change rc}§ 1300 const int & const crc = cx; §\C{// must be initialized}§ 1301 crc = 7; §\C{// error, cannot change cx}§ 1302 ®&®crc = &cx; §\C{// error, cannot change crc}§ 1303 \end{cfa} 1304 Hence, for type ©& const©, there is no pointer assignment, so ©&rc = &x© is disallowed, and \emph{the address value cannot be the null pointer unless an arbitrary pointer is coerced\index{coercion} into the reference}: 1305 \begin{cfa} 1306 int & const cr = *0; §\C{// where 0 is the int * zero}§ 1307 \end{cfa} 1308 Note, constant reference-types do not prevent \Index{addressing errors} because of explicit storage-management: 1309 \begin{cfa} 1310 int & const cr = *malloc(); 1311 cr = 5; 1312 free( &cr ); 1313 cr = 7; §\C{// unsound pointer dereference}§ 1314 \end{cfa} 1315 1316 The position of the ©const© qualifier \emph{after} the pointer/reference qualifier causes confuse for C programmers. 1317 The ©const© qualifier cannot be moved before the pointer/reference qualifier for C style-declarations; 1318 \CFA-style declarations (see \VRef{s:Declarations}) attempt to address this issue: 1319 \begin{quote2} 1320 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 1321 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1322 \begin{cfa} 1323 ®const® * ®const® * const int ccp; 1324 ®const® & ®const® & const int ccr; 1325 \end{cfa} 1326 & 1327 \begin{cfa} 1328 const int * ®const® * ®const® ccp; 1329 1330 \end{cfa} 1331 \end{tabular} 1332 \end{quote2} 1333 where the \CFA declaration is read left-to-right. 1334 1335 Finally, like pointers, references are usable and composable with other type operators and generators. 1336 \begin{cfa} 1337 int w, x, y, z, & ar[3] = { x, y, z }; §\C{// initialize array of references}§ 1338 &ar[1] = &w; §\C{// change reference array element}§ 1339 typeof( ar[1] ) p; §\C{// (gcc) is int, i.e., the type of referenced object}§ 1340 typeof( &ar[1] ) q; §\C{// (gcc) is int \&, i.e., the type of reference}§ 1341 sizeof( ar[1] ) == sizeof( int ); §\C{// is true, i.e., the size of referenced object}§ 1342 sizeof( &ar[1] ) == sizeof( int *) §\C{// is true, i.e., the size of a reference}§ 1343 \end{cfa} 1344 1345 In contrast to \CFA reference types, \Index*[C++]{\CC{}}'s reference types are all ©const© references, preventing changes to the reference address, so only value assignment is possible, which eliminates half of the \Index{address duality}. 1346 Also, \CC does not allow \Index{array}s\index{array!reference} of reference\footnote{ 1347 The reason for disallowing arrays of reference is unknown, but possibly comes from references being ethereal (like a textual macro), and hence, replaceable by the referant object.} 1348 \Index*{Java}'s reference types to objects (all Java objects are on the heap) are like C pointers, which always manipulate the address, and there is no (bit-wise) object assignment, so objects are explicitly cloned by shallow or deep copying, which eliminates half of the address duality. 1349 1350 1351 \subsection{Initialization} 1352 1353 \Index{Initialization} is different than \Index{assignment} because initialization occurs on the empty (uninitialized) storage on an object, while assignment occurs on possibly initialized storage of an object. 1354 There are three initialization contexts in \CFA: declaration initialization, argument/parameter binding, return/temporary binding. 1355 Because the object being initialized has no value, there is only one meaningful semantics with respect to address duality: it must mean address as there is no pointed-to value. 1356 In contrast, the left-hand side of assignment has an address that has a duality. 1357 Therefore, for pointer/reference initialization, the initializing value must be an address not a value. 1358 \begin{cfa} 1359 int * p = &x; §\C{// assign address of x}§ 1360 ®int * p = x;® §\C{// assign value of x}§ 1361 int & r = x; §\C{// must have address of x}§ 1362 \end{cfa} 1363 Like the previous example with C pointer-arithmetic, it is unlikely assigning the value of ©x© into a pointer is meaningful (again, a warning is usually given). 1364 Therefore, for safety, this context requires an address, so it is superfluous to require explicitly taking the address of the initialization object, even though the type is incorrect. 1365 Note, this is strictly a convenience and safety feature for a programmer. 1366 Hence, \CFA allows ©r© to be assigned ©x© because it infers a reference for ©x©, by implicitly inserting a address-of operator, ©&©, and it is an error to put an ©&© because the types no longer match due to the implicit dereference. 1367 Unfortunately, C allows ©p© to be assigned with ©&x© (address) or ©x© (value), but most compilers warn about the latter assignment as being potentially incorrect. 1368 Similarly, when a reference type is used for a parameter/return type, the call-site argument does not require a reference operator for the same reason. 1369 \begin{cfa} 1370 int & f( int & r ); §\C{// reference parameter and return}§ 1371 z = f( x ) + f( y ); §\C{// reference operator added, temporaries needed for call results}§ 1372 \end{cfa} 1373 Within routine ©f©, it is possible to change the argument by changing the corresponding parameter, and parameter ©r© can be locally reassigned within ©f©. 1374 Since operator routine ©?+?© takes its arguments by value, the references returned from ©f© are used to initialize compiler generated temporaries with value semantics that copy from the references. 1375 \begin{cfa} 1376 int temp1 = f( x ), temp2 = f( y ); 1377 z = temp1 + temp2; 1378 \end{cfa} 1379 This \Index{implicit referencing} is crucial for reducing the syntactic burden for programmers when using references; 1380 otherwise references have the same syntactic burden as pointers in these contexts. 1381 1382 When a pointer/reference parameter has a ©const© value (immutable), it is possible to pass literals and expressions. 1383 \begin{cfa} 1384 void f( ®const® int & cr ); 1385 void g( ®const® int * cp ); 1386 f( 3 ); g( ®&®3 ); 1387 f( x + y ); g( ®&®(x + y) ); 1388 \end{cfa} 1389 Here, the compiler passes the address to the literal 3 or the temporary for the expression ©x + y©, knowing the argument cannot be changed through the parameter. 1390 The ©&© before the constant/expression for the pointer-type parameter (©g©) is a \CFA extension necessary to type match and is a common requirement before a variable in C (\eg ©scanf©). 1391 Importantly, ©&3© may not be equal to ©&3©, where the references occur across calls because the temporaries maybe different on each call. 1392 1393 \CFA \emph{extends} this semantics to a mutable pointer/reference parameter, and the compiler implicitly creates the necessary temporary (copying the argument), which is subsequently pointed-to by the reference parameter and can be changed.\footnote{ 1394 If whole program analysis is possible, and shows the parameter is not assigned, \ie it is ©const©, the temporary is unnecessary.} 1395 \begin{cfa} 1396 void f( int & r ); 1397 void g( int * p ); 1398 f( 3 ); g( ®&®3 ); §\C{// compiler implicit generates temporaries}§ 1399 f( x + y ); g( ®&®(x + y) ); §\C{// compiler implicit generates temporaries}§ 1400 \end{cfa} 1401 Essentially, there is an implicit \Index{rvalue} to \Index{lvalue} conversion in this case.\footnote{ 1402 This conversion attempts to address the \newterm{const hell} problem, when the innocent addition of a ©const© qualifier causes a cascade of type failures, requiring an unknown number of additional ©const© qualifiers, until it is discovered a ©const© qualifier cannot be added and all the ©const© qualifiers must be removed.} 1403 The implicit conversion allows seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call. 1404 1405 %\CFA attempts to handle pointers and references in a uniform, symmetric manner. 1406 Finally, C handles \Index{routine object}s in an inconsistent way. 1407 A routine object is both a pointer and a reference (\Index{particle and wave}). 1408 \begin{cfa} 1409 void f( int i ); 1410 void (*fp)( int ); §\C{// routine pointer}§ 1411 fp = f; §\C{// reference initialization}§ 1412 fp = &f; §\C{// pointer initialization}§ 1413 fp = *f; §\C{// reference initialization}§ 1414 fp(3); §\C{// reference invocation}§ 1415 (*fp)(3); §\C{// pointer invocation}§ 1416 \end{cfa} 1417 While C's treatment of routine objects has similarity to inferring a reference type in initialization contexts, the examples are assignment not initialization, and all possible forms of assignment are possible (©f©, ©&f©, ©*f©) without regard for type. 1418 Instead, a routine object should be referenced by a ©const© reference: 1419 \begin{cfa} 1420 ®const® void (®&® fr)( int ) = f; §\C{// routine reference}§ 1421 fr = ... §\C{// error, cannot change code}§ 1422 &fr = ...; §\C{// changing routine reference}§ 1423 fr( 3 ); §\C{// reference call to f}§ 1424 (*fr)(3); §\C{// error, incorrect type}§ 1425 \end{cfa} 1426 because the value of the routine object is a routine literal, \ie the routine code is normally immutable during execution.\footnote{ 1427 Dynamic code rewriting is possible but only in special circumstances.} 1428 \CFA allows this additional use of references for routine objects in an attempt to give a more consistent meaning for them. 1429 1430 1431 \subsection{Address-of Semantics} 1432 1433 In C, ©&E© is an rvalue for any expression ©E©. 1434 \CFA extends the ©&© (address-of) operator as follows: 1435 \begin{itemize} 1436 \item 1437 if ©R© is an \Index{rvalue} of type ©T &$_1$...&$_r$© where $r \ge 1$ references (©&© symbols) than ©&R© has type ©T ®*®&$_{\color{red}2}$...&$_{\color{red}r}$©, \ie ©T© pointer with $r-1$ references (©&© symbols). 1438 1439 \item 1440 if ©L© is an \Index{lvalue} of type ©T &$_1$...&$_l$© where $l \ge 0$ references (©&© symbols) then ©&L© has type ©T ®*®&$_{\color{red}1}$...&$_{\color{red}l}$©, \ie ©T© pointer with $l$ references (©&© symbols). 1441 \end{itemize} 1442 The following example shows the first rule applied to different \Index{rvalue} contexts: 1443 \begin{cfa} 1444 int x, * px, ** ppx, *** pppx, **** ppppx; 1445 int & rx = x, && rrx = rx, &&& rrrx = rrx ; 1446 x = rrrx; // rrrx is an lvalue with type int &&& (equivalent to x) 1447 px = &rrrx; // starting from rrrx, &rrrx is an rvalue with type int *&&& (&x) 1448 ppx = &&rrrx; // starting from &rrrx, &&rrrx is an rvalue with type int **&& (&rx) 1449 pppx = &&&rrrx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (&rrx) 1450 ppppx = &&&&rrrx; // starting from &&&rrrx, &&&&rrrx is an rvalue with type int **** (&rrrx) 1451 \end{cfa} 1452 The following example shows the second rule applied to different \Index{lvalue} contexts: 1453 \begin{cfa} 1454 int x, * px, ** ppx, *** pppx; 1455 int & rx = x, && rrx = rx, &&& rrrx = rrx ; 1456 rrrx = 2; // rrrx is an lvalue with type int &&& (equivalent to x) 1457 &rrrx = px; // starting from rrrx, &rrrx is an rvalue with type int *&&& (rx) 1458 &&rrrx = ppx; // starting from &rrrx, &&rrrx is an rvalue with type int **&& (rrx) 1459 &&&rrrx = pppx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (rrrx) 1460 \end{cfa} 1461 1462 1463 \subsection{Conversions} 1464 1465 C provides a basic implicit conversion to simplify variable usage: 1466 \begin{enumerate} 1467 \setcounter{enumi}{-1} 1468 \item 1469 lvalue to rvalue conversion: ©cv T© converts to ©T©, which allows implicit variable dereferencing. 1470 \begin{cfa} 1471 int x; 1472 x + 1; // lvalue variable (int) converts to rvalue for expression 1473 \end{cfa} 1474 An rvalue has no type qualifiers (©cv©), so the lvalue qualifiers are dropped. 1475 \end{enumerate} 1476 \CFA provides three new implicit conversion for reference types to simplify reference usage. 1477 \begin{enumerate} 1478 \item 1479 reference to rvalue conversion: ©cv T &© converts to ©T©, which allows implicit reference dereferencing. 1480 \begin{cfa} 1481 int x, &r = x, f( int p ); 1482 x = ®r® + f( ®r® ); // lvalue reference converts to rvalue 1483 \end{cfa} 1484 An rvalue has no type qualifiers (©cv©), so the reference qualifiers are dropped. 1485 1486 \item 1487 lvalue to reference conversion: \lstinline[deletekeywords={lvalue}]@lvalue-type cv1 T@ converts to ©cv2 T &©, which allows implicitly converting variables to references. 1488 \begin{cfa} 1489 int x, &r = ®x®, f( int & p ); // lvalue variable (int) convert to reference (int &) 1490 f( ®x® ); // lvalue variable (int) convert to reference (int &) 1491 \end{cfa} 1492 Conversion can restrict a type, where ©cv1© $\le$ ©cv2©, \eg passing an ©int© to a ©const volatile int &©, which has low cost. 1493 Conversion can expand a type, where ©cv1© $>$ ©cv2©, \eg passing a ©const volatile int© to an ©int &©, which has high cost (\Index{warning}); 1494 furthermore, if ©cv1© has ©const© but not ©cv2©, a temporary variable is created to preserve the immutable lvalue. 1495 1496 \item 1497 rvalue to reference conversion: ©T© converts to ©cv T &©, which allows binding references to temporaries. 1498 \begin{cfa} 1499 int x, & f( int & p ); 1500 f( ®x + 3® ); // rvalue parameter (int) implicitly converts to lvalue temporary reference (int &) 1501 ®&f®(...) = &x; // rvalue result (int &) implicitly converts to lvalue temporary reference (int &) 1502 \end{cfa} 1503 In both case, modifications to the temporary are inaccessible (\Index{warning}). 1504 Conversion expands the temporary-type with ©cv©, which is low cost since the temporary is inaccessible. 1505 \end{enumerate} 1506 1507 1508 \begin{comment} 1509 From: Richard Bilson <rcbilson@gmail.com> 1510 Date: Wed, 13 Jul 2016 01:58:58 +0000 1511 Subject: Re: pointers / references 1512 To: "Peter A. Buhr" <pabuhr@plg2.cs.uwaterloo.ca> 1513 1514 As a general comment I would say that I found the section confusing, as you move back and forth 1515 between various real and imagined programming languages. If it were me I would rewrite into two 1516 subsections, one that specifies precisely the syntax and semantics of reference variables and 1517 another that provides the rationale. 1518 1519 I don't see any obvious problems with the syntax or semantics so far as I understand them. It's not 1520 obvious that the description you're giving is complete, but I'm sure you'll find the special cases 1521 as you do the implementation. 1522 1523 My big gripes are mostly that you're not being as precise as you need to be in your terminology, and 1524 that you say a few things that aren't actually true even though I generally know what you mean. 1525 1526 20 C provides a pointer type; CFA adds a reference type. Both types contain an address, which is normally a 1527 21 location in memory. 1528 1529 An address is not a location in memory; an address refers to a location in memory. Furthermore it 1530 seems weird to me to say that a type "contains" an address; rather, objects of that type do. 1531 1532 21 Special addresses are used to denote certain states or access co-processor memory. By 1533 22 convention, no variable is placed at address 0, so addresses like 0, 1, 2, 3 are often used to denote no-value 1534 23 or other special states. 1535 1536 This isn't standard C at all. There has to be one null pointer representation, but it doesn't have 1537 to be a literal zero representation and there doesn't have to be more than one such representation. 1538 1539 23 Often dereferencing a special state causes a memory fault, so checking is necessary 1540 24 during execution. 1541 1542 I don't see the connection between the two clauses here. I feel like if a bad pointer will not cause 1543 a memory fault then I need to do more checking, not less. 1544 1545 24 If the programming language assigns addresses, a program's execution is sound, \ie all 1546 25 addresses are to valid memory locations. 1547 1548 You haven't said what it means to "assign" an address, but if I use my intuitive understanding of 1549 the term I don't see how this can be true unless you're assuming automatic storage management. 1550 1551 1 Program variables are implicit pointers to memory locations generated by the compiler and automatically 1552 2 dereferenced, as in: 1553 1554 There is no reason why a variable needs to have a location in memory, and indeed in a typical 1555 program many variables will not. In standard terminology an object identifier refers to data in the 1556 execution environment, but not necessarily in memory. 1557 1558 13 A pointer/reference is a generalization of a variable name, \ie a mutable address that can point to more 1559 14 than one memory location during its lifetime. 1560 1561 I feel like you're off the reservation here. In my world there are objects of pointer type, which 1562 seem to be what you're describing here, but also pointer values, which can be stored in an object of 1563 pointer type but don't necessarily have to be. For example, how would you describe the value denoted 1564 by "&main" in a C program? I would call it a (function) pointer, but that doesn't satisfy your 1565 definition. 1566 1567 16 not occupy storage as the literal is embedded directly into instructions.) Hence, a pointer occupies memory 1568 17 to store its current address, and the pointer's value is loaded by dereferencing, \eg: 1569 1570 As with my general objection regarding your definition of variables, there is no reason why a 1571 pointer variable (object of pointer type) needs to occupy memory. 1572 1573 21 p2 = p1 + x; // compiler infers *p2 = *p1 + x; 1574 1575 What language are we in now? 1576 1577 24 pointer usage. However, in C, the following cases are ambiguous, especially with pointer arithmetic: 1578 25 p1 = p2; // p1 = p2 or *p1 = *p2 1579 1580 This isn't ambiguous. it's defined to be the first option. 1581 1582 26 p1 = p1 + 1; // p1 = p1 + 1 or *p1 = *p1 + 1 1583 1584 Again, this statement is not ambiguous. 1585 1586 13 example. Hence, a reference behaves like the variable name for the current variable it is pointing-to. The 1587 14 simplest way to understand a reference is to imagine the compiler inserting a dereference operator before 1588 15 the reference variable for each reference qualifier in a declaration, \eg: 1589 1590 It's hard for me to understand who the audience for this part is. I think a practical programmer is 1591 likely to be satisfied with "a reference behaves like the variable name for the current variable it 1592 is pointing-to," maybe with some examples. Your "simplest way" doesn't strike me as simpler than 1593 that. It feels like you're trying to provide a more precise definition for the semantics of 1594 references, but it isn't actually precise enough to be a formal specification. If you want to 1595 express the semantics of references using rewrite rules that's a great way to do it, but lay the 1596 rules out clearly, and when you're showing an example of rewriting keep your 1597 references/pointers/values separate (right now, you use \eg "r3" to mean a reference, a pointer, 1598 and a value). 1599 1600 24 Cancellation works to arbitrary depth, and pointer and reference values are interchangeable because both 1601 25 contain addresses. 1602 1603 Except they're not interchangeable, because they have different and incompatible types. 1604 1605 40 Interestingly, C++ deals with the address duality by making the pointed-to value the default, and prevent- 1606 41 ing changes to the reference address, which eliminates half of the duality. Java deals with the address duality 1607 42 by making address assignment the default and requiring field assignment (direct or indirect via methods), 1608 43 \ie there is no builtin bit-wise or method-wise assignment, which eliminates half of the duality. 1609 1610 I can follow this but I think that's mostly because I already understand what you're trying to 1611 say. I don't think I've ever heard the term "method-wise assignment" and I don't see you defining 1612 it. Furthermore Java does have value assignment of basic (non-class) types, so your summary here 1613 feels incomplete. (If it were me I'd drop this paragraph rather than try to save it.) 1614 1615 11 Hence, for type & const, there is no pointer assignment, so &rc = &x is disallowed, and the address value 1616 12 cannot be 0 unless an arbitrary pointer is assigned to the reference. 1617 1618 Given the pains you've taken to motivate every little bit of the semantics up until now, this last 1619 clause ("the address value cannot be 0") comes out of the blue. It seems like you could have 1620 perfectly reasonable semantics that allowed the initialization of null references. 1621 1622 12 In effect, the compiler is managing the 1623 13 addresses for type & const not the programmer, and by a programming discipline of only using references 1624 14 with references, address errors can be prevented. 1625 1626 Again, is this assuming automatic storage management? 1627 1628 18 rary binding. For reference initialization (like pointer), the initializing value must be an address (lvalue) not 1629 19 a value (rvalue). 1630 1631 This sentence appears to suggest that an address and an lvalue are the same thing. 1632 1633 20 int * p = &x; // both &x and x are possible interpretations 1634 1635 Are you saying that we should be considering "x" as a possible interpretation of the initializer 1636 "&x"? It seems to me that this expression has only one legitimate interpretation in context. 1637 1638 21 int & r = x; // x unlikely interpretation, because of auto-dereferencing 1639 1640 You mean, we can initialize a reference using an integer value? Surely we would need some sort of 1641 cast to induce that interpretation, no? 1642 1643 22 Hence, the compiler implicitly inserts a reference operator, &, before the initialization expression. 1644 1645 But then the expression would have pointer type, which wouldn't be compatible with the type of r. 1646 1647 22 Similarly, 1648 23 when a reference is used for a parameter/return type, the call-site argument does not require a reference 1649 24 operator. 1650 1651 Furthermore, it would not be correct to use a reference operator. 1652 1653 45 The implicit conversion allows 1654 1 seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call. 1655 2 While C' attempts to handle pointers and references in a uniform, symmetric manner, C handles routine 1656 3 variables in an inconsistent way: a routine variable is both a pointer and a reference (particle and wave). 1657 1658 After all this talk of how expressions can have both pointer and value interpretations, you're 1659 disparaging C because it has expressions that have both pointer and value interpretations? 1660 1661 On Sat, Jul 9, 2016 at 4:18 PM Peter A. Buhr <pabuhr@plg.uwaterloo.ca> wrote: 1662 > Aaron discovered a few places where "&"s are missing and where there are too many "&", which are 1663 > corrected in the attached updated. None of the text has changed, if you have started reading 1664 > already. 1665 \end{comment} 1666 1667 1668 \section{Routine Definition} 1669 1670 \CFA also supports a new syntax for routine definition, as well as \Celeven and K\&R routine syntax. 1671 The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, \eg: 1672 \begin{cfa} 1673 ®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) { 1674 §\emph{routine body}§ 1675 } 1676 \end{cfa} 1677 where routine ©f© has three output (return values) and three input parameters. 1678 Existing C syntax cannot be extended with multiple return types because it is impossible to embed a single routine name within multiple return type specifications. 1679 1680 In detail, the brackets, ©[]©, enclose the result type, where each return value is named and that name is a local variable of the particular return type.\footnote{ 1681 \Index*{Michael Tiemann}, with help from \Index*{Doug Lea}, provided named return values in g++, circa 1989.} 1682 The value of each local return variable is automatically returned at routine termination. 1683 Declaration qualifiers can only appear at the start of a routine definition, \eg: 1684 \begin{cfa} 1685 ®extern® [ int x ] g( int y ) {§\,§} 1686 \end{cfa} 1687 Lastly, if there are no output parameters or input parameters, the brackets and/or parentheses must still be specified; 1688 in both cases the type is assumed to be void as opposed to old style C defaults of int return type and unknown parameter types, respectively, as in: 1689 \begin{cfa} 1690 [§\,§] g(); §\C{// no input or output parameters}§ 1691 [ void ] g( void ); §\C{// no input or output parameters}§ 1692 \end{cfa} 1693 1694 Routine f is called as follows: 1695 \begin{cfa} 1696 [ i, j, ch ] = f( 3, 'a', ch ); 1697 \end{cfa} 1698 The list of return values from f and the grouping on the left-hand side of the assignment is called a \newterm{return list} and discussed in Section 12. 1699 1700 \CFA style declarations cannot be used to declare parameters for K\&R style routine definitions because of the following ambiguity: 1701 \begin{cfa} 1702 int (*f(x))[ 5 ] int x; {} 1703 \end{cfa} 1704 The string ``©int (*f(x))[ 5 ]©'' declares a K\&R style routine of type returning a pointer to an array of 5 integers, while the string ``©[ 5 ] int x©'' declares a \CFA style parameter x of type array of 5 integers. 1705 Since the strings overlap starting with the open bracket, ©[©, there is an ambiguous interpretation for the string. 1706 As well, \CFA-style declarations cannot be used to declare parameters for C-style routine-definitions because of the following ambiguity: 1707 \begin{cfa} 1708 typedef int foo; 1709 int f( int (* foo) ); §\C{// foo is redefined as a parameter name}§ 1710 \end{cfa} 1711 The string ``©int (* foo)©'' declares a C-style named-parameter of type pointer to an integer (the parenthesis are superfluous), while the same string declares a \CFA style unnamed parameter of type routine returning integer with unnamed parameter of type pointer to foo. 1712 The redefinition of a type name in a parameter list is the only context in C where the character ©*© can appear to the left of a type name, and \CFA relies on all type qualifier characters appearing to the right of the type name. 1713 The inability to use \CFA declarations in these two contexts is probably a blessing because it precludes programmers from arbitrarily switching between declarations forms within a declaration contexts. 1714 1715 C-style declarations can be used to declare parameters for \CFA style routine definitions, \eg: 1716 \begin{cfa} 1717 [ int ] f( * int, int * ); §\C{// returns an integer, accepts 2 pointers to integers}§ 1718 [ * int, int * ] f( int ); §\C{// returns 2 pointers to integers, accepts an integer}§ 1719 \end{cfa} 1720 The reason for allowing both declaration styles in the new context is for backwards compatibility with existing preprocessor macros that generate C-style declaration-syntax, as in: 1721 \begin{cfa} 1722 #define ptoa( n, d ) int (*n)[ d ] 1723 int f( ptoa( p, 5 ) ) ... §\C{// expands to int f( int (*p)[ 5 ] )}§ 1724 [ int ] f( ptoa( p, 5 ) ) ... §\C{// expands to [ int ] f( int (*p)[ 5 ] )}§ 1725 \end{cfa} 1726 Again, programmers are highly encouraged to use one declaration form or the other, rather than mixing the forms. 1727 1728 1729 \subsection{Named Return Values} 1730 1731 \Index{Named return values} handle the case where it is necessary to define a local variable whose value is then returned in a ©return© statement, as in: 1732 \begin{cfa} 1733 int f() { 1734 int x; 1735 ... x = 0; ... x = y; ... 1736 return x; 1737 } 1738 \end{cfa} 1739 Because the value in the return variable is automatically returned when a \CFA routine terminates, the ©return© statement \emph{does not} contain an expression, as in: 1740 \newline 1741 \begin{minipage}{\linewidth} 1742 \begin{cfa} 1743 ®[ int x, int y ]® f() { 1744 int z; 1745 ... x = 0; ... y = z; ... 1746 ®return;® §\C{// implicitly return x, y}§ 1747 } 1748 \end{cfa} 1749 \end{minipage} 1750 \newline 1751 When the return is encountered, the current values of ©x© and ©y© are returned to the calling routine. 1752 As well, ``falling off the end'' of a routine without a ©return© statement is permitted, as in: 1753 \begin{cfa} 1754 [ int x, int y ] f() { 1755 ... 1756 } §\C{// implicitly return x, y}§ 1757 \end{cfa} 1758 In this case, the current values of ©x© and ©y© are returned to the calling routine just as if a ©return© had been encountered. 1759 1760 Named return values may be used in conjunction with named parameter values; 1761 specifically, a return and parameter can have the same name. 1762 \begin{cfa} 1763 [ int x, int y ] f( int, x, int y ) { 1764 ... 1765 } §\C{// implicitly return x, y}§ 1766 \end{cfa} 1767 This notation allows the compiler to eliminate temporary variables in nested routine calls. 1768 \begin{cfa} 1769 [ int x, int y ] f( int, x, int y ); §\C{// prototype declaration}§ 1770 int a, b; 1771 [a, b] = f( f( f( a, b ) ) ); 1772 \end{cfa} 1773 While the compiler normally ignores parameters names in prototype declarations, here they are used to eliminate temporary return-values by inferring that the results of each call are the inputs of the next call, and ultimately, the left-hand side of the assignment. 1774 Hence, even without the body of routine ©f© (separate compilation), it is possible to perform a global optimization across routine calls. 1775 The compiler warns about naming inconsistencies between routine prototype and definition in this case, and behaviour is \Index{undefined} if the programmer is inconsistent. 1776 1777 1778 \subsection{Routine Prototype} 1779 1780 The syntax of the new routine prototype declaration follows directly from the new routine definition syntax; 1781 as well, parameter names are optional, \eg: 1782 \begin{cfa} 1783 [ int x ] f (); §\C{// returning int with no parameters}§ 1784 [ * int ] g (int y); §\C{// returning pointer to int with int parameter}§ 1785 [ ] h ( int, char ); §\C{// returning no result with int and char parameters}§ 1786 [ * int, int ] j ( int ); §\C{// returning pointer to int and int, with int parameter}§ 1787 \end{cfa} 1788 This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa). 1789 It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), \eg: 1790 \begin{quote2} 1791 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 1792 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1793 \begin{cfa} 1794 [ int ] f( int ), g; 1795 \end{cfa} 1796 & 1797 \begin{cfa} 1798 int f( int ), g( int ); 1799 \end{cfa} 1800 \end{tabular} 1801 \end{quote2} 1802 Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} \eg: 1803 \begin{cfa} 1804 extern [ int ] f ( int ); 1805 static [ int ] g ( int ); 1806 \end{cfa} 1807 1808 1809 \section{Routine Pointers} 1810 1811 The syntax for pointers to \CFA routines specifies the pointer name on the right, \eg: 1812 \begin{cfa} 1813 * [ int x ] () fp; §\C{// pointer to routine returning int with no parameters}§ 1814 * [ * int ] (int y) gp; §\C{// pointer to routine returning pointer to int with int parameter}§ 1815 * [ ] (int,char) hp; §\C{// pointer to routine returning no result with int and char parameters}§ 1816 * [ * int,int ] ( int ) jp; §\C{// pointer to routine returning pointer to int and int, with int parameter}§ 1817 \end{cfa} 1818 While parameter names are optional, \emph{a routine name cannot be specified}; 1819 for example, the following is incorrect: 1820 \begin{cfa} 1821 * [ int x ] f () fp; §\C{// routine name "f" is not allowed}§ 1822 \end{cfa} 1823 1824 1825 \section{Named and Default Arguments} 1826 1827 Named\index{named arguments}\index{arguments!named} and default\index{default arguments}\index{arguments!default} arguments~\cite{Hardgrave76}\footnote{ 1828 Francez~\cite{Francez77} proposed a further extension to the named-parameter passing style, which specifies what type of communication (by value, by reference, by name) the argument is passed to the routine.} 1829 are two mechanisms to simplify routine call. 1830 Both mechanisms are discussed with respect to \CFA. 1831 \begin{description} 1832 \item[Named (or Keyword) Arguments:] 1833 provide the ability to specify an argument to a routine call using the parameter name rather than the position of the parameter. 1834 For example, given the routine: 1835 \begin{cfa} 1836 void p( int x, int y, int z ) {...} 1837 \end{cfa} 1838 a positional call is: 1839 \begin{cfa} 1840 p( 4, 7, 3 ); 1841 \end{cfa} 1842 whereas a named (keyword) call may be: 1843 \begin{cfa} 1844 p( z : 3, x : 4, y : 7 ); §\C{// rewrite $\Rightarrow$ p( 4, 7, 3 )}§ 1845 \end{cfa} 1846 Here the order of the arguments is unimportant, and the names of the parameters are used to associate argument values with the corresponding parameters. 1847 The compiler rewrites a named call into a positional call. 1848 The advantages of named parameters are: 1849 \begin{itemize} 1850 \item 1851 Remembering the names of the parameters may be easier than the order in the routine definition. 1852 \item 1853 Parameter names provide documentation at the call site (assuming the names are descriptive). 1854 \item 1855 Changes can be made to the order or number of parameters without affecting the call (although the call must still be recompiled). 1856 \end{itemize} 1857 1858 Unfortunately, named arguments do not work in C-style programming-languages because a routine prototype is not required to specify parameter names, nor do the names in the prototype have to match with the actual definition. 1859 For example, the following routine prototypes and definition are all valid. 1860 \begin{cfa} 1861 void p( int, int, int ); §\C{// equivalent prototypes}§ 1862 void p( int x, int y, int z ); 1863 void p( int y, int x, int z ); 1864 void p( int z, int y, int x ); 1865 void p( int q, int r, int s ) {} §\C{// match with this definition}§ 1866 \end{cfa} 1867 Forcing matching parameter names in routine prototypes with corresponding routine definitions is possible, but goes against a strong tradition in C programming. 1868 Alternatively, prototype definitions can be eliminated by using a two-pass compilation, and implicitly creating header files for exports. 1869 The former is easy to do, while the latter is more complex. 1870 1871 Furthermore, named arguments do not work well in a \CFA-style programming-languages because they potentially introduces a new criteria for type matching. 1872 For example, it is technically possible to disambiguate between these two overloaded definitions of ©f© based on named arguments at the call site: 1873 \begin{cfa} 1874 int f( int i, int j ); 1875 int f( int x, double y ); 1876 1877 f( j : 3, i : 4 ); §\C{// 1st f}§ 1878 f( x : 7, y : 8.1 ); §\C{// 2nd f}§ 1879 f( 4, 5 ); §\C{// ambiguous call}§ 1880 \end{cfa} 1881 However, named arguments compound routine resolution in conjunction with conversions: 1882 \begin{cfa} 1883 f( i : 3, 5.7 ); §\C{// ambiguous call ?}§ 1884 \end{cfa} 1885 Depending on the cost associated with named arguments, this call could be resolvable or ambiguous. 1886 Adding named argument into the routine resolution algorithm does not seem worth the complexity. 1887 Therefore, \CFA does \emph{not} attempt to support named arguments. 1888 1889 \item[Default Arguments] 1890 provide the ability to associate a default value with a parameter so it can be optionally specified in the argument list. 1891 For example, given the routine: 1892 \begin{cfa} 1893 void p( int x = 1, int y = 2, int z = 3 ) {...} 1894 \end{cfa} 1895 the allowable positional calls are: 1896 \begin{cfa} 1897 p(); §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§ 1898 p( 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§ 1899 p( 4, 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§ 1900 p( 4, 4, 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 4, 4 )}§ 1901 // empty arguments 1902 p( , 4, 4 ); §\C{// rewrite $\Rightarrow$ p( 1, 4, 4 )}§ 1903 p( 4, , 4 ); §\C{// rewrite $\Rightarrow$ p( 4, 2, 4 )}§ 1904 p( 4, 4, ); §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§ 1905 p( 4, , ); §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§ 1906 p( , 4, ); §\C{// rewrite $\Rightarrow$ p( 1, 4, 3 )}§ 1907 p( , , 4 ); §\C{// rewrite $\Rightarrow$ p( 1, 2, 4 )}§ 1908 p( , , ); §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§ 1909 \end{cfa} 1910 Here the missing arguments are inserted from the default values in the parameter list. 1911 The compiler rewrites missing default values into explicit positional arguments. 1912 The advantages of default values are: 1913 \begin{itemize} 1914 \item 1915 Routines with a large number of parameters are often very generalized, giving a programmer a number of different options on how a computation is performed. 1916 For many of these kinds of routines, there are standard or default settings that work for the majority of computations. 1917 Without default values for parameters, a programmer is forced to specify these common values all the time, resulting in long argument lists that are error prone. 1918 \item 1919 When a routine's interface is augmented with new parameters, it extends the interface providing generalizability\footnote{ 1920 ``It should be possible for the implementor of an abstraction to increase its generality. 1921 So long as the modified abstraction is a generalization of the original, existing uses of the abstraction will not require change. 1922 It might be possible to modify an abstraction in a manner which is not a generalization without affecting existing uses, but, without inspecting the modules in which the uses occur, this possibility cannot be determined. 1923 This criterion precludes the addition of parameters, unless these parameters have default or inferred values that are valid for all possible existing applications.''~\cite[p.~128]{Cormack90}} 1924 (somewhat like the generalization provided by inheritance for classes). 1925 That is, all existing calls are still valid, although the call must still be recompiled. 1926 \end{itemize} 1927 The only disadvantage of default arguments is that unintentional omission of an argument may not result in a compiler-time error. 1928 Instead, a default value is used, which may not be the programmer's intent. 1929 1930 Default values may only appear in a prototype versus definition context: 1931 \begin{cfa} 1932 void p( int x, int y = 2, int z = 3 ); §\C{// prototype: allowed}§ 1933 void p( int, int = 2, int = 3 ); §\C{// prototype: allowed}§ 1934 void p( int x, int y = 2, int z = 3 ) {} §\C{// definition: not allowed}§ 1935 \end{cfa} 1936 The reason for this restriction is to allow separate compilation. 1937 Multiple prototypes with different default values is an error. 1938 \end{description} 1939 1940 Ellipse (``...'') arguments present problems when used with default arguments. 1941 The conflict occurs because both named and ellipse arguments must appear after positional arguments, giving two possibilities: 1942 \begin{cfa} 1943 p( /* positional */, ... , /* named */ ); 1944 p( /* positional */, /* named */, ... ); 1945 \end{cfa} 1946 While it is possible to implement both approaches, the first possibly is more complex than the second, \eg: 1947 \begin{cfa} 1948 p( int x, int y, int z, ... ); 1949 p( 1, 4, 5, 6, z : 3, y : 2 ); §\C{// assume p( /* positional */, ... , /* named */ );}§ 1950 p( 1, z : 3, y : 2, 4, 5, 6 ); §\C{// assume p( /* positional */, /* named */, ... );}§ 1951 \end{cfa} 1952 In the first call, it is necessary for the programmer to conceptually rewrite the call, changing named arguments into positional, before knowing where the ellipse arguments begin. 1953 Hence, this approach seems significantly more difficult, and hence, confusing and error prone. 1954 In the second call, the named arguments separate the positional and ellipse arguments, making it trivial to read the call. 1955 1956 The problem is exacerbated with default arguments, \eg: 1957 \begin{cfa} 1958 void p( int x, int y = 2, int z = 3... ); 1959 p( 1, 4, 5, 6, z : 3 ); §\C{// assume p( /* positional */, ... , /* named */ );}§ 1960 p( 1, z : 3, 4, 5, 6 ); §\C{// assume p( /* positional */, /* named */, ... );}§ 1961 \end{cfa} 1962 The first call is an error because arguments 4 and 5 are actually positional not ellipse arguments; 1963 therefore, argument 5 subsequently conflicts with the named argument z : 3. 1964 In the second call, the default value for y is implicitly inserted after argument 1 and the named arguments separate the positional and ellipse arguments, making it trivial to read the call. 1965 For these reasons, \CFA requires named arguments before ellipse arguments. 1966 Finally, while ellipse arguments are needed for a small set of existing C routines, like printf, the extended \CFA type system largely eliminates the need for ellipse arguments (see Section 24), making much of this discussion moot. 1967 1968 Default arguments and overloading (see Section 24) are complementary. 1969 While in theory default arguments can be simulated with overloading, as in: 1970 \begin{quote2} 1971 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 1972 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{default arguments}} & \multicolumn{1}{c}{\textbf{overloading}} \\ 1973 \begin{cfa} 1974 void p( int x, int y = 2, int z = 3 ) {...} 1975 1976 1977 \end{cfa} 1978 & 1979 \begin{cfa} 1980 void p( int x, int y, int z ) {...} 1981 void p( int x ) { p( x, 2, 3 ); } 1982 void p( int x, int y ) { p( x, y, 3 ); } 1983 \end{cfa} 1984 \end{tabular} 1985 \end{quote2} 1986 the number of required overloaded routines is linear in the number of default values, which is unacceptable growth. 1987 In general, overloading should only be used over default arguments if the body of the routine is significantly different. 1988 Furthermore, overloading cannot handle accessing default arguments in the middle of a positional list, via a missing argument, such as: 1989 \begin{cfa} 1990 p( 1, /* default */, 5 ); §\C{// rewrite $\Rightarrow$ p( 1, 2, 5 )}§ 1991 \end{cfa} 1992 1993 Given the \CFA restrictions above, both named and default arguments are backwards compatible. 1994 \Index*[C++]{\CC{}} only supports default arguments; 1995 \Index*{Ada} supports both named and default arguments. 1996 1997 1998 \section{Unnamed Structure Fields} 1999 2000 C requires each field of a structure to have a name, except for a bit field associated with a basic type, \eg: 2001 \begin{cfa} 2002 struct { 2003 int f1; §\C{// named field}§ 2004 int f2 : 4; §\C{// named field with bit field size}§ 2005 int : 3; §\C{// unnamed field for basic type with bit field size}§ 2006 int ; §\C{// disallowed, unnamed field}§ 2007 int *; §\C{// disallowed, unnamed field}§ 2008 int (*)( int ); §\C{// disallowed, unnamed field}§ 2009 }; 2010 \end{cfa} 2011 This requirement is relaxed by making the field name optional for all field declarations; therefore, all the field declarations in the example are allowed. 2012 As for unnamed bit fields, an unnamed field is used for padding a structure to a particular size. 2013 A list of unnamed fields is also supported, \eg: 2014 \begin{cfa} 2015 struct { 2016 int , , ; §\C{// 3 unnamed fields}§ 2017 } 2018 \end{cfa} 2019 2020 2021 \section{Nesting} 2022 2023 Nesting of types and routines is useful for controlling name visibility (\newterm{name hiding}). 2024 2025 2026 \subsection{Type Nesting} 2027 2028 \CFA allows \Index{type nesting}, and type qualification of the nested types (see \VRef[Figure]{f:TypeNestingQualification}), where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification. 2029 \begin{figure} 2030 \centering 2031 \begin{tabular}{@{}l@{\hspace{3em}}l|l@{}} 2032 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{C Type Nesting}} & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}} & \multicolumn{1}{|c}{\textbf{\CFA}} \\ 2033 \hline 2034 \begin{cfa} 2035 struct S { 2036 enum C { R, G, B }; 2037 struct T { 2038 union U { int i, j; }; 2039 enum C c; 2040 short int i, j; 2041 }; 2042 struct T t; 2043 } s; 2044 2045 int fred() { 2046 s.t.c = R; 2047 struct T t = { R, 1, 2 }; 2048 enum C c; 2049 union U u; 2050 } 2051 \end{cfa} 2052 & 2053 \begin{cfa} 2054 enum C { R, G, B }; 2055 union U { int i, j; }; 2056 struct T { 2057 enum C c; 2058 short int i, j; 2059 }; 2060 struct S { 2061 struct T t; 2062 } s; 2063 2064 2065 2066 2067 2068 2069 2070 \end{cfa} 2071 & 2072 \begin{cfa} 2073 struct S { 2074 enum C { R, G, B }; 2075 struct T { 2076 union U { int i, j; }; 2077 enum C c; 2078 short int i, j; 2079 }; 2080 struct T t; 2081 } s; 2082 2083 int fred() { 2084 s.t.c = ®S.®R; // type qualification 2085 struct ®S.®T t = { ®S.®R, 1, 2 }; 2086 enum ®S.®C c; 2087 union ®S.T.®U u; 2088 } 2089 \end{cfa} 2090 \end{tabular} 2091 \caption{Type Nesting / Qualification} 2092 \label{f:TypeNestingQualification} 2093 \end{figure} 2094 In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope. 2095 In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``©.©'' for type qualification, as does \Index*{Java}, rather than the \CC type-selection operator ``©::©''. 2096 2097 2098 \subsection{Routine Nesting} 2099 2100 While \CFA does not provide object programming by putting routines into structures, it does rely heavily on locally nested routines to redefine operations at or close to a call site. 2101 For example, the C quick-sort is wrapped into the following polymorphic \CFA routine: 2102 \begin{cfa} 2103 forall( otype T | { int ?<?( T, T ); } ) 2104 void qsort( const T * arr, size_t dimension ); 2105 \end{cfa} 2106 which can be used to sort in ascending and descending order by locally redefining the less-than operator into greater-than. 2107 \begin{cfa} 2108 const unsigned int size = 5; 2109 int ia[size]; 2110 ... §\C{// assign values to array ia}§ 2111 qsort( ia, size ); §\C{// sort ascending order using builtin ?<?}§ 2112 { 2113 ®int ?<?( int x, int y ) { return x > y; }® §\C{// nested routine}§ 2114 qsort( ia, size ); §\C{// sort descending order by local redefinition}§ 2115 } 2116 \end{cfa} 2117 2118 Nested routines are not first-class, meaning a nested routine cannot be returned if it has references to variables in its enclosing blocks; 2119 the only exception is references to the external block of the translation unit, as these variables persist for the duration of the program. 2120 The following program in undefined in \CFA (and Indexc{gcc}) 2121 \begin{cfa} 2122 [* [int]( int )] foo() { §\C{// int (*foo())( int )}§ 2123 int ®i® = 7; 2124 int bar( int p ) { 2125 ®i® += 1; §\C{// dependent on local variable}§ 2126 sout | ®i® | endl; 2127 } 2128 return bar; §\C{// undefined because of local dependence}§ 2129 } 2130 int main() { 2131 * [int]( int ) fp = foo(); §\C{// int (*fp)( int )}§ 2132 sout | fp( 3 ) | endl; 2133 } 2134 \end{cfa} 2135 because 2136 2137 Currently, there are no \Index{lambda} expressions, \ie unnamed routines because routine names are very important to properly select the correct routine. 2138 2139 2140 \section{Tuples} 2141 2142 In C and \CFA, lists of elements appear in several contexts, such as the parameter list for a routine call. 2143 (More contexts are added shortly.) 2144 A list of such elements is called a \newterm{lexical list}. 2145 The general syntax of a lexical list is: 2146 \begin{cfa} 2147 [ §\emph{exprlist}§ ] 2148 \end{cfa} 2149 where ©$\emph{exprlist}$© is a list of one or more expressions separated by commas. 2150 The brackets, ©[]©, allow differentiating between lexical lists and expressions containing the C comma operator. 2151 The following are examples of lexical lists: 2152 \begin{cfa} 2153 [ x, y, z ] 2154 [ 2 ] 2155 [ v+w, x*y, 3.14159, f() ] 2156 \end{cfa} 2157 Tuples are permitted to contain sub-tuples (\ie nesting), such as ©[ [ 14, 21 ], 9 ]©, which is a 2-element tuple whose first element is itself a tuple. 2158 Note, a tuple is not a record (structure); 2159 a record denotes a single value with substructure, whereas a tuple is multiple values with no substructure (see flattening coercion in Section 12.1). 2160 In essence, tuples are largely a compile time phenomenon, having little or no runtime presence. 2161 2162 Tuples can be organized into compile-time tuple variables; 2163 these variables are of \newterm{tuple type}. 2164 Tuple variables and types can be used anywhere lists of conventional variables and types can be used. 2165 The general syntax of a tuple type is: 2166 \begin{cfa} 2167 [ §\emph{typelist}§ ] 2168 \end{cfa} 2169 where ©$\emph{typelist}$© is a list of one or more legal \CFA or C type specifications separated by commas, which may include other tuple type specifications. 2170 Examples of tuple types include: 2171 \begin{cfa} 2172 [ unsigned int, char ] 2173 [ double, double, double ] 2174 [ * int, int * ] §\C{// mix of CFA and ANSI}§ 2175 [ * [ 5 ] int, * * char, * [ [ int, int ] ] (int, int) ] 2176 \end{cfa} 2177 Like tuples, tuple types may be nested, such as ©[ [ int, int ], int ]©, which is a 2-element tuple type whose first element is itself a tuple type. 2178 2179 Examples of declarations using tuple types are: 2180 \begin{cfa} 2181 [ int, int ] x; §\C{// 2 element tuple, each element of type int}§ 2182 * [ char, char ] y; §\C{// pointer to a 2 element tuple}§ 2183 [ [ int, int ] ] z ([ int, int ]); 2184 \end{cfa} 2185 The last example declares an external routine that expects a 2 element tuple as an input parameter and returns a 2 element tuple as its result. 2186 2187 As mentioned, tuples can appear in contexts requiring a list of value, such as an argument list of a routine call. 2188 In unambiguous situations, the tuple brackets may be omitted, \eg a tuple that appears as an argument may have its 2189 square brackets omitted for convenience; therefore, the following routine invocations are equivalent: 2190 \begin{cfa} 2191 f( [ 1, x+2, fred() ] ); 2192 f( 1, x+2, fred() ); 2193 \end{cfa} 2194 Also, a tuple or a tuple variable may be used to supply all or part of an argument list for a routine expecting multiple input parameters or for a routine expecting a tuple as an input parameter. 2195 For example, the following are all legal: 2196 \begin{cfa} 2197 [ int, int ] w1; 2198 [ int, int, int ] w2; 2199 [ void ] f (int, int, int); /* three input parameters of type int */ 2200 [ void ] g ([ int, int, int ]); /* 3 element tuple as input */ 2201 f( [ 1, 2, 3 ] ); 2202 f( w1, 3 ); 2203 f( 1, w1 ); 2204 f( w2 ); 2205 g( [ 1, 2, 3 ] ); 2206 g( w1, 3 ); 2207 g( 1, w1 ); 2208 g( w2 ); 2209 \end{cfa} 2210 Note, in all cases 3 arguments are supplied even though the syntax may appear to supply less than 3. As mentioned, a 2211 tuple does not have structure like a record; a tuple is simply converted into a list of components. 2212 \begin{rationale} 2213 The present implementation of \CFA does not support nested routine calls when the inner routine returns multiple values; \ie a statement such as ©g( f() )© is not supported. 2214 Using a temporary variable to store the results of the inner routine and then passing this variable to the outer routine works, however. 2215 \end{rationale} 2216 2217 A tuple can contain a C comma expression, provided the expression containing the comma operator is enclosed in parentheses. 2218 For instance, the following tuples are equivalent: 2219 \begin{cfa} 2220 [ 1, 3, 5 ] 2221 [ 1, (2, 3), 5 ] 2222 \end{cfa} 2223 The second element of the second tuple is the expression (2, 3), which yields the result 3. 2224 This requirement is the same as for comma expressions in argument lists. 2225 2226 Type qualifiers, \ie const and volatile, may modify a tuple type. 2227 The meaning is the same as for a type qualifier modifying an aggregate type [Int99, x 6.5.2.3(7),x 6.7.3(11)], \ie the qualifier is distributed across all of the types in the tuple, \eg: 2228 \begin{cfa} 2229 const volatile [ int, float, const int ] x; 2230 \end{cfa} 2231 is equivalent to: 2232 \begin{cfa} 2233 [ const volatile int, const volatile float, const volatile int ] x; 2234 \end{cfa} 2235 Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, \eg: 2236 \begin{cfa} 2237 extern [ int, int ] w1; 2238 static [ int, int, int ] w2; 2239 \end{cfa} 2240 \begin{rationale} 2241 Unfortunately, C's syntax for subscripts precluded treating them as tuples. 2242 The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©. 2243 Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, \eg ©f[g()]© always means a single subscript value because there is only one set of brackets. 2244 Fixing this requires a major change to C because the syntactic form ©M[i, j, k]© already has a particular meaning: ©i, j, k© is a comma expression. 2245 \end{rationale} 2246 2247 2248 \subsection{Tuple Coercions} 2249 2250 There are four coercions that can be performed on tuples and tuple variables: closing, opening, flattening and structuring. 2251 In addition, the coercion of dereferencing can be performed on a tuple variable to yield its value(s), as for other variables. 2252 A \newterm{closing coercion} takes a set of values and converts it into a tuple value, which is a contiguous set of values, as in: 2253 \begin{cfa} 2254 [ int, int, int, int ] w; 2255 w = [ 1, 2, 3, 4 ]; 2256 \end{cfa} 2257 First the right-hand tuple is closed into a tuple value and then the tuple value is assigned. 2258 2259 An \newterm{opening coercion} is the opposite of closing; a tuple value is converted into a tuple of values, as in: 2260 \begin{cfa} 2261 [ a, b, c, d ] = w 2262 \end{cfa} 2263 ©w© is implicitly opened to yield a tuple of four values, which are then assigned individually. 2264 2265 A \newterm{flattening coercion} coerces a nested tuple, \ie a tuple with one or more components, which are themselves tuples, into a flattened tuple, which is a tuple whose components are not tuples, as in: 2266 \begin{cfa} 2267 [ a, b, c, d ] = [ 1, [ 2, 3 ], 4 ]; 2268 \end{cfa} 2269 First the right-hand tuple is flattened and then the values are assigned individually. 2270 Flattening is also performed on tuple types. 2271 For example, the type ©[ int, [ int, int ], int ]© can be coerced, using flattening, into the type ©[ int, int, int, int ]©. 2272 2273 A \newterm{structuring coercion} is the opposite of flattening; 2274 a tuple is structured into a more complex nested tuple. 2275 For example, structuring the tuple ©[ 1, 2, 3, 4 ]© into the tuple ©[ 1, [ 2, 3 ], 4 ]© or the tuple type ©[ int, int, int, int ]© into the tuple type ©[ int, [ int, int ], int ]©. 2276 In the following example, the last assignment illustrates all the tuple coercions: 2277 \begin{cfa} 2278 [ int, int, int, int ] w = [ 1, 2, 3, 4 ]; 2279 int x = 5; 2280 [ x, w ] = [ w, x ]; §\C{// all four tuple coercions}§ 2281 \end{cfa} 2282 Starting on the right-hand tuple in the last assignment statement, w is opened, producing a tuple of four values; 2283 therefore, the right-hand tuple is now the tuple ©[ [ 1, 2, 3, 4 ], 5 ]©. 2284 This tuple is then flattened, yielding ©[ 1, 2, 3, 4, 5 ]©, which is structured into ©[ 1, [ 2, 3, 4, 5 ] ]© to match the tuple type of the left-hand side. 2285 The tuple ©[ 2, 3, 4, 5 ]© is then closed to create a tuple value. 2286 Finally, ©x© is assigned ©1© and ©w© is assigned the tuple value using multiple assignment (see Section 14). 2287 \begin{rationale} 2288 A possible additional language extension is to use the structuring coercion for tuples to initialize a complex record with a tuple. 2289 \end{rationale} 2290 2291 2292 \section{Mass Assignment} 2293 2294 \CFA permits assignment to several variables at once using mass assignment~\cite{CLU}. 2295 Mass assignment has the following form: 2296 \begin{cfa} 2297 [ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = §\emph{expr}§; 2298 \end{cfa} 2299 \index{lvalue} 2300 The left-hand side is a tuple of \emph{lvalues}, which is a list of expressions each yielding an address, \ie any data object that can appear on the left-hand side of a conventional assignment statement. 2301 ©$\emph{expr}$© is any standard arithmetic expression. 2302 Clearly, the types of the entities being assigned must be type compatible with the value of the expression. 2303 2304 Mass assignment has parallel semantics, \eg the statement: 2305 \begin{cfa} 2306 [ x, y, z ] = 1.5; 2307 \end{cfa} 2308 is equivalent to: 2309 \begin{cfa} 2310 x = 1.5; y = 1.5; z = 1.5; 2311 \end{cfa} 2312 This semantics is not the same as the following in C: 2313 \begin{cfa} 2314 x = y = z = 1.5; 2315 \end{cfa} 2316 as conversions between intermediate assignments may lose information. 2317 A more complex example is: 2318 \begin{cfa} 2319 [ i, y[i], z ] = a + b; 2320 \end{cfa} 2321 which is equivalent to: 2322 \begin{cfa} 2323 t = a + b; 2324 a1 = &i; a2 = &y[i]; a3 = &z; 2325 *a1 = t; *a2 = t; *a3 = t; 2326 \end{cfa} 2327 The temporary ©t© is necessary to store the value of the expression to eliminate conversion issues. 2328 The temporaries for the addresses are needed so that locations on the left-hand side do not change as the values are assigned. 2329 In this case, ©y[i]© uses the previous value of ©i© and not the new value set at the beginning of the mass assignment. 2330 2331 2332 \section{Multiple Assignment} 2333 2334 \CFA also supports the assignment of several values at once, known as multiple assignment~\cite{CLU,Galletly96}. 2335 Multiple assignment has the following form: 2336 \begin{cfa} 2337 [ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = [ §\emph{expr}§, ... , §\emph{expr}§ ]; 2338 \end{cfa} 2339 \index{lvalue} 2340 The left-hand side is a tuple of \emph{lvalues}, and the right-hand side is a tuple of \emph{expr}s. 2341 Each \emph{expr} appearing on the right-hand side of a multiple assignment statement is assigned to the corresponding \emph{lvalues} on the left-hand side of the statement using parallel semantics for each assignment. 2342 An example of multiple assignment is: 2343 \begin{cfa} 2344 [ x, y, z ] = [ 1, 2, 3 ]; 2345 \end{cfa} 2346 Here, the values ©1©, ©2© and ©3© are assigned, respectively, to the variables ©x©, ©y© and ©z©. 2347 A more complex example is: 2348 \begin{cfa} 2349 [ i, y[ i ], z ] = [ 1, i, a + b ]; 2350 \end{cfa} 2351 Here, the values ©1©, ©i© and ©a + b© are assigned to the variables ©i©, ©y[i]© and ©z©, respectively. 2352 Note, the parallel semantics of 2353 multiple assignment ensures: 2354 \begin{cfa} 2355 [ x, y ] = [ y, x ]; 2356 \end{cfa} 2357 correctly interchanges (swaps) the values stored in ©x© and ©y©. 2358 The following cases are errors: 2359 \begin{cfa} 2360 [ a, b, c ] = [ 1, 2, 3, 4 ]; 2361 [ a, b, c ] = [ 1, 2 ]; 2362 \end{cfa} 2363 because the number of entities in the left-hand tuple is unequal with the right-hand tuple. 2364 2365 As for all tuple contexts in C, side effects should not be used because C does not define an ordering for the evaluation of the elements of a tuple; 2366 both these examples produce indeterminate results: 2367 \begin{cfa} 2368 f( x++, x++ ); §\C{// C routine call with side effects in arguments}§ 2369 [ v1, v2 ] = [ x++, x++ ]; §\C{// side effects in righthand side of multiple assignment}§ 2370 \end{cfa} 2371 2372 2373 \section{Cascade Assignment} 2374 2375 As in C, \CFA mass and multiple assignments can be cascaded, producing cascade assignment. 2376 Cascade assignment has the following form: 2377 \begin{cfa} 2378 §\emph{tuple}§ = §\emph{tuple}§ = ... = §\emph{tuple}§; 2379 \end{cfa} 2380 and it has the same parallel semantics as for mass and multiple assignment. 2381 Some examples of cascade assignment are: 2382 \begin{cfa} 2383 x1 = y1 = x2 = y2 = 0; 2384 [ x1, y1 ] = [ x2, y2 ] = [ x3, y3 ]; 2385 [ x1, y1 ] = [ x2, y2 ] = 0; 2386 [ x1, y1 ] = z = 0; 2387 \end{cfa} 2388 As in C, the rightmost assignment is performed first, \ie assignment parses right to left. 2389 2390 2391 \section{Field Tuples} 2392 2393 Tuples may be used to select multiple fields of a record by field name. 2394 Its general form is: 2395 \begin{cfa} 2396 §\emph{expr}§ . [ §\emph{fieldlist}§ ] 2397 §\emph{expr}§ -> [ §\emph{fieldlist}§ ] 2398 \end{cfa} 2399 \emph{expr} is any expression yielding a value of type record, \eg ©struct©, ©union©. 2400 Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}. 2401 A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is 2402 the following: 2403 \begin{cfa} 2404 struct s { 2405 int f1, f2; 2406 char f3; 2407 double f4; 2408 } v; 2409 v.[ f3, f1, f2 ] = ['x', 11, 17 ]; §\C{// equivalent to v.f3 = 'x', v.f1 = 11, v.f2 = 17}§ 2410 f( v.[ f3, f1, f2 ] ); §\C{// equivalent to f( v.f3, v.f1, v.f2 )}§ 2411 \end{cfa} 2412 Note, the fields appearing in a record-field tuple may be specified in any order; 2413 also, it is unnecessary to specify all the fields of a struct in a multiple record-field tuple. 2414 2415 If a field of a ©struct© is itself another ©struct©, multiple fields of this subrecord can be specified using a nested record-field tuple, as in the following example: 2416 \begin{cfa} 2417 struct inner { 2418 int f2, f3; 2419 }; 2420 struct outer { 2421 int f1; 2422 struct inner i; 2423 double f4; 2424 } o; 2425 2426 o.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ]; 2427 \end{cfa} 2428 2429 2399 2430 \section{I/O Library} 2400 2431 \label{s:IOLibrary} … … 2402 2433 2403 2434 The goal of \CFA I/O is to simplify the common cases\index{I/O!common case}, while fully supporting polymorphism and user defined types in a consistent way. 2435 The approach combines ideas from \CC and Python. 2404 2436 The \CFA header file for the I/O library is \Indexc{fstream}. 2405 2437 … … 2419 2451 \\ 2420 2452 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2421 1 232453 1® ®2® ®3 2422 2454 \end{cfa} 2423 2455 & … … 2427 2459 \end{tabular} 2428 2460 \end{quote2} 2429 The \CFA form has half as many characters asthe \CC form, and is similar to \Index*{Python} I/O with respect to implicit separators.2430 A tuple prints all the tuple's values, each separated by ©", "©.2461 The \CFA form has half the characters of the \CC form, and is similar to \Index*{Python} I/O with respect to implicit separators. 2462 Similar simplification occurs for \Index{tuple} I/O, which prints all tuple values separated by ``\lstinline[showspaces=true]@, @''. 2431 2463 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2432 [int, int] t1 = [1, 2], t2 = [3, 4];2464 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ] ]; 2433 2465 sout | t1 | t2 | endl; §\C{// print tuples}§ 2434 2466 \end{cfa} 2435 2467 \begin{cfa}[mathescape=off,showspaces=true,belowskip=0pt] 2436 1 , 2, 3, 42437 \end{cfa} 2438 \CFA uses the logical-or operator for I/O becauseit is the lowest-priority overloadable operator, other than assignment.2468 1®, ®2®, ®3 3®, ®4®, ®5 2469 \end{cfa} 2470 Finally, \CFA uses the logical-or operator for I/O as it is the lowest-priority overloadable operator, other than assignment. 2439 2471 Therefore, fewer output expressions require parenthesis. 2440 2472 \begin{quote2} … … 2458 2490 \end{tabular} 2459 2491 \end{quote2} 2460 Finally, the logical-or operator has a link with the Shell pipe-operator for moving data, where data flows in the correct direction for input but the opposite direction for output. 2461 2462 2463 The implicit separator\index{I/O!separator} character (space/blank) is a separator not a terminator. 2492 There is a weak similarity between the \CFA logical-or operator and the Shell pipe-operator for moving data, where data flows in the correct direction for input but the opposite direction for output. 2493 2494 2495 \subsection{Implicit Separator} 2496 2497 The \Index{implicit separator}\index{I/O!separator} character (space/blank) is a separator not a terminator. 2464 2498 The rules for implicitly adding the separator are: 2465 2499 \begin{enumerate} … … 2533 2567 \end{enumerate} 2534 2568 2569 2570 \subsection{Manipulator} 2571 2535 2572 The following routines and \CC-style \Index{manipulator}s control implicit seperation. 2536 2573 \begin{enumerate} … … 2544 2581 %$ 2545 2582 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt] 2546 1 , $2, $3 ®", $"®2583 1®, $®2®, $®3 ®", $"® 2547 2584 \end{cfa} 2548 2585 %$ … … 2552 2589 \end{cfa} 2553 2590 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt] 2554 1 2 3 ®" "® 2555 \end{cfa} 2556 2557 \item 2558 Manipulators \Indexc{sepOn}\index{manipulator!sepOn@©sepOn©} and \Indexc{sepOff}\index{manipulator!sepOff@©sepOff©} \emph{locally} toggle printing the separator, \ie the seperator is adjusted only with respect to the next printed item. 2559 \begin{cfa}[mathescape=off,belowskip=0pt] 2560 sout | sepOn | 1 | 2 | 3 | sepOn | endl; §\C{// separator at start of line}§ 2561 \end{cfa} 2562 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2563 1 2 3 2564 \end{cfa} 2565 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2566 sout | 1 | sepOff | 2 | 3 | endl; §\C{// locally turn off implicit separator}§ 2567 \end{cfa} 2568 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2569 12 3 2570 \end{cfa} 2571 2572 \item 2573 Manipulators \Indexc{sepDisable}\index{manipulator!sepDisable@©sepDisable©} and \Indexc{sepEnable}\index{manipulator!sepEnable@©sepEnable©} \emph{globally} toggle printing the separator, \ie the seperator is adjusted with respect to all subsequent printed items, unless locally adjusted. 2574 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2575 sout | sepDisable | 1 | 2 | 3 | endl; §\C{// globally turn off implicit separation}§ 2576 \end{cfa} 2577 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2578 123 2579 \end{cfa} 2580 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2581 sout | 1 | sepOn | 2 | 3 | endl; §\C{// locally turn on implicit separator}§ 2582 \end{cfa} 2583 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2584 1 23 2585 \end{cfa} 2586 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2587 sout | sepEnable | 1 | 2 | 3 | endl; §\C{// globally turn on implicit separation}§ 2588 \end{cfa} 2589 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2590 1 2 3 2591 1® ®2® ®3 ®" "® 2591 2592 \end{cfa} 2592 2593 … … 2610 2611 2611 2612 \item 2612 The tuple separator can also be turned on and off. 2613 Manipulators \Indexc{sepOn}\index{manipulator!sepOn@©sepOn©} and \Indexc{sepOff}\index{manipulator!sepOff@©sepOff©} \emph{locally} toggle printing the separator, \ie the seperator is adjusted only with respect to the next printed item. 2614 \begin{cfa}[mathescape=off,belowskip=0pt] 2615 sout | sepOn | 1 | 2 | 3 | sepOn | endl; §\C{// separator at start/end of line}§ 2616 \end{cfa} 2617 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2618 ® ®1 2 3® ® 2619 \end{cfa} 2620 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2621 sout | 1 | sepOff | 2 | 3 | endl; §\C{// locally turn off implicit separator}§ 2622 \end{cfa} 2623 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2624 12 3 2625 \end{cfa} 2626 The tuple separator also responses to being turned on and off. 2613 2627 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2614 2628 sout | sepOn | t1 | sepOff | t2 | endl; §\C{// locally turn on/off implicit separation}§ … … 2618 2632 \end{cfa} 2619 2633 Notice a tuple seperator starts the line because the next item is a tuple. 2634 2635 \item 2636 Manipulators \Indexc{sepDisable}\index{manipulator!sepDisable@©sepDisable©} and \Indexc{sepEnable}\index{manipulator!sepEnable@©sepEnable©} \emph{globally} toggle printing the separator, \ie the seperator is adjusted with respect to all subsequent printed items, unless locally adjusted. 2637 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2638 sout | sepDisable | 1 | 2 | 3 | endl; §\C{// globally turn off implicit separation}§ 2639 \end{cfa} 2640 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2641 123 2642 \end{cfa} 2643 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2644 sout | 1 | ®sepOn® | 2 | 3 | endl; §\C{// locally turn on implicit separator}§ 2645 \end{cfa} 2646 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2647 1® ®23 2648 \end{cfa} 2649 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2650 sout | sepEnable | 1 | 2 | 3 | endl; §\C{// globally turn on implicit separation}§ 2651 \end{cfa} 2652 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2653 1 2 3 2654 \end{cfa} 2620 2655 \end{enumerate} 2621 2656 … … 2626 2661 int x = 1, y = 2, z = 3; 2627 2662 sout | x | y | z | endl; 2628 [int, int] t1 = [1, 2], t2 = [3, 4];2629 sout | t1 | t2 | endl; // print tuple 2663 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ] ]; 2664 sout | t1 | t2 | endl; // print tuples 2630 2665 sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl; 2631 2666 sout | 1 | 2 | 3 | endl; … … 5189 5224 5190 5225 5191 \section{\ protect\CFA Keywords}5226 \section{\CFA Keywords} 5192 5227 \label{s:CFAKeywords} 5193 5228 … … 5487 5522 For an increase in storage size, new storage after the copied data may be filled. 5488 5523 \item[alignment] 5489 an allocation starts on a specified memory boundary, e.g., an address multiple of 64 or 128 for cache-line purposes.5524 an allocation starts on a specified memory boundary, \eg, an address multiple of 64 or 128 for cache-line purposes. 5490 5525 \item[array] 5491 5526 the allocation size is scaled to the specified number of array elements. -
TabularUnified src/ControlStruct/ExceptTranslate.cc ¶
rb1e63ac5 r208e5be 10 10 // Created On : Wed Jun 14 16:49:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Jun 29 15:18:00 201712 // Last Modified On : Fri Jun 30 13:30:00 2017 13 13 // Update Count : 1 14 14 // … … 22 22 #include "SynTree/Attribute.h" 23 23 24 namespace Control Flow{24 namespace ControlStruct { 25 25 26 26 // This (large) section could probably be moved out of the class … … 29 29 // Type(Qualifiers &, false, std::list<Attribute *> &) 30 30 31 // void (*function)() 32 static FunctionType void_func_t(Type::Qualifiers(), false);31 // void (*function)(); 32 static FunctionType try_func_t(Type::Qualifiers(), false); 33 33 // void (*function)(int, exception); 34 34 static FunctionType catch_func_t(Type::Qualifiers(), false); … … 37 37 // bool (*function)(exception); 38 38 static FunctionType handle_func_t(Type::Qualifiers(), false); 39 // void (*function)(__attribute__((unused)) void *); 40 static FunctionType finally_func_t(Type::Qualifiers(), false); 39 41 40 42 static void init_func_types() { … … 48 50 LinkageSpec::Cforall, 49 51 /*bitfieldWidth*/ NULL, 50 new BasicType( emptyQualifiers, BasicType::UnsignedInt),52 new BasicType( emptyQualifiers, BasicType::SignedInt ), 51 53 /*init*/ NULL 52 );54 ); 53 55 ObjectDecl exception_obj( 54 56 "__exception_inst", … … 56 58 LinkageSpec::Cforall, 57 59 /*bitfieldWidth*/ NULL, 58 new BasicType(emptyQualifiers, BasicType::UnsignedInt), 60 new PointerType( 61 emptyQualifiers, 62 new BasicType( emptyQualifiers, BasicType::SignedInt ) 63 ), 59 64 /*init*/ NULL 60 );65 ); 61 66 ObjectDecl bool_obj( 62 67 "__ret_bool", … … 66 71 new BasicType(emptyQualifiers, BasicType::Bool), 67 72 /*init*/ NULL 68 ); 69 70 catch_func_t.get_parameters().push_back(index_obj.clone()); 71 catch_func_t.get_parameters().push_back(exception_obj.clone()); 72 match_func_t.get_returnVals().push_back(index_obj.clone()); 73 match_func_t.get_parameters().push_back(exception_obj.clone()); 74 handle_func_t.get_returnVals().push_back(bool_obj.clone()); 75 handle_func_t.get_parameters().push_back(exception_obj.clone()); 73 ); 74 ObjectDecl voidptr_obj( 75 "__hook", 76 Type::StorageClasses(), 77 LinkageSpec::Cforall, 78 NULL, 79 new PointerType( 80 emptyQualifiers, 81 new VoidType( 82 emptyQualifiers 83 ), 84 std::list<Attribute *>{new Attribute("unused")} 85 ), 86 NULL 87 ); 88 89 catch_func_t.get_parameters().push_back( index_obj.clone() ); 90 catch_func_t.get_parameters().push_back( exception_obj.clone() ); 91 match_func_t.get_returnVals().push_back( index_obj.clone() ); 92 match_func_t.get_parameters().push_back( exception_obj.clone() ); 93 handle_func_t.get_returnVals().push_back( bool_obj.clone() ); 94 handle_func_t.get_parameters().push_back( exception_obj.clone() ); 95 finally_func_t.get_parameters().push_back( voidptr_obj.clone() ); 76 96 77 97 init_complete = true; … … 114 134 // ThrowStmt Mutation Helpers 115 135 116 Statement * create_terminate_throw( ThrowStmt *throwStmt ) { 117 // __throw_terminate( EXPR ); 118 UntypedExpr * call = new UntypedExpr( new NameExpr( 119 "__cfaehm__throw_termination" ) ); 120 call->get_args().push_back( throwStmt->get_expr() ); 121 Statement * result = new ExprStmt( throwStmt->get_labels(), call ); 136 Statement * create_given_throw( 137 const char * throwFunc, ThrowStmt * throwStmt ) { 138 // { int NAME = EXPR; throwFunc( &NAME ); } 139 CompoundStmt * result = new CompoundStmt( noLabels ); 140 ObjectDecl * local = new ObjectDecl( 141 "__local_exception_copy", 142 Type::StorageClasses(), 143 LinkageSpec::Cforall, 144 NULL, 145 new BasicType( emptyQualifiers, BasicType::SignedInt ), 146 new SingleInit( throwStmt->get_expr() ) 147 ); 148 appendDeclStmt( result, local ); 149 UntypedExpr * call = new UntypedExpr( new NameExpr( throwFunc ) ); 150 call->get_args().push_back( new AddressExpr( nameOf( local ) ) ); 151 result->push_back( new ExprStmt( throwStmt->get_labels(), call ) ); 122 152 throwStmt->set_expr( nullptr ); 123 153 delete throwStmt; 124 154 return result; 155 } 156 157 Statement * create_terminate_throw( ThrowStmt *throwStmt ) { 158 // { int NAME = EXPR; __throw_terminate( &NAME ); } 159 return create_given_throw( "__cfaehm__throw_termination", throwStmt ); 125 160 } 126 161 Statement * create_terminate_rethrow( ThrowStmt *throwStmt ) { … … 136 171 Statement * create_resume_throw( ThrowStmt *throwStmt ) { 137 172 // __throw_resume( EXPR ); 138 UntypedExpr * call = new UntypedExpr( new NameExpr( 139 "__cfaehm__throw_resumption" ) ); 140 call->get_args().push_back( throwStmt->get_expr() ); 141 Statement * result = new ExprStmt( throwStmt->get_labels(), call ); 142 throwStmt->set_expr( nullptr ); 143 delete throwStmt; 144 return result; 173 return create_given_throw( "__cfaehm__throw_resumption", throwStmt ); 145 174 } 146 175 Statement * create_resume_rethrow( ThrowStmt *throwStmt ) { … … 164 193 165 194 return new FunctionDecl( "try", Type::StorageClasses(), 166 LinkageSpec::Cforall, void_func_t.clone(), body );195 LinkageSpec::Cforall, try_func_t.clone(), body ); 167 196 } 168 197 … … 235 264 std::list<Expression *> args; 236 265 args.push_back( number ); 237 args.push_back( nameOf( except_obj ) ); 266 267 std::list<Expression *> rhs_args; 268 rhs_args.push_back( nameOf( except_obj ) ); 269 Expression * rhs = new UntypedExpr( 270 new NameExpr( "*?" ), rhs_args ); 271 args.push_back( rhs ); 272 238 273 cond = new UntypedExpr( new NameExpr( "?==?" /*???*/), args ); 239 274 } … … 276 311 *it = nullptr; 277 312 } 313 314 body->push_back( new ReturnStmt( noLabels, new ConstantExpr( 315 Constant::from_int( 0 ) ) ) ); 278 316 279 317 return new FunctionDecl("match", Type::StorageClasses(), … … 316 354 } 317 355 handling_code->push_back( new ReturnStmt( noLabels, 318 new ConstantExpr( Constant::from_bool( false ) ) ) );356 new ConstantExpr( Constant::from_bool( true ) ) ) ); 319 357 handler->set_body( handling_code ); 320 358 … … 323 361 *it = nullptr; 324 362 } 363 364 body->push_back( new ReturnStmt( noLabels, new ConstantExpr( 365 Constant::from_bool( false ) ) ) ); 325 366 326 367 return new FunctionDecl("handle", Type::StorageClasses(), … … 364 405 UntypedExpr *setup = new UntypedExpr( new NameExpr( 365 406 "__cfaehm__try_resume_setup" ) ); 366 setup->get_args().push_back( n ameOf( obj) );407 setup->get_args().push_back( new AddressExpr( nameOf( obj ) ) ); 367 408 setup->get_args().push_back( nameOf( resume_handler ) ); 368 409 … … 381 422 382 423 return new FunctionDecl("finally", Type::StorageClasses(), 383 LinkageSpec::Cforall, void_func_t.clone(), body);424 LinkageSpec::Cforall, finally_func_t.clone(), body); 384 425 } 385 426 -
TabularUnified src/ControlStruct/ExceptTranslate.h ¶
rb1e63ac5 r208e5be 10 10 // Created On : Tus Jun 06 10:13:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Jun 29 15:18:00 201713 // Update Count : 112 // Last Modified On : Fri Jun 30 10:20:00 2017 13 // Update Count : 2 14 14 // 15 15 … … 20 20 #include "SynTree/SynTree.h" 21 21 22 namespace Control Flow{22 namespace ControlStruct { 23 23 void translateEHM( std::list< Declaration *> & translationUnit ); 24 24 /* Converts exception handling structures into their underlying C code. -
TabularUnified src/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 59 58 60 59 VPATH = @srcdir@ 60 am__is_gnu_make = { \ 61 if test -z '$(MAKELEVEL)'; then \ 62 false; \ 63 elif test -n '$(MAKE_HOST)'; then \ 64 true; \ 65 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 66 true; \ 67 else \ 68 false; \ 69 fi; \ 70 } 71 am__make_running_with_option = \ 72 case $${target_option-} in \ 73 ?) ;; \ 74 *) echo "am__make_running_with_option: internal error: invalid" \ 75 "target option '$${target_option-}' specified" >&2; \ 76 exit 1;; \ 77 esac; \ 78 has_opt=no; \ 79 sane_makeflags=$$MAKEFLAGS; \ 80 if $(am__is_gnu_make); then \ 81 sane_makeflags=$$MFLAGS; \ 82 else \ 83 case $$MAKEFLAGS in \ 84 *\\[\ \ ]*) \ 85 bs=\\; \ 86 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 87 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 88 esac; \ 89 fi; \ 90 skip_next=no; \ 91 strip_trailopt () \ 92 { \ 93 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 94 }; \ 95 for flg in $$sane_makeflags; do \ 96 test $$skip_next = yes && { skip_next=no; continue; }; \ 97 case $$flg in \ 98 *=*|--*) continue;; \ 99 -*I) strip_trailopt 'I'; skip_next=yes;; \ 100 -*I?*) strip_trailopt 'I';; \ 101 -*O) strip_trailopt 'O'; skip_next=yes;; \ 102 -*O?*) strip_trailopt 'O';; \ 103 -*l) strip_trailopt 'l'; skip_next=yes;; \ 104 -*l?*) strip_trailopt 'l';; \ 105 -[dEDm]) skip_next=yes;; \ 106 -[JT]) skip_next=yes;; \ 107 esac; \ 108 case $$flg in \ 109 *$$target_option*) has_opt=yes; break;; \ 110 esac; \ 111 done; \ 112 test $$has_opt = yes 113 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 114 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 61 115 pkgdatadir = $(datadir)/@PACKAGE@ 62 116 pkgincludedir = $(includedir)/@PACKAGE@ … … 77 131 build_triplet = @build@ 78 132 host_triplet = @host@ 79 DIST_COMMON = $(srcdir)/CodeGen/module.mk \80 $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \81 $(srcdir)/Concurrency/module.mk \82 $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \83 $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \84 $(srcdir)/Makefile.in $(srcdir)/Parser/module.mk \85 $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk \86 $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk \87 Parser/lex.cc Parser/parser.cc Parser/parser.h88 133 cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT) 89 134 subdir = src … … 92 137 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 93 138 $(ACLOCAL_M4) 139 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 94 140 mkinstalldirs = $(install_sh) -d 95 141 CONFIG_HEADER = $(top_builddir)/config.h … … 215 261 driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \ 216 262 $(driver_cfa_cpp_LDFLAGS) $(LDFLAGS) -o $@ 263 AM_V_P = $(am__v_P_@AM_V@) 264 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 265 am__v_P_0 = false 266 am__v_P_1 = : 267 AM_V_GEN = $(am__v_GEN_@AM_V@) 268 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 269 am__v_GEN_0 = @echo " GEN " $@; 270 am__v_GEN_1 = 271 AM_V_at = $(am__v_at_@AM_V@) 272 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 273 am__v_at_0 = @ 274 am__v_at_1 = 217 275 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 218 276 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 222 280 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 223 281 am__v_lt_0 = --silent 282 am__v_lt_1 = 224 283 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ 225 284 $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 226 285 AM_V_CXX = $(am__v_CXX_@AM_V@) 227 286 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) 228 am__v_CXX_0 = @echo " CXX " $@; 229 AM_V_at = $(am__v_at_@AM_V@) 230 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 231 am__v_at_0 = @ 287 am__v_CXX_0 = @echo " CXX " $@; 288 am__v_CXX_1 = 232 289 CXXLD = $(CXX) 233 290 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ … … 235 292 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) 236 293 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) 237 am__v_CXXLD_0 = @echo " CXXLD " $@; 294 am__v_CXXLD_0 = @echo " CXXLD " $@; 295 am__v_CXXLD_1 = 238 296 @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || 239 297 LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) 240 298 AM_V_LEX = $(am__v_LEX_@AM_V@) 241 299 am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) 242 am__v_LEX_0 = @echo " LEX " $@; 300 am__v_LEX_0 = @echo " LEX " $@; 301 am__v_LEX_1 = 243 302 YLWRAP = $(top_srcdir)/automake/ylwrap 244 303 @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || 304 am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ 305 -e s/c++$$/h++/ -e s/c$$/h/ 245 306 YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) 246 307 AM_V_YACC = $(am__v_YACC_@AM_V@) 247 308 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) 248 am__v_YACC_0 = @echo " YACC " $@; 309 am__v_YACC_0 = @echo " YACC " $@; 310 am__v_YACC_1 = 249 311 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 250 312 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 251 313 AM_V_CC = $(am__v_CC_@AM_V@) 252 314 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 253 am__v_CC_0 = @echo " CC " $@; 315 am__v_CC_0 = @echo " CC " $@; 316 am__v_CC_1 = 254 317 CCLD = $(CC) 255 318 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 256 319 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 257 320 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 258 am__v_CCLD_0 = @echo " CCLD " $@; 259 AM_V_GEN = $(am__v_GEN_@AM_V@) 260 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 261 am__v_GEN_0 = @echo " GEN " $@; 321 am__v_CCLD_0 = @echo " CCLD " $@; 322 am__v_CCLD_1 = 262 323 SOURCES = $(driver_cfa_cpp_SOURCES) 263 324 DIST_SOURCES = $(driver_cfa_cpp_SOURCES) 325 am__can_run_installinfo = \ 326 case $$AM_UPDATE_INFO_DIR in \ 327 n|no|NO) false;; \ 328 *) (install-info --version) >/dev/null 2>&1;; \ 329 esac 330 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 331 # Read a list of newline-separated strings from the standard input, 332 # and print each of them once, without duplicates. Input order is 333 # *not* preserved. 334 am__uniquify_input = $(AWK) '\ 335 BEGIN { nonempty = 0; } \ 336 { items[$$0] = 1; nonempty = 1; } \ 337 END { if (nonempty) { for (i in items) print i; }; } \ 338 ' 339 # Make sure the list of sources is unique. This is necessary because, 340 # e.g., the same source file might be shared among _SOURCES variables 341 # for different programs/libraries. 342 am__define_uniq_tagged_files = \ 343 list='$(am__tagged_files)'; \ 344 unique=`for i in $$list; do \ 345 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 346 done | $(am__uniquify_input)` 264 347 ETAGS = etags 265 348 CTAGS = ctags 349 am__DIST_COMMON = $(srcdir)/CodeGen/module.mk \ 350 $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \ 351 $(srcdir)/Concurrency/module.mk \ 352 $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \ 353 $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.in \ 354 $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk \ 355 $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk \ 356 $(srcdir)/Tuples/module.mk $(top_srcdir)/automake/depcomp \ 357 $(top_srcdir)/automake/ylwrap Parser/lex.cc Parser/parser.cc \ 358 Parser/parser.hh 266 359 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 267 360 ACLOCAL = @ACLOCAL@ … … 376 469 program_transform_name = @program_transform_name@ 377 470 psdir = @psdir@ 471 runstatedir = @runstatedir@ 378 472 sbindir = @sbindir@ 379 473 sharedstatedir = @sharedstatedir@ … … 441 535 MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \ 442 536 ${cfa_cpplib_PROGRAMS}} 443 BUILT_SOURCES = Parser/parser.h 537 BUILT_SOURCES = Parser/parser.hh 444 538 AM_YFLAGS = -d -t -v 445 539 … … 466 560 esac; \ 467 561 done; \ 468 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/Makefile'; \562 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ 469 563 $(am__cd) $(top_srcdir) && \ 470 $(AUTOMAKE) --foreign src/Makefile 471 .PRECIOUS: Makefile 564 $(AUTOMAKE) --gnu src/Makefile 472 565 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 473 566 @case '$?' in \ … … 478 571 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ 479 572 esac; 480 $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk :573 $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__empty): 481 574 482 575 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) … … 490 583 install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS) 491 584 @$(NORMAL_INSTALL) 492 test -z "$(cfa_cpplibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_cpplibdir)"493 585 @list='$(cfa_cpplib_PROGRAMS)'; test -n "$(cfa_cpplibdir)" || list=; \ 586 if test -n "$$list"; then \ 587 echo " $(MKDIR_P) '$(DESTDIR)$(cfa_cpplibdir)'"; \ 588 $(MKDIR_P) "$(DESTDIR)$(cfa_cpplibdir)" || exit 1; \ 589 fi; \ 494 590 for p in $$list; do echo "$$p $$p"; done | \ 495 591 sed 's/$(EXEEXT)$$//' | \ 496 while read p p1; do if test -f $$p ;\497 then echo "$$p"; echo "$$p"; else :; fi; \592 while read p p1; do if test -f $$p \ 593 ; then echo "$$p"; echo "$$p"; else :; fi; \ 498 594 done | \ 499 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ 595 sed -e 'p;s,.*/,,;n;h' \ 596 -e 's|.*|.|' \ 500 597 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ 501 598 sed 'N;N;N;s,\n, ,g' | \ … … 518 615 files=`for p in $$list; do echo "$$p"; done | \ 519 616 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ 520 -e 's/$$/$(EXEEXT)/' `; \ 617 -e 's/$$/$(EXEEXT)/' \ 618 `; \ 521 619 test -n "$$list" || exit 0; \ 522 620 echo " ( cd '$(DESTDIR)$(cfa_cpplibdir)' && rm -f" $$files ")"; \ … … 640 738 InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT): \ 641 739 InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp) 642 Parser/parser.h : Parser/parser.cc740 Parser/parser.hh: Parser/parser.cc 643 741 @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi 644 742 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi … … 843 941 @$(MKDIR_P) driver 844 942 @: > driver/$(am__dirstamp) 943 845 944 driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp) 846 945 @rm -f driver/cfa-cpp$(EXEEXT) … … 849 948 mostlyclean-compile: 850 949 -rm -f *.$(OBJEXT) 851 -rm -f CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT) 852 -rm -f CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT) 853 -rm -f CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT) 854 -rm -f CodeGen/driver_cfa_cpp-GenType.$(OBJEXT) 855 -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT) 856 -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) 857 -rm -f CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT) 858 -rm -f CodeTools/driver_cfa_cpp-TrackLoc.$(OBJEXT) 859 -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT) 860 -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT) 861 -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT) 862 -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT) 863 -rm -f Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT) 864 -rm -f ControlStruct/driver_cfa_cpp-ExceptTranslate.$(OBJEXT) 865 -rm -f ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT) 866 -rm -f ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) 867 -rm -f ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) 868 -rm -f ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT) 869 -rm -f ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT) 870 -rm -f GenPoly/driver_cfa_cpp-Box.$(OBJEXT) 871 -rm -f GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT) 872 -rm -f GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT) 873 -rm -f GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) 874 -rm -f GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT) 875 -rm -f GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT) 876 -rm -f GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT) 877 -rm -f GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT) 878 -rm -f GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT) 879 -rm -f GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT) 880 -rm -f InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) 881 -rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) 882 -rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT) 883 -rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) 884 -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT) 885 -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT) 886 -rm -f Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT) 887 -rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) 888 -rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT) 889 -rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT) 890 -rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT) 891 -rm -f Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT) 892 -rm -f Parser/driver_cfa_cpp-lex.$(OBJEXT) 893 -rm -f Parser/driver_cfa_cpp-parser.$(OBJEXT) 894 -rm -f Parser/driver_cfa_cpp-parserutility.$(OBJEXT) 895 -rm -f ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT) 896 -rm -f ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) 897 -rm -f ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) 898 -rm -f ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT) 899 -rm -f ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT) 900 -rm -f ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT) 901 -rm -f ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT) 902 -rm -f ResolvExpr/driver_cfa_cpp-CurrentObject.$(OBJEXT) 903 -rm -f ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT) 904 -rm -f ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT) 905 -rm -f ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT) 906 -rm -f ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT) 907 -rm -f ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT) 908 -rm -f ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT) 909 -rm -f ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT) 910 -rm -f ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT) 911 -rm -f ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT) 912 -rm -f ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT) 913 -rm -f SymTab/driver_cfa_cpp-Autogen.$(OBJEXT) 914 -rm -f SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT) 915 -rm -f SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT) 916 -rm -f SymTab/driver_cfa_cpp-Indexer.$(OBJEXT) 917 -rm -f SymTab/driver_cfa_cpp-Mangler.$(OBJEXT) 918 -rm -f SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT) 919 -rm -f SymTab/driver_cfa_cpp-Validate.$(OBJEXT) 920 -rm -f SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT) 921 -rm -f SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT) 922 -rm -f SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT) 923 -rm -f SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT) 924 -rm -f SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT) 925 -rm -f SynTree/driver_cfa_cpp-AttrType.$(OBJEXT) 926 -rm -f SynTree/driver_cfa_cpp-Attribute.$(OBJEXT) 927 -rm -f SynTree/driver_cfa_cpp-BasicType.$(OBJEXT) 928 -rm -f SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT) 929 -rm -f SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT) 930 -rm -f SynTree/driver_cfa_cpp-Constant.$(OBJEXT) 931 -rm -f SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT) 932 -rm -f SynTree/driver_cfa_cpp-Declaration.$(OBJEXT) 933 -rm -f SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT) 934 -rm -f SynTree/driver_cfa_cpp-Expression.$(OBJEXT) 935 -rm -f SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT) 936 -rm -f SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT) 937 -rm -f SynTree/driver_cfa_cpp-Initializer.$(OBJEXT) 938 -rm -f SynTree/driver_cfa_cpp-Mutator.$(OBJEXT) 939 -rm -f SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT) 940 -rm -f SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT) 941 -rm -f SynTree/driver_cfa_cpp-PointerType.$(OBJEXT) 942 -rm -f SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT) 943 -rm -f SynTree/driver_cfa_cpp-Statement.$(OBJEXT) 944 -rm -f SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT) 945 -rm -f SynTree/driver_cfa_cpp-TupleType.$(OBJEXT) 946 -rm -f SynTree/driver_cfa_cpp-Type.$(OBJEXT) 947 -rm -f SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT) 948 -rm -f SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT) 949 -rm -f SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) 950 -rm -f SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) 951 -rm -f SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) 952 -rm -f SynTree/driver_cfa_cpp-VarExprReplacer.$(OBJEXT) 953 -rm -f SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) 954 -rm -f SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) 955 -rm -f SynTree/driver_cfa_cpp-ZeroOneType.$(OBJEXT) 956 -rm -f Tuples/driver_cfa_cpp-Explode.$(OBJEXT) 957 -rm -f Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT) 958 -rm -f Tuples/driver_cfa_cpp-TupleExpansion.$(OBJEXT) 950 -rm -f CodeGen/*.$(OBJEXT) 951 -rm -f CodeTools/*.$(OBJEXT) 952 -rm -f Common/*.$(OBJEXT) 953 -rm -f Concurrency/*.$(OBJEXT) 954 -rm -f ControlStruct/*.$(OBJEXT) 955 -rm -f GenPoly/*.$(OBJEXT) 956 -rm -f InitTweak/*.$(OBJEXT) 957 -rm -f Parser/*.$(OBJEXT) 958 -rm -f ResolvExpr/*.$(OBJEXT) 959 -rm -f SymTab/*.$(OBJEXT) 960 -rm -f SynTree/*.$(OBJEXT) 961 -rm -f Tuples/*.$(OBJEXT) 959 962 960 963 distclean-compile: … … 2632 2635 2633 2636 .yy.cc: 2634 $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) 2635 2636 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 2637 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 2638 unique=`for i in $$list; do \ 2639 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 2640 done | \ 2641 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 2642 END { if (nonempty) { for (i in files) print i; }; }'`; \ 2643 mkid -fID $$unique 2644 tags: TAGS 2645 2646 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 2647 $(TAGS_FILES) $(LISP) 2637 $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) 2638 2639 ID: $(am__tagged_files) 2640 $(am__define_uniq_tagged_files); mkid -fID $$unique 2641 tags: tags-am 2642 TAGS: tags 2643 2644 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 2648 2645 set x; \ 2649 2646 here=`pwd`; \ 2650 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 2651 unique=`for i in $$list; do \ 2652 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 2653 done | \ 2654 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 2655 END { if (nonempty) { for (i in files) print i; }; }'`; \ 2647 $(am__define_uniq_tagged_files); \ 2656 2648 shift; \ 2657 2649 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 2665 2657 fi; \ 2666 2658 fi 2667 ctags: CTAGS 2668 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 2669 $(TAGS_FILES) $(LISP) 2670 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 2671 unique=`for i in $$list; do \ 2672 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 2673 done | \ 2674 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 2675 END { if (nonempty) { for (i in files) print i; }; }'`; \ 2659 ctags: ctags-am 2660 2661 CTAGS: ctags 2662 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 2663 $(am__define_uniq_tagged_files); \ 2676 2664 test -z "$(CTAGS_ARGS)$$unique" \ 2677 2665 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 2682 2670 && $(am__cd) $(top_srcdir) \ 2683 2671 && gtags -i $(GTAGS_ARGS) "$$here" 2672 cscopelist: cscopelist-am 2673 2674 cscopelist-am: $(am__tagged_files) 2675 list='$(am__tagged_files)'; \ 2676 case "$(srcdir)" in \ 2677 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 2678 *) sdir=$(subdir)/$(srcdir) ;; \ 2679 esac; \ 2680 for i in $$list; do \ 2681 if test -f "$$i"; then \ 2682 echo "$(subdir)/$$i"; \ 2683 else \ 2684 echo "$$sdir/$$i"; \ 2685 fi; \ 2686 done >> $(top_builddir)/cscope.files 2684 2687 2685 2688 distclean-tags: … … 2782 2785 -rm -f Parser/lex.cc 2783 2786 -rm -f Parser/parser.cc 2784 -rm -f Parser/parser.h 2787 -rm -f Parser/parser.hh 2785 2788 -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) 2786 2789 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) … … 2856 2859 .MAKE: all check install install-am install-strip 2857 2860 2858 .PHONY: CTAGS GTAGS all all-am check check-am clean \ 2859 clean-cfa_cpplibPROGRAMS clean-generic ctags distclean \ 2860 distclean-compile distclean-generic distclean-tags distdir dvi \ 2861 dvi-am html html-am info info-am install install-am \ 2862 install-cfa_cpplibPROGRAMS install-data install-data-am \ 2863 install-dvi install-dvi-am install-exec install-exec-am \ 2864 install-html install-html-am install-info install-info-am \ 2865 install-man install-pdf install-pdf-am install-ps \ 2866 install-ps-am install-strip installcheck installcheck-am \ 2867 installdirs maintainer-clean maintainer-clean-generic \ 2868 mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ 2869 ps ps-am tags uninstall uninstall-am \ 2870 uninstall-cfa_cpplibPROGRAMS 2861 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ 2862 clean-cfa_cpplibPROGRAMS clean-generic cscopelist-am ctags \ 2863 ctags-am distclean distclean-compile distclean-generic \ 2864 distclean-tags distdir dvi dvi-am html html-am info info-am \ 2865 install install-am install-cfa_cpplibPROGRAMS install-data \ 2866 install-data-am install-dvi install-dvi-am install-exec \ 2867 install-exec-am install-html install-html-am install-info \ 2868 install-info-am install-man install-pdf install-pdf-am \ 2869 install-ps install-ps-am install-strip installcheck \ 2870 installcheck-am installdirs maintainer-clean \ 2871 maintainer-clean-generic mostlyclean mostlyclean-compile \ 2872 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 2873 uninstall-am uninstall-cfa_cpplibPROGRAMS 2874 2875 .PRECIOUS: Makefile 2871 2876 2872 2877 -
TabularUnified src/Parser/TypedefTable.h ¶
rb1e63ac5 r208e5be 22 22 #include <stack> 23 23 24 #include "ParserTypes.h" 24 25 #include "parser.hh" 25 #include "parser.h"26 26 27 27 class TypedefTable { -
TabularUnified src/Parser/module.mk ¶
rb1e63ac5 r208e5be 15 15 ############################################################################### 16 16 17 BUILT_SOURCES = Parser/parser.h 17 BUILT_SOURCES = Parser/parser.hh 18 18 19 19 AM_YFLAGS = -d -t -v -
TabularUnified src/Parser/parser.yy ¶
rb1e63ac5 r208e5be 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Wed Jun 28 22:11:22201713 // Update Count : 241 411 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jun 30 15:38:00 2017 13 // Update Count : 2415 14 14 // 15 15 … … 104 104 std::string * str; 105 105 bool flag; 106 CatchStmt::Kind catch_kind; 106 107 } 107 108 … … 192 193 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 193 194 %type<sn> /* handler_list */ handler_clause finally_clause 195 %type<catch_kind> handler_key 194 196 195 197 // declarations … … 958 960 handler_clause: 959 961 // TEMPORARY, TEST EXCEPTIONS 960 CATCH '(' push push INTEGERconstant pop ')' compound_statement pop 961 { $$ = new StatementNode( build_catch( CatchStmt::Terminate, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); } 962 | handler_clause CATCH '(' push push INTEGERconstant pop ')' compound_statement pop 963 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); } 964 965 | CATCH '(' push push exception_declaration pop ')' compound_statement pop 966 { $$ = new StatementNode( build_catch( CatchStmt::Terminate, $5, nullptr, $8 ) ); } 967 | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop 968 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, $6, nullptr, $9 ) ) ); } 969 | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 970 { $$ = new StatementNode( build_catch( CatchStmt::Resume, $5, nullptr, $8 ) ); } 971 | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 972 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Resume, $6, nullptr, $9 ) ) ); } 962 handler_key '(' push push INTEGERconstant pop ')' compound_statement pop 963 { $$ = new StatementNode( build_catch( $1, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); } 964 | handler_clause handler_key '(' push push INTEGERconstant pop ')' compound_statement pop 965 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); } 966 967 | handler_key '(' push push exception_declaration pop ')' compound_statement pop 968 { $$ = new StatementNode( build_catch( $1, $5, nullptr, $8 ) ); } 969 | handler_clause handler_key '(' push push exception_declaration pop ')' compound_statement pop 970 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, nullptr, $9 ) ) ); } 971 ; 972 973 handler_key: 974 CATCH 975 { $$ = CatchStmt::Terminate; } 976 | CATCHRESUME 977 { $$ = CatchStmt::Resume; } 973 978 ; 974 979 -
TabularUnified src/ResolvExpr/Resolver.cc ¶
rb1e63ac5 r208e5be 70 70 virtual void visit( BranchStmt *branchStmt ) override; 71 71 virtual void visit( ReturnStmt *returnStmt ) override; 72 virtual void visit( ThrowStmt *throwStmt ) override; 72 73 73 74 virtual void visit( SingleInit *singleInit ) override; … … 366 367 } 367 368 369 void Resolver::visit( ThrowStmt *throwStmt ) { 370 if ( throwStmt->get_expr() ) { 371 Expression * wrapped = new CastExpr( throwStmt->get_expr(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) ); 372 Expression * newExpr = findSingleExpression( wrapped, *this ); 373 throwStmt->set_expr( newExpr ); 374 } 375 } 376 368 377 template< typename T > 369 378 bool isCharType( T t ) { -
TabularUnified src/SymTab/Indexer.cc ¶
rb1e63ac5 r208e5be 653 653 for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) { 654 654 // check for C decls with the same name, skipping those with a compatible type (by mangleName) 655 if ( decl->second->get_linkage() == LinkageSpec::C&& decl->first != mangleName ) return true;655 if ( ! LinkageSpec::isMangled( decl->second->get_linkage() ) && decl->first != mangleName ) return true; 656 656 } 657 657 } … … 670 670 // check for C decls with the same name, skipping 671 671 // those with an incompatible type (by mangleName) 672 if ( decl->second->get_linkage() == LinkageSpec::C&& decl->first == mangleName ) return true;672 if ( ! LinkageSpec::isMangled( decl->second->get_linkage() ) && decl->first == mangleName ) return true; 673 673 } 674 674 } … … 725 725 // new definition shadows the autogenerated one, even at the same scope 726 726 return false; 727 } else if ( added->get_linkage() != LinkageSpec::C|| ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) {727 } else if ( LinkageSpec::isMangled( added->get_linkage() ) || ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) { 728 728 // typesCompatible doesn't really do the right thing here. When checking compatibility of function types, 729 729 // we should ignore outermost pointer qualifiers, except _Atomic? … … 766 766 767 767 // this ensures that no two declarations with the same unmangled name at the same scope both have C linkage 768 if ( decl->get_linkage() == LinkageSpec::C) {768 if ( ! LinkageSpec::isMangled( decl->get_linkage() ) ) { 769 769 // NOTE this is broken in Richard's original code in such a way that it never triggers (it 770 770 // doesn't check decls that have the same manglename, and all C-linkage decls are defined to -
TabularUnified src/benchmark/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 20 19 21 20 VPATH = @srcdir@ 21 am__is_gnu_make = { \ 22 if test -z '$(MAKELEVEL)'; then \ 23 false; \ 24 elif test -n '$(MAKE_HOST)'; then \ 25 true; \ 26 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 27 true; \ 28 else \ 29 false; \ 30 fi; \ 31 } 32 am__make_running_with_option = \ 33 case $${target_option-} in \ 34 ?) ;; \ 35 *) echo "am__make_running_with_option: internal error: invalid" \ 36 "target option '$${target_option-}' specified" >&2; \ 37 exit 1;; \ 38 esac; \ 39 has_opt=no; \ 40 sane_makeflags=$$MAKEFLAGS; \ 41 if $(am__is_gnu_make); then \ 42 sane_makeflags=$$MFLAGS; \ 43 else \ 44 case $$MAKEFLAGS in \ 45 *\\[\ \ ]*) \ 46 bs=\\; \ 47 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 48 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 49 esac; \ 50 fi; \ 51 skip_next=no; \ 52 strip_trailopt () \ 53 { \ 54 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 55 }; \ 56 for flg in $$sane_makeflags; do \ 57 test $$skip_next = yes && { skip_next=no; continue; }; \ 58 case $$flg in \ 59 *=*|--*) continue;; \ 60 -*I) strip_trailopt 'I'; skip_next=yes;; \ 61 -*I?*) strip_trailopt 'I';; \ 62 -*O) strip_trailopt 'O'; skip_next=yes;; \ 63 -*O?*) strip_trailopt 'O';; \ 64 -*l) strip_trailopt 'l'; skip_next=yes;; \ 65 -*l?*) strip_trailopt 'l';; \ 66 -[dEDm]) skip_next=yes;; \ 67 -[JT]) skip_next=yes;; \ 68 esac; \ 69 case $$flg in \ 70 *$$target_option*) has_opt=yes; break;; \ 71 esac; \ 72 done; \ 73 test $$has_opt = yes 74 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 22 76 pkgdatadir = $(datadir)/@PACKAGE@ 23 77 pkgincludedir = $(includedir)/@PACKAGE@ … … 41 95 ctxswitch-thread$(EXEEXT) 42 96 subdir = src/benchmark 43 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in44 97 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 45 98 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 46 99 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 47 100 $(ACLOCAL_M4) 101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 48 102 mkinstalldirs = $(install_sh) -d 49 103 CONFIG_HEADER = $(top_builddir)/config.h … … 60 114 ctxswitch_thread_OBJECTS = ctxswitch-thread.$(OBJEXT) 61 115 ctxswitch_thread_LDADD = $(LDADD) 116 AM_V_P = $(am__v_P_@AM_V@) 117 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 118 am__v_P_0 = false 119 am__v_P_1 = : 120 AM_V_GEN = $(am__v_GEN_@AM_V@) 121 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 122 am__v_GEN_0 = @echo " GEN " $@; 123 am__v_GEN_1 = 124 AM_V_at = $(am__v_at_@AM_V@) 125 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 126 am__v_at_0 = @ 127 am__v_at_1 = 62 128 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 63 129 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 68 134 AM_V_CC = $(am__v_CC_@AM_V@) 69 135 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 70 am__v_CC_0 = @echo " CC " $@; 71 AM_V_at = $(am__v_at_@AM_V@) 72 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 73 am__v_at_0 = @ 136 am__v_CC_0 = @echo " CC " $@; 137 am__v_CC_1 = 74 138 CCLD = $(CC) 75 139 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 76 140 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 77 141 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 78 am__v_CCLD_0 = @echo " CCLD " $@; 79 AM_V_GEN = $(am__v_GEN_@AM_V@) 80 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 81 am__v_GEN_0 = @echo " GEN " $@; 142 am__v_CCLD_0 = @echo " CCLD " $@; 143 am__v_CCLD_1 = 82 144 SOURCES = bench.c ctxswitch-coroutine.c ctxswitch-thread.c 83 145 DIST_SOURCES = bench.c ctxswitch-coroutine.c ctxswitch-thread.c 146 am__can_run_installinfo = \ 147 case $$AM_UPDATE_INFO_DIR in \ 148 n|no|NO) false;; \ 149 *) (install-info --version) >/dev/null 2>&1;; \ 150 esac 151 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 152 # Read a list of newline-separated strings from the standard input, 153 # and print each of them once, without duplicates. Input order is 154 # *not* preserved. 155 am__uniquify_input = $(AWK) '\ 156 BEGIN { nonempty = 0; } \ 157 { items[$$0] = 1; nonempty = 1; } \ 158 END { if (nonempty) { for (i in items) print i; }; } \ 159 ' 160 # Make sure the list of sources is unique. This is necessary because, 161 # e.g., the same source file might be shared among _SOURCES variables 162 # for different programs/libraries. 163 am__define_uniq_tagged_files = \ 164 list='$(am__tagged_files)'; \ 165 unique=`for i in $$list; do \ 166 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 167 done | $(am__uniquify_input)` 84 168 ETAGS = etags 85 169 CTAGS = ctags 170 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp 86 171 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 87 172 ACLOCAL = @ACLOCAL@ … … 198 283 program_transform_name = @program_transform_name@ 199 284 psdir = @psdir@ 285 runstatedir = @runstatedir@ 200 286 sbindir = @sbindir@ 201 287 sharedstatedir = @sharedstatedir@ … … 220 306 esac; \ 221 307 done; \ 222 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/benchmark/Makefile'; \308 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/benchmark/Makefile'; \ 223 309 $(am__cd) $(top_srcdir) && \ 224 $(AUTOMAKE) --foreign src/benchmark/Makefile 225 .PRECIOUS: Makefile 310 $(AUTOMAKE) --gnu src/benchmark/Makefile 226 311 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 227 312 @case '$?' in \ … … 256 341 257 342 .c.o: 258 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< 259 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 343 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 344 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 345 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 260 346 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 261 347 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 262 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<348 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< 263 349 264 350 .c.obj: 265 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` 266 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 351 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ 352 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ 353 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 267 354 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 268 355 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 269 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` 270 271 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 272 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 273 unique=`for i in $$list; do \ 274 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 275 done | \ 276 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 277 END { if (nonempty) { for (i in files) print i; }; }'`; \ 278 mkid -fID $$unique 279 tags: TAGS 280 281 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 282 $(TAGS_FILES) $(LISP) 356 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 357 358 ID: $(am__tagged_files) 359 $(am__define_uniq_tagged_files); mkid -fID $$unique 360 tags: tags-am 361 TAGS: tags 362 363 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 283 364 set x; \ 284 365 here=`pwd`; \ 285 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 286 unique=`for i in $$list; do \ 287 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 288 done | \ 289 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 290 END { if (nonempty) { for (i in files) print i; }; }'`; \ 366 $(am__define_uniq_tagged_files); \ 291 367 shift; \ 292 368 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 300 376 fi; \ 301 377 fi 302 ctags: CTAGS 303 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 304 $(TAGS_FILES) $(LISP) 305 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 306 unique=`for i in $$list; do \ 307 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 308 done | \ 309 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 310 END { if (nonempty) { for (i in files) print i; }; }'`; \ 378 ctags: ctags-am 379 380 CTAGS: ctags 381 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 382 $(am__define_uniq_tagged_files); \ 311 383 test -z "$(CTAGS_ARGS)$$unique" \ 312 384 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 317 389 && $(am__cd) $(top_srcdir) \ 318 390 && gtags -i $(GTAGS_ARGS) "$$here" 391 cscopelist: cscopelist-am 392 393 cscopelist-am: $(am__tagged_files) 394 list='$(am__tagged_files)'; \ 395 case "$(srcdir)" in \ 396 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 397 *) sdir=$(subdir)/$(srcdir) ;; \ 398 esac; \ 399 for i in $$list; do \ 400 if test -f "$$i"; then \ 401 echo "$(subdir)/$$i"; \ 402 else \ 403 echo "$$sdir/$$i"; \ 404 fi; \ 405 done >> $(top_builddir)/cscope.files 319 406 320 407 distclean-tags: … … 456 543 .MAKE: install-am install-strip 457 544 458 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \459 clean-noinstPROGRAMS c tags distclean distclean-compile\460 distclean- generic distclean-tags distdir dvi dvi-am html\461 html-am info info-am install install-am install-data\462 install-data -am install-dvi install-dvi-am install-exec\463 install-exec -am install-html install-html-am install-info\464 install-info -am install-man install-pdf install-pdf-am\465 install-p s install-ps-am install-strip installcheck\466 installcheck -am installdirs maintainer-clean \545 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ 546 clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ 547 distclean-compile distclean-generic distclean-tags distdir dvi \ 548 dvi-am html html-am info info-am install install-am \ 549 install-data install-data-am install-dvi install-dvi-am \ 550 install-exec install-exec-am install-html install-html-am \ 551 install-info install-info-am install-man install-pdf \ 552 install-pdf-am install-ps install-ps-am install-strip \ 553 installcheck installcheck-am installdirs maintainer-clean \ 467 554 maintainer-clean-generic mostlyclean mostlyclean-compile \ 468 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \555 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 469 556 uninstall-am 557 558 .PRECIOUS: Makefile 470 559 471 560 -
TabularUnified src/driver/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 20 19 21 20 VPATH = @srcdir@ 21 am__is_gnu_make = { \ 22 if test -z '$(MAKELEVEL)'; then \ 23 false; \ 24 elif test -n '$(MAKE_HOST)'; then \ 25 true; \ 26 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 27 true; \ 28 else \ 29 false; \ 30 fi; \ 31 } 32 am__make_running_with_option = \ 33 case $${target_option-} in \ 34 ?) ;; \ 35 *) echo "am__make_running_with_option: internal error: invalid" \ 36 "target option '$${target_option-}' specified" >&2; \ 37 exit 1;; \ 38 esac; \ 39 has_opt=no; \ 40 sane_makeflags=$$MAKEFLAGS; \ 41 if $(am__is_gnu_make); then \ 42 sane_makeflags=$$MFLAGS; \ 43 else \ 44 case $$MAKEFLAGS in \ 45 *\\[\ \ ]*) \ 46 bs=\\; \ 47 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 48 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 49 esac; \ 50 fi; \ 51 skip_next=no; \ 52 strip_trailopt () \ 53 { \ 54 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 55 }; \ 56 for flg in $$sane_makeflags; do \ 57 test $$skip_next = yes && { skip_next=no; continue; }; \ 58 case $$flg in \ 59 *=*|--*) continue;; \ 60 -*I) strip_trailopt 'I'; skip_next=yes;; \ 61 -*I?*) strip_trailopt 'I';; \ 62 -*O) strip_trailopt 'O'; skip_next=yes;; \ 63 -*O?*) strip_trailopt 'O';; \ 64 -*l) strip_trailopt 'l'; skip_next=yes;; \ 65 -*l?*) strip_trailopt 'l';; \ 66 -[dEDm]) skip_next=yes;; \ 67 -[JT]) skip_next=yes;; \ 68 esac; \ 69 case $$flg in \ 70 *$$target_option*) has_opt=yes; break;; \ 71 esac; \ 72 done; \ 73 test $$has_opt = yes 74 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 22 76 pkgdatadir = $(datadir)/@PACKAGE@ 23 77 pkgincludedir = $(includedir)/@PACKAGE@ … … 44 98 cc1lib_PROGRAMS = cc1$(EXEEXT) 45 99 subdir = src/driver 46 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in47 100 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 48 101 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 49 102 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 50 103 $(ACLOCAL_M4) 104 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 51 105 mkinstalldirs = $(install_sh) -d 52 106 CONFIG_HEADER = $(top_builddir)/config.h … … 61 115 cfa_OBJECTS = $(am_cfa_OBJECTS) 62 116 cfa_LDADD = $(LDADD) 117 AM_V_P = $(am__v_P_@AM_V@) 118 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 119 am__v_P_0 = false 120 am__v_P_1 = : 121 AM_V_GEN = $(am__v_GEN_@AM_V@) 122 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 123 am__v_GEN_0 = @echo " GEN " $@; 124 am__v_GEN_1 = 125 AM_V_at = $(am__v_at_@AM_V@) 126 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 127 am__v_at_0 = @ 128 am__v_at_1 = 63 129 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 64 130 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 69 135 AM_V_CXX = $(am__v_CXX_@AM_V@) 70 136 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) 71 am__v_CXX_0 = @echo " CXX " $@; 72 AM_V_at = $(am__v_at_@AM_V@) 73 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 74 am__v_at_0 = @ 137 am__v_CXX_0 = @echo " CXX " $@; 138 am__v_CXX_1 = 75 139 CXXLD = $(CXX) 76 140 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ … … 78 142 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) 79 143 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) 80 am__v_CXXLD_0 = @echo " CXXLD " $@; 81 AM_V_GEN = $(am__v_GEN_@AM_V@) 82 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 83 am__v_GEN_0 = @echo " GEN " $@; 144 am__v_CXXLD_0 = @echo " CXXLD " $@; 145 am__v_CXXLD_1 = 84 146 SOURCES = $(cc1_SOURCES) $(cfa_SOURCES) 85 147 DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES) 148 am__can_run_installinfo = \ 149 case $$AM_UPDATE_INFO_DIR in \ 150 n|no|NO) false;; \ 151 *) (install-info --version) >/dev/null 2>&1;; \ 152 esac 153 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 154 # Read a list of newline-separated strings from the standard input, 155 # and print each of them once, without duplicates. Input order is 156 # *not* preserved. 157 am__uniquify_input = $(AWK) '\ 158 BEGIN { nonempty = 0; } \ 159 { items[$$0] = 1; nonempty = 1; } \ 160 END { if (nonempty) { for (i in items) print i; }; } \ 161 ' 162 # Make sure the list of sources is unique. This is necessary because, 163 # e.g., the same source file might be shared among _SOURCES variables 164 # for different programs/libraries. 165 am__define_uniq_tagged_files = \ 166 list='$(am__tagged_files)'; \ 167 unique=`for i in $$list; do \ 168 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 169 done | $(am__uniquify_input)` 86 170 ETAGS = etags 87 171 CTAGS = ctags 172 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp 88 173 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 89 174 ACLOCAL = @ACLOCAL@ … … 198 283 program_transform_name = @program_transform_name@ 199 284 psdir = @psdir@ 285 runstatedir = @runstatedir@ 200 286 sbindir = @sbindir@ 201 287 sharedstatedir = @sharedstatedir@ … … 229 315 esac; \ 230 316 done; \ 231 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/driver/Makefile'; \317 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/driver/Makefile'; \ 232 318 $(am__cd) $(top_srcdir) && \ 233 $(AUTOMAKE) --foreign src/driver/Makefile 234 .PRECIOUS: Makefile 319 $(AUTOMAKE) --gnu src/driver/Makefile 235 320 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 236 321 @case '$?' in \ … … 252 337 install-cc1libPROGRAMS: $(cc1lib_PROGRAMS) 253 338 @$(NORMAL_INSTALL) 254 test -z "$(cc1libdir)" || $(MKDIR_P) "$(DESTDIR)$(cc1libdir)"255 339 @list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \ 340 if test -n "$$list"; then \ 341 echo " $(MKDIR_P) '$(DESTDIR)$(cc1libdir)'"; \ 342 $(MKDIR_P) "$(DESTDIR)$(cc1libdir)" || exit 1; \ 343 fi; \ 256 344 for p in $$list; do echo "$$p $$p"; done | \ 257 345 sed 's/$(EXEEXT)$$//' | \ 258 while read p p1; do if test -f $$p ;\259 then echo "$$p"; echo "$$p"; else :; fi; \346 while read p p1; do if test -f $$p \ 347 ; then echo "$$p"; echo "$$p"; else :; fi; \ 260 348 done | \ 261 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ 349 sed -e 'p;s,.*/,,;n;h' \ 350 -e 's|.*|.|' \ 262 351 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ 263 352 sed 'N;N;N;s,\n, ,g' | \ … … 280 369 files=`for p in $$list; do echo "$$p"; done | \ 281 370 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ 282 -e 's/$$/$(EXEEXT)/' `; \ 371 -e 's/$$/$(EXEEXT)/' \ 372 `; \ 283 373 test -n "$$list" || exit 0; \ 284 374 echo " ( cd '$(DESTDIR)$(cc1libdir)' && rm -f" $$files ")"; \ … … 290 380 clean-noinstPROGRAMS: 291 381 -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) 382 292 383 cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES) 293 384 @rm -f cc1$(EXEEXT) 294 385 $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS) 386 295 387 cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES) 296 388 @rm -f cfa$(EXEEXT) … … 307 399 308 400 .cc.o: 309 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< 310 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 401 @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 402 @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 403 @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 311 404 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 312 405 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ … … 314 407 315 408 .cc.obj: 316 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` 317 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 409 @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ 410 @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ 411 @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 318 412 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 319 413 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 320 414 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 321 415 322 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 323 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 324 unique=`for i in $$list; do \ 325 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 326 done | \ 327 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 328 END { if (nonempty) { for (i in files) print i; }; }'`; \ 329 mkid -fID $$unique 330 tags: TAGS 331 332 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 333 $(TAGS_FILES) $(LISP) 416 ID: $(am__tagged_files) 417 $(am__define_uniq_tagged_files); mkid -fID $$unique 418 tags: tags-am 419 TAGS: tags 420 421 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 334 422 set x; \ 335 423 here=`pwd`; \ 336 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 337 unique=`for i in $$list; do \ 338 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 339 done | \ 340 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 341 END { if (nonempty) { for (i in files) print i; }; }'`; \ 424 $(am__define_uniq_tagged_files); \ 342 425 shift; \ 343 426 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 351 434 fi; \ 352 435 fi 353 ctags: CTAGS 354 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 355 $(TAGS_FILES) $(LISP) 356 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 357 unique=`for i in $$list; do \ 358 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 359 done | \ 360 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 361 END { if (nonempty) { for (i in files) print i; }; }'`; \ 436 ctags: ctags-am 437 438 CTAGS: ctags 439 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 440 $(am__define_uniq_tagged_files); \ 362 441 test -z "$(CTAGS_ARGS)$$unique" \ 363 442 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 368 447 && $(am__cd) $(top_srcdir) \ 369 448 && gtags -i $(GTAGS_ARGS) "$$here" 449 cscopelist: cscopelist-am 450 451 cscopelist-am: $(am__tagged_files) 452 list='$(am__tagged_files)'; \ 453 case "$(srcdir)" in \ 454 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 455 *) sdir=$(subdir)/$(srcdir) ;; \ 456 esac; \ 457 for i in $$list; do \ 458 if test -f "$$i"; then \ 459 echo "$(subdir)/$$i"; \ 460 else \ 461 echo "$$sdir/$$i"; \ 462 fi; \ 463 done >> $(top_builddir)/cscope.files 370 464 371 465 distclean-tags: … … 514 608 .MAKE: install-am install-exec-am install-strip uninstall-am 515 609 516 .PHONY: CTAGS GTAGS all all-am check check-am clean \ 517 clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS ctags \ 518 distclean distclean-compile distclean-generic distclean-tags \ 519 distdir dvi dvi-am html html-am info info-am install \ 520 install-am install-cc1libPROGRAMS install-data install-data-am \ 521 install-dvi install-dvi-am install-exec install-exec-am \ 522 install-exec-hook install-html install-html-am install-info \ 523 install-info-am install-man install-pdf install-pdf-am \ 524 install-ps install-ps-am install-strip installcheck \ 525 installcheck-am installdirs maintainer-clean \ 526 maintainer-clean-generic mostlyclean mostlyclean-compile \ 527 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ 528 uninstall-am uninstall-cc1libPROGRAMS uninstall-hook 610 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ 611 clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS \ 612 cscopelist-am ctags ctags-am distclean distclean-compile \ 613 distclean-generic distclean-tags distdir dvi dvi-am html \ 614 html-am info info-am install install-am install-cc1libPROGRAMS \ 615 install-data install-data-am install-dvi install-dvi-am \ 616 install-exec install-exec-am install-exec-hook install-html \ 617 install-html-am install-info install-info-am install-man \ 618 install-pdf install-pdf-am install-ps install-ps-am \ 619 install-strip installcheck installcheck-am installdirs \ 620 maintainer-clean maintainer-clean-generic mostlyclean \ 621 mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ 622 tags tags-am uninstall uninstall-am uninstall-cc1libPROGRAMS \ 623 uninstall-hook 624 625 .PRECIOUS: Makefile 529 626 530 627 -
TabularUnified src/examples/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 20 19 21 20 VPATH = @srcdir@ 21 am__is_gnu_make = { \ 22 if test -z '$(MAKELEVEL)'; then \ 23 false; \ 24 elif test -n '$(MAKE_HOST)'; then \ 25 true; \ 26 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 27 true; \ 28 else \ 29 false; \ 30 fi; \ 31 } 32 am__make_running_with_option = \ 33 case $${target_option-} in \ 34 ?) ;; \ 35 *) echo "am__make_running_with_option: internal error: invalid" \ 36 "target option '$${target_option-}' specified" >&2; \ 37 exit 1;; \ 38 esac; \ 39 has_opt=no; \ 40 sane_makeflags=$$MAKEFLAGS; \ 41 if $(am__is_gnu_make); then \ 42 sane_makeflags=$$MFLAGS; \ 43 else \ 44 case $$MAKEFLAGS in \ 45 *\\[\ \ ]*) \ 46 bs=\\; \ 47 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 48 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 49 esac; \ 50 fi; \ 51 skip_next=no; \ 52 strip_trailopt () \ 53 { \ 54 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 55 }; \ 56 for flg in $$sane_makeflags; do \ 57 test $$skip_next = yes && { skip_next=no; continue; }; \ 58 case $$flg in \ 59 *=*|--*) continue;; \ 60 -*I) strip_trailopt 'I'; skip_next=yes;; \ 61 -*I?*) strip_trailopt 'I';; \ 62 -*O) strip_trailopt 'O'; skip_next=yes;; \ 63 -*O?*) strip_trailopt 'O';; \ 64 -*l) strip_trailopt 'l'; skip_next=yes;; \ 65 -*l?*) strip_trailopt 'l';; \ 66 -[dEDm]) skip_next=yes;; \ 67 -[JT]) skip_next=yes;; \ 68 esac; \ 69 case $$flg in \ 70 *$$target_option*) has_opt=yes; break;; \ 71 esac; \ 72 done; \ 73 test $$has_opt = yes 74 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 22 76 pkgdatadir = $(datadir)/@PACKAGE@ 23 77 pkgincludedir = $(includedir)/@PACKAGE@ … … 41 95 avl_test$(EXEEXT) Bench$(EXEEXT) 42 96 subdir = src/examples 43 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in44 97 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 45 98 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 46 99 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 47 100 $(ACLOCAL_M4) 101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 48 102 mkinstalldirs = $(install_sh) -d 49 103 CONFIG_HEADER = $(top_builddir)/config.h … … 54 108 Bench_OBJECTS = Bench.$(OBJEXT) 55 109 Bench_LDADD = $(LDADD) 56 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \ 57 avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \ 58 avl-private.$(OBJEXT) 110 am__dirstamp = $(am__leading_dot)dirstamp 111 am_avl_test_OBJECTS = avltree/avl_test.$(OBJEXT) \ 112 avltree/avl0.$(OBJEXT) avltree/avl1.$(OBJEXT) \ 113 avltree/avl2.$(OBJEXT) avltree/avl3.$(OBJEXT) \ 114 avltree/avl4.$(OBJEXT) avltree/avl-private.$(OBJEXT) 59 115 avl_test_OBJECTS = $(am_avl_test_OBJECTS) 60 116 avl_test_LDADD = $(LDADD) … … 66 122 vector_test_OBJECTS = $(am_vector_test_OBJECTS) 67 123 vector_test_LDADD = $(LDADD) 124 AM_V_P = $(am__v_P_@AM_V@) 125 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 126 am__v_P_0 = false 127 am__v_P_1 = : 128 AM_V_GEN = $(am__v_GEN_@AM_V@) 129 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 130 am__v_GEN_0 = @echo " GEN " $@; 131 am__v_GEN_1 = 132 AM_V_at = $(am__v_at_@AM_V@) 133 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 134 am__v_at_0 = @ 135 am__v_at_1 = 68 136 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 69 137 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp 70 138 am__depfiles_maybe = depfiles 71 139 am__mv = mv -f 72 AM_V_lt = $(am__v_lt_@AM_V@)73 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)74 am__v_lt_0 = --silent75 140 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 76 141 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 77 142 AM_V_CC = $(am__v_CC_@AM_V@) 78 143 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 79 am__v_CC_0 = @echo " CC " $@; 80 AM_V_at = $(am__v_at_@AM_V@) 81 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 82 am__v_at_0 = @ 144 am__v_CC_0 = @echo " CC " $@; 145 am__v_CC_1 = 83 146 CCLD = $(CC) 84 147 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 85 148 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 86 149 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 87 am__v_CCLD_0 = @echo " CCLD " $@; 88 AM_V_GEN = $(am__v_GEN_@AM_V@) 89 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 90 am__v_GEN_0 = @echo " GEN " $@; 150 am__v_CCLD_0 = @echo " CCLD " $@; 151 am__v_CCLD_1 = 91 152 SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 92 153 $(vector_test_SOURCES) 93 154 DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 94 155 $(vector_test_SOURCES) 156 am__can_run_installinfo = \ 157 case $$AM_UPDATE_INFO_DIR in \ 158 n|no|NO) false;; \ 159 *) (install-info --version) >/dev/null 2>&1;; \ 160 esac 161 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 162 # Read a list of newline-separated strings from the standard input, 163 # and print each of them once, without duplicates. Input order is 164 # *not* preserved. 165 am__uniquify_input = $(AWK) '\ 166 BEGIN { nonempty = 0; } \ 167 { items[$$0] = 1; nonempty = 1; } \ 168 END { if (nonempty) { for (i in items) print i; }; } \ 169 ' 170 # Make sure the list of sources is unique. This is necessary because, 171 # e.g., the same source file might be shared among _SOURCES variables 172 # for different programs/libraries. 173 am__define_uniq_tagged_files = \ 174 list='$(am__tagged_files)'; \ 175 unique=`for i in $$list; do \ 176 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 177 done | $(am__uniquify_input)` 95 178 ETAGS = etags 96 179 CTAGS = ctags 180 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp 97 181 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 98 182 ACLOCAL = @ACLOCAL@ … … 209 293 program_transform_name = @program_transform_name@ 210 294 psdir = @psdir@ 295 runstatedir = @runstatedir@ 211 296 sbindir = @sbindir@ 212 297 sharedstatedir = @sharedstatedir@ … … 234 319 esac; \ 235 320 done; \ 236 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/examples/Makefile'; \321 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/examples/Makefile'; \ 237 322 $(am__cd) $(top_srcdir) && \ 238 $(AUTOMAKE) --foreign src/examples/Makefile 239 .PRECIOUS: Makefile 323 $(AUTOMAKE) --gnu src/examples/Makefile 240 324 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 241 325 @case '$?' in \ … … 258 342 clean-noinstPROGRAMS: 259 343 -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) 344 avltree/$(am__dirstamp): 345 @$(MKDIR_P) avltree 346 @: > avltree/$(am__dirstamp) 347 avltree/$(DEPDIR)/$(am__dirstamp): 348 @$(MKDIR_P) avltree/$(DEPDIR) 349 @: > avltree/$(DEPDIR)/$(am__dirstamp) 350 avltree/avl_test.$(OBJEXT): avltree/$(am__dirstamp) \ 351 avltree/$(DEPDIR)/$(am__dirstamp) 352 avltree/avl0.$(OBJEXT): avltree/$(am__dirstamp) \ 353 avltree/$(DEPDIR)/$(am__dirstamp) 354 avltree/avl1.$(OBJEXT): avltree/$(am__dirstamp) \ 355 avltree/$(DEPDIR)/$(am__dirstamp) 356 avltree/avl2.$(OBJEXT): avltree/$(am__dirstamp) \ 357 avltree/$(DEPDIR)/$(am__dirstamp) 358 avltree/avl3.$(OBJEXT): avltree/$(am__dirstamp) \ 359 avltree/$(DEPDIR)/$(am__dirstamp) 360 avltree/avl4.$(OBJEXT): avltree/$(am__dirstamp) \ 361 avltree/$(DEPDIR)/$(am__dirstamp) 362 avltree/avl-private.$(OBJEXT): avltree/$(am__dirstamp) \ 363 avltree/$(DEPDIR)/$(am__dirstamp) 364 260 365 avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 261 366 @rm -f avl_test$(EXEEXT) 262 367 $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS) 368 263 369 fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 264 370 @rm -f fstream_test$(EXEEXT) 265 371 $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS) 372 266 373 vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 267 374 @rm -f vector_test$(EXEEXT) … … 270 377 mostlyclean-compile: 271 378 -rm -f *.$(OBJEXT) 379 -rm -f avltree/*.$(OBJEXT) 272 380 273 381 distclean-compile: … … 276 384 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@ 277 385 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@ 278 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@279 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl0.Po@am__quote@280 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl1.Po@am__quote@281 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl2.Po@am__quote@282 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl3.Po@am__quote@283 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl4.Po@am__quote@284 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_test.Po@am__quote@285 386 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@ 286 387 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@ 287 388 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@ 389 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl-private.Po@am__quote@ 390 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl0.Po@am__quote@ 391 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl1.Po@am__quote@ 392 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl2.Po@am__quote@ 393 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl3.Po@am__quote@ 394 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl4.Po@am__quote@ 395 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test.Po@am__quote@ 288 396 289 397 .c.o: 290 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< 291 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 398 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 399 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 400 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 292 401 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 293 402 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 294 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<403 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< 295 404 296 405 .c.obj: 297 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` 298 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 406 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ 407 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ 408 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 299 409 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 300 410 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 301 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` 302 303 avl_test.o: avltree/avl_test.c 304 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.o -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c 305 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po 306 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@ 307 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 308 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c 309 310 avl_test.obj: avltree/avl_test.c 311 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.obj -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi` 312 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po 313 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@ 314 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 315 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi` 316 317 avl0.o: avltree/avl0.c 318 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.o -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c 319 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po 320 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@ 321 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 322 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c 323 324 avl0.obj: avltree/avl0.c 325 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.obj -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi` 326 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po 327 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@ 328 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 329 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi` 330 331 avl1.o: avltree/avl1.c 332 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.o -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c 333 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po 334 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@ 335 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 336 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c 337 338 avl1.obj: avltree/avl1.c 339 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.obj -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi` 340 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po 341 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@ 342 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 343 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi` 344 345 avl2.o: avltree/avl2.c 346 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.o -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c 347 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po 348 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@ 349 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 350 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c 351 352 avl2.obj: avltree/avl2.c 353 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.obj -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi` 354 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po 355 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@ 356 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 357 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi` 358 359 avl3.o: avltree/avl3.c 360 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.o -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c 361 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po 362 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@ 363 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 364 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c 365 366 avl3.obj: avltree/avl3.c 367 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.obj -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi` 368 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po 369 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@ 370 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 371 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi` 372 373 avl4.o: avltree/avl4.c 374 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.o -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c 375 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po 376 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@ 377 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 378 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c 379 380 avl4.obj: avltree/avl4.c 381 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.obj -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi` 382 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po 383 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@ 384 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 385 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi` 386 387 avl-private.o: avltree/avl-private.c 388 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.o -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c 389 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po 390 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@ 391 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 392 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c 393 394 avl-private.obj: avltree/avl-private.c 395 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.obj -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi` 396 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po 397 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@ 398 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 399 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi` 400 401 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 402 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 403 unique=`for i in $$list; do \ 404 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 405 done | \ 406 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 407 END { if (nonempty) { for (i in files) print i; }; }'`; \ 408 mkid -fID $$unique 409 tags: TAGS 410 411 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 412 $(TAGS_FILES) $(LISP) 411 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 412 413 ID: $(am__tagged_files) 414 $(am__define_uniq_tagged_files); mkid -fID $$unique 415 tags: tags-am 416 TAGS: tags 417 418 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 413 419 set x; \ 414 420 here=`pwd`; \ 415 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 416 unique=`for i in $$list; do \ 417 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 418 done | \ 419 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 420 END { if (nonempty) { for (i in files) print i; }; }'`; \ 421 $(am__define_uniq_tagged_files); \ 421 422 shift; \ 422 423 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 430 431 fi; \ 431 432 fi 432 ctags: CTAGS 433 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 434 $(TAGS_FILES) $(LISP) 435 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 436 unique=`for i in $$list; do \ 437 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 438 done | \ 439 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 440 END { if (nonempty) { for (i in files) print i; }; }'`; \ 433 ctags: ctags-am 434 435 CTAGS: ctags 436 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 437 $(am__define_uniq_tagged_files); \ 441 438 test -z "$(CTAGS_ARGS)$$unique" \ 442 439 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 447 444 && $(am__cd) $(top_srcdir) \ 448 445 && gtags -i $(GTAGS_ARGS) "$$here" 446 cscopelist: cscopelist-am 447 448 cscopelist-am: $(am__tagged_files) 449 list='$(am__tagged_files)'; \ 450 case "$(srcdir)" in \ 451 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 452 *) sdir=$(subdir)/$(srcdir) ;; \ 453 esac; \ 454 for i in $$list; do \ 455 if test -f "$$i"; then \ 456 echo "$(subdir)/$$i"; \ 457 else \ 458 echo "$$sdir/$$i"; \ 459 fi; \ 460 done >> $(top_builddir)/cscope.files 449 461 450 462 distclean-tags: … … 511 523 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 512 524 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) 525 -rm -f avltree/$(DEPDIR)/$(am__dirstamp) 526 -rm -f avltree/$(am__dirstamp) 513 527 514 528 maintainer-clean-generic: … … 520 534 521 535 distclean: distclean-am 522 -rm -rf ./$(DEPDIR) 536 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) 523 537 -rm -f Makefile 524 538 distclean-am: clean-am distclean-compile distclean-generic \ … … 566 580 567 581 maintainer-clean: maintainer-clean-am 568 -rm -rf ./$(DEPDIR) 582 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) 569 583 -rm -f Makefile 570 584 maintainer-clean-am: distclean-am maintainer-clean-generic … … 586 600 .MAKE: install-am install-strip 587 601 588 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \589 clean-noinstPROGRAMS c tags distclean distclean-compile\590 distclean- generic distclean-tags distdir dvi dvi-am html\591 html-am info info-am install install-am install-data\592 install-data -am install-dvi install-dvi-am install-exec\593 install-exec -am install-html install-html-am install-info\594 install-info -am install-man install-pdf install-pdf-am\595 install-p s install-ps-am install-strip installcheck\596 installcheck -am installdirs maintainer-clean \602 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ 603 clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ 604 distclean-compile distclean-generic distclean-tags distdir dvi \ 605 dvi-am html html-am info info-am install install-am \ 606 install-data install-data-am install-dvi install-dvi-am \ 607 install-exec install-exec-am install-html install-html-am \ 608 install-info install-info-am install-man install-pdf \ 609 install-pdf-am install-ps install-ps-am install-strip \ 610 installcheck installcheck-am installdirs maintainer-clean \ 597 611 maintainer-clean-generic mostlyclean mostlyclean-compile \ 598 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \612 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 599 613 uninstall-am 614 615 .PRECIOUS: Makefile 600 616 601 617 -
TabularUnified src/libcfa/Makefile.am ¶
rb1e63ac5 r208e5be 50 50 51 51 libobjs = ${headers:=.o} 52 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} 52 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} exception.c 53 53 54 54 # not all platforms support concurrency, add option do disable it -
TabularUnified src/libcfa/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 21 20 22 21 VPATH = @srcdir@ 22 am__is_gnu_make = { \ 23 if test -z '$(MAKELEVEL)'; then \ 24 false; \ 25 elif test -n '$(MAKE_HOST)'; then \ 26 true; \ 27 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 28 true; \ 29 else \ 30 false; \ 31 fi; \ 32 } 33 am__make_running_with_option = \ 34 case $${target_option-} in \ 35 ?) ;; \ 36 *) echo "am__make_running_with_option: internal error: invalid" \ 37 "target option '$${target_option-}' specified" >&2; \ 38 exit 1;; \ 39 esac; \ 40 has_opt=no; \ 41 sane_makeflags=$$MAKEFLAGS; \ 42 if $(am__is_gnu_make); then \ 43 sane_makeflags=$$MFLAGS; \ 44 else \ 45 case $$MAKEFLAGS in \ 46 *\\[\ \ ]*) \ 47 bs=\\; \ 48 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 49 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 50 esac; \ 51 fi; \ 52 skip_next=no; \ 53 strip_trailopt () \ 54 { \ 55 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 56 }; \ 57 for flg in $$sane_makeflags; do \ 58 test $$skip_next = yes && { skip_next=no; continue; }; \ 59 case $$flg in \ 60 *=*|--*) continue;; \ 61 -*I) strip_trailopt 'I'; skip_next=yes;; \ 62 -*I?*) strip_trailopt 'I';; \ 63 -*O) strip_trailopt 'O'; skip_next=yes;; \ 64 -*O?*) strip_trailopt 'O';; \ 65 -*l) strip_trailopt 'l'; skip_next=yes;; \ 66 -*l?*) strip_trailopt 'l';; \ 67 -[dEDm]) skip_next=yes;; \ 68 -[JT]) skip_next=yes;; \ 69 esac; \ 70 case $$flg in \ 71 *$$target_option*) has_opt=yes; break;; \ 72 esac; \ 73 done; \ 74 test $$has_opt = yes 75 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 76 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 23 77 pkgdatadir = $(datadir)/@PACKAGE@ 24 78 pkgincludedir = $(includedir)/@PACKAGE@ … … 48 102 @BUILD_CONCURRENCY_TRUE@am__append_4 = concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c concurrency/invoke.c concurrency/preemption.c 49 103 subdir = src/libcfa 50 DIST_COMMON = $(am__nobase_cfa_include_HEADERS_DIST) \51 $(srcdir)/Makefile.am $(srcdir)/Makefile.in52 104 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 53 105 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 54 106 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 55 107 $(ACLOCAL_M4) 108 DIST_COMMON = $(srcdir)/Makefile.am \ 109 $(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON) 56 110 mkinstalldirs = $(install_sh) -d 57 111 CONFIG_HEADER = $(top_builddir)/config.h … … 91 145 AM_V_AR = $(am__v_AR_@AM_V@) 92 146 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) 93 am__v_AR_0 = @echo " AR " $@; 94 AM_V_at = $(am__v_at_@AM_V@) 95 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 96 am__v_at_0 = @ 147 am__v_AR_0 = @echo " AR " $@; 148 am__v_AR_1 = 97 149 libcfa_d_a_AR = $(AR) $(ARFLAGS) 98 150 libcfa_d_a_LIBADD = … … 102 154 containers/pair.c containers/result.c containers/vector.c \ 103 155 concurrency/coroutine.c concurrency/thread.c \ 104 concurrency/kernel.c concurrency/monitor.c \156 concurrency/kernel.c concurrency/monitor.c exception.c \ 105 157 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \ 106 158 concurrency/invoke.c concurrency/preemption.c … … 126 178 libcfa_d_a-interpose.$(OBJEXT) \ 127 179 libhdr/libcfa_d_a-libdebug.$(OBJEXT) $(am__objects_2) \ 128 $(am__objects_3)180 libcfa_d_a-exception.$(OBJEXT) $(am__objects_3) 129 181 am_libcfa_d_a_OBJECTS = $(am__objects_4) 130 182 libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS) … … 136 188 containers/pair.c containers/result.c containers/vector.c \ 137 189 concurrency/coroutine.c concurrency/thread.c \ 138 concurrency/kernel.c concurrency/monitor.c \190 concurrency/kernel.c concurrency/monitor.c exception.c \ 139 191 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \ 140 192 concurrency/invoke.c concurrency/preemption.c … … 158 210 libcfa_a-interpose.$(OBJEXT) \ 159 211 libhdr/libcfa_a-libdebug.$(OBJEXT) $(am__objects_6) \ 160 $(am__objects_7)212 libcfa_a-exception.$(OBJEXT) $(am__objects_7) 161 213 am_libcfa_a_OBJECTS = $(am__objects_8) 162 214 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS) 215 AM_V_P = $(am__v_P_@AM_V@) 216 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 217 am__v_P_0 = false 218 am__v_P_1 = : 219 AM_V_GEN = $(am__v_GEN_@AM_V@) 220 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 221 am__v_GEN_0 = @echo " GEN " $@; 222 am__v_GEN_1 = 223 AM_V_at = $(am__v_at_@AM_V@) 224 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 225 am__v_at_0 = @ 226 am__v_at_1 = 163 227 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 164 228 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 169 233 AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) 170 234 am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) 171 am__v_CPPAS_0 = @echo " CPPAS " $@; 235 am__v_CPPAS_0 = @echo " CPPAS " $@; 236 am__v_CPPAS_1 = 172 237 AM_V_lt = $(am__v_lt_@AM_V@) 173 238 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 174 239 am__v_lt_0 = --silent 240 am__v_lt_1 = 175 241 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 176 242 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 177 243 AM_V_CC = $(am__v_CC_@AM_V@) 178 244 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 179 am__v_CC_0 = @echo " CC " $@; 245 am__v_CC_0 = @echo " CC " $@; 246 am__v_CC_1 = 180 247 CCLD = $(CC) 181 248 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 182 249 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 183 250 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 184 am__v_CCLD_0 = @echo " CCLD " $@; 185 AM_V_GEN = $(am__v_GEN_@AM_V@) 186 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 187 am__v_GEN_0 = @echo " GEN " $@; 251 am__v_CCLD_0 = @echo " CCLD " $@; 252 am__v_CCLD_1 = 188 253 SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES) 189 254 DIST_SOURCES = $(am__libcfa_d_a_SOURCES_DIST) \ 190 255 $(am__libcfa_a_SOURCES_DIST) 256 am__can_run_installinfo = \ 257 case $$AM_UPDATE_INFO_DIR in \ 258 n|no|NO) false;; \ 259 *) (install-info --version) >/dev/null 2>&1;; \ 260 esac 191 261 am__nobase_cfa_include_HEADERS_DIST = assert fstream iostream iterator \ 192 262 limits math rational stdlib containers/maybe containers/pair \ … … 195 265 ${shell echo stdhdr/*} gmp concurrency/invoke.h 196 266 HEADERS = $(nobase_cfa_include_HEADERS) 267 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 268 # Read a list of newline-separated strings from the standard input, 269 # and print each of them once, without duplicates. Input order is 270 # *not* preserved. 271 am__uniquify_input = $(AWK) '\ 272 BEGIN { nonempty = 0; } \ 273 { items[$$0] = 1; nonempty = 1; } \ 274 END { if (nonempty) { for (i in items) print i; }; } \ 275 ' 276 # Make sure the list of sources is unique. This is necessary because, 277 # e.g., the same source file might be shared among _SOURCES variables 278 # for different programs/libraries. 279 am__define_uniq_tagged_files = \ 280 list='$(am__tagged_files)'; \ 281 unique=`for i in $$list; do \ 282 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 283 done | $(am__uniquify_input)` 197 284 ETAGS = etags 198 285 CTAGS = ctags 286 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp 199 287 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 200 288 ACLOCAL = @ACLOCAL@ … … 309 397 program_transform_name = @program_transform_name@ 310 398 psdir = @psdir@ 399 runstatedir = @runstatedir@ 311 400 sbindir = @sbindir@ 312 401 sharedstatedir = @sharedstatedir@ … … 328 417 libobjs = ${headers:=.o} 329 418 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \ 330 $(am__append_4)419 exception.c $(am__append_4) 331 420 libcfa_a_SOURCES = ${libsrc} 332 421 libcfa_a_CFLAGS = -nodebug -O2 … … 350 439 esac; \ 351 440 done; \ 352 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/libcfa/Makefile'; \441 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libcfa/Makefile'; \ 353 442 $(am__cd) $(top_srcdir) && \ 354 $(AUTOMAKE) --foreign src/libcfa/Makefile 355 .PRECIOUS: Makefile 443 $(AUTOMAKE) --gnu src/libcfa/Makefile 356 444 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 357 445 @case '$?' in \ … … 373 461 install-libLIBRARIES: $(lib_LIBRARIES) 374 462 @$(NORMAL_INSTALL) 375 test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"376 463 @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ 377 464 list2=; for p in $$list; do \ … … 381 468 done; \ 382 469 test -z "$$list2" || { \ 470 echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ 471 $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ 383 472 echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ 384 473 $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } … … 448 537 concurrency/$(am__dirstamp) \ 449 538 concurrency/$(DEPDIR)/$(am__dirstamp) 539 450 540 libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES) 451 541 $(AM_V_at)-rm -f libcfa-d.a … … 477 567 concurrency/$(am__dirstamp) \ 478 568 concurrency/$(DEPDIR)/$(am__dirstamp) 569 479 570 libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 480 571 $(AM_V_at)-rm -f libcfa.a … … 484 575 mostlyclean-compile: 485 576 -rm -f *.$(OBJEXT) 486 -rm -f concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) 487 -rm -f concurrency/libcfa_a-alarm.$(OBJEXT) 488 -rm -f concurrency/libcfa_a-coroutine.$(OBJEXT) 489 -rm -f concurrency/libcfa_a-invoke.$(OBJEXT) 490 -rm -f concurrency/libcfa_a-kernel.$(OBJEXT) 491 -rm -f concurrency/libcfa_a-monitor.$(OBJEXT) 492 -rm -f concurrency/libcfa_a-preemption.$(OBJEXT) 493 -rm -f concurrency/libcfa_a-thread.$(OBJEXT) 494 -rm -f concurrency/libcfa_d_a-alarm.$(OBJEXT) 495 -rm -f concurrency/libcfa_d_a-coroutine.$(OBJEXT) 496 -rm -f concurrency/libcfa_d_a-invoke.$(OBJEXT) 497 -rm -f concurrency/libcfa_d_a-kernel.$(OBJEXT) 498 -rm -f concurrency/libcfa_d_a-monitor.$(OBJEXT) 499 -rm -f concurrency/libcfa_d_a-preemption.$(OBJEXT) 500 -rm -f concurrency/libcfa_d_a-thread.$(OBJEXT) 501 -rm -f containers/libcfa_a-maybe.$(OBJEXT) 502 -rm -f containers/libcfa_a-pair.$(OBJEXT) 503 -rm -f containers/libcfa_a-result.$(OBJEXT) 504 -rm -f containers/libcfa_a-vector.$(OBJEXT) 505 -rm -f containers/libcfa_d_a-maybe.$(OBJEXT) 506 -rm -f containers/libcfa_d_a-pair.$(OBJEXT) 507 -rm -f containers/libcfa_d_a-result.$(OBJEXT) 508 -rm -f containers/libcfa_d_a-vector.$(OBJEXT) 509 -rm -f libhdr/libcfa_a-libdebug.$(OBJEXT) 510 -rm -f libhdr/libcfa_d_a-libdebug.$(OBJEXT) 577 -rm -f concurrency/*.$(OBJEXT) 578 -rm -f containers/*.$(OBJEXT) 579 -rm -f libhdr/*.$(OBJEXT) 511 580 512 581 distclean-compile: … … 514 583 515 584 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@ 585 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-exception.Po@am__quote@ 516 586 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@ 517 587 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-interpose.Po@am__quote@ … … 524 594 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@ 525 595 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@ 596 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-exception.Po@am__quote@ 526 597 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@ 527 598 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-interpose.Po@am__quote@ … … 850 921 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi` 851 922 923 libcfa_d_a-exception.obj: exception.c 924 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-exception.Tpo -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` 925 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-exception.Tpo $(DEPDIR)/libcfa_d_a-exception.Po 926 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exception.c' object='libcfa_d_a-exception.obj' libtool=no @AMDEPBACKSLASH@ 927 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 928 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` 929 852 930 concurrency/libcfa_d_a-alarm.o: concurrency/alarm.c 853 931 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo -c -o concurrency/libcfa_d_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c … … 1144 1222 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi` 1145 1223 1224 libcfa_a-exception.obj: exception.c 1225 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_a-exception.Tpo -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` 1226 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-exception.Tpo $(DEPDIR)/libcfa_a-exception.Po 1227 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exception.c' object='libcfa_a-exception.obj' libtool=no @AMDEPBACKSLASH@ 1228 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1229 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` 1230 1146 1231 concurrency/libcfa_a-alarm.o: concurrency/alarm.c 1147 1232 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-alarm.Tpo -c -o concurrency/libcfa_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c … … 1180 1265 install-nobase_cfa_includeHEADERS: $(nobase_cfa_include_HEADERS) 1181 1266 @$(NORMAL_INSTALL) 1182 test -z "$(cfa_includedir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)"1183 1267 @list='$(nobase_cfa_include_HEADERS)'; test -n "$(cfa_includedir)" || list=; \ 1268 if test -n "$$list"; then \ 1269 echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)'"; \ 1270 $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)" || exit 1; \ 1271 fi; \ 1184 1272 $(am__nobase_list) | while read dir files; do \ 1185 1273 xfiles=; for file in $$files; do \ … … 1188 1276 test -z "$$xfiles" || { \ 1189 1277 test "x$$dir" = x. || { \ 1190 echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \1278 echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \ 1191 1279 $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)/$$dir"; }; \ 1192 1280 echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(cfa_includedir)/$$dir'"; \ … … 1200 1288 dir='$(DESTDIR)$(cfa_includedir)'; $(am__uninstall_files_from_dir) 1201 1289 1202 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 1203 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 1204 unique=`for i in $$list; do \ 1205 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 1206 done | \ 1207 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 1208 END { if (nonempty) { for (i in files) print i; }; }'`; \ 1209 mkid -fID $$unique 1210 tags: TAGS 1211 1212 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 1213 $(TAGS_FILES) $(LISP) 1290 ID: $(am__tagged_files) 1291 $(am__define_uniq_tagged_files); mkid -fID $$unique 1292 tags: tags-am 1293 TAGS: tags 1294 1295 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 1214 1296 set x; \ 1215 1297 here=`pwd`; \ 1216 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 1217 unique=`for i in $$list; do \ 1218 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 1219 done | \ 1220 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 1221 END { if (nonempty) { for (i in files) print i; }; }'`; \ 1298 $(am__define_uniq_tagged_files); \ 1222 1299 shift; \ 1223 1300 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 1231 1308 fi; \ 1232 1309 fi 1233 ctags: CTAGS 1234 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 1235 $(TAGS_FILES) $(LISP) 1236 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 1237 unique=`for i in $$list; do \ 1238 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 1239 done | \ 1240 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 1241 END { if (nonempty) { for (i in files) print i; }; }'`; \ 1310 ctags: ctags-am 1311 1312 CTAGS: ctags 1313 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 1314 $(am__define_uniq_tagged_files); \ 1242 1315 test -z "$(CTAGS_ARGS)$$unique" \ 1243 1316 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 1248 1321 && $(am__cd) $(top_srcdir) \ 1249 1322 && gtags -i $(GTAGS_ARGS) "$$here" 1323 cscopelist: cscopelist-am 1324 1325 cscopelist-am: $(am__tagged_files) 1326 list='$(am__tagged_files)'; \ 1327 case "$(srcdir)" in \ 1328 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 1329 *) sdir=$(subdir)/$(srcdir) ;; \ 1330 esac; \ 1331 for i in $$list; do \ 1332 if test -f "$$i"; then \ 1333 echo "$(subdir)/$$i"; \ 1334 else \ 1335 echo "$$sdir/$$i"; \ 1336 fi; \ 1337 done >> $(top_builddir)/cscope.files 1250 1338 1251 1339 distclean-tags: … … 1399 1487 .MAKE: install-am install-strip 1400 1488 1401 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \1402 clean-libLIBRARIES c tags distclean distclean-compile\1403 distclean- generic distclean-tags distdir dvi dvi-am html\1404 html-am info info-am install install-am install-data\1405 install-data -am install-dvi install-dvi-am install-exec\1406 install-exec -am install-html install-html-am install-info\1407 install-info -am install-libLIBRARIES install-man \1489 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ 1490 clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \ 1491 distclean-compile distclean-generic distclean-tags distdir dvi \ 1492 dvi-am html html-am info info-am install install-am \ 1493 install-data install-data-am install-dvi install-dvi-am \ 1494 install-exec install-exec-am install-html install-html-am \ 1495 install-info install-info-am install-libLIBRARIES install-man \ 1408 1496 install-nobase_cfa_includeHEADERS install-pdf install-pdf-am \ 1409 1497 install-ps install-ps-am install-strip installcheck \ … … 1411 1499 maintainer-clean-generic maintainer-clean-local mostlyclean \ 1412 1500 mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ 1413 tags uninstall uninstall-am uninstall-libLIBRARIES \1501 tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \ 1414 1502 uninstall-nobase_cfa_includeHEADERS 1503 1504 .PRECIOUS: Makefile 1415 1505 1416 1506 -
TabularUnified src/libcfa/exception.c ¶
rb1e63ac5 r208e5be 37 37 // This macro should be the only thing that needs to change across machines. 38 38 // Used in the personality function, way down in termination. 39 // struct _Unwind_Context * -> _Unwind_Reason_Code(*)( )39 // struct _Unwind_Context * -> _Unwind_Reason_Code(*)(exception *) 40 40 #define MATCHER_FROM_CONTEXT(ptr_to_context) \ 41 (*(_Unwind_Reason_Code(**)( ))(_Unwind_GetCFA(ptr_to_context) + 8))41 (*(_Unwind_Reason_Code(**)(exception*))(_Unwind_GetCFA(ptr_to_context) + 8)) 42 42 43 43 44 44 // RESUMPTION ================================================================ 45 45 46 void __cfaehm__throw_resum e(exceptionexcept) {47 48 // DEBUG 49 printf("Throwing resumption exception %d\n", except);50 51 struct __ try_resume_node * original_head = shared_stack.current_resume;52 struct __ try_resume_node * current =46 void __cfaehm__throw_resumption(exception * except) { 47 48 // DEBUG 49 printf("Throwing resumption exception %d\n", *except); 50 51 struct __cfaehm__try_resume_node * original_head = shared_stack.current_resume; 52 struct __cfaehm__try_resume_node * current = 53 53 (original_head) ? original_head->next : shared_stack.top_resume; 54 54 55 55 for ( ; current ; current = current->next) { 56 56 shared_stack.current_resume = current; 57 if (current-> try_to_handle(except)) {57 if (current->handler(except)) { 58 58 shared_stack.current_resume = original_head; 59 59 return; … … 61 61 } 62 62 63 printf("Unhandled exception %d\n", except);63 printf("Unhandled exception %d\n", *except); 64 64 shared_stack.current_resume = original_head; 65 65 66 66 // Fall back to termination: 67 __cfaehm__throw_terminat e(except);67 __cfaehm__throw_termination(except); 68 68 // TODO: Default handler for resumption. 69 69 } … … 73 73 * after the node is built but before it is made the top node. 74 74 */ 75 void __ try_resume_setup(struct__try_resume_node * node,76 bool (*handler)(exceptionexcept)) {75 void __cfaehm__try_resume_setup(struct __cfaehm__try_resume_node * node, 76 int (*handler)(exception * except)) { 77 77 node->next = shared_stack.top_resume; 78 node-> try_to_handle= handler;78 node->handler = handler; 79 79 shared_stack.top_resume = node; 80 80 } 81 81 82 void __ try_resume_cleanup(struct__try_resume_node * node) {82 void __cfaehm__try_resume_cleanup(struct __cfaehm__try_resume_node * node) { 83 83 shared_stack.top_resume = node->next; 84 84 } … … 111 111 } 112 112 113 void __cfaehm__throw_terminat e( intval ) {113 void __cfaehm__throw_termination( exception * val ) { 114 114 // Store the current exception 115 shared_stack.current_exception = val;116 117 // DEBUG 118 printf("Throwing termination exception %d\n", val);115 shared_stack.current_exception = *val; 116 117 // DEBUG 118 printf("Throwing termination exception %d\n", *val); 119 119 120 120 // Call stdlibc to raise the exception … … 147 147 148 148 // Nesting this the other way would probably be faster. 149 void __cfaehm__rethrow_terminat e(void) {149 void __cfaehm__rethrow_termination(void) { 150 150 // DEBUG 151 151 printf("Rethrowing termination exception\n"); 152 152 153 __cfaehm__throw_terminat e(shared_stack.current_exception);153 __cfaehm__throw_termination(&shared_stack.current_exception); 154 154 } 155 155 … … 261 261 // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher; 262 262 263 _Unwind_Reason_Code (*matcher)( ) =263 _Unwind_Reason_Code (*matcher)(exception *) = 264 264 MATCHER_FROM_CONTEXT(context); 265 int index = matcher( shared_stack.current_exception);265 int index = matcher(&shared_stack.current_exception); 266 266 _Unwind_Reason_Code ret = (0 == index) 267 267 ? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND; … … 322 322 // for details 323 323 __attribute__((noinline)) 324 void __ try_terminate(void (*try_block)(),325 void (*catch_block)(int index, exception except),326 __attribute__((unused)) int (*match_block)(exception except)) {324 void __cfaehm__try_terminate(void (*try_block)(), 325 void (*catch_block)(int index, exception * except), 326 __attribute__((unused)) int (*match_block)(exception * except)) { 327 327 //! volatile int xy = 0; 328 328 //! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy); … … 364 364 // Exception handler 365 365 catch_block(shared_stack.current_handler_index, 366 shared_stack.current_exception);366 &shared_stack.current_exception); 367 367 } 368 368 … … 384 384 // Body uses language specific data and therefore could be modified arbitrarily 385 385 ".LLSDACSBCFA2:\n" // BODY start 386 " .uleb128 .TRYSTART-__ try_terminate\n" // Handled area start (relative to start of function)386 " .uleb128 .TRYSTART-__cfaehm__try_terminate\n" // Handled area start (relative to start of function) 387 387 " .uleb128 .TRYEND-.TRYSTART\n" // Handled area length 388 " .uleb128 .CATCH-__ try_terminate\n" // Hanlder landing pad adress (relative to start of function)388 " .uleb128 .CATCH-__cfaehm__try_terminate\n" // Hanlder landing pad adress (relative to start of function) 389 389 " .uleb128 1\n" // Action code, gcc seems to use always 0 390 390 ".LLSDACSECFA2:\n" // BODY end 391 391 " .text\n" // TABLE footer 392 " .size __ try_terminate, .-__try_terminate\n"392 " .size __cfaehm__try_terminate, .-__cfaehm__try_terminate\n" 393 393 " .ident \"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n" 394 394 // " .section .note.GNU-stack,\"x\",@progbits\n" -
TabularUnified src/libcfa/exception.h ¶
rb1e63ac5 r208e5be 38 38 // Data structure creates a list of resume handlers. 39 39 struct __cfaehm__try_resume_node { 40 __cfaehm__try_resume_node * next;40 struct __cfaehm__try_resume_node * next; 41 41 int (*handler)(exception * except); 42 42 }; 43 43 44 44 void __cfaehm__try_resume_setup( 45 __cfaehm__try_resume_node * node,45 struct __cfaehm__try_resume_node * node, 46 46 int (*handler)(exception * except)); 47 47 void __cfaehm__try_resume_cleanup( 48 __cfaehm__try_resume_node * node);48 struct __cfaehm__try_resume_node * node); 49 49 50 50 // Check for a standard way to call fake deconstructors. -
TabularUnified src/libcfa/fstream ¶
rb1e63ac5 r208e5be 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 15 18:11:09201713 // Update Count : 1 0412 // Last Modified On : Sat Jul 1 16:37:53 2017 13 // Update Count : 112 14 14 // 15 15 … … 24 24 _Bool sepDefault; 25 25 _Bool sepOnOff; 26 _Bool lastSepOn; 26 27 const char * sepCur; 27 28 char separator[separateSize]; … … 35 36 const char * sepGetCur( ofstream * ); 36 37 void sepSetCur( ofstream *, const char * ); 38 _Bool lastSepOn( ofstream * ); 37 39 38 40 // public -
TabularUnified src/libcfa/fstream.c ¶
rb1e63ac5 r208e5be 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 15 18:11:11201713 // Update Count : 2 3412 // Last Modified On : Sat Jul 1 16:37:54 2017 13 // Update Count : 242 14 14 // 15 15 … … 33 33 this->sepDefault = sepDefault; 34 34 this->sepOnOff = sepOnOff; 35 this->lastSepOn = false; 35 36 sepSet( this, separator ); 36 37 sepSetCur( this, sepGet( this ) ); … … 39 40 40 41 // private 41 _Bool sepPrt( ofstream * os ) { return os->sepOnOff; } 42 _Bool lastSepOn( ofstream * os ) { return os->lastSepOn; } 43 _Bool sepPrt( ofstream * os ) { os->lastSepOn = false; return os->sepOnOff; } 42 44 void sepReset( ofstream * os ) { os->sepOnOff = os->sepDefault; } 43 45 void sepReset( ofstream * os, _Bool reset ) { os->sepDefault = reset; os->sepOnOff = os->sepDefault; } … … 46 48 47 49 // public 48 void sepOn( ofstream * os ) { os-> sepOnOff = 1; }49 void sepOff( ofstream * os ) { os-> sepOnOff = 0; }50 void sepOn( ofstream * os ) { os->lastSepOn = true; os->sepOnOff = true; } 51 void sepOff( ofstream * os ) { os->lastSepOn = false; os->sepOnOff = 0; } 50 52 51 53 _Bool sepDisable( ofstream *os ) { 52 54 _Bool temp = os->sepDefault; 53 55 os->sepDefault = false; 56 os->lastSepOn = false; 54 57 sepReset( os ); 55 58 return temp; … … 92 95 exit( EXIT_FAILURE ); 93 96 } // if 94 ?{}( os, file, 1, 0, " ", ", " );97 ?{}( os, file, true, false, " ", ", " ); 95 98 } // open 96 99 … … 132 135 } // fmt 133 136 134 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, " ", ", " };137 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " }; 135 138 ofstream *sout = &soutFile; 136 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 1, 0, " ", ", " };139 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " }; 137 140 ofstream *serr = &serrFile; 138 141 -
TabularUnified src/libcfa/iostream ¶
rb1e63ac5 r208e5be 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 15 18:08:44201713 // Update Count : 1 0512 // Last Modified On : Sun Jul 2 08:42:56 2017 13 // Update Count : 110 14 14 // 15 15 … … 26 26 const char * sepGetCur( ostype * ); // get current separator string 27 27 void sepSetCur( ostype *, const char * ); // set current separator string 28 _Bool lastSepOn( ostype * ); // last manipulator is setOn (context sensitive) 28 29 // public 29 30 void sepOn( ostype * ); // turn separator state on … … 43 44 ostype * write( ostype *, const char *, unsigned long int ); 44 45 int fmt( ostype *, const char fmt[], ... ); 45 }; 46 }; // ostream 46 47 47 48 trait writeable( otype T ) { 48 49 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 49 }; 50 }; // writeable 50 51 51 52 // implement writable for intrinsic types … … 103 104 istype * ungetc( istype *, char ); 104 105 int fmt( istype *, const char fmt[], ... ); 105 }; 106 }; // istream 106 107 107 108 trait readable( otype T ) { 108 109 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T ); 109 }; 110 }; // readable 110 111 111 112 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * ); -
TabularUnified src/libcfa/iostream.c ¶
rb1e63ac5 r208e5be 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 8 18:24:23201713 // Update Count : 3 6912 // Last Modified On : Sun Jul 2 08:54:02 2017 13 // Update Count : 375 14 14 // 15 15 … … 201 201 forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } ) 202 202 ostype * ?|?( ostype * os, T arg, Params rest ) { 203 os | arg; // print first argument 203 204 sepSetCur( os, sepGetTuple( os ) ); // switch to tuple separator 204 os | arg; // print first argument205 205 os | rest; // print remaining arguments 206 206 sepSetCur( os, sepGet( os ) ); // switch to regular separator … … 217 217 forall( dtype ostype | ostream( ostype ) ) 218 218 ostype * endl( ostype * os ) { 219 if ( lastSepOn( os ) ) fmt( os, "%s", sepGetCur( os ) ); 219 220 os | '\n'; 220 221 flush( os ); -
TabularUnified src/main.cc ¶
rb1e63ac5 r208e5be 25 25 using namespace std; 26 26 27 #include "Parser/ parser.hh"27 #include "Parser/ParserTypes.h" 28 28 #include "Parser/TypedefTable.h" 29 29 #include "GenPoly/Lvalue.h" … … 39 39 #include "CodeTools/TrackLoc.h" 40 40 #include "ControlStruct/Mutate.h" 41 #include "ControlStruct/ExceptTranslate.h" 41 42 #include "SymTab/Validate.h" 42 43 #include "ResolvExpr/AlternativePrinter.h" … … 290 291 Tuples::expandUniqueExpr( translationUnit ); 291 292 293 OPTPRINT( "translateEHM" ); 294 ControlStruct::translateEHM( translationUnit ); 295 292 296 OPTPRINT( "convertSpecializations" ) // needs to happen before tuple types are expanded 293 297 GenPoly::convertSpecializations( translationUnit ); -
TabularUnified src/prelude/Makefile.am ¶
rb1e63ac5 r208e5be 23 23 noinst_DATA = ../libcfa/libcfa-prelude.c 24 24 25 CC = ${abs_top_srcdir}/src/driver/cfa 26 25 27 $(DEPDIR) : 26 28 mkdir $(DEPDIR) … … 45 47 46 48 # create forward declarations for cfa builtins 47 builtins.cf : builtins.c 48 ${AM_V_GEN} @BACKEND_CC@-E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po49 builtins.cf : builtins.c ${CC} 50 ${AM_V_GEN}${CC} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po 49 51 ${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po 50 52 -
TabularUnified src/prelude/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 20 19 21 20 VPATH = @srcdir@ 21 am__is_gnu_make = { \ 22 if test -z '$(MAKELEVEL)'; then \ 23 false; \ 24 elif test -n '$(MAKE_HOST)'; then \ 25 true; \ 26 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 27 true; \ 28 else \ 29 false; \ 30 fi; \ 31 } 32 am__make_running_with_option = \ 33 case $${target_option-} in \ 34 ?) ;; \ 35 *) echo "am__make_running_with_option: internal error: invalid" \ 36 "target option '$${target_option-}' specified" >&2; \ 37 exit 1;; \ 38 esac; \ 39 has_opt=no; \ 40 sane_makeflags=$$MAKEFLAGS; \ 41 if $(am__is_gnu_make); then \ 42 sane_makeflags=$$MFLAGS; \ 43 else \ 44 case $$MAKEFLAGS in \ 45 *\\[\ \ ]*) \ 46 bs=\\; \ 47 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 48 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 49 esac; \ 50 fi; \ 51 skip_next=no; \ 52 strip_trailopt () \ 53 { \ 54 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 55 }; \ 56 for flg in $$sane_makeflags; do \ 57 test $$skip_next = yes && { skip_next=no; continue; }; \ 58 case $$flg in \ 59 *=*|--*) continue;; \ 60 -*I) strip_trailopt 'I'; skip_next=yes;; \ 61 -*I?*) strip_trailopt 'I';; \ 62 -*O) strip_trailopt 'O'; skip_next=yes;; \ 63 -*O?*) strip_trailopt 'O';; \ 64 -*l) strip_trailopt 'l'; skip_next=yes;; \ 65 -*l?*) strip_trailopt 'l';; \ 66 -[dEDm]) skip_next=yes;; \ 67 -[JT]) skip_next=yes;; \ 68 esac; \ 69 case $$flg in \ 70 *$$target_option*) has_opt=yes; break;; \ 71 esac; \ 72 done; \ 73 test $$has_opt = yes 74 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 22 76 pkgdatadir = $(datadir)/@PACKAGE@ 23 77 pkgincludedir = $(includedir)/@PACKAGE@ … … 39 93 host_triplet = @host@ 40 94 subdir = src/prelude 41 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in42 95 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 43 96 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 44 97 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 45 98 $(ACLOCAL_M4) 99 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 46 100 mkinstalldirs = $(install_sh) -d 47 101 CONFIG_HEADER = $(top_builddir)/config.h 48 102 CONFIG_CLEAN_FILES = 49 103 CONFIG_CLEAN_VPATH_FILES = 104 AM_V_P = $(am__v_P_@AM_V@) 105 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 106 am__v_P_0 = false 107 am__v_P_1 = : 50 108 AM_V_GEN = $(am__v_GEN_@AM_V@) 51 109 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 52 am__v_GEN_0 = @echo " GEN " $@; 110 am__v_GEN_0 = @echo " GEN " $@; 111 am__v_GEN_1 = 53 112 AM_V_at = $(am__v_at_@AM_V@) 54 113 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 55 114 am__v_at_0 = @ 115 am__v_at_1 = 56 116 SOURCES = 57 117 DIST_SOURCES = 118 am__can_run_installinfo = \ 119 case $$AM_UPDATE_INFO_DIR in \ 120 n|no|NO) false;; \ 121 *) (install-info --version) >/dev/null 2>&1;; \ 122 esac 58 123 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; 59 124 am__vpath_adj = case $$p in \ … … 85 150 am__installdirs = "$(DESTDIR)$(cfalibdir)" 86 151 DATA = $(cfalib_DATA) $(noinst_DATA) 152 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 153 am__DIST_COMMON = $(srcdir)/Makefile.in 87 154 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 88 155 ACLOCAL = @ACLOCAL@ … … 95 162 AWK = @AWK@ 96 163 BACKEND_CC = @BACKEND_CC@ 97 CC = @CC@164 CC = ${abs_top_srcdir}/src/driver/cfa 98 165 CCAS = @CCAS@ 99 166 CCASDEPMODE = @CCASDEPMODE@ … … 197 264 program_transform_name = @program_transform_name@ 198 265 psdir = @psdir@ 266 runstatedir = @runstatedir@ 199 267 sbindir = @sbindir@ 200 268 sharedstatedir = @sharedstatedir@ … … 226 294 esac; \ 227 295 done; \ 228 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/prelude/Makefile'; \296 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/prelude/Makefile'; \ 229 297 $(am__cd) $(top_srcdir) && \ 230 $(AUTOMAKE) --foreign src/prelude/Makefile 231 .PRECIOUS: Makefile 298 $(AUTOMAKE) --gnu src/prelude/Makefile 232 299 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 233 300 @case '$?' in \ … … 249 316 install-cfalibDATA: $(cfalib_DATA) 250 317 @$(NORMAL_INSTALL) 251 test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"252 318 @list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \ 319 if test -n "$$list"; then \ 320 echo " $(MKDIR_P) '$(DESTDIR)$(cfalibdir)'"; \ 321 $(MKDIR_P) "$(DESTDIR)$(cfalibdir)" || exit 1; \ 322 fi; \ 253 323 for p in $$list; do \ 254 324 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ … … 265 335 files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ 266 336 dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir) 267 tags : TAGS268 TAGS: 269 270 ctags: CTAGS 271 CTAGS:337 tags TAGS: 338 339 ctags CTAGS: 340 341 cscope cscopelist: 272 342 273 343 … … 409 479 .MAKE: install-am install-strip 410 480 411 .PHONY: all all-am check check-am clean clean-generic distclean\412 distclean-generic distdir dvi dvi-am html html-am info info-am\413 install install-am install-cfalibDATA install-data\414 install-data -am install-dvi install-dvi-am install-exec\415 install-exec -am install-html install-html-am install-info\416 install-info -am install-man install-pdf install-pdf-am\417 install-p s install-ps-am install-strip installcheck\418 installcheck -am installdirs maintainer-clean \481 .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ 482 ctags-am distclean distclean-generic distdir dvi dvi-am html \ 483 html-am info info-am install install-am install-cfalibDATA \ 484 install-data install-data-am install-dvi install-dvi-am \ 485 install-exec install-exec-am install-html install-html-am \ 486 install-info install-info-am install-man install-pdf \ 487 install-pdf-am install-ps install-ps-am install-strip \ 488 installcheck installcheck-am installdirs maintainer-clean \ 419 489 maintainer-clean-generic maintainer-clean-local mostlyclean \ 420 mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ 421 uninstall-cfalibDATA 490 mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ 491 uninstall-am uninstall-cfalibDATA 492 493 .PRECIOUS: Makefile 422 494 423 495 … … 444 516 445 517 # create forward declarations for cfa builtins 446 builtins.cf : builtins.c 447 ${AM_V_GEN} @BACKEND_CC@-E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po518 builtins.cf : builtins.c ${CC} 519 ${AM_V_GEN}${CC} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po 448 520 ${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po 449 521 -
TabularUnified src/tests/.expect/io.txt ¶
rb1e63ac5 r208e5be 4 4 123 5 5 6 opening delimiters 6 7 x (1 x [2 x {3 x =4 x $5 x £6 x ¥7 x ¡8 x ¿9 x «10 7 1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x 8 9 closing delimiters 10 1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x 11 12 opening/closing delimiters 8 13 x`1`x'2'x"3"x:4:x 5 x 6 x 9 14 7 … … 14 19 x 15 20 10 16 x 21 x 22 23 override opening/closing delimiters 17 24 x ( 1 ) x 2 , x 3 :x: 4 25 26 input bacis types 27 28 output basic types 18 29 A 19 30 1 2 3 4 5 6 7 8 … … 21 32 1.1+2.3i 1.1-2.3i 1.1-2.3i 22 33 34 tuples 35 1, 2, 3 3, 4, 5 36 37 toggle separator 23 38 1.11.21.3 24 39 1.1+2.3i1.1-2.3i1.1-2.3i 25 abcxyz 26 abcxyz 40 abcxyz 41 abcxyz 27 42 43 change separator 44 from " "to " , $" 28 45 1.1, $1.2, $1.3 29 46 1.1+2.3i, $1.1-2.3i, $1.1-2.3i 30 abc, $xyz 47 abc, $xyz, $ 48 1, 2, 3, $3, 4, 5 31 49 32 1, 2, 3, 4 33 1, $2, $3 ", $" 34 1 2 3 " " 50 from ", $"to " " 51 1.1 1.2 1.3 52 1.1+2.3i 1.1-2.3i 1.1-2.3i 53 abc xyz 54 1, 2, 3 3, 4, 5 55 56 1 2 3 57 12 3 35 58 1 2 3 36 12 3 59 1 2 3 60 1 2 3 61 37 62 123 38 63 1 23 39 64 1 2 3 40 1 2 3 4 " " 41 1, 2, 3, 4 ", " 42 1, 2, 3, 4 65 123 66 1 2 3 67 123 68 1 2 3 69 70 1 2 3 3 4 5 " " 71 1, 2, 3 3, 4, 5 ", " 72 1, 2, 3 3, 4, 5 73 43 74 3, 4, a, 7.2 44 75 3, 4, a, 7.2 45 76 3 4 a 7.2 46 77 3 4 a 7.234a7.23 4 a 7.2 47 3-4-a-7.2^3^4 -3-4-a-7.278 3-4-a-7.2^3^4^3-4-a-7.2 -
TabularUnified src/tests/Makefile.am ¶
rb1e63ac5 r208e5be 32 32 BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ ${EXTRA_FLAGS} 33 33 TEST_FLAGS = $(if $(test), 2> .err/${@}.log, ) 34 CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}34 AM_CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS} 35 35 CC = @CFA_BINDIR@/@CFA_NAME@ 36 36 … … 39 39 40 40 fstream_test_SOURCES = fstream_test.c 41 fstream_test_CFLAGS = $(if $(test), 2>> .err/fstream_test.log, ) ${BUILD_FLAGS} 42 41 43 vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c 44 vector_test_CFLAGS = $(if $(test), 2>> .err/vector_test.log, ) ${BUILD_FLAGS} 45 42 46 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c 47 avl_test_CFLAGS = $(if $(test), 2>> .err/avl_test.log, ) ${BUILD_FLAGS} 43 48 44 49 all-local : … … 62 67 63 68 % : %.c @CFA_BINDIR@/@CFA_NAME@ 64 ${CC} ${ CFLAGS} ${<} -o ${@}69 ${CC} ${AM_CFLAGS} ${CFLAGS} ${<} -o ${@} 65 70 66 71 dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 67 ${CC} ${ CFLAGS} -DERR1 ${<} -o ${@}72 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@} 68 73 69 74 dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 70 ${CC} ${ CFLAGS} -DERR2 ${<} -o ${@}75 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR2 ${<} -o ${@} 71 76 72 77 declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@ 73 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}78 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 74 79 75 80 gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@ 76 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}81 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 77 82 78 83 extension : extension.c @CFA_BINDIR@/@CFA_NAME@ 79 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}84 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 80 85 81 86 attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@ 82 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}87 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 83 88 84 89 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@ 85 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}90 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 86 91 87 92 gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@ 88 ${CC} ${ CFLAGS} -lgmp ${<} -o ${@}93 ${CC} ${AM_CFLAGS} ${CFLAGS} -lgmp ${<} -o ${@} 89 94 90 95 memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@ 91 ${CC} ${ CFLAGS} -DERR1 ${<} -o ${@}96 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@} 92 97 93 98 completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@ 94 ${CC} ${ CFLAGS} -DERR1 ${<} -o ${@}99 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@} -
TabularUnified src/tests/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 19 18 ############################################################################### 20 19 VPATH = @srcdir@ 20 am__is_gnu_make = { \ 21 if test -z '$(MAKELEVEL)'; then \ 22 false; \ 23 elif test -n '$(MAKE_HOST)'; then \ 24 true; \ 25 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 26 true; \ 27 else \ 28 false; \ 29 fi; \ 30 } 31 am__make_running_with_option = \ 32 case $${target_option-} in \ 33 ?) ;; \ 34 *) echo "am__make_running_with_option: internal error: invalid" \ 35 "target option '$${target_option-}' specified" >&2; \ 36 exit 1;; \ 37 esac; \ 38 has_opt=no; \ 39 sane_makeflags=$$MAKEFLAGS; \ 40 if $(am__is_gnu_make); then \ 41 sane_makeflags=$$MFLAGS; \ 42 else \ 43 case $$MAKEFLAGS in \ 44 *\\[\ \ ]*) \ 45 bs=\\; \ 46 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 47 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 48 esac; \ 49 fi; \ 50 skip_next=no; \ 51 strip_trailopt () \ 52 { \ 53 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 54 }; \ 55 for flg in $$sane_makeflags; do \ 56 test $$skip_next = yes && { skip_next=no; continue; }; \ 57 case $$flg in \ 58 *=*|--*) continue;; \ 59 -*I) strip_trailopt 'I'; skip_next=yes;; \ 60 -*I?*) strip_trailopt 'I';; \ 61 -*O) strip_trailopt 'O'; skip_next=yes;; \ 62 -*O?*) strip_trailopt 'O';; \ 63 -*l) strip_trailopt 'l'; skip_next=yes;; \ 64 -*l?*) strip_trailopt 'l';; \ 65 -[dEDm]) skip_next=yes;; \ 66 -[JT]) skip_next=yes;; \ 67 esac; \ 68 case $$flg in \ 69 *$$target_option*) has_opt=yes; break;; \ 70 esac; \ 71 done; \ 72 test $$has_opt = yes 73 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 21 75 pkgdatadir = $(datadir)/@PACKAGE@ 22 76 pkgincludedir = $(includedir)/@PACKAGE@ … … 41 95 avl_test$(EXEEXT) 42 96 subdir = src/tests 43 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in44 97 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 45 98 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 46 99 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 47 100 $(ACLOCAL_M4) 101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 48 102 mkinstalldirs = $(install_sh) -d 49 103 CONFIG_HEADER = $(top_builddir)/config.h 50 104 CONFIG_CLEAN_FILES = 51 105 CONFIG_CLEAN_VPATH_FILES = 52 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \ 53 avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \ 54 avl-private.$(OBJEXT) 106 am__dirstamp = $(am__leading_dot)dirstamp 107 am_avl_test_OBJECTS = avltree/avl_test-avl_test.$(OBJEXT) \ 108 avltree/avl_test-avl0.$(OBJEXT) \ 109 avltree/avl_test-avl1.$(OBJEXT) \ 110 avltree/avl_test-avl2.$(OBJEXT) \ 111 avltree/avl_test-avl3.$(OBJEXT) \ 112 avltree/avl_test-avl4.$(OBJEXT) \ 113 avltree/avl_test-avl-private.$(OBJEXT) 55 114 avl_test_OBJECTS = $(am_avl_test_OBJECTS) 56 115 avl_test_LDADD = $(LDADD) 57 am_fstream_test_OBJECTS = fstream_test.$(OBJEXT) 116 avl_test_LINK = $(CCLD) $(avl_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ 117 $(LDFLAGS) -o $@ 118 am_fstream_test_OBJECTS = fstream_test-fstream_test.$(OBJEXT) 58 119 fstream_test_OBJECTS = $(am_fstream_test_OBJECTS) 59 120 fstream_test_LDADD = $(LDADD) 60 am_vector_test_OBJECTS = vector_int.$(OBJEXT) array.$(OBJEXT) \ 61 vector_test.$(OBJEXT) 121 fstream_test_LINK = $(CCLD) $(fstream_test_CFLAGS) $(CFLAGS) \ 122 $(AM_LDFLAGS) $(LDFLAGS) -o $@ 123 am_vector_test_OBJECTS = vector/vector_test-vector_int.$(OBJEXT) \ 124 vector/vector_test-array.$(OBJEXT) \ 125 vector/vector_test-vector_test.$(OBJEXT) 62 126 vector_test_OBJECTS = $(am_vector_test_OBJECTS) 63 127 vector_test_LDADD = $(LDADD) 128 vector_test_LINK = $(CCLD) $(vector_test_CFLAGS) $(CFLAGS) \ 129 $(AM_LDFLAGS) $(LDFLAGS) -o $@ 130 AM_V_P = $(am__v_P_@AM_V@) 131 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 132 am__v_P_0 = false 133 am__v_P_1 = : 134 AM_V_GEN = $(am__v_GEN_@AM_V@) 135 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 136 am__v_GEN_0 = @echo " GEN " $@; 137 am__v_GEN_1 = 138 AM_V_at = $(am__v_at_@AM_V@) 139 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 140 am__v_at_0 = @ 141 am__v_at_1 = 64 142 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 65 143 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 69 147 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 70 148 am__v_lt_0 = --silent 149 am__v_lt_1 = 71 150 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 72 151 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 73 152 AM_V_CC = $(am__v_CC_@AM_V@) 74 153 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 75 am__v_CC_0 = @echo " CC " $@; 76 AM_V_at = $(am__v_at_@AM_V@) 77 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 78 am__v_at_0 = @ 154 am__v_CC_0 = @echo " CC " $@; 155 am__v_CC_1 = 79 156 CCLD = $(CC) 80 157 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 81 158 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 82 159 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 83 am__v_CCLD_0 = @echo " CCLD " $@; 84 AM_V_GEN = $(am__v_GEN_@AM_V@) 85 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 86 am__v_GEN_0 = @echo " GEN " $@; 160 am__v_CCLD_0 = @echo " CCLD " $@; 161 am__v_CCLD_1 = 87 162 SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 88 163 $(vector_test_SOURCES) 89 164 DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 90 165 $(vector_test_SOURCES) 166 am__can_run_installinfo = \ 167 case $$AM_UPDATE_INFO_DIR in \ 168 n|no|NO) false;; \ 169 *) (install-info --version) >/dev/null 2>&1;; \ 170 esac 171 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 172 # Read a list of newline-separated strings from the standard input, 173 # and print each of them once, without duplicates. Input order is 174 # *not* preserved. 175 am__uniquify_input = $(AWK) '\ 176 BEGIN { nonempty = 0; } \ 177 { items[$$0] = 1; nonempty = 1; } \ 178 END { if (nonempty) { for (i in items) print i; }; } \ 179 ' 180 # Make sure the list of sources is unique. This is necessary because, 181 # e.g., the same source file might be shared among _SOURCES variables 182 # for different programs/libraries. 183 am__define_uniq_tagged_files = \ 184 list='$(am__tagged_files)'; \ 185 unique=`for i in $$list; do \ 186 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 187 done | $(am__uniquify_input)` 91 188 ETAGS = etags 92 189 CTAGS = ctags 190 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp 93 191 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 94 192 ACLOCAL = @ACLOCAL@ … … 113 211 CFA_NAME = @CFA_NAME@ 114 212 CFA_PREFIX = @CFA_PREFIX@ 115 CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}213 CFLAGS = @CFLAGS@ 116 214 CPP = @CPP@ 117 215 CPPFLAGS = @CPPFLAGS@ … … 203 301 program_transform_name = @program_transform_name@ 204 302 psdir = @psdir@ 303 runstatedir = @runstatedir@ 205 304 sbindir = @sbindir@ 206 305 sharedstatedir = @sharedstatedir@ … … 224 323 BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ ${EXTRA_FLAGS} 225 324 TEST_FLAGS = $(if $(test), 2> .err/${@}.log, ) 325 AM_CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS} 226 326 fstream_test_SOURCES = fstream_test.c 327 fstream_test_CFLAGS = $(if $(test), 2>> .err/fstream_test.log, ) ${BUILD_FLAGS} 227 328 vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c 329 vector_test_CFLAGS = $(if $(test), 2>> .err/vector_test.log, ) ${BUILD_FLAGS} 228 330 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c 331 avl_test_CFLAGS = $(if $(test), 2>> .err/avl_test.log, ) ${BUILD_FLAGS} 229 332 all: all-am 230 333 … … 240 343 esac; \ 241 344 done; \ 242 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/tests/Makefile'; \345 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tests/Makefile'; \ 243 346 $(am__cd) $(top_srcdir) && \ 244 $(AUTOMAKE) --foreign src/tests/Makefile 245 .PRECIOUS: Makefile 347 $(AUTOMAKE) --gnu src/tests/Makefile 246 348 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 247 349 @case '$?' in \ … … 261 363 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 262 364 $(am__aclocal_m4_deps): 365 avltree/$(am__dirstamp): 366 @$(MKDIR_P) avltree 367 @: > avltree/$(am__dirstamp) 368 avltree/$(DEPDIR)/$(am__dirstamp): 369 @$(MKDIR_P) avltree/$(DEPDIR) 370 @: > avltree/$(DEPDIR)/$(am__dirstamp) 371 avltree/avl_test-avl_test.$(OBJEXT): avltree/$(am__dirstamp) \ 372 avltree/$(DEPDIR)/$(am__dirstamp) 373 avltree/avl_test-avl0.$(OBJEXT): avltree/$(am__dirstamp) \ 374 avltree/$(DEPDIR)/$(am__dirstamp) 375 avltree/avl_test-avl1.$(OBJEXT): avltree/$(am__dirstamp) \ 376 avltree/$(DEPDIR)/$(am__dirstamp) 377 avltree/avl_test-avl2.$(OBJEXT): avltree/$(am__dirstamp) \ 378 avltree/$(DEPDIR)/$(am__dirstamp) 379 avltree/avl_test-avl3.$(OBJEXT): avltree/$(am__dirstamp) \ 380 avltree/$(DEPDIR)/$(am__dirstamp) 381 avltree/avl_test-avl4.$(OBJEXT): avltree/$(am__dirstamp) \ 382 avltree/$(DEPDIR)/$(am__dirstamp) 383 avltree/avl_test-avl-private.$(OBJEXT): avltree/$(am__dirstamp) \ 384 avltree/$(DEPDIR)/$(am__dirstamp) 385 263 386 avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 264 387 @rm -f avl_test$(EXEEXT) 265 $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS) 388 $(AM_V_CCLD)$(avl_test_LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS) 389 266 390 fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 267 391 @rm -f fstream_test$(EXEEXT) 268 $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS) 392 $(AM_V_CCLD)$(fstream_test_LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS) 393 vector/$(am__dirstamp): 394 @$(MKDIR_P) vector 395 @: > vector/$(am__dirstamp) 396 vector/$(DEPDIR)/$(am__dirstamp): 397 @$(MKDIR_P) vector/$(DEPDIR) 398 @: > vector/$(DEPDIR)/$(am__dirstamp) 399 vector/vector_test-vector_int.$(OBJEXT): vector/$(am__dirstamp) \ 400 vector/$(DEPDIR)/$(am__dirstamp) 401 vector/vector_test-array.$(OBJEXT): vector/$(am__dirstamp) \ 402 vector/$(DEPDIR)/$(am__dirstamp) 403 vector/vector_test-vector_test.$(OBJEXT): vector/$(am__dirstamp) \ 404 vector/$(DEPDIR)/$(am__dirstamp) 405 269 406 vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 270 407 @rm -f vector_test$(EXEEXT) 271 $(AM_V_CCLD)$( LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)408 $(AM_V_CCLD)$(vector_test_LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS) 272 409 273 410 mostlyclean-compile: 274 411 -rm -f *.$(OBJEXT) 412 -rm -f avltree/*.$(OBJEXT) 413 -rm -f vector/*.$(OBJEXT) 275 414 276 415 distclean-compile: 277 416 -rm -f *.tab.c 278 417 279 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ array.Po@am__quote@280 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl-private.Po@am__quote@281 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl0.Po@am__quote@282 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl1.Po@am__quote@283 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl2.Po@am__quote@284 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl3.Po@am__quote@285 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl4.Po@am__quote@286 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/avl_test.Po@am__quote@287 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/fstream_test.Po@am__quote@288 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/vector_int.Po@am__quote@289 @AMDEP_TRUE@@am__include@ @am__quote@ ./$(DEPDIR)/vector_test.Po@am__quote@418 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test-fstream_test.Po@am__quote@ 419 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl-private.Po@am__quote@ 420 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl0.Po@am__quote@ 421 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl1.Po@am__quote@ 422 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl2.Po@am__quote@ 423 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl3.Po@am__quote@ 424 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl4.Po@am__quote@ 425 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl_test.Po@am__quote@ 426 @AMDEP_TRUE@@am__include@ @am__quote@vector/$(DEPDIR)/vector_test-array.Po@am__quote@ 427 @AMDEP_TRUE@@am__include@ @am__quote@vector/$(DEPDIR)/vector_test-vector_int.Po@am__quote@ 428 @AMDEP_TRUE@@am__include@ @am__quote@vector/$(DEPDIR)/vector_test-vector_test.Po@am__quote@ 290 429 291 430 .c.o: 292 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< 293 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 431 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 432 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 433 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 294 434 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 295 435 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 296 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<436 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< 297 437 298 438 .c.obj: 299 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` 300 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 439 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ 440 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ 441 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 301 442 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 302 443 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 303 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` 304 305 avl_test.o: avltree/avl_test.c 306 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.o -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c 307 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po 308 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@ 309 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 310 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c 311 312 avl_test.obj: avltree/avl_test.c 313 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.obj -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi` 314 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po 315 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@ 316 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 317 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi` 318 319 avl0.o: avltree/avl0.c 320 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.o -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c 321 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po 322 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@ 323 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 324 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c 325 326 avl0.obj: avltree/avl0.c 327 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.obj -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi` 328 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po 329 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@ 330 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 331 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi` 332 333 avl1.o: avltree/avl1.c 334 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.o -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c 335 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po 336 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@ 337 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 338 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c 339 340 avl1.obj: avltree/avl1.c 341 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.obj -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi` 342 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po 343 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@ 344 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 345 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi` 346 347 avl2.o: avltree/avl2.c 348 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.o -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c 349 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po 350 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@ 351 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 352 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c 353 354 avl2.obj: avltree/avl2.c 355 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.obj -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi` 356 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po 357 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@ 358 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 359 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi` 360 361 avl3.o: avltree/avl3.c 362 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.o -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c 363 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po 364 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@ 365 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 366 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c 367 368 avl3.obj: avltree/avl3.c 369 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.obj -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi` 370 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po 371 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@ 372 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 373 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi` 374 375 avl4.o: avltree/avl4.c 376 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.o -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c 377 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po 378 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@ 379 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 380 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c 381 382 avl4.obj: avltree/avl4.c 383 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.obj -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi` 384 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po 385 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@ 386 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 387 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi` 388 389 avl-private.o: avltree/avl-private.c 390 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.o -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c 391 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po 392 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@ 393 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 394 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c 395 396 avl-private.obj: avltree/avl-private.c 397 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.obj -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi` 398 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po 399 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@ 400 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 401 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi` 402 403 vector_int.o: vector/vector_int.c 404 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_int.o -MD -MP -MF $(DEPDIR)/vector_int.Tpo -c -o vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c 405 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vector_int.Tpo $(DEPDIR)/vector_int.Po 406 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_int.c' object='vector_int.o' libtool=no @AMDEPBACKSLASH@ 407 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 408 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c 409 410 vector_int.obj: vector/vector_int.c 411 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_int.obj -MD -MP -MF $(DEPDIR)/vector_int.Tpo -c -o vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi` 412 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vector_int.Tpo $(DEPDIR)/vector_int.Po 413 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_int.c' object='vector_int.obj' libtool=no @AMDEPBACKSLASH@ 414 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 415 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi` 416 417 array.o: vector/array.c 418 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT array.o -MD -MP -MF $(DEPDIR)/array.Tpo -c -o array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c 419 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/array.Tpo $(DEPDIR)/array.Po 420 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/array.c' object='array.o' libtool=no @AMDEPBACKSLASH@ 421 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 422 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c 423 424 array.obj: vector/array.c 425 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT array.obj -MD -MP -MF $(DEPDIR)/array.Tpo -c -o array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi` 426 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/array.Tpo $(DEPDIR)/array.Po 427 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/array.c' object='array.obj' libtool=no @AMDEPBACKSLASH@ 428 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 429 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi` 430 431 vector_test.o: vector/vector_test.c 432 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_test.o -MD -MP -MF $(DEPDIR)/vector_test.Tpo -c -o vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c 433 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vector_test.Tpo $(DEPDIR)/vector_test.Po 434 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_test.c' object='vector_test.o' libtool=no @AMDEPBACKSLASH@ 435 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 436 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c 437 438 vector_test.obj: vector/vector_test.c 439 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_test.obj -MD -MP -MF $(DEPDIR)/vector_test.Tpo -c -o vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi` 440 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vector_test.Tpo $(DEPDIR)/vector_test.Po 441 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_test.c' object='vector_test.obj' libtool=no @AMDEPBACKSLASH@ 442 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 443 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi` 444 445 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 446 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 447 unique=`for i in $$list; do \ 448 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 449 done | \ 450 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 451 END { if (nonempty) { for (i in files) print i; }; }'`; \ 452 mkid -fID $$unique 453 tags: TAGS 454 455 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 456 $(TAGS_FILES) $(LISP) 444 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 445 446 avltree/avl_test-avl_test.o: avltree/avl_test.c 447 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl_test.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl_test.Tpo -c -o avltree/avl_test-avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c 448 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl_test.Tpo avltree/$(DEPDIR)/avl_test-avl_test.Po 449 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl_test.c' object='avltree/avl_test-avl_test.o' libtool=no @AMDEPBACKSLASH@ 450 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 451 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c 452 453 avltree/avl_test-avl_test.obj: avltree/avl_test.c 454 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl_test.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl_test.Tpo -c -o avltree/avl_test-avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi` 455 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl_test.Tpo avltree/$(DEPDIR)/avl_test-avl_test.Po 456 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl_test.c' object='avltree/avl_test-avl_test.obj' libtool=no @AMDEPBACKSLASH@ 457 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 458 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi` 459 460 avltree/avl_test-avl0.o: avltree/avl0.c 461 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl0.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl0.Tpo -c -o avltree/avl_test-avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c 462 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl0.Tpo avltree/$(DEPDIR)/avl_test-avl0.Po 463 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl0.c' object='avltree/avl_test-avl0.o' libtool=no @AMDEPBACKSLASH@ 464 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 465 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c 466 467 avltree/avl_test-avl0.obj: avltree/avl0.c 468 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl0.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl0.Tpo -c -o avltree/avl_test-avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi` 469 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl0.Tpo avltree/$(DEPDIR)/avl_test-avl0.Po 470 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl0.c' object='avltree/avl_test-avl0.obj' libtool=no @AMDEPBACKSLASH@ 471 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 472 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi` 473 474 avltree/avl_test-avl1.o: avltree/avl1.c 475 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl1.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl1.Tpo -c -o avltree/avl_test-avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c 476 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl1.Tpo avltree/$(DEPDIR)/avl_test-avl1.Po 477 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl1.c' object='avltree/avl_test-avl1.o' libtool=no @AMDEPBACKSLASH@ 478 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 479 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c 480 481 avltree/avl_test-avl1.obj: avltree/avl1.c 482 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl1.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl1.Tpo -c -o avltree/avl_test-avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi` 483 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl1.Tpo avltree/$(DEPDIR)/avl_test-avl1.Po 484 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl1.c' object='avltree/avl_test-avl1.obj' libtool=no @AMDEPBACKSLASH@ 485 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 486 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi` 487 488 avltree/avl_test-avl2.o: avltree/avl2.c 489 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl2.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl2.Tpo -c -o avltree/avl_test-avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c 490 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl2.Tpo avltree/$(DEPDIR)/avl_test-avl2.Po 491 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl2.c' object='avltree/avl_test-avl2.o' libtool=no @AMDEPBACKSLASH@ 492 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 493 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c 494 495 avltree/avl_test-avl2.obj: avltree/avl2.c 496 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl2.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl2.Tpo -c -o avltree/avl_test-avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi` 497 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl2.Tpo avltree/$(DEPDIR)/avl_test-avl2.Po 498 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl2.c' object='avltree/avl_test-avl2.obj' libtool=no @AMDEPBACKSLASH@ 499 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 500 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi` 501 502 avltree/avl_test-avl3.o: avltree/avl3.c 503 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl3.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl3.Tpo -c -o avltree/avl_test-avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c 504 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl3.Tpo avltree/$(DEPDIR)/avl_test-avl3.Po 505 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl3.c' object='avltree/avl_test-avl3.o' libtool=no @AMDEPBACKSLASH@ 506 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 507 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c 508 509 avltree/avl_test-avl3.obj: avltree/avl3.c 510 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl3.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl3.Tpo -c -o avltree/avl_test-avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi` 511 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl3.Tpo avltree/$(DEPDIR)/avl_test-avl3.Po 512 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl3.c' object='avltree/avl_test-avl3.obj' libtool=no @AMDEPBACKSLASH@ 513 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 514 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi` 515 516 avltree/avl_test-avl4.o: avltree/avl4.c 517 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl4.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl4.Tpo -c -o avltree/avl_test-avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c 518 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl4.Tpo avltree/$(DEPDIR)/avl_test-avl4.Po 519 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl4.c' object='avltree/avl_test-avl4.o' libtool=no @AMDEPBACKSLASH@ 520 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 521 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c 522 523 avltree/avl_test-avl4.obj: avltree/avl4.c 524 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl4.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl4.Tpo -c -o avltree/avl_test-avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi` 525 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl4.Tpo avltree/$(DEPDIR)/avl_test-avl4.Po 526 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl4.c' object='avltree/avl_test-avl4.obj' libtool=no @AMDEPBACKSLASH@ 527 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 528 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi` 529 530 avltree/avl_test-avl-private.o: avltree/avl-private.c 531 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl-private.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl-private.Tpo -c -o avltree/avl_test-avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c 532 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl-private.Tpo avltree/$(DEPDIR)/avl_test-avl-private.Po 533 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl-private.c' object='avltree/avl_test-avl-private.o' libtool=no @AMDEPBACKSLASH@ 534 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 535 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c 536 537 avltree/avl_test-avl-private.obj: avltree/avl-private.c 538 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl-private.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl-private.Tpo -c -o avltree/avl_test-avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi` 539 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl-private.Tpo avltree/$(DEPDIR)/avl_test-avl-private.Po 540 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avltree/avl-private.c' object='avltree/avl_test-avl-private.obj' libtool=no @AMDEPBACKSLASH@ 541 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 542 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi` 543 544 fstream_test-fstream_test.o: fstream_test.c 545 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -MT fstream_test-fstream_test.o -MD -MP -MF $(DEPDIR)/fstream_test-fstream_test.Tpo -c -o fstream_test-fstream_test.o `test -f 'fstream_test.c' || echo '$(srcdir)/'`fstream_test.c 546 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstream_test-fstream_test.Tpo $(DEPDIR)/fstream_test-fstream_test.Po 547 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream_test.c' object='fstream_test-fstream_test.o' libtool=no @AMDEPBACKSLASH@ 548 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 549 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -c -o fstream_test-fstream_test.o `test -f 'fstream_test.c' || echo '$(srcdir)/'`fstream_test.c 550 551 fstream_test-fstream_test.obj: fstream_test.c 552 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -MT fstream_test-fstream_test.obj -MD -MP -MF $(DEPDIR)/fstream_test-fstream_test.Tpo -c -o fstream_test-fstream_test.obj `if test -f 'fstream_test.c'; then $(CYGPATH_W) 'fstream_test.c'; else $(CYGPATH_W) '$(srcdir)/fstream_test.c'; fi` 553 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstream_test-fstream_test.Tpo $(DEPDIR)/fstream_test-fstream_test.Po 554 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream_test.c' object='fstream_test-fstream_test.obj' libtool=no @AMDEPBACKSLASH@ 555 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 556 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -c -o fstream_test-fstream_test.obj `if test -f 'fstream_test.c'; then $(CYGPATH_W) 'fstream_test.c'; else $(CYGPATH_W) '$(srcdir)/fstream_test.c'; fi` 557 558 vector/vector_test-vector_int.o: vector/vector_int.c 559 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_int.o -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_int.Tpo -c -o vector/vector_test-vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c 560 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_int.Tpo vector/$(DEPDIR)/vector_test-vector_int.Po 561 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_int.c' object='vector/vector_test-vector_int.o' libtool=no @AMDEPBACKSLASH@ 562 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 563 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c 564 565 vector/vector_test-vector_int.obj: vector/vector_int.c 566 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_int.obj -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_int.Tpo -c -o vector/vector_test-vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi` 567 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_int.Tpo vector/$(DEPDIR)/vector_test-vector_int.Po 568 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_int.c' object='vector/vector_test-vector_int.obj' libtool=no @AMDEPBACKSLASH@ 569 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 570 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi` 571 572 vector/vector_test-array.o: vector/array.c 573 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-array.o -MD -MP -MF vector/$(DEPDIR)/vector_test-array.Tpo -c -o vector/vector_test-array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c 574 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-array.Tpo vector/$(DEPDIR)/vector_test-array.Po 575 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/array.c' object='vector/vector_test-array.o' libtool=no @AMDEPBACKSLASH@ 576 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 577 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c 578 579 vector/vector_test-array.obj: vector/array.c 580 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-array.obj -MD -MP -MF vector/$(DEPDIR)/vector_test-array.Tpo -c -o vector/vector_test-array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi` 581 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-array.Tpo vector/$(DEPDIR)/vector_test-array.Po 582 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/array.c' object='vector/vector_test-array.obj' libtool=no @AMDEPBACKSLASH@ 583 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 584 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi` 585 586 vector/vector_test-vector_test.o: vector/vector_test.c 587 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_test.o -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_test.Tpo -c -o vector/vector_test-vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c 588 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_test.Tpo vector/$(DEPDIR)/vector_test-vector_test.Po 589 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_test.c' object='vector/vector_test-vector_test.o' libtool=no @AMDEPBACKSLASH@ 590 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 591 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c 592 593 vector/vector_test-vector_test.obj: vector/vector_test.c 594 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_test.obj -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_test.Tpo -c -o vector/vector_test-vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi` 595 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_test.Tpo vector/$(DEPDIR)/vector_test-vector_test.Po 596 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vector/vector_test.c' object='vector/vector_test-vector_test.obj' libtool=no @AMDEPBACKSLASH@ 597 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 598 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi` 599 600 ID: $(am__tagged_files) 601 $(am__define_uniq_tagged_files); mkid -fID $$unique 602 tags: tags-am 603 TAGS: tags 604 605 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 457 606 set x; \ 458 607 here=`pwd`; \ 459 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 460 unique=`for i in $$list; do \ 461 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 462 done | \ 463 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 464 END { if (nonempty) { for (i in files) print i; }; }'`; \ 608 $(am__define_uniq_tagged_files); \ 465 609 shift; \ 466 610 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 474 618 fi; \ 475 619 fi 476 ctags: CTAGS 477 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 478 $(TAGS_FILES) $(LISP) 479 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 480 unique=`for i in $$list; do \ 481 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 482 done | \ 483 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 484 END { if (nonempty) { for (i in files) print i; }; }'`; \ 620 ctags: ctags-am 621 622 CTAGS: ctags 623 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 624 $(am__define_uniq_tagged_files); \ 485 625 test -z "$(CTAGS_ARGS)$$unique" \ 486 626 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 491 631 && $(am__cd) $(top_srcdir) \ 492 632 && gtags -i $(GTAGS_ARGS) "$$here" 633 cscopelist: cscopelist-am 634 635 cscopelist-am: $(am__tagged_files) 636 list='$(am__tagged_files)'; \ 637 case "$(srcdir)" in \ 638 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 639 *) sdir=$(subdir)/$(srcdir) ;; \ 640 esac; \ 641 for i in $$list; do \ 642 if test -f "$$i"; then \ 643 echo "$(subdir)/$$i"; \ 644 else \ 645 echo "$$sdir/$$i"; \ 646 fi; \ 647 done >> $(top_builddir)/cscope.files 493 648 494 649 distclean-tags: … … 555 710 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 556 711 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) 712 -rm -f avltree/$(DEPDIR)/$(am__dirstamp) 713 -rm -f avltree/$(am__dirstamp) 714 -rm -f vector/$(DEPDIR)/$(am__dirstamp) 715 -rm -f vector/$(am__dirstamp) 557 716 558 717 maintainer-clean-generic: … … 564 723 565 724 distclean: distclean-am 566 -rm -rf ./$(DEPDIR) 725 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) vector/$(DEPDIR) 567 726 -rm -f Makefile 568 727 distclean-am: clean-am distclean-compile distclean-generic \ … … 610 769 611 770 maintainer-clean: maintainer-clean-am 612 -rm -rf ./$(DEPDIR) 771 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) vector/$(DEPDIR) 613 772 -rm -f Makefile 614 773 maintainer-clean-am: distclean-am maintainer-clean-generic … … 630 789 .MAKE: install-am install-strip 631 790 632 .PHONY: CTAGS GTAGS all all-am all-local check check-am clean \ 633 clean-generic clean-local ctags distclean distclean-compile \ 634 distclean-generic distclean-tags distdir dvi dvi-am html \ 635 html-am info info-am install install-am install-data \ 636 install-data-am install-dvi install-dvi-am install-exec \ 637 install-exec-am install-html install-html-am install-info \ 638 install-info-am install-man install-pdf install-pdf-am \ 639 install-ps install-ps-am install-strip installcheck \ 640 installcheck-am installdirs maintainer-clean \ 641 maintainer-clean-generic mostlyclean mostlyclean-compile \ 642 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ 643 uninstall-am 791 .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ 792 clean-generic clean-local cscopelist-am ctags ctags-am \ 793 distclean distclean-compile distclean-generic distclean-tags \ 794 distdir dvi dvi-am html html-am info info-am install \ 795 install-am install-data install-data-am install-dvi \ 796 install-dvi-am install-exec install-exec-am install-html \ 797 install-html-am install-info install-info-am install-man \ 798 install-pdf install-pdf-am install-ps install-ps-am \ 799 install-strip installcheck installcheck-am installdirs \ 800 maintainer-clean maintainer-clean-generic mostlyclean \ 801 mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ 802 tags tags-am uninstall uninstall-am 803 804 .PRECIOUS: Makefile 644 805 645 806 … … 665 826 666 827 % : %.c @CFA_BINDIR@/@CFA_NAME@ 667 ${CC} ${ CFLAGS} ${<} -o ${@}828 ${CC} ${AM_CFLAGS} ${CFLAGS} ${<} -o ${@} 668 829 669 830 dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 670 ${CC} ${ CFLAGS} -DERR1 ${<} -o ${@}831 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@} 671 832 672 833 dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 673 ${CC} ${ CFLAGS} -DERR2 ${<} -o ${@}834 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR2 ${<} -o ${@} 674 835 675 836 declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@ 676 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}837 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 677 838 678 839 gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@ 679 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}840 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 680 841 681 842 extension : extension.c @CFA_BINDIR@/@CFA_NAME@ 682 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}843 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 683 844 684 845 attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@ 685 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}846 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 686 847 687 848 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@ 688 ${CC} ${ CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}849 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 689 850 690 851 gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@ 691 ${CC} ${ CFLAGS} -lgmp ${<} -o ${@}852 ${CC} ${AM_CFLAGS} ${CFLAGS} -lgmp ${<} -o ${@} 692 853 693 854 memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@ 694 ${CC} ${ CFLAGS} -DERR1 ${<} -o ${@}855 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@} 695 856 696 857 completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@ 697 ${CC} ${ CFLAGS} -DERR1 ${<} -o ${@}858 ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@} 698 859 699 860 # Tell versions [3.59,3.63) of GNU make to not export all variables. -
TabularUnified src/tests/io.c ¶
rb1e63ac5 r208e5be 10 10 // Created On : Wed Mar 2 16:56:02 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jun 8 09:52:10201713 // Update Count : 5112 // Last Modified On : Sun Jul 2 09:40:58 2017 13 // Update Count : 68 14 14 // 15 15 … … 42 42 sout | endl; 43 43 44 sout | "opening delimiters" | endl; 44 45 sout 45 // opening delimiters46 46 | "x (" | 1 47 47 | "x [" | 2 … … 54 54 | "x ¿" | 9 55 55 | "x «" | 10 56 | endl; 56 | endl | endl; 57 58 sout | "closing delimiters" | endl; 57 59 sout 58 // closing delimiters59 60 | 1 | ", x" 60 61 | 2 | ". x" … … 68 69 | 10 | "] x" 69 70 | 11 | "} x" 70 | endl; 71 | endl | endl; 72 73 sout | "opening/closing delimiters" | endl; 71 74 sout 72 // opening-closing delimiters73 75 | "x`" | 1 | "`x'" | 2 74 76 | "'x\"" | 3 | "\"x:" | 4 … … 76 78 | "\tx\f" | 7 | "\fx\v" | 8 77 79 | "\vx\n" | 9 | "\nx\r" | 10 78 | "\rx" | 79 endl; 80 | "\rx" 81 | endl | endl; 82 83 sout | "override opening/closing delimiters" | endl; 80 84 sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl; 85 sout | endl; 81 86 82 87 ifstream in; // create / open file 83 88 open( &in, "io.data", "r" ); 84 89 90 sout | "input bacis types" | endl; 85 91 &in | &c // character 86 92 | &si | &usi | &i | &ui | &li | &uli | &lli | &ulli // integral … … 88 94 | &fc | &dc | &ldc // floating-point complex 89 95 | cstr( s1 ) | cstr( s2, size ); // C string, length unchecked and checked 96 sout | endl; 90 97 98 sout | "output basic types" | endl; 91 99 sout | c | ' ' | endl // character 92 100 | si | usi | i | ui | li | uli | lli | ulli | endl // integral … … 94 102 | fc | dc | ldc | endl; // complex 95 103 sout | endl; 104 105 sout | "tuples" | endl; 106 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ] ]; 107 sout | t1 | t2 | endl; // print tuple 108 sout | endl; 109 110 sout | "toggle separator" | endl; 96 111 sout | f | "" | d | "" | ld | endl // floating point without separator 97 112 | sepDisable | fc | dc | ldc | sepEnable | endl // complex without separator … … 100 115 sout | endl; 101 116 117 sout | "change separator" | endl; 118 sout | "from \" " | sepGet( sout ) | "\""; 102 119 sepSet( sout, ", $" ); // change separator, maximum of 15 characters 120 sout | "to \" " | sepGet( sout ) | "\"" | endl; 103 121 sout | f | d | ld | endl 104 122 | fc | dc | ldc | endl 105 | s1 | s2 | endl; 123 | s1 | s2 | endl 124 | t1 | t2 | endl; // print tuple 125 sout | endl; 126 sout | "from \"" | sepGet( sout ) | "\""; 127 sepSet( sout, " " ); // restore separator 128 sout | "to \"" | sepGet( sout ) | "\"" | endl; 129 sout | f | d | ld | endl 130 | fc | dc | ldc | endl 131 | s1 | s2 | endl 132 | t1 | t2 | endl; // print tuple 106 133 sout | endl; 107 134 108 [int, int] t1 = [1, 2], t2 = [3, 4]; 109 sout | t1 | t2 | endl; // print tuple 110 111 sepSet( sout, " " ); 112 sepSet( sout, ", $" ); // set separator from " " to ", $" 113 sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl; 114 sepSet( sout, " " ); // reset separator to " " 115 sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl; 116 117 sout | sepOn | 1 | 2 | 3 | sepOn | endl; // separator at start of line 135 sout | sepOn | 1 | 2 | 3 | sepOn | endl; // separator at start/end of line 118 136 sout | 1 | sepOff | 2 | 3 | endl; // locally turn off implicit separator 137 sout | sepOn | 1 | 2 | 3 | sepOn | sepOff | endl; // separator at start of line 138 sout | 1 | 2 | 3 | endl | sepOn; // separator at start of next line 139 sout | 1 | 2 | 3 | endl; 140 sout | endl; 119 141 120 142 sout | sepDisable | 1 | 2 | 3 | endl; // globally turn off implicit separation 121 143 sout | 1 | sepOn | 2 | 3 | endl; // locally turn on implicit separator 122 sout | sepEnable | 1 | 2 | 3 | endl; // globally turn on implicit separation 144 sout | sepEnable | 1 | 2 | 3 | endl | sepDisable; // globally turn on/off implicit separation 145 sout | 1 | 2 | 3 | endl | sepEnable; // globally turn on implicit separation 146 sout | 1 | 2 | 3 | sepOn | sepDisable | endl; // ignore seperate at end of line 147 sout | 1 | 2 | 3 | sepOn | sepEnable | endl; // separator at end of line 148 sout | 1 | 2 | 3 | endl; 149 sout | endl; 123 150 124 151 sepSetTuple( sout, " " ); // set tuple separator from ", " to " " … … 126 153 sepSetTuple( sout, ", " ); // reset tuple separator to ", " 127 154 sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"" | endl; 128 129 155 sout | t1 | t2 | endl; // print tuple 156 sout | endl; 130 157 131 158 [int, int, const char *, double] t3 = { 3, 4, "a", 7.2 }; -
TabularUnified src/tests/preempt_longrun/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 19 18 ############################################################################### 20 19 VPATH = @srcdir@ 20 am__is_gnu_make = { \ 21 if test -z '$(MAKELEVEL)'; then \ 22 false; \ 23 elif test -n '$(MAKE_HOST)'; then \ 24 true; \ 25 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 26 true; \ 27 else \ 28 false; \ 29 fi; \ 30 } 31 am__make_running_with_option = \ 32 case $${target_option-} in \ 33 ?) ;; \ 34 *) echo "am__make_running_with_option: internal error: invalid" \ 35 "target option '$${target_option-}' specified" >&2; \ 36 exit 1;; \ 37 esac; \ 38 has_opt=no; \ 39 sane_makeflags=$$MAKEFLAGS; \ 40 if $(am__is_gnu_make); then \ 41 sane_makeflags=$$MFLAGS; \ 42 else \ 43 case $$MAKEFLAGS in \ 44 *\\[\ \ ]*) \ 45 bs=\\; \ 46 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 47 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 48 esac; \ 49 fi; \ 50 skip_next=no; \ 51 strip_trailopt () \ 52 { \ 53 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 54 }; \ 55 for flg in $$sane_makeflags; do \ 56 test $$skip_next = yes && { skip_next=no; continue; }; \ 57 case $$flg in \ 58 *=*|--*) continue;; \ 59 -*I) strip_trailopt 'I'; skip_next=yes;; \ 60 -*I?*) strip_trailopt 'I';; \ 61 -*O) strip_trailopt 'O'; skip_next=yes;; \ 62 -*O?*) strip_trailopt 'O';; \ 63 -*l) strip_trailopt 'l'; skip_next=yes;; \ 64 -*l?*) strip_trailopt 'l';; \ 65 -[dEDm]) skip_next=yes;; \ 66 -[JT]) skip_next=yes;; \ 67 esac; \ 68 case $$flg in \ 69 *$$target_option*) has_opt=yes; break;; \ 70 esac; \ 71 done; \ 72 test $$has_opt = yes 73 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 21 75 pkgdatadir = $(datadir)/@PACKAGE@ 22 76 pkgincludedir = $(includedir)/@PACKAGE@ … … 38 92 host_triplet = @host@ 39 93 subdir = src/tests/preempt_longrun 40 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in41 94 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 42 95 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 43 96 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 44 97 $(ACLOCAL_M4) 98 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 45 99 mkinstalldirs = $(install_sh) -d 46 100 CONFIG_HEADER = $(top_builddir)/config.h 47 101 CONFIG_CLEAN_FILES = 48 102 CONFIG_CLEAN_VPATH_FILES = 103 AM_V_P = $(am__v_P_@AM_V@) 104 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 105 am__v_P_0 = false 106 am__v_P_1 = : 49 107 AM_V_GEN = $(am__v_GEN_@AM_V@) 50 108 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 51 am__v_GEN_0 = @echo " GEN " $@; 109 am__v_GEN_0 = @echo " GEN " $@; 110 am__v_GEN_1 = 52 111 AM_V_at = $(am__v_at_@AM_V@) 53 112 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 54 113 am__v_at_0 = @ 114 am__v_at_1 = 55 115 SOURCES = 56 116 DIST_SOURCES = 57 am__tty_colors = \ 58 red=; grn=; lgn=; blu=; std= 117 am__can_run_installinfo = \ 118 case $$AM_UPDATE_INFO_DIR in \ 119 n|no|NO) false;; \ 120 *) (install-info --version) >/dev/null 2>&1;; \ 121 esac 122 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 123 am__tty_colors_dummy = \ 124 mgn= red= grn= lgn= blu= brg= std=; \ 125 am__color_tests=no 126 am__tty_colors = { \ 127 $(am__tty_colors_dummy); \ 128 if test "X$(AM_COLOR_TESTS)" = Xno; then \ 129 am__color_tests=no; \ 130 elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ 131 am__color_tests=yes; \ 132 elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ 133 am__color_tests=yes; \ 134 fi; \ 135 if test $$am__color_tests = yes; then \ 136 red='[0;31m'; \ 137 grn='[0;32m'; \ 138 lgn='[1;32m'; \ 139 blu='[1;34m'; \ 140 mgn='[0;35m'; \ 141 brg='[1m'; \ 142 std='[m'; \ 143 fi; \ 144 } 145 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; 146 am__vpath_adj = case $$p in \ 147 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ 148 *) f=$$p;; \ 149 esac; 150 am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; 151 am__install_max = 40 152 am__nobase_strip_setup = \ 153 srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` 154 am__nobase_strip = \ 155 for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" 156 am__nobase_list = $(am__nobase_strip_setup); \ 157 for p in $$list; do echo "$$p $$p"; done | \ 158 sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ 159 $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ 160 if (++n[$$2] == $(am__install_max)) \ 161 { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ 162 END { for (dir in files) print dir, files[dir] }' 163 am__base_list = \ 164 sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ 165 sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' 166 am__uninstall_files_from_dir = { \ 167 test -z "$$files" \ 168 || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ 169 || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ 170 $(am__cd) "$$dir" && rm -f $$files; }; \ 171 } 172 am__recheck_rx = ^[ ]*:recheck:[ ]* 173 am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* 174 am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* 175 # A command that, given a newline-separated list of test names on the 176 # standard input, print the name of the tests that are to be re-run 177 # upon "make recheck". 178 am__list_recheck_tests = $(AWK) '{ \ 179 recheck = 1; \ 180 while ((rc = (getline line < ($$0 ".trs"))) != 0) \ 181 { \ 182 if (rc < 0) \ 183 { \ 184 if ((getline line2 < ($$0 ".log")) < 0) \ 185 recheck = 0; \ 186 break; \ 187 } \ 188 else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ 189 { \ 190 recheck = 0; \ 191 break; \ 192 } \ 193 else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ 194 { \ 195 break; \ 196 } \ 197 }; \ 198 if (recheck) \ 199 print $$0; \ 200 close ($$0 ".trs"); \ 201 close ($$0 ".log"); \ 202 }' 203 # A command that, given a newline-separated list of test names on the 204 # standard input, create the global log from their .trs and .log files. 205 am__create_global_log = $(AWK) ' \ 206 function fatal(msg) \ 207 { \ 208 print "fatal: making $@: " msg | "cat >&2"; \ 209 exit 1; \ 210 } \ 211 function rst_section(header) \ 212 { \ 213 print header; \ 214 len = length(header); \ 215 for (i = 1; i <= len; i = i + 1) \ 216 printf "="; \ 217 printf "\n\n"; \ 218 } \ 219 { \ 220 copy_in_global_log = 1; \ 221 global_test_result = "RUN"; \ 222 while ((rc = (getline line < ($$0 ".trs"))) != 0) \ 223 { \ 224 if (rc < 0) \ 225 fatal("failed to read from " $$0 ".trs"); \ 226 if (line ~ /$(am__global_test_result_rx)/) \ 227 { \ 228 sub("$(am__global_test_result_rx)", "", line); \ 229 sub("[ ]*$$", "", line); \ 230 global_test_result = line; \ 231 } \ 232 else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ 233 copy_in_global_log = 0; \ 234 }; \ 235 if (copy_in_global_log) \ 236 { \ 237 rst_section(global_test_result ": " $$0); \ 238 while ((rc = (getline line < ($$0 ".log"))) != 0) \ 239 { \ 240 if (rc < 0) \ 241 fatal("failed to read from " $$0 ".log"); \ 242 print line; \ 243 }; \ 244 printf "\n"; \ 245 }; \ 246 close ($$0 ".trs"); \ 247 close ($$0 ".log"); \ 248 }' 249 # Restructured Text title. 250 am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } 251 # Solaris 10 'make', and several other traditional 'make' implementations, 252 # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it 253 # by disabling -e (using the XSI extension "set +e") if it's set. 254 am__sh_e_setup = case $$- in *e*) set +e;; esac 255 # Default flags passed to test drivers. 256 am__common_driver_flags = \ 257 --color-tests "$$am__color_tests" \ 258 --enable-hard-errors "$$am__enable_hard_errors" \ 259 --expect-failure "$$am__expect_failure" 260 # To be inserted before the command running the test. Creates the 261 # directory for the log if needed. Stores in $dir the directory 262 # containing $f, in $tst the test, in $log the log. Executes the 263 # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and 264 # passes TESTS_ENVIRONMENT. Set up options for the wrapper that 265 # will run the test scripts (or their associated LOG_COMPILER, if 266 # thy have one). 267 am__check_pre = \ 268 $(am__sh_e_setup); \ 269 $(am__vpath_adj_setup) $(am__vpath_adj) \ 270 $(am__tty_colors); \ 271 srcdir=$(srcdir); export srcdir; \ 272 case "$@" in \ 273 */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ 274 *) am__odir=.;; \ 275 esac; \ 276 test "x$$am__odir" = x"." || test -d "$$am__odir" \ 277 || $(MKDIR_P) "$$am__odir" || exit $$?; \ 278 if test -f "./$$f"; then dir=./; \ 279 elif test -f "$$f"; then dir=; \ 280 else dir="$(srcdir)/"; fi; \ 281 tst=$$dir$$f; log='$@'; \ 282 if test -n '$(DISABLE_HARD_ERRORS)'; then \ 283 am__enable_hard_errors=no; \ 284 else \ 285 am__enable_hard_errors=yes; \ 286 fi; \ 287 case " $(XFAIL_TESTS) " in \ 288 *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ 289 am__expect_failure=yes;; \ 290 *) \ 291 am__expect_failure=no;; \ 292 esac; \ 293 $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) 294 # A shell command to get the names of the tests scripts with any registered 295 # extension removed (i.e., equivalently, the names of the test logs, with 296 # the '.log' extension removed). The result is saved in the shell variable 297 # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, 298 # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", 299 # since that might cause problem with VPATH rewrites for suffix-less tests. 300 # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. 301 am__set_TESTS_bases = \ 302 bases='$(TEST_LOGS)'; \ 303 bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ 304 bases=`echo $$bases` 305 RECHECK_LOGS = $(TEST_LOGS) 306 AM_RECURSIVE_TARGETS = check recheck 307 TEST_SUITE_LOG = test-suite.log 308 TEST_EXTENSIONS = @EXEEXT@ .test 309 LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver 310 LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) 311 am__set_b = \ 312 case '$@' in \ 313 */*) \ 314 case '$*' in \ 315 */*) b='$*';; \ 316 *) b=`echo '$@' | sed 's/\.log$$//'`; \ 317 esac;; \ 318 *) \ 319 b='$*';; \ 320 esac 321 am__test_logs1 = $(TESTS:=.log) 322 am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) 323 TEST_LOGS = $(am__test_logs2:.test.log=.log) 324 TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver 325 TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ 326 $(TEST_LOG_FLAGS) 327 am__DIST_COMMON = $(srcdir)/Makefile.in \ 328 $(top_srcdir)/automake/test-driver 59 329 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 60 330 ACLOCAL = @ACLOCAL@ … … 169 439 program_transform_name = @program_transform_name@ 170 440 psdir = @psdir@ 441 runstatedir = @runstatedir@ 171 442 sbindir = @sbindir@ 172 443 sharedstatedir = @sharedstatedir@ … … 186 457 187 458 .SUFFIXES: 459 .SUFFIXES: .log .test .test$(EXEEXT) .trs 188 460 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) 189 461 @for dep in $?; do \ … … 195 467 esac; \ 196 468 done; \ 197 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/tests/preempt_longrun/Makefile'; \469 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tests/preempt_longrun/Makefile'; \ 198 470 $(am__cd) $(top_srcdir) && \ 199 $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile 200 .PRECIOUS: Makefile 471 $(AUTOMAKE) --gnu src/tests/preempt_longrun/Makefile 201 472 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 202 473 @case '$?' in \ … … 216 487 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 217 488 $(am__aclocal_m4_deps): 218 tags: TAGS 219 TAGS: 220 221 ctags: CTAGS 222 CTAGS: 223 224 225 check-TESTS: $(TESTS) 226 @failed=0; all=0; xfail=0; xpass=0; skip=0; \ 227 srcdir=$(srcdir); export srcdir; \ 228 list=' $(TESTS) '; \ 229 $(am__tty_colors); \ 230 if test -n "$$list"; then \ 231 for tst in $$list; do \ 232 if test -f ./$$tst; then dir=./; \ 233 elif test -f $$tst; then dir=; \ 234 else dir="$(srcdir)/"; fi; \ 235 if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ 236 all=`expr $$all + 1`; \ 237 case " $(XFAIL_TESTS) " in \ 238 *[\ \ ]$$tst[\ \ ]*) \ 239 xpass=`expr $$xpass + 1`; \ 240 failed=`expr $$failed + 1`; \ 241 col=$$red; res=XPASS; \ 242 ;; \ 243 *) \ 244 col=$$grn; res=PASS; \ 245 ;; \ 246 esac; \ 247 elif test $$? -ne 77; then \ 248 all=`expr $$all + 1`; \ 249 case " $(XFAIL_TESTS) " in \ 250 *[\ \ ]$$tst[\ \ ]*) \ 251 xfail=`expr $$xfail + 1`; \ 252 col=$$lgn; res=XFAIL; \ 253 ;; \ 254 *) \ 255 failed=`expr $$failed + 1`; \ 256 col=$$red; res=FAIL; \ 257 ;; \ 258 esac; \ 489 tags TAGS: 490 491 ctags CTAGS: 492 493 cscope cscopelist: 494 495 496 # Recover from deleted '.trs' file; this should ensure that 497 # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create 498 # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells 499 # to avoid problems with "make -n". 500 .log.trs: 501 rm -f $< $@ 502 $(MAKE) $(AM_MAKEFLAGS) $< 503 504 # Leading 'am--fnord' is there to ensure the list of targets does not 505 # expand to empty, as could happen e.g. with make check TESTS=''. 506 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) 507 am--force-recheck: 508 @: 509 510 $(TEST_SUITE_LOG): $(TEST_LOGS) 511 @$(am__set_TESTS_bases); \ 512 am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ 513 redo_bases=`for i in $$bases; do \ 514 am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ 515 done`; \ 516 if test -n "$$redo_bases"; then \ 517 redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ 518 redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ 519 if $(am__make_dryrun); then :; else \ 520 rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ 521 fi; \ 522 fi; \ 523 if test -n "$$am__remaking_logs"; then \ 524 echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ 525 "recursion detected" >&2; \ 526 elif test -n "$$redo_logs"; then \ 527 am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ 528 fi; \ 529 if $(am__make_dryrun); then :; else \ 530 st=0; \ 531 errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ 532 for i in $$redo_bases; do \ 533 test -f $$i.trs && test -r $$i.trs \ 534 || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ 535 test -f $$i.log && test -r $$i.log \ 536 || { echo "$$errmsg $$i.log" >&2; st=1; }; \ 537 done; \ 538 test $$st -eq 0 || exit 1; \ 539 fi 540 @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ 541 ws='[ ]'; \ 542 results=`for b in $$bases; do echo $$b.trs; done`; \ 543 test -n "$$results" || results=/dev/null; \ 544 all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ 545 pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ 546 fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ 547 skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ 548 xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ 549 xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ 550 error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ 551 if test `expr $$fail + $$xpass + $$error` -eq 0; then \ 552 success=true; \ 553 else \ 554 success=false; \ 555 fi; \ 556 br='==================='; br=$$br$$br$$br$$br; \ 557 result_count () \ 558 { \ 559 if test x"$$1" = x"--maybe-color"; then \ 560 maybe_colorize=yes; \ 561 elif test x"$$1" = x"--no-color"; then \ 562 maybe_colorize=no; \ 259 563 else \ 260 skip=`expr $$skip + 1`; \ 261 col=$$blu; res=SKIP; \ 564 echo "$@: invalid 'result_count' usage" >&2; exit 4; \ 262 565 fi; \ 263 echo "$${col}$$res$${std}: $$tst"; \ 264 done; \ 265 if test "$$all" -eq 1; then \ 266 tests="test"; \ 267 All=""; \ 268 else \ 269 tests="tests"; \ 270 All="All "; \ 271 fi; \ 272 if test "$$failed" -eq 0; then \ 273 if test "$$xfail" -eq 0; then \ 274 banner="$$All$$all $$tests passed"; \ 566 shift; \ 567 desc=$$1 count=$$2; \ 568 if test $$maybe_colorize = yes && test $$count -gt 0; then \ 569 color_start=$$3 color_end=$$std; \ 275 570 else \ 276 if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ 277 banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ 571 color_start= color_end=; \ 278 572 fi; \ 279 else \ 280 if test "$$xpass" -eq 0; then \ 281 banner="$$failed of $$all $$tests failed"; \ 282 else \ 283 if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ 284 banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ 285 fi; \ 286 fi; \ 287 dashes="$$banner"; \ 288 skipped=""; \ 289 if test "$$skip" -ne 0; then \ 290 if test "$$skip" -eq 1; then \ 291 skipped="($$skip test was not run)"; \ 292 else \ 293 skipped="($$skip tests were not run)"; \ 294 fi; \ 295 test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ 296 dashes="$$skipped"; \ 297 fi; \ 298 report=""; \ 299 if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ 300 report="Please report to $(PACKAGE_BUGREPORT)"; \ 301 test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ 302 dashes="$$report"; \ 303 fi; \ 304 dashes=`echo "$$dashes" | sed s/./=/g`; \ 305 if test "$$failed" -eq 0; then \ 306 col="$$grn"; \ 307 else \ 308 col="$$red"; \ 309 fi; \ 310 echo "$${col}$$dashes$${std}"; \ 311 echo "$${col}$$banner$${std}"; \ 312 test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ 313 test -z "$$report" || echo "$${col}$$report$${std}"; \ 314 echo "$${col}$$dashes$${std}"; \ 315 test "$$failed" -eq 0; \ 316 else :; fi 573 echo "$${color_start}# $$desc $$count$${color_end}"; \ 574 }; \ 575 create_testsuite_report () \ 576 { \ 577 result_count $$1 "TOTAL:" $$all "$$brg"; \ 578 result_count $$1 "PASS: " $$pass "$$grn"; \ 579 result_count $$1 "SKIP: " $$skip "$$blu"; \ 580 result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ 581 result_count $$1 "FAIL: " $$fail "$$red"; \ 582 result_count $$1 "XPASS:" $$xpass "$$red"; \ 583 result_count $$1 "ERROR:" $$error "$$mgn"; \ 584 }; \ 585 { \ 586 echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ 587 $(am__rst_title); \ 588 create_testsuite_report --no-color; \ 589 echo; \ 590 echo ".. contents:: :depth: 2"; \ 591 echo; \ 592 for b in $$bases; do echo $$b; done \ 593 | $(am__create_global_log); \ 594 } >$(TEST_SUITE_LOG).tmp || exit 1; \ 595 mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ 596 if $$success; then \ 597 col="$$grn"; \ 598 else \ 599 col="$$red"; \ 600 test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ 601 fi; \ 602 echo "$${col}$$br$${std}"; \ 603 echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ 604 echo "$${col}$$br$${std}"; \ 605 create_testsuite_report --maybe-color; \ 606 echo "$$col$$br$$std"; \ 607 if $$success; then :; else \ 608 echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ 609 if test -n "$(PACKAGE_BUGREPORT)"; then \ 610 echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ 611 fi; \ 612 echo "$$col$$br$$std"; \ 613 fi; \ 614 $$success || exit 1 615 616 check-TESTS: 617 @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list 618 @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list 619 @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) 620 @set +e; $(am__set_TESTS_bases); \ 621 log_list=`for i in $$bases; do echo $$i.log; done`; \ 622 trs_list=`for i in $$bases; do echo $$i.trs; done`; \ 623 log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ 624 $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ 625 exit $$?; 626 recheck: all 627 @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) 628 @set +e; $(am__set_TESTS_bases); \ 629 bases=`for i in $$bases; do echo $$i; done \ 630 | $(am__list_recheck_tests)` || exit 1; \ 631 log_list=`for i in $$bases; do echo $$i.log; done`; \ 632 log_list=`echo $$log_list`; \ 633 $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ 634 am__force_recheck=am--force-recheck \ 635 TEST_LOGS="$$log_list"; \ 636 exit $$? 637 barge.log: barge 638 @p='barge'; \ 639 b='barge'; \ 640 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 641 --log-file $$b.log --trs-file $$b.trs \ 642 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 643 "$$tst" $(AM_TESTS_FD_REDIRECT) 644 block.log: block 645 @p='block'; \ 646 b='block'; \ 647 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 648 --log-file $$b.log --trs-file $$b.trs \ 649 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 650 "$$tst" $(AM_TESTS_FD_REDIRECT) 651 create.log: create 652 @p='create'; \ 653 b='create'; \ 654 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 655 --log-file $$b.log --trs-file $$b.trs \ 656 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 657 "$$tst" $(AM_TESTS_FD_REDIRECT) 658 disjoint.log: disjoint 659 @p='disjoint'; \ 660 b='disjoint'; \ 661 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 662 --log-file $$b.log --trs-file $$b.trs \ 663 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 664 "$$tst" $(AM_TESTS_FD_REDIRECT) 665 processor.log: processor 666 @p='processor'; \ 667 b='processor'; \ 668 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 669 --log-file $$b.log --trs-file $$b.trs \ 670 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 671 "$$tst" $(AM_TESTS_FD_REDIRECT) 672 stack.log: stack 673 @p='stack'; \ 674 b='stack'; \ 675 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 676 --log-file $$b.log --trs-file $$b.trs \ 677 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 678 "$$tst" $(AM_TESTS_FD_REDIRECT) 679 wait.log: wait 680 @p='wait'; \ 681 b='wait'; \ 682 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 683 --log-file $$b.log --trs-file $$b.trs \ 684 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 685 "$$tst" $(AM_TESTS_FD_REDIRECT) 686 yield.log: yield 687 @p='yield'; \ 688 b='yield'; \ 689 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ 690 --log-file $$b.log --trs-file $$b.trs \ 691 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ 692 "$$tst" $(AM_TESTS_FD_REDIRECT) 693 .test.log: 694 @p='$<'; \ 695 $(am__set_b); \ 696 $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ 697 --log-file $$b.log --trs-file $$b.trs \ 698 $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ 699 "$$tst" $(AM_TESTS_FD_REDIRECT) 700 @am__EXEEXT_TRUE@.test$(EXEEXT).log: 701 @am__EXEEXT_TRUE@ @p='$<'; \ 702 @am__EXEEXT_TRUE@ $(am__set_b); \ 703 @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ 704 @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ 705 @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ 706 @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) 317 707 318 708 distdir: $(DISTFILES) … … 371 761 fi 372 762 mostlyclean-generic: 763 -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) 764 -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) 765 -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) 373 766 374 767 clean-generic: … … 450 843 451 844 .PHONY: all all-am all-local check check-TESTS check-am clean \ 452 clean-generic distclean distclean-generic distdir dvi dvi-am \ 453 html html-am info info-am install install-am install-data \ 454 install-data-am install-dvi install-dvi-am install-exec \ 455 install-exec-am install-html install-html-am install-info \ 456 install-info-am install-man install-pdf install-pdf-am \ 457 install-ps install-ps-am install-strip installcheck \ 458 installcheck-am installdirs maintainer-clean \ 459 maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ 460 pdf-am ps ps-am uninstall uninstall-am 845 clean-generic cscopelist-am ctags-am distclean \ 846 distclean-generic distdir dvi dvi-am html html-am info info-am \ 847 install install-am install-data install-data-am install-dvi \ 848 install-dvi-am install-exec install-exec-am install-html \ 849 install-html-am install-info install-info-am install-man \ 850 install-pdf install-pdf-am install-ps install-ps-am \ 851 install-strip installcheck installcheck-am installdirs \ 852 maintainer-clean maintainer-clean-generic mostlyclean \ 853 mostlyclean-generic pdf pdf-am ps ps-am recheck tags-am \ 854 uninstall uninstall-am 855 856 .PRECIOUS: Makefile 461 857 462 858 -
TabularUnified src/tests/test.py ¶
rb1e63ac5 r208e5be 161 161 162 162 # remove any outputs from the previous tests to prevent side effects 163 rm( (out_file, test.name), dry_run )163 rm( (out_file, err_file, test.name), dry_run ) 164 164 165 165 options = "-debug" if debug else "-nodebug" -
TabularUnified tools/cfa.nanorc ¶
rb1e63ac5 r208e5be 18 18 # Control Flow Structures 19 19 color brightyellow "\<(if|else|while|do|for|switch|choose|case|default)\>" 20 color brightyellow "\<(try|catch |catchResume|finally)\>"20 color brightyellow "\<(try|catch(Resume)?|finally)\>" 21 21 22 22 # Control Flow Statements 23 color magenta "\<( return|break|continue|fallthru|throw|throwResume)\>"23 color magenta "\<(goto|return|break|continue|fallthr(u|ough)|throw(Resume)?)\>" 24 24 25 25 # Operator Names -
TabularUnified tools/prettyprinter/Makefile.am ¶
rb1e63ac5 r208e5be 15 15 ############################################################################### 16 16 17 BUILT_SOURCES = parser.h 17 BUILT_SOURCES = parser.hh 18 18 19 19 AM_YFLAGS = -d -t -v -
TabularUnified tools/prettyprinter/Makefile.in ¶
rb1e63ac5 r208e5be 1 # Makefile.in generated by automake 1.1 1.3from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 5 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software 6 # Foundation, Inc. 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 7 6 # This Makefile.in is free software; the Free Software Foundation 8 7 # gives unlimited permission to copy and/or distribute it, … … 20 19 21 20 VPATH = @srcdir@ 21 am__is_gnu_make = { \ 22 if test -z '$(MAKELEVEL)'; then \ 23 false; \ 24 elif test -n '$(MAKE_HOST)'; then \ 25 true; \ 26 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ 27 true; \ 28 else \ 29 false; \ 30 fi; \ 31 } 32 am__make_running_with_option = \ 33 case $${target_option-} in \ 34 ?) ;; \ 35 *) echo "am__make_running_with_option: internal error: invalid" \ 36 "target option '$${target_option-}' specified" >&2; \ 37 exit 1;; \ 38 esac; \ 39 has_opt=no; \ 40 sane_makeflags=$$MAKEFLAGS; \ 41 if $(am__is_gnu_make); then \ 42 sane_makeflags=$$MFLAGS; \ 43 else \ 44 case $$MAKEFLAGS in \ 45 *\\[\ \ ]*) \ 46 bs=\\; \ 47 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 48 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 49 esac; \ 50 fi; \ 51 skip_next=no; \ 52 strip_trailopt () \ 53 { \ 54 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 55 }; \ 56 for flg in $$sane_makeflags; do \ 57 test $$skip_next = yes && { skip_next=no; continue; }; \ 58 case $$flg in \ 59 *=*|--*) continue;; \ 60 -*I) strip_trailopt 'I'; skip_next=yes;; \ 61 -*I?*) strip_trailopt 'I';; \ 62 -*O) strip_trailopt 'O'; skip_next=yes;; \ 63 -*O?*) strip_trailopt 'O';; \ 64 -*l) strip_trailopt 'l'; skip_next=yes;; \ 65 -*l?*) strip_trailopt 'l';; \ 66 -[dEDm]) skip_next=yes;; \ 67 -[JT]) skip_next=yes;; \ 68 esac; \ 69 case $$flg in \ 70 *$$target_option*) has_opt=yes; break;; \ 71 esac; \ 72 done; \ 73 test $$has_opt = yes 74 am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 22 76 pkgdatadir = $(datadir)/@PACKAGE@ 23 77 pkgincludedir = $(includedir)/@PACKAGE@ … … 40 94 tools_prettyprinter_PROGRAMS = pretty$(EXEEXT) 41 95 subdir = tools/prettyprinter 42 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in lex.cc \43 parser.cc parser.h44 96 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 45 97 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 46 98 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 47 99 $(ACLOCAL_M4) 100 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) 48 101 mkinstalldirs = $(install_sh) -d 49 102 CONFIG_HEADER = $(top_builddir)/config.h … … 61 114 pretty_LINK = $(CXXLD) $(pretty_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ 62 115 $(LDFLAGS) -o $@ 116 AM_V_P = $(am__v_P_@AM_V@) 117 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 118 am__v_P_0 = false 119 am__v_P_1 = : 120 AM_V_GEN = $(am__v_GEN_@AM_V@) 121 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 122 am__v_GEN_0 = @echo " GEN " $@; 123 am__v_GEN_1 = 124 AM_V_at = $(am__v_at_@AM_V@) 125 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 126 am__v_at_0 = @ 127 am__v_at_1 = 63 128 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 64 129 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 68 133 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 69 134 am__v_lt_0 = --silent 135 am__v_lt_1 = 70 136 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ 71 137 $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 72 138 AM_V_CXX = $(am__v_CXX_@AM_V@) 73 139 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) 74 am__v_CXX_0 = @echo " CXX " $@; 75 AM_V_at = $(am__v_at_@AM_V@) 76 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 77 am__v_at_0 = @ 140 am__v_CXX_0 = @echo " CXX " $@; 141 am__v_CXX_1 = 78 142 CXXLD = $(CXX) 79 143 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ … … 81 145 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) 82 146 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) 83 am__v_CXXLD_0 = @echo " CXXLD " $@; 147 am__v_CXXLD_0 = @echo " CXXLD " $@; 148 am__v_CXXLD_1 = 84 149 @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || 85 150 LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) 86 151 AM_V_LEX = $(am__v_LEX_@AM_V@) 87 152 am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) 88 am__v_LEX_0 = @echo " LEX " $@; 153 am__v_LEX_0 = @echo " LEX " $@; 154 am__v_LEX_1 = 89 155 YLWRAP = $(top_srcdir)/automake/ylwrap 90 156 @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || 157 am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ 158 -e s/c++$$/h++/ -e s/c$$/h/ 91 159 YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) 92 160 AM_V_YACC = $(am__v_YACC_@AM_V@) 93 161 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) 94 am__v_YACC_0 = @echo " YACC " $@; 162 am__v_YACC_0 = @echo " YACC " $@; 163 am__v_YACC_1 = 95 164 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 96 165 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 97 166 AM_V_CC = $(am__v_CC_@AM_V@) 98 167 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 99 am__v_CC_0 = @echo " CC " $@; 168 am__v_CC_0 = @echo " CC " $@; 169 am__v_CC_1 = 100 170 CCLD = $(CC) 101 171 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 102 172 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 103 173 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 104 am__v_CCLD_0 = @echo " CCLD " $@; 105 AM_V_GEN = $(am__v_GEN_@AM_V@) 106 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 107 am__v_GEN_0 = @echo " GEN " $@; 174 am__v_CCLD_0 = @echo " CCLD " $@; 175 am__v_CCLD_1 = 108 176 SOURCES = $(pretty_SOURCES) 109 177 DIST_SOURCES = $(pretty_SOURCES) 178 am__can_run_installinfo = \ 179 case $$AM_UPDATE_INFO_DIR in \ 180 n|no|NO) false;; \ 181 *) (install-info --version) >/dev/null 2>&1;; \ 182 esac 183 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 184 # Read a list of newline-separated strings from the standard input, 185 # and print each of them once, without duplicates. Input order is 186 # *not* preserved. 187 am__uniquify_input = $(AWK) '\ 188 BEGIN { nonempty = 0; } \ 189 { items[$$0] = 1; nonempty = 1; } \ 190 END { if (nonempty) { for (i in items) print i; }; } \ 191 ' 192 # Make sure the list of sources is unique. This is necessary because, 193 # e.g., the same source file might be shared among _SOURCES variables 194 # for different programs/libraries. 195 am__define_uniq_tagged_files = \ 196 list='$(am__tagged_files)'; \ 197 unique=`for i in $$list; do \ 198 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 199 done | $(am__uniquify_input)` 110 200 ETAGS = etags 111 201 CTAGS = ctags 202 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp \ 203 $(top_srcdir)/automake/ylwrap lex.cc parser.cc parser.hh 112 204 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 113 205 ACLOCAL = @ACLOCAL@ … … 222 314 program_transform_name = @program_transform_name@ 223 315 psdir = @psdir@ 316 runstatedir = @runstatedir@ 224 317 sbindir = @sbindir@ 225 318 sharedstatedir = @sharedstatedir@ … … 230 323 top_builddir = @top_builddir@ 231 324 top_srcdir = @top_srcdir@ 232 BUILT_SOURCES = parser.h 325 BUILT_SOURCES = parser.hh 233 326 AM_YFLAGS = -d -t -v 234 327 SRC = lex.ll \ … … 257 350 esac; \ 258 351 done; \ 259 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreigntools/prettyprinter/Makefile'; \352 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/prettyprinter/Makefile'; \ 260 353 $(am__cd) $(top_srcdir) && \ 261 $(AUTOMAKE) --foreign tools/prettyprinter/Makefile 262 .PRECIOUS: Makefile 354 $(AUTOMAKE) --gnu tools/prettyprinter/Makefile 263 355 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 264 356 @case '$?' in \ … … 280 372 install-tools_prettyprinterPROGRAMS: $(tools_prettyprinter_PROGRAMS) 281 373 @$(NORMAL_INSTALL) 282 test -z "$(tools_prettyprinterdir)" || $(MKDIR_P) "$(DESTDIR)$(tools_prettyprinterdir)"283 374 @list='$(tools_prettyprinter_PROGRAMS)'; test -n "$(tools_prettyprinterdir)" || list=; \ 375 if test -n "$$list"; then \ 376 echo " $(MKDIR_P) '$(DESTDIR)$(tools_prettyprinterdir)'"; \ 377 $(MKDIR_P) "$(DESTDIR)$(tools_prettyprinterdir)" || exit 1; \ 378 fi; \ 284 379 for p in $$list; do echo "$$p $$p"; done | \ 285 380 sed 's/$(EXEEXT)$$//' | \ 286 while read p p1; do if test -f $$p ;\287 then echo "$$p"; echo "$$p"; else :; fi; \381 while read p p1; do if test -f $$p \ 382 ; then echo "$$p"; echo "$$p"; else :; fi; \ 288 383 done | \ 289 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ 384 sed -e 'p;s,.*/,,;n;h' \ 385 -e 's|.*|.|' \ 290 386 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ 291 387 sed 'N;N;N;s,\n, ,g' | \ … … 308 404 files=`for p in $$list; do echo "$$p"; done | \ 309 405 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ 310 -e 's/$$/$(EXEEXT)/' `; \ 406 -e 's/$$/$(EXEEXT)/' \ 407 `; \ 311 408 test -n "$$list" || exit 0; \ 312 409 echo " ( cd '$(DESTDIR)$(tools_prettyprinterdir)' && rm -f" $$files ")"; \ … … 315 412 clean-tools_prettyprinterPROGRAMS: 316 413 -test -z "$(tools_prettyprinter_PROGRAMS)" || rm -f $(tools_prettyprinter_PROGRAMS) 317 parser.h : parser.cc414 parser.hh: parser.cc 318 415 @if test ! -f $@; then rm -f parser.cc; else :; fi 319 416 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parser.cc; else :; fi 417 320 418 pretty$(EXEEXT): $(pretty_OBJECTS) $(pretty_DEPENDENCIES) $(EXTRA_pretty_DEPENDENCIES) 321 419 @rm -f pretty$(EXEEXT) … … 335 433 336 434 .cc.o: 337 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< 338 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 435 @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 436 @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 437 @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 339 438 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 340 439 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ … … 342 441 343 442 .cc.obj: 344 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` 345 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po 443 @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ 444 @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ 445 @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po 346 446 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 347 447 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ … … 422 522 423 523 .yy.cc: 424 $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) 425 426 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 427 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 428 unique=`for i in $$list; do \ 429 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 430 done | \ 431 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 432 END { if (nonempty) { for (i in files) print i; }; }'`; \ 433 mkid -fID $$unique 434 tags: TAGS 435 436 TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 437 $(TAGS_FILES) $(LISP) 524 $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) 525 526 ID: $(am__tagged_files) 527 $(am__define_uniq_tagged_files); mkid -fID $$unique 528 tags: tags-am 529 TAGS: tags 530 531 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 438 532 set x; \ 439 533 here=`pwd`; \ 440 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 441 unique=`for i in $$list; do \ 442 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 443 done | \ 444 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 445 END { if (nonempty) { for (i in files) print i; }; }'`; \ 534 $(am__define_uniq_tagged_files); \ 446 535 shift; \ 447 536 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 455 544 fi; \ 456 545 fi 457 ctags: CTAGS 458 CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 459 $(TAGS_FILES) $(LISP) 460 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 461 unique=`for i in $$list; do \ 462 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 463 done | \ 464 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 465 END { if (nonempty) { for (i in files) print i; }; }'`; \ 546 ctags: ctags-am 547 548 CTAGS: ctags 549 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 550 $(am__define_uniq_tagged_files); \ 466 551 test -z "$(CTAGS_ARGS)$$unique" \ 467 552 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 472 557 && $(am__cd) $(top_srcdir) \ 473 558 && gtags -i $(GTAGS_ARGS) "$$here" 559 cscopelist: cscopelist-am 560 561 cscopelist-am: $(am__tagged_files) 562 list='$(am__tagged_files)'; \ 563 case "$(srcdir)" in \ 564 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 565 *) sdir=$(subdir)/$(srcdir) ;; \ 566 esac; \ 567 for i in $$list; do \ 568 if test -f "$$i"; then \ 569 echo "$(subdir)/$$i"; \ 570 else \ 571 echo "$$sdir/$$i"; \ 572 fi; \ 573 done >> $(top_builddir)/cscope.files 474 574 475 575 distclean-tags: … … 547 647 -rm -f lex.cc 548 648 -rm -f parser.cc 549 -rm -f parser.h 649 -rm -f parser.hh 550 650 -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) 551 651 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) … … 622 722 .MAKE: all check install install-am install-strip 623 723 624 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \625 clean-tools_prettyprinterPROGRAMS c tags distclean\626 distclean -compile distclean-generic distclean-tags distdir dvi\627 d vi-am html html-am info info-am install install-am\628 install- data install-data-am install-dvi install-dvi-am\629 install- exec install-exec-am install-html install-html-am\630 install- info install-info-am install-man install-pdf\631 install-pdf -am install-ps install-ps-am install-strip\632 install- tools_prettyprinterPROGRAMS installcheck \724 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ 725 clean-tools_prettyprinterPROGRAMS cscopelist-am ctags ctags-am \ 726 distclean distclean-compile distclean-generic distclean-tags \ 727 distdir dvi dvi-am html html-am info info-am install \ 728 install-am install-data install-data-am install-dvi \ 729 install-dvi-am install-exec install-exec-am install-html \ 730 install-html-am install-info install-info-am install-man \ 731 install-pdf install-pdf-am install-ps install-ps-am \ 732 install-strip install-tools_prettyprinterPROGRAMS installcheck \ 633 733 installcheck-am installdirs maintainer-clean \ 634 734 maintainer-clean-generic mostlyclean mostlyclean-compile \ 635 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \735 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 636 736 uninstall-am uninstall-tools_prettyprinterPROGRAMS 737 738 .PRECIOUS: Makefile 637 739 638 740 -
TabularUnified tools/prettyprinter/filter.cc ¶
rb1e63ac5 r208e5be 19 19 using namespace std; 20 20 #include "filter.h" 21 #include "parser.h "21 #include "parser.hh" 22 22 23 23 -
TabularUnified tools/prettyprinter/filter.h ¶
rb1e63ac5 r208e5be 17 17 #define __FILTER_H__ 18 18 19 #include " parser.hh"19 #include "ParserTypes.h" 20 20 21 21 extern void (* filter)( Token * tree ); // pointer to filter for parse tree -
TabularUnified tools/prettyprinter/lex.ll ¶
rb1e63ac5 r208e5be 23 23 #include <iostream> 24 24 using namespace std; 25 #include "ParserTypes.h" 25 26 #include "parser.hh" 26 #include "parser.h"27 27 28 28 #define RETURN_TOKEN( kind ) yylval.tokenp = new Token( yytext, ws_list, kind ); return kind; -
TabularUnified tools/prettyprinter/parser.hh ¶
rb1e63ac5 r208e5be 1 // -*- Mode: C++ -*- 2 // 3 // Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo 4 // 5 // The contents of this file are covered under the licence agreement in the 6 // file "LICENCE" distributed with Cforall. 7 // 8 // parse.h - Various declarations that are needed so that the generated parser 9 // and lexer compile with C++, and to share information between the 10 // parser, lexer, and driver program 11 // 12 // Author : Richard C. Bilson and Rodolfo G. Esteves 13 // Created On : Sun Dec 16 15:00:49 2001 14 // Last Modified By : Peter A. Buhr 15 // Last Modified On : Wed Jun 28 22:59:27 2017 16 // Update Count : 174 17 // 1 /* A Bison parser, made by GNU Bison 3.0.4. */ 18 2 19 #ifndef __PARSER_HH__ 20 #define __PARSER_HH__ 3 /* Bison interface for Yacc-like parsers in C 21 4 22 int yylex(); 5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. 23 6 24 #include <string> 25 #include <list> 26 #include "token.h" 7 This program 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. 27 11 28 #endif // __PARSER_HH__ 12 This program 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. 29 16 30 // Local Variables: // 31 // mode: c++ // 32 // tab-width: 4 // 33 // compile-command: "make install" // 34 // End: // 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 /* As a special exception, you may create a larger work that contains 21 part or all of the Bison parser skeleton and distribute that work 22 under terms of your choice, so long as that work isn't itself a 23 parser generator using the skeleton or a modified version thereof 24 as a parser skeleton. Alternatively, if you modify or redistribute 25 the parser skeleton itself, you may (at your option) remove this 26 special exception, which will cause the skeleton and the resulting 27 Bison output files to be licensed under the GNU General Public 28 License without this special exception. 29 30 This special exception was added by the Free Software Foundation in 31 version 2.2 of Bison. */ 32 33 #ifndef YY_YY_PARSER_HH_INCLUDED 34 # define YY_YY_PARSER_HH_INCLUDED 35 /* Debug traces. */ 36 #ifndef YYDEBUG 37 # define YYDEBUG 1 38 #endif 39 #if YYDEBUG 40 extern int yydebug; 41 #endif 42 43 /* Token type. */ 44 #ifndef YYTOKENTYPE 45 # define YYTOKENTYPE 46 enum yytokentype 47 { 48 MARK = 258, 49 LCURL = 259, 50 RCURL = 260, 51 INTEGER = 261, 52 CHARACTER = 262, 53 IDENTIFIER = 263, 54 CODE = 264, 55 START = 265, 56 UNION = 266, 57 TOKEN = 267, 58 LEFT = 268, 59 RIGHT = 269, 60 NONASSOC = 270, 61 TYPE = 271, 62 PURE_PARSER = 272, 63 SEMANTIC_PARSER = 273, 64 EXPECT = 274, 65 THONG = 275, 66 PREC = 276, 67 END_TERMINALS = 277, 68 _SECTIONS = 278, 69 _DEFSECTION_OPT = 279, 70 _LITERALBLOCK = 280, 71 _DECLARATION = 281, 72 _TAG_OPT = 282, 73 _NAMENOLIST = 283, 74 _NAMENO = 284, 75 _NAMELIST = 285, 76 _RULESECTION = 286, 77 _RULE = 287, 78 _LHS = 288, 79 _RHS = 289, 80 _PREC = 290, 81 _ACTION = 291, 82 _USERSECTION_OPT = 292 83 }; 84 #endif 85 /* Tokens. */ 86 #define MARK 258 87 #define LCURL 259 88 #define RCURL 260 89 #define INTEGER 261 90 #define CHARACTER 262 91 #define IDENTIFIER 263 92 #define CODE 264 93 #define START 265 94 #define UNION 266 95 #define TOKEN 267 96 #define LEFT 268 97 #define RIGHT 269 98 #define NONASSOC 270 99 #define TYPE 271 100 #define PURE_PARSER 272 101 #define SEMANTIC_PARSER 273 102 #define EXPECT 274 103 #define THONG 275 104 #define PREC 276 105 #define END_TERMINALS 277 106 #define _SECTIONS 278 107 #define _DEFSECTION_OPT 279 108 #define _LITERALBLOCK 280 109 #define _DECLARATION 281 110 #define _TAG_OPT 282 111 #define _NAMENOLIST 283 112 #define _NAMENO 284 113 #define _NAMELIST 285 114 #define _RULESECTION 286 115 #define _RULE 287 116 #define _LHS 288 117 #define _RHS 289 118 #define _PREC 290 119 #define _ACTION 291 120 #define _USERSECTION_OPT 292 121 122 /* Value type. */ 123 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 124 125 union YYSTYPE 126 { 127 #line 41 "parser.yy" /* yacc.c:1909 */ 128 129 Token *tokenp; 130 131 #line 132 "parser.hh" /* yacc.c:1909 */ 132 }; 133 134 typedef union YYSTYPE YYSTYPE; 135 # define YYSTYPE_IS_TRIVIAL 1 136 # define YYSTYPE_IS_DECLARED 1 137 #endif 138 139 140 extern YYSTYPE yylval; 141 142 int yyparse (void); 143 144 #endif /* !YY_YY_PARSER_HH_INCLUDED */ -
TabularUnified tools/prettyprinter/parser.yy ¶
rb1e63ac5 r208e5be 20 20 #include <iostream> 21 21 using namespace std; 22 #include " parser.hh"22 #include "ParserTypes.h" 23 23 #include "filter.h" 24 24 -
TabularUnified tools/prettyprinter/token.cc ¶
rb1e63ac5 r208e5be 16 16 #include <string> 17 17 using namespace std; 18 #include " parser.hh"19 #include "parser.h "18 #include "ParserTypes.h" 19 #include "parser.hh" 20 20 #include "filter.h" 21 21
Note: See TracChangeset
for help on using the changeset viewer.