Changes in / [208e5be:b1e63ac5]
- Files:
-
- 2 added
- 6 deleted
- 51 edited
-
.gitignore (modified) (3 diffs)
-
Makefile.in (modified) (22 diffs)
-
aclocal.m4 (modified) (52 diffs)
-
automake/config.guess (modified) (1 diff)
-
automake/config.sub (modified) (1 diff)
-
automake/missing (modified) (5 diffs)
-
automake/test-driver (deleted)
-
config.h.in (modified) (1 diff)
-
configure (modified) (85 diffs)
-
configure.ac (modified) (1 diff)
-
doc/LaTeXmacros/lstlang.sty (modified) (2 diffs)
-
doc/generic_types/mail (modified) (1 diff)
-
doc/proposals/references.md (modified) (3 diffs)
-
doc/user/EHMHierarchy.fig (deleted)
-
doc/user/Makefile (modified) (1 diff)
-
doc/user/user.tex (modified) (20 diffs)
-
src/ControlStruct/ExceptTranslate.cc (modified) (16 diffs)
-
src/ControlStruct/ExceptTranslate.h (modified) (2 diffs)
-
src/Makefile.in (modified) (21 diffs)
-
src/Parser/ParserTypes.h (deleted)
-
src/Parser/TypedefTable.h (modified) (1 diff)
-
src/Parser/module.mk (modified) (1 diff)
-
src/Parser/parser.hh (added)
-
src/Parser/parser.yy (modified) (4 diffs)
-
src/ResolvExpr/Resolver.cc (modified) (2 diffs)
-
src/SymTab/Indexer.cc (modified) (4 diffs)
-
src/benchmark/Makefile.in (modified) (11 diffs)
-
src/driver/Makefile.in (modified) (16 diffs)
-
src/examples/Makefile.in (modified) (16 diffs)
-
src/libcfa/Makefile.am (modified) (1 diff)
-
src/libcfa/Makefile.in (modified) (29 diffs)
-
src/libcfa/exception.c (modified) (9 diffs)
-
src/libcfa/exception.h (modified) (1 diff)
-
src/libcfa/fstream (modified) (3 diffs)
-
src/libcfa/fstream.c (modified) (6 diffs)
-
src/libcfa/iostream (modified) (4 diffs)
-
src/libcfa/iostream.c (modified) (3 diffs)
-
src/libcfa/lsda.h (deleted)
-
src/main.cc (modified) (3 diffs)
-
src/prelude/Makefile.am (modified) (2 diffs)
-
src/prelude/Makefile.in (modified) (11 diffs)
-
src/tests/.expect/io.txt (modified) (3 diffs)
-
src/tests/Makefile.am (modified) (3 diffs)
-
src/tests/Makefile.in (modified) (16 diffs)
-
src/tests/except-0.c (deleted)
-
src/tests/exception.c (added)
-
src/tests/io.c (modified) (9 diffs)
-
src/tests/preempt_longrun/Makefile.in (modified) (9 diffs)
-
src/tests/test.py (modified) (1 diff)
-
tools/cfa.nanorc (modified) (1 diff)
-
tools/prettyprinter/Makefile.am (modified) (1 diff)
-
tools/prettyprinter/Makefile.in (modified) (19 diffs)
-
tools/prettyprinter/ParserTypes.h (deleted)
-
tools/prettyprinter/filter.cc (modified) (1 diff)
-
tools/prettyprinter/filter.h (modified) (1 diff)
-
tools/prettyprinter/lex.ll (modified) (1 diff)
-
tools/prettyprinter/parser.hh (modified) (1 diff)
-
tools/prettyprinter/parser.yy (modified) (1 diff)
-
tools/prettyprinter/token.cc (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
r208e5be rb1e63ac5 42 42 src/Parser/parser.cc 43 43 src/Parser/parser.h 44 src/Parser/parser.hh45 44 46 45 tools/prettyprinter/parser.output … … 48 47 tools/prettyprinter/parser.cc 49 48 tools/prettyprinter/parser.h 50 tools/prettyprinter/parser.hh51 49 tools/prettyprinter/pretty 52 50 tools/pretty … … 56 54 doc/user/pointer1.tex 57 55 doc/user/pointer2.tex 58 doc/user/EHMHierarchy.tex -
Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 18 19 ############################################################################### 19 20 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 = yes73 am__make_dryrun = (target_option=n; $(am__make_running_with_option))74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))75 21 pkgdatadir = $(datadir)/@PACKAGE@ 76 22 pkgincludedir = $(includedir)/@PACKAGE@ … … 92 38 host_triplet = @host@ 93 39 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/ylwrap 94 45 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 95 46 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 96 47 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 97 48 $(ACLOCAL_M4) 98 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \99 $(am__configure_deps) $(am__DIST_COMMON)100 49 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ 101 50 configure.lineno config.status.lineno … … 104 53 CONFIG_CLEAN_FILES = 105 54 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 = false109 am__v_P_1 = :110 55 AM_V_GEN = $(am__v_GEN_@AM_V@) 111 56 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 112 am__v_GEN_0 = @echo " GEN " $@; 113 am__v_GEN_1 = 57 am__v_GEN_0 = @echo " GEN " $@; 114 58 AM_V_at = $(am__v_at_@AM_V@) 115 59 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 116 60 am__v_at_0 = @ 117 am__v_at_1 =118 61 SOURCES = 119 62 DIST_SOURCES = 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 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 133 70 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ 134 71 distclean-recursive maintainer-clean-recursive 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)` 72 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ 73 $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ 74 distdir dist dist-all distcheck 159 75 ETAGS = etags 160 76 CTAGS = ctags 161 CSCOPE = cscope162 77 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/ylwrap171 78 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 172 79 distdir = $(PACKAGE)-$(VERSION) … … 178 85 || { sleep 5 && rm -rf "$(distdir)"; }; \ 179 86 else :; fi 180 am__post_remove_distdir = $(am__remove_distdir)181 87 am__relativize = \ 182 88 dir0=`pwd`; \ … … 206 112 DIST_ARCHIVES = $(distdir).tar.gz 207 113 GZIP_ENV = --best 208 DIST_TARGETS = dist-gzip209 114 distuninstallcheck_listfiles = find . -type f -print 210 115 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ … … 322 227 program_transform_name = @program_transform_name@ 323 228 psdir = @psdir@ 324 runstatedir = @runstatedir@325 229 sbindir = @sbindir@ 326 230 sharedstatedir = @sharedstatedir@ … … 354 258 $(am__cd) $(top_srcdir) && \ 355 259 $(AUTOMAKE) --foreign Makefile 260 .PRECIOUS: Makefile 356 261 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 357 262 @case '$?' in \ … … 374 279 375 280 config.h: stamp-h1 376 @ test -f $@ || rm -f stamp-h1377 @ test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1281 @if test ! -f $@; then rm -f stamp-h1; else :; fi 282 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi 378 283 379 284 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status … … 389 294 390 295 # This directory's subdirectories are mostly independent; you can cd 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; \ 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; \ 403 309 dot_seen=no; \ 404 310 target=`echo $@ | sed s/-recursive//`; \ 405 case "$@" in \ 406 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ 407 *) list='$(SUBDIRS)' ;; \ 408 esac; \ 409 for subdir in $$list; do \ 311 list='$(SUBDIRS)'; for subdir in $$list; do \ 410 312 echo "Making $$target in $$subdir"; \ 411 313 if test "$$subdir" = "."; then \ … … 422 324 fi; test -z "$$fail" 423 325 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) 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) 430 377 set x; \ 431 378 here=`pwd`; \ … … 443 390 fi; \ 444 391 done; \ 445 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 446 398 shift; \ 447 399 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 455 407 fi; \ 456 408 fi 457 ctags: ctags-recursive 458 459 CTAGS: ctags 460 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 461 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 462 418 test -z "$(CTAGS_ARGS)$$unique" \ 463 419 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 468 424 && $(am__cd) $(top_srcdir) \ 469 425 && gtags -i $(GTAGS_ARGS) "$$here" 470 cscope: cscope.files471 test ! -s cscope.files \472 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)473 clean-cscope:474 -rm -f cscope.files475 cscope.files: clean-cscope cscopelist476 cscopelist: cscopelist-recursive477 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.files491 426 492 427 distclean-tags: 493 428 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 494 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files495 429 496 430 distdir: $(DISTFILES) … … 528 462 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ 529 463 if test "$$subdir" = .; then :; else \ 530 $(am__make_dryrun) \ 531 || test -d "$(distdir)/$$subdir" \ 532 || $(MKDIR_P) "$(distdir)/$$subdir" \ 533 || exit 1; \ 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 \ 534 471 dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ 535 472 $(am__relativize); \ … … 560 497 dist-gzip: distdir 561 498 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz 562 $(am__ post_remove_distdir)499 $(am__remove_distdir) 563 500 564 501 dist-bzip2: distdir 565 502 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 566 $(am__ post_remove_distdir)503 $(am__remove_distdir) 567 504 568 505 dist-lzip: distdir 569 506 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz 570 $(am__post_remove_distdir) 507 $(am__remove_distdir) 508 509 dist-lzma: distdir 510 tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma 511 $(am__remove_distdir) 571 512 572 513 dist-xz: distdir 573 514 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz 574 $(am__ post_remove_distdir)515 $(am__remove_distdir) 575 516 576 517 dist-tarZ: distdir 577 @echo WARNING: "Support for distribution archives compressed with" \578 "legacy program 'compress' is deprecated." >&2579 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2580 518 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z 581 $(am__ post_remove_distdir)519 $(am__remove_distdir) 582 520 583 521 dist-shar: distdir 584 @echo WARNING: "Support for shar distribution archives is" \585 "deprecated." >&2586 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2587 522 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz 588 $(am__ post_remove_distdir)523 $(am__remove_distdir) 589 524 590 525 dist-zip: distdir 591 526 -rm -f $(distdir).zip 592 527 zip -rq $(distdir).zip $(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)528 $(am__remove_distdir) 529 530 dist dist-all: distdir 531 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz 532 $(am__remove_distdir) 598 533 599 534 # This target untars the dist file and tries a VPATH configuration. Then … … 606 541 *.tar.bz2*) \ 607 542 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ 543 *.tar.lzma*) \ 544 lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ 608 545 *.tar.lz*) \ 609 546 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ … … 617 554 unzip $(distdir).zip ;;\ 618 555 esac 619 chmod -R a-w $(distdir) 620 chmod u+w $(distdir)621 mkdir $(distdir)/_ build $(distdir)/_build/sub $(distdir)/_inst556 chmod -R a-w $(distdir); chmod a+w $(distdir) 557 mkdir $(distdir)/_build 558 mkdir $(distdir)/_inst 622 559 chmod a-w $(distdir) 623 560 test -d $(distdir)/_build || exit 0; \ … … 625 562 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ 626 563 && am__cwd=`pwd` \ 627 && $(am__cd) $(distdir)/_build /sub\628 && ../ ../configure\564 && $(am__cd) $(distdir)/_build \ 565 && ../configure --srcdir=.. --prefix="$$dc_install_base" \ 629 566 $(AM_DISTCHECK_CONFIGURE_FLAGS) \ 630 567 $(DISTCHECK_CONFIGURE_FLAGS) \ 631 --srcdir=../.. --prefix="$$dc_install_base" \632 568 && $(MAKE) $(AM_MAKEFLAGS) \ 633 569 && $(MAKE) $(AM_MAKEFLAGS) dvi \ … … 652 588 && cd "$$am__cwd" \ 653 589 || exit 1 654 $(am__ post_remove_distdir)590 $(am__remove_distdir) 655 591 @(echo "$(distdir) archives ready for distribution: "; \ 656 592 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ … … 787 723 uninstall-am: 788 724 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 \ 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 \ 795 732 distcheck distclean distclean-generic distclean-hdr \ 796 733 distclean-tags distcleancheck distdir distuninstallcheck dvi \ … … 802 739 installcheck installcheck-am installdirs installdirs-am \ 803 740 maintainer-clean maintainer-clean-generic mostlyclean \ 804 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 805 uninstall-am 806 807 .PRECIOUS: Makefile 741 mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ 742 uninstall uninstall-am 808 743 809 744 -
aclocal.m4
r208e5be rb1e63ac5 1 # generated automatically by aclocal 1.15 -*- Autoconf -*- 2 3 # Copyright (C) 1996-2014 Free Software Foundation, Inc. 4 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. 5 6 # This file is free software; the Free Software Foundation 6 7 # gives unlimited permission to copy and/or distribute it, … … 12 13 # PARTICULAR PURPOSE. 13 14 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 9],,18 [m4_warning([this file was generated for autoconf 2.6 9.17 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, 18 [m4_warning([this file was generated for autoconf 2.68. 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-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. 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 28 31 29 32 # AM_AUTOMAKE_VERSION(VERSION) … … 33 36 # (This private macro should not be called outside this file.) 34 37 AC_DEFUN([AM_AUTOMAKE_VERSION], 35 [am__api_version='1.1 5'38 [am__api_version='1.11' 36 39 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to 37 40 dnl require some minimum version. Point them to the right macro. 38 m4_if([$1], [1.1 5], [],41 m4_if([$1], [1.11.3], [], 39 42 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl 40 43 ]) … … 52 55 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. 53 56 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], 54 [AM_AUTOMAKE_VERSION([1.1 5])dnl57 [AM_AUTOMAKE_VERSION([1.11.3])dnl 55 58 m4_ifndef([AC_AUTOCONF_VERSION], 56 59 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl … … 59 62 # Figure out how to run the assembler. -*- Autoconf -*- 60 63 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. 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 66 71 67 72 # AM_PROG_AS … … 79 84 # AM_AUX_DIR_EXPAND -*- Autoconf -*- 80 85 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. 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 86 93 87 94 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets 88 # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to89 # '$srcdir', '$srcdir/..', or '$srcdir/../..'.95 # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to 96 # `$srcdir', `$srcdir/..', or `$srcdir/../..'. 90 97 # 91 98 # Of course, Automake must honor this variable whenever it calls a … … 106 113 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir 107 114 # are both prefixed by $srcdir. In an in-source build this is usually 108 # harmless because $srcdir is '.', but things will broke when you115 # harmless because $srcdir is `.', but things will broke when you 109 116 # start a VPATH build or use an absolute $srcdir. 110 117 # … … 124 131 125 132 AC_DEFUN([AM_AUX_DIR_EXPAND], 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` 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` 129 137 ]) 130 138 131 139 # AM_COND_IF -*- Autoconf -*- 132 140 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. 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 138 148 139 149 # _AM_COND_IF … … 145 155 m4_define([_AM_COND_ELSE]) 146 156 m4_define([_AM_COND_ENDIF]) 157 147 158 148 159 # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) … … 168 179 # AM_CONDITIONAL -*- Autoconf -*- 169 180 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. 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 175 189 176 190 # AM_CONDITIONAL(NAME, SHELL-CONDITION) … … 178 192 # Define a conditional. 179 193 AC_DEFUN([AM_CONDITIONAL], 180 [AC_PREREQ( [2.52])dnl181 m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],182 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl194 [AC_PREREQ(2.52)dnl 195 ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], 196 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl 183 197 AC_SUBST([$1_TRUE])dnl 184 198 AC_SUBST([$1_FALSE])dnl … … 199 213 fi])]) 200 214 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 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 209 225 # written in clear, in which case automake, when reading aclocal.m4, 210 226 # will think it sees a *use*, and therefore will trigger all it's … … 216 232 # ---------------------- 217 233 # See how the compiler implements dependency checking. 218 # NAME is "CC", "CXX", " OBJC", "OBJCXX", "UPC", or "GJC".234 # NAME is "CC", "CXX", "GCJ", or "OBJC". 219 235 # We try a few techniques and use that to set a single cache variable. 220 236 # … … 229 245 AC_REQUIRE([AM_DEP_TRACK])dnl 230 246 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=]) 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=]) 238 253 239 254 AC_CACHE_CHECK([dependency style of $depcc], … … 243 258 # making bogus files that we don't know about and never remove. For 244 259 # instance it was reported that on HP-UX the gcc test will end up 245 # making a dummy file named 'D' -- because '-MD' means "put the output246 # in D ".260 # making a dummy file named `D' -- because `-MD' means `put the output 261 # in D'. 247 262 rm -rf conftest.dir 248 263 mkdir conftest.dir … … 284 299 for i in 1 2 3 4 5 6; do 285 300 echo '#include "conftst'$i'.h"' >> sub/conftest.c 286 # Using ": > sub/conftst$i.h"creates only sub/conftst1.h with287 # Solaris 10/bin/sh.288 echo '/* dummy */' >sub/conftst$i.h301 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with 302 # Solaris 8's {/usr,}/bin/sh. 303 touch sub/conftst$i.h 289 304 done 290 305 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 291 306 292 # We check with '-c' and '-o' for the sake of the "dashmstdout"307 # We check with `-c' and `-o' for the sake of the "dashmstdout" 293 308 # mode. It turns out that the SunPro C++ compiler does not properly 294 # handle '-M -o', and we need to detect this. Also, some Intel295 # versions had trouble with output in subdirs .309 # handle `-M -o', and we need to detect this. Also, some Intel 310 # versions had trouble with output in subdirs 296 311 am__obj=sub/conftest.${OBJEXT-o} 297 312 am__minus_obj="-o $am__obj" … … 302 317 ;; 303 318 nosideeffect) 304 # After this tag, mechanisms are not by side-effect, so they'll305 # only be used when explicitly requested .319 # after this tag, mechanisms are not by side-effect, so they'll 320 # only be used when explicitly requested 306 321 if test "x$enable_dependency_tracking" = xyes; then 307 322 continue … … 311 326 ;; 312 327 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 313 # This compiler won't grok '-c -o', but also, the minuso test has328 # This compiler won't grok `-c -o', but also, the minuso test has 314 329 # not run yet. These depmodes are late enough in the game, and 315 330 # so weak that their functioning should not be impacted. … … 359 374 # ------------- 360 375 # Choose a directory name for dependency files. 361 # This macro is AC_REQUIREd in _AM_DEPENDENCIES .376 # This macro is AC_REQUIREd in _AM_DEPENDENCIES 362 377 AC_DEFUN([AM_SET_DEPDIR], 363 378 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl … … 369 384 # ------------ 370 385 AC_DEFUN([AM_DEP_TRACK], 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])]) 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]) 378 389 if test "x$enable_dependency_tracking" != xno; then 379 390 am_depcomp="$ac_aux_dir/depcomp" … … 390 401 # Generate code to set up dependency tracking. -*- Autoconf -*- 391 402 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 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 398 411 399 412 # _AM_OUTPUT_DEPENDENCY_COMMANDS … … 401 414 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], 402 415 [{ 403 # Older Autoconfquotes --file arguments for eval, but not when files416 # Autoconf 2.62 quotes --file arguments for eval, but not when files 404 417 # are listed without --file. Let's play safe and only enable the eval 405 418 # if we detect the quoting. … … 414 427 mf=`echo "$mf" | sed -e 's/:.*$//'` 415 428 # Check whether this is an Automake generated Makefile or not. 416 # We used to match only the files named 'Makefile.in', but429 # We used to match only the files named `Makefile.in', but 417 430 # some people rename them; so instead we look at the file content. 418 431 # Grep'ing the first line is not enough: some people post-process … … 426 439 fi 427 440 # Extract the definition of DEPDIR, am__include, and am__quote 428 # from the Makefile without running 'make'.441 # from the Makefile without running `make'. 429 442 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` 430 443 test -z "$DEPDIR" && continue 431 444 am__include=`sed -n 's/^am__include = //p' < "$mf"` 432 test -z " $am__include" && continue445 test -z "am__include" && continue 433 446 am__quote=`sed -n 's/^am__quote = //p' < "$mf"` 447 # When using ansi2knr, U may be empty or an underscore; expand it 448 U=`sed -n 's/^U = //p' < "$mf"` 434 449 # Find all dependency output files, they are included files with 435 450 # $(DEPDIR) in their names. We invoke sed twice because it is the … … 438 453 for file in `sed -n " 439 454 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ 440 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' `; do455 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do 441 456 # Make sure the directory exists. 442 457 test -f "$dirpart/$file" && continue … … 456 471 # 457 472 # This code is only required when automatic dependency tracking 458 # is enabled. FIXME. This creates each '.P' file that we will473 # is enabled. FIXME. This creates each `.P' file that we will 459 474 # need in order to bootstrap the dependency handling code. 460 475 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], … … 466 481 # Do all the work for Automake. -*- Autoconf -*- 467 482 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. 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 473 491 474 492 # This macro actually does too much. Some checks are only needed if 475 493 # 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_O481 ])482 494 483 495 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) … … 493 505 # release and drop the old call support. 494 506 AC_DEFUN([AM_INIT_AUTOMAKE], 495 [AC_PREREQ([2.6 5])dnl507 [AC_PREREQ([2.62])dnl 496 508 dnl Autoconf wants to disallow AM_ names. We explicitly allow 497 509 dnl the ones we care about. … … 522 534 dnl Distinguish between old-style and new-style calls. 523 535 m4_ifval([$2], 524 [AC_DIAGNOSE([obsolete], 525 [$0: two- and three-arguments forms are deprecated.]) 526 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl 536 [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl 527 537 AC_SUBST([PACKAGE], [$1])dnl 528 538 AC_SUBST([VERSION], [$2])], 529 539 [_AM_SET_OPTIONS([$1])dnl 530 540 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. 531 m4_if( 532 m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), 533 [ok:ok],, 541 m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, 534 542 [m4_fatal([AC_INIT should be called with package and version arguments])])dnl 535 543 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl … … 537 545 538 546 _AM_IF_OPTION([no-define],, 539 [AC_DEFINE_UNQUOTED( [PACKAGE], ["$PACKAGE"], [Name of package])540 AC_DEFINE_UNQUOTED( [VERSION], ["$VERSION"], [Version number of package])])dnl547 [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) 548 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl 541 549 542 550 # Some tools Automake needs. 543 551 AC_REQUIRE([AM_SANITY_CHECK])dnl 544 552 AC_REQUIRE([AC_ARG_PROGRAM])dnl 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])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) 550 558 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl 551 559 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl 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. 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. 560 563 AC_REQUIRE([AC_PROG_AWK])dnl 561 564 AC_REQUIRE([AC_PROG_MAKE_SET])dnl … … 566 569 _AM_IF_OPTION([no-dependencies],, 567 570 [AC_PROVIDE_IFELSE([AC_PROG_CC], 568 [_AM_DEPENDENCIES( [CC])],569 [ m4_define([AC_PROG_CC],570 m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl571 [_AM_DEPENDENCIES(CC)], 572 [define([AC_PROG_CC], 573 defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl 571 574 AC_PROVIDE_IFELSE([AC_PROG_CXX], 572 [_AM_DEPENDENCIES( [CXX])],573 [ m4_define([AC_PROG_CXX],574 m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl575 [_AM_DEPENDENCIES(CXX)], 576 [define([AC_PROG_CXX], 577 defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl 575 578 AC_PROVIDE_IFELSE([AC_PROG_OBJC], 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. 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. 588 587 AC_CONFIG_COMMANDS_PRE(dnl 589 588 [m4_provide_if([_AM_COMPILER_EXEEXT], 590 589 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl 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 590 ]) 591 592 dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not 639 593 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further 640 594 dnl mangled by Autoconf and run in a shell conditional statement. 641 595 m4_define([_AC_COMPILER_EXEEXT], 642 596 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) 597 643 598 644 599 # When config.status generates a header, we must update the stamp-h file. … … 663 618 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) 664 619 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. 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 670 628 671 629 # AM_PROG_INSTALL_SH … … 674 632 AC_DEFUN([AM_PROG_INSTALL_SH], 675 633 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 676 if test x"${install_sh +set}" != xset; then634 if test x"${install_sh}" != xset; then 677 635 case $am_aux_dir in 678 636 *\ * | *\ *) … … 682 640 esac 683 641 fi 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. 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 691 651 692 652 # Check whether the underlying file-system supports filenames … … 706 666 # From Jim Meyering 707 667 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. 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 713 676 714 677 # AM_MAINTAINER_MODE([DEFAULT-MODE]) 715 678 # ---------------------------------- 716 679 # Control maintainer-specific portions of Makefiles. 717 # Default is to disable them, unless 'enable' is passed literally.718 # For symmetry, 'disable' may be passed as well. Anyway, the user680 # Default is to disable them, unless `enable' is passed literally. 681 # For symmetry, `disable' may be passed as well. Anyway, the user 719 682 # can override the default with the --enable/--disable switch. 720 683 AC_DEFUN([AM_MAINTAINER_MODE], … … 727 690 dnl maintainer-mode's default is 'disable' unless 'enable' is passed 728 691 AC_ARG_ENABLE([maintainer-mode], 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])) 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])) 734 696 AC_MSG_RESULT([$USE_MAINTAINER_MODE]) 735 697 AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) … … 739 701 ) 740 702 703 AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) 704 741 705 # Check to see how 'make' treats includes. -*- Autoconf -*- 742 706 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. 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 748 714 749 715 # AM_MAKE_INCLUDE() … … 764 730 # First try GNU make style include. 765 731 echo "include confinc" > confmf 766 # Ignore all kinds of additional output from 'make'.732 # Ignore all kinds of additional output from `make'. 767 733 case `$am_make -s -f confmf 2> /dev/null` in #( 768 734 *the\ am__doit\ target*) … … 789 755 ]) 790 756 757 # Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 758 # Free Software Foundation, Inc. 759 # 760 # This file is free software; the Free Software Foundation 761 # gives unlimited permission to copy and/or distribute it, 762 # with or without modifications, as long as this notice is preserved. 763 764 # serial 6 765 766 # AM_PROG_CC_C_O 767 # -------------- 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])dnl 771 AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 772 AC_REQUIRE_AUX_FILE([compile])dnl 773 # FIXME: we rely on the cache variable name because 774 # there is no other way. 775 set dummy $CC 776 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_o 778 if test "$am_t" != yes; then 779 # 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 fi 786 dnl Make sure AC_PROG_CC is never called again, or it will override our 787 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 791 792 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- 792 793 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. 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 798 802 799 803 # AM_MISSING_PROG(NAME, PROGRAM) … … 804 808 AC_SUBST($1)]) 805 809 810 806 811 # AM_MISSING_HAS_RUN 807 812 # ------------------ 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.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. 810 815 AC_DEFUN([AM_MISSING_HAS_RUN], 811 816 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl … … 820 825 fi 821 826 # Use eval to expand $SHELL 822 if eval "$MISSING -- is-lightweight"; then823 am_missing_run="$MISSING "827 if eval "$MISSING --run true"; then 828 am_missing_run="$MISSING --run " 824 829 else 825 830 am_missing_run= 826 AC_MSG_WARN(['missing' script is too old or missing]) 827 fi 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 828 862 ]) 829 863 830 864 # Helper functions for option handling. -*- Autoconf -*- 831 865 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. 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 837 874 838 875 # _AM_MANGLE_OPTION(NAME) … … 845 882 # Set option NAME. Presently that only means defining a flag for this option. 846 883 AC_DEFUN([_AM_SET_OPTION], 847 [m4_define(_AM_MANGLE_OPTION([$1]), [1])])884 [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) 848 885 849 886 # _AM_SET_OPTIONS(OPTIONS) … … 859 896 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) 860 897 861 # Copyright (C) 1999-2014 Free Software Foundation, Inc.862 #863 # This file is free software; the Free Software Foundation864 # 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_O868 # ---------------869 # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC870 # to automatically call this.871 AC_DEFUN([_AM_PROG_CC_C_O],872 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl873 AC_REQUIRE_AUX_FILE([compile])dnl874 AC_LANG_PUSH([C])dnl875 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 some881 # compilers refuse to overwrite an existing .o file with -o,882 # though they will create one.883 am_cv_prog_cc_c_o=yes884 for am_i in 1 2; do885 if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \886 && test -f conftest2.$ac_objext; then887 : OK888 else889 am_cv_prog_cc_c_o=no890 break891 fi892 done893 rm -f core conftest*894 unset am_i])895 if test "$am_cv_prog_cc_c_o" != yes; then896 # 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 fi903 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 Foundation911 # 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_FD920 ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD921 ac_status=$?922 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD923 (exit $ac_status); }])924 925 898 # Check to make sure that the build environment is sane. -*- Autoconf -*- 926 899 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. 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 932 908 933 909 # AM_SANITY_CHECK … … 935 911 AC_DEFUN([AM_SANITY_CHECK], 936 912 [AC_MSG_CHECKING([whether build environment is sane]) 913 # Just in case 914 sleep 1 915 echo timestamp > conftest.file 937 916 # Reject unsafe characters in $srcdir or the absolute working directory 938 917 # name. Accept space and tab only in the latter. … … 945 924 case $srcdir in 946 925 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) 947 AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;926 AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; 948 927 esac 949 928 950 # Do 'set' in a subshell so we don't clobber the current shell's929 # Do `set' in a subshell so we don't clobber the current shell's 951 930 # arguments. Must try -L first in case configure is actually a 952 931 # symlink; some systems play weird games with the mod time of symlinks … … 954 933 # directory). 955 934 if ( 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 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 981 952 test "$[2]" = conftest.file 982 953 ) … … 988 959 Check your system clock]) 989 960 fi 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. 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 1013 970 1014 971 # AM_SILENT_RULES([DEFAULT]) 1015 972 # -------------------------- 1016 973 # Enable less verbose build rules; with the default set to DEFAULT 1017 # ( "yes" being less verbose, "no"or empty being verbose).974 # (`yes' being less verbose, `no' or empty being verbose). 1018 975 AC_DEFUN([AM_SILENT_RULES], 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]);; 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]);; 1031 983 esac 1032 984 dnl 1033 dnl A few 'make' implementations (e.g., NonStop OS and NextStep)985 dnl A few `make' implementations (e.g., NonStop OS and NextStep) 1034 986 dnl do not support nested variable expansions. 1035 987 dnl See automake bug#9928 and bug#10237. … … 1049 1001 fi]) 1050 1002 if test $am_cv_make_support_nested_variables = yes; then 1051 dnl Using '$V' instead of '$(V)' breaks IRIX make.1003 dnl Using `$V' instead of `$(V)' breaks IRIX make. 1052 1004 AM_V='$(V)' 1053 1005 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' … … 1066 1018 ]) 1067 1019 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. 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 1073 1027 1074 1028 # AM_PROG_INSTALL_STRIP 1075 1029 # --------------------- 1076 # One issue with vendor 'install' (even GNU) is that you can't1030 # One issue with vendor `install' (even GNU) is that you can't 1077 1031 # specify the program used to strip binaries. This is especially 1078 1032 # annoying in cross-compiling environments, where the build's strip 1079 1033 # is unlikely to handle the host's binaries. 1080 1034 # Fortunately install-sh will honor a STRIPPROG variable, so we 1081 # always use install-sh in "make install-strip", and initialize1035 # always use install-sh in `make install-strip', and initialize 1082 1036 # STRIPPROG with the value of the STRIP variable (set by the user). 1083 1037 AC_DEFUN([AM_PROG_INSTALL_STRIP], 1084 1038 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl 1085 # Installed binaries are usually stripped using 'strip' when the user1086 # run "make install-strip". However 'strip' might not be the right1039 # Installed binaries are usually stripped using `strip' when the user 1040 # run `make install-strip'. However `strip' might not be the right 1087 1041 # tool to use in cross-compilation environments, therefore Automake 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'.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'. 1090 1044 if test "$cross_compiling" != no; then 1091 1045 AC_CHECK_TOOL([STRIP], [strip], :) … … 1094 1048 AC_SUBST([INSTALL_STRIP_PROGRAM])]) 1095 1049 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. 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 1101 1057 1102 1058 # _AM_SUBST_NOTMAKE(VARIABLE) … … 1113 1069 # Check how to create a tarball. -*- Autoconf -*- 1114 1070 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. 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 1120 1078 1121 1079 # _AM_PROG_TAR(FORMAT) 1122 1080 # -------------------- 1123 1081 # Check how to create a tarball in format FORMAT. 1124 # FORMAT should be one of 'v7', 'ustar', or 'pax'.1082 # FORMAT should be one of `v7', `ustar', or `pax'. 1125 1083 # 1126 1084 # Substitute a variable $(am__tar) that is a command … … 1132 1090 # a tarball read from stdin. 1133 1091 # $(am__untar) < result.tar 1134 #1135 1092 AC_DEFUN([_AM_PROG_TAR], 1136 1093 [# Always define AMTAR for backward compatibility. Yes, it's still used 1137 1094 # in the wild :-( We should find a proper way to deprecate it ... 1138 1095 AC_SUBST([AMTAR], ['$${TAR-tar}']) 1139 1140 # We'll loop over all known methods to create a tar archive until one works. 1096 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. 1141 1102 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' 1142 1143 m4_if([$1], [v7], 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 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 1237 1148 rm -rf conftest.dir 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 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])]) 1242 1162 AC_SUBST([am__tar]) 1243 1163 AC_SUBST([am__untar]) -
automake/config.guess
r208e5be rb1e63ac5 1 /usr/share/automake-1.1 5/config.guess1 /usr/share/automake-1.11/config.guess -
automake/config.sub
r208e5be rb1e63ac5 1 /usr/share/automake-1.1 5/config.sub1 /usr/share/automake-1.11/config.sub -
automake/missing
r208e5be rb1e63ac5 1 1 #! /bin/sh 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. 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. 8 9 9 10 # This program is free software; you can redistribute it and/or modify … … 26 27 27 28 if test $# -eq 0; then 28 echo 1>&2 "Try '$0 --help' for more information"29 echo 1>&2 "Try \`$0 --help' for more information" 29 30 exit 1 30 31 fi 31 32 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 the 38 # srcdir already. 39 if test -f configure.ac; then 40 configure_ac=configure.ac 41 else 42 configure_ac=configure.in 43 fi 44 45 msg="missing on your system" 46 32 47 case $1 in 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 ;; 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 ;; 44 63 45 64 -h|--h|--he|--hel|--help) … … 47 66 $0 [OPTION]... PROGRAM [ARGUMENT]... 48 67 49 Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due 50 to PROGRAM being missing or too old.68 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an 69 error status if there is no known handling for PROGRAM. 51 70 52 71 Options: 53 72 -h, --help display this help and exit 54 73 -v, --version output version information and exit 74 --run try to run the given command, and emulate it if it fails 55 75 56 76 Supported PROGRAM values: 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. 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. 62 91 63 92 Send bug reports to <bug-automake@gnu.org>." … … 71 100 72 101 -*) 73 echo 1>&2 "$0: unknown '$1' option"74 echo 1>&2 "Try '$0 --help' for more information"102 echo 1>&2 "$0: Unknown \`$1' option" 103 echo 1>&2 "Try \`$0 --help' for more information" 75 104 exit 1 76 105 ;; … … 78 107 esac 79 108 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 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 208 324 209 325 # Local variables: -
config.h.in
r208e5be rb1e63ac5 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_O 122 125 123 126 /* Name of package */ -
configure
r208e5be rb1e63ac5 1 1 #! /bin/sh 2 2 # Guess values for system-dependent variables and create Makefiles. 3 # Generated by GNU Autoconf 2.6 9for cfa-cc 1.0.0.0.3 # Generated by GNU Autoconf 2.68 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-1996, 1998-2012 Free Software Foundation, Inc. 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. 9 11 # 10 12 # … … 135 137 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH 136 138 137 # Use a proper internal environment variable to ensure we don't fall138 # into an infinite loop, continuously re-executing ourselves.139 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then140 _as_can_reexec=no; export _as_can_reexec;141 # We cannot yet assume a decent shell, so we have to provide a142 # neutralization value for shells without unset; and this also143 # works around shells that cannot unset nonexistent variables.144 # Preserve -v and -x to the replacement shell.145 BASH_ENV=/dev/null146 ENV=/dev/null147 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV148 case $- in # ((((149 *v*x* | *x*v* ) as_opts=-vx ;;150 *v* ) as_opts=-v ;;151 *x* ) as_opts=-x ;;152 * ) as_opts= ;;153 esac154 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}155 # Admittedly, this is quite paranoid, since all the known shells bail156 # out after a failed `exec'.157 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2158 as_fn_exit 255159 fi160 # We don't want this to propagate to other subprocesses.161 { _as_can_reexec=; unset _as_can_reexec;}162 139 if test "x$CONFIG_SHELL" = x; then 163 140 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : … … 193 170 exitcode=1; echo positional parameters were not saved. 194 171 fi 195 test x\$exitcode = x0 || exit 1 196 test -x / || exit 1" 172 test x\$exitcode = x0 || exit 1" 197 173 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO 198 174 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO … … 239 215 240 216 if test "x$CONFIG_SHELL" != x; then : 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 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+"$@"} 260 232 fi 261 233 … … 360 332 361 333 } # as_fn_mkdir_p 362 363 # as_fn_executable_p FILE364 # -----------------------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_p370 334 # as_fn_append VAR VALUE 371 335 # ---------------------- … … 489 453 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } 490 454 491 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have492 # already done that, so ensure we don't try to do so again and fall493 # in an infinite loop. This has already happened in practice.494 _as_can_reexec=no; export _as_can_reexec495 455 # Don't try to exec as it changes $[0], causing all sort of problems 496 456 # (the dirname of $[0] is not the place where we might find the … … 527 487 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 528 488 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 529 # In both cases, we have to default to `cp -p R'.489 # In both cases, we have to default to `cp -p'. 530 490 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 531 as_ln_s='cp -p R'491 as_ln_s='cp -p' 532 492 elif ln conf$$.file conf$$ 2>/dev/null; then 533 493 as_ln_s=ln 534 494 else 535 as_ln_s='cp -p R'495 as_ln_s='cp -p' 536 496 fi 537 497 else 538 as_ln_s='cp -p R'498 as_ln_s='cp -p' 539 499 fi 540 500 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file … … 548 508 fi 549 509 550 as_test_x='test -x' 551 as_executable_p=as_fn_executable_p 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 552 532 553 533 # Sed expression to map a string onto a valid CPP name. … … 738 718 oldincludedir 739 719 includedir 740 runstatedir741 720 localstatedir 742 721 sharedstatedir … … 824 803 sharedstatedir='${prefix}/com' 825 804 localstatedir='${prefix}/var' 826 runstatedir='${localstatedir}/run'827 805 includedir='${prefix}/include' 828 806 oldincludedir='/usr/include' … … 1077 1055 silent=yes ;; 1078 1056 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 1088 1057 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) 1089 1058 ac_prev=sbindir ;; … … 1223 1192 datadir sysconfdir sharedstatedir localstatedir includedir \ 1224 1193 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ 1225 libdir localedir mandir runstatedir1194 libdir localedir mandir 1226 1195 do 1227 1196 eval ac_val=\$$ac_var … … 1251 1220 if test "x$build_alias" = x; then 1252 1221 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" >&2 1253 1224 elif test "x$build_alias" != "x$host_alias"; then 1254 1225 cross_compiling=yes … … 1376 1347 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1377 1348 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 1378 --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]1379 1349 --libdir=DIR object code libraries [EPREFIX/lib] 1380 1350 --includedir=DIR C header files [PREFIX/include] … … 1415 1385 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) 1416 1386 --enable-FEATURE[=ARG] include FEATURE [ARG=yes] 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 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 1422 1391 --enable-target-release Build and install the release target 1423 1392 --enable-target-debug Build and install the debug target 1424 1393 --enable-threading Build and install libcfa with threading support 1425 1394 (Enabled by default) 1426 --enable-dependency-tracking 1427 do not reject slow dependency extractors 1428 --disable-dependency-tracking 1429 speeds up one-time build 1395 --disable-dependency-tracking speeds up one-time build 1396 --enable-dependency-tracking do not reject slow dependency extractors 1430 1397 1431 1398 Optional Packages: … … 1522 1489 cat <<\_ACEOF 1523 1490 cfa-cc configure 1.0.0.0 1524 generated by GNU Autoconf 2.6 91525 1526 Copyright (C) 201 2Free Software Foundation, Inc.1491 generated by GNU Autoconf 2.68 1492 1493 Copyright (C) 2010 Free Software Foundation, Inc. 1527 1494 This configure script is free software; the Free Software Foundation 1528 1495 gives unlimited permission to copy, distribute and modify it. … … 1638 1605 } && test -s conftest$ac_exeext && { 1639 1606 test "$cross_compiling" = yes || 1640 test -x conftest$ac_exeext1607 $as_test_x conftest$ac_exeext 1641 1608 }; then : 1642 1609 ac_retval=0 … … 2004 1971 { 2005 1972 static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; 2006 test_array [0] = 0; 2007 return test_array [0]; 1973 test_array [0] = 0 2008 1974 2009 1975 ; … … 2021 1987 static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) 2022 1988 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; 2023 test_array [0] = 0; 2024 return test_array [0]; 1989 test_array [0] = 0 2025 1990 2026 1991 ; … … 2079 2044 { 2080 2045 static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; 2081 test_array [0] = 0; 2082 return test_array [0]; 2046 test_array [0] = 0 2083 2047 2084 2048 ; … … 2113 2077 2114 2078 It was created by cfa-cc $as_me 1.0.0.0, which was 2115 generated by GNU Autoconf 2.6 9. Invocation command line was2079 generated by GNU Autoconf 2.68. Invocation command line was 2116 2080 2117 2081 $ $0 $@ … … 2497 2461 fi 2498 2462 2499 case $enable_silent_rules in # (((2500 yes) AM_DEFAULT_VERBOSITY=0;;2501 no)AM_DEFAULT_VERBOSITY=1;;2502 *)AM_DEFAULT_VERBOSITY=1;;2463 case $enable_silent_rules in 2464 yes) AM_DEFAULT_VERBOSITY=0;; 2465 no) AM_DEFAULT_VERBOSITY=1;; 2466 *) AM_DEFAULT_VERBOSITY=1;; 2503 2467 esac 2504 2468 am_make=${MAKE-make} … … 2532 2496 2533 2497 2534 am__api_version='1.1 5'2498 am__api_version='1.11' 2535 2499 2536 2500 # Find a good install program. We prefer a C program (faster), … … 2571 2535 for ac_prog in ginstall scoinst install; do 2572 2536 for ac_exec_ext in '' $ac_executable_extensions; do 2573 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then2537 if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then 2574 2538 if test $ac_prog = install && 2575 2539 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then … … 2629 2593 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 2630 2594 $as_echo_n "checking whether build environment is sane... " >&6; } 2595 # Just in case 2596 sleep 1 2597 echo timestamp > conftest.file 2631 2598 # Reject unsafe characters in $srcdir or the absolute working directory 2632 2599 # name. Accept space and tab only in the latter. … … 2639 2606 case $srcdir in 2640 2607 *[\\\"\#\$\&\'\`$am_lf\ \ ]*) 2641 as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;2608 as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; 2642 2609 esac 2643 2610 2644 # Do 'set' in a subshell so we don't clobber the current shell's2611 # Do `set' in a subshell so we don't clobber the current shell's 2645 2612 # arguments. Must try -L first in case configure is actually a 2646 2613 # symlink; some systems play weird games with the mod time of symlinks … … 2648 2615 # directory). 2649 2616 if ( 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 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 2675 2634 test "$2" = conftest.file 2676 2635 ) … … 2684 2643 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 2685 2644 $as_echo "yes" >&6; } 2686 # If we didn't sleep, we still need to ensure time stamps of config.status and2687 # generated files are strictly newer.2688 am_sleep_pid=2689 if grep 'slept: no' conftest.file >/dev/null 2>&1; then2690 ( sleep 1 ) &2691 am_sleep_pid=$!2692 fi2693 2694 rm -f conftest.file2695 2696 2645 test "$program_prefix" != NONE && 2697 2646 program_transform_name="s&^&$program_prefix&;$program_transform_name" … … 2704 2653 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` 2705 2654 2706 # Expand $ac_aux_dir to an absolute path.2707 am_aux_dir=`cd "$ac_aux_dir"&& pwd`2655 # expand $ac_aux_dir to an absolute path 2656 am_aux_dir=`cd $ac_aux_dir && pwd` 2708 2657 2709 2658 if test x"${MISSING+set}" != xset; then … … 2716 2665 fi 2717 2666 # Use eval to expand $SHELL 2718 if eval "$MISSING -- is-lightweight"; then2719 am_missing_run="$MISSING "2667 if eval "$MISSING --run true"; then 2668 am_missing_run="$MISSING --run " 2720 2669 else 2721 2670 am_missing_run= 2722 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&52723 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}2724 fi 2725 2726 if test x"${install_sh +set}" != xset; then2671 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 2672 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} 2673 fi 2674 2675 if test x"${install_sh}" != xset; then 2727 2676 case $am_aux_dir in 2728 2677 *\ * | *\ *) … … 2733 2682 fi 2734 2683 2735 # Installed binaries are usually stripped using 'strip' when the user2736 # run "make install-strip". However 'strip' might not be the right2684 # Installed binaries are usually stripped using `strip' when the user 2685 # run `make install-strip'. However `strip' might not be the right 2737 2686 # tool to use in cross-compilation environments, therefore Automake 2738 # will honor the 'STRIP' environment variable to overrule this program.2687 # will honor the `STRIP' environment variable to overrule this program. 2739 2688 if test "$cross_compiling" != no; then 2740 2689 if test -n "$ac_tool_prefix"; then … … 2755 2704 test -z "$as_dir" && as_dir=. 2756 2705 for ac_exec_ext in '' $ac_executable_extensions; do 2757 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then2706 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2758 2707 ac_cv_prog_STRIP="${ac_tool_prefix}strip" 2759 2708 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 2795 2744 test -z "$as_dir" && as_dir=. 2796 2745 for ac_exec_ext in '' $ac_executable_extensions; do 2797 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then2746 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2798 2747 ac_cv_prog_ac_ct_STRIP="strip" 2799 2748 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 2846 2795 for ac_prog in mkdir gmkdir; do 2847 2796 for ac_exec_ext in '' $ac_executable_extensions; do 2848 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"|| continue2797 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue 2849 2798 case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 2850 2799 'mkdir (GNU coreutils) '* | \ … … 2875 2824 $as_echo "$MKDIR_P" >&6; } 2876 2825 2826 mkdir_p="$MKDIR_P" 2827 case $mkdir_p in 2828 [\\/$]* | ?:[\\/]*) ;; 2829 */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; 2830 esac 2831 2877 2832 for ac_prog in gawk mawk nawk awk 2878 2833 do … … 2893 2848 test -z "$as_dir" && as_dir=. 2894 2849 for ac_exec_ext in '' $ac_executable_extensions; do 2895 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then2850 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2896 2851 ac_cv_prog_AWK="$ac_prog" 2897 2852 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 3007 2962 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} 3008 2963 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. 2964 # We need awk for the "check" target. The system "awk" is bad on 2965 # some platforms. 3017 2966 # Always define AMTAR for backward compatibility. Yes, it's still used 3018 2967 # in the wild :-( We should find a proper way to deprecate it ... 3019 2968 AMTAR='$${TAR-tar}' 3020 2969 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 3025 2970 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' 3026 2971 … … 3028 2973 3029 2974 3030 3031 3032 # POSIX will say in a future version that running "rm -f" with no argument3033 # is OK; and we want to be able to make that assumption in our Makefile3034 # recipes. So use an aggressive probe to check that the usage we want is3035 # 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 aborted3038 # by default if the 'rm' program in use doesn't match our expectations; the3039 # user can still override this though.3040 if rm -f && rm -fr && rm -rf; then : OK; else3041 cat >&2 <<'END'3042 Oops!3043 3044 Your 'rm' program seems unable to run without file operands specified3045 on the command line, even when the '-f' option is present. This is contrary3046 to the behaviour of most rm programs out there, and not conforming with3047 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>3048 3049 Please tell bug-automake@gnu.org about your system, including the value3050 of your $PATH and any error possibly output before this message. This3051 can help us improve future automake versions.3052 3053 END3054 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then3055 echo 'Configuration will proceed anyway, since you have set the' >&23056 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&23057 echo >&23058 else3059 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' implementation3063 that behaves properly: <http://www.gnu.org/software/coreutils/>.3064 3065 If you want to complete the configuration process using your problematic3066 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM3067 to "yes", and re-run configure.3068 3069 END3070 as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 53071 fi3072 fi3073 2975 3074 2976 … … 3200 3102 test -z "$as_dir" && as_dir=. 3201 3103 for ac_exec_ext in '' $ac_executable_extensions; do 3202 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then3104 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 3203 3105 ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext" 3204 3106 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 3528 3430 test -z "$as_dir" && as_dir=. 3529 3431 for ac_exec_ext in '' $ac_executable_extensions; do 3530 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then3432 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 3531 3433 ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" 3532 3434 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 3572 3474 test -z "$as_dir" && as_dir=. 3573 3475 for ac_exec_ext in '' $ac_executable_extensions; do 3574 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then3476 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 3575 3477 ac_cv_prog_ac_ct_CXX="$ac_prog" 3576 3478 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4025 3927 # First try GNU make style include. 4026 3928 echo "include confinc" > confmf 4027 # Ignore all kinds of additional output from 'make'.3929 # Ignore all kinds of additional output from `make'. 4028 3930 case `$am_make -s -f confmf 2> /dev/null` in #( 4029 3931 *the\ am__doit\ target*) … … 4081 3983 # making bogus files that we don't know about and never remove. For 4082 3984 # instance it was reported that on HP-UX the gcc test will end up 4083 # making a dummy file named 'D' -- because '-MD' means "put the output4084 # in D ".3985 # making a dummy file named `D' -- because `-MD' means `put the output 3986 # in D'. 4085 3987 rm -rf conftest.dir 4086 3988 mkdir conftest.dir … … 4117 4019 for i in 1 2 3 4 5 6; do 4118 4020 echo '#include "conftst'$i'.h"' >> sub/conftest.c 4119 # Using ": > sub/conftst$i.h"creates only sub/conftst1.h with4120 # Solaris 10/bin/sh.4121 echo '/* dummy */' >sub/conftst$i.h4021 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with 4022 # Solaris 8's {/usr,}/bin/sh. 4023 touch sub/conftst$i.h 4122 4024 done 4123 4025 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 4124 4026 4125 # We check with '-c' and '-o' for the sake of the "dashmstdout"4027 # We check with `-c' and `-o' for the sake of the "dashmstdout" 4126 4028 # mode. It turns out that the SunPro C++ compiler does not properly 4127 # handle '-M -o', and we need to detect this. Also, some Intel4128 # versions had trouble with output in subdirs .4029 # handle `-M -o', and we need to detect this. Also, some Intel 4030 # versions had trouble with output in subdirs 4129 4031 am__obj=sub/conftest.${OBJEXT-o} 4130 4032 am__minus_obj="-o $am__obj" … … 4135 4037 ;; 4136 4038 nosideeffect) 4137 # After this tag, mechanisms are not by side-effect, so they'll4138 # only be used when explicitly requested .4039 # after this tag, mechanisms are not by side-effect, so they'll 4040 # only be used when explicitly requested 4139 4041 if test "x$enable_dependency_tracking" = xyes; then 4140 4042 continue … … 4144 4046 ;; 4145 4047 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 4146 # This compiler won't grok '-c -o', but also, the minuso test has4048 # This compiler won't grok `-c -o', but also, the minuso test has 4147 4049 # not run yet. These depmodes are late enough in the game, and 4148 4050 # so weak that their functioning should not be impacted. … … 4220 4122 test -z "$as_dir" && as_dir=. 4221 4123 for ac_exec_ext in '' $ac_executable_extensions; do 4222 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then4124 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4223 4125 ac_cv_prog_CC="${ac_tool_prefix}gcc" 4224 4126 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4260 4162 test -z "$as_dir" && as_dir=. 4261 4163 for ac_exec_ext in '' $ac_executable_extensions; do 4262 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then4164 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4263 4165 ac_cv_prog_ac_ct_CC="gcc" 4264 4166 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4313 4215 test -z "$as_dir" && as_dir=. 4314 4216 for ac_exec_ext in '' $ac_executable_extensions; do 4315 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then4217 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4316 4218 ac_cv_prog_CC="${ac_tool_prefix}cc" 4317 4219 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4354 4256 test -z "$as_dir" && as_dir=. 4355 4257 for ac_exec_ext in '' $ac_executable_extensions; do 4356 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then4258 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4357 4259 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then 4358 4260 ac_prog_rejected=yes … … 4412 4314 test -z "$as_dir" && as_dir=. 4413 4315 for ac_exec_ext in '' $ac_executable_extensions; do 4414 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then4316 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4415 4317 ac_cv_prog_CC="$ac_tool_prefix$ac_prog" 4416 4318 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4456 4358 test -z "$as_dir" && as_dir=. 4457 4359 for ac_exec_ext in '' $ac_executable_extensions; do 4458 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then4360 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4459 4361 ac_cv_prog_ac_ct_CC="$ac_prog" 4460 4362 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 4652 4554 #include <stdarg.h> 4653 4555 #include <stdio.h> 4654 struct stat; 4556 #include <sys/types.h> 4557 #include <sys/stat.h> 4655 4558 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ 4656 4559 struct buf { int x; }; … … 4737 4640 ac_compiler_gnu=$ac_cv_c_compiler_gnu 4738 4641 4739 ac_ext=c4740 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_gnu4744 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&54745 $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) " >&64748 else4749 cat confdefs.h - <<_ACEOF >conftest.$ac_ext4750 /* end confdefs.h. */4751 4752 int4753 main ()4754 {4755 4756 ;4757 return 0;4758 }4759 _ACEOF4760 # Make sure it works both with $CC and with simple cc.4761 # Following AC_PROG_CC_C_O, we do the test twice because some4762 # compilers refuse to overwrite an existing .o file with -o,4763 # though they will create one.4764 am_cv_prog_cc_c_o=yes4765 for am_i in 1 2; do4766 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&54767 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&54768 ac_status=$?4769 echo "$as_me:$LINENO: \$? = $ac_status" >&54770 (exit $ac_status); } \4771 && test -f conftest2.$ac_objext; then4772 : OK4773 else4774 am_cv_prog_cc_c_o=no4775 break4776 fi4777 done4778 rm -f core conftest*4779 unset am_i4780 fi4781 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&54782 $as_echo "$am_cv_prog_cc_c_o" >&6; }4783 if test "$am_cv_prog_cc_c_o" != yes; then4784 # 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 fi4791 ac_ext=c4792 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_gnu4796 4797 4798 4642 depcc="$CC" am_compiler_list= 4799 4643 … … 4807 4651 # making bogus files that we don't know about and never remove. For 4808 4652 # instance it was reported that on HP-UX the gcc test will end up 4809 # making a dummy file named 'D' -- because '-MD' means "put the output4810 # in D ".4653 # making a dummy file named `D' -- because `-MD' means `put the output 4654 # in D'. 4811 4655 rm -rf conftest.dir 4812 4656 mkdir conftest.dir … … 4843 4687 for i in 1 2 3 4 5 6; do 4844 4688 echo '#include "conftst'$i'.h"' >> sub/conftest.c 4845 # Using ": > sub/conftst$i.h"creates only sub/conftst1.h with4846 # Solaris 10/bin/sh.4847 echo '/* dummy */' >sub/conftst$i.h4689 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with 4690 # Solaris 8's {/usr,}/bin/sh. 4691 touch sub/conftst$i.h 4848 4692 done 4849 4693 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 4850 4694 4851 # We check with '-c' and '-o' for the sake of the "dashmstdout"4695 # We check with `-c' and `-o' for the sake of the "dashmstdout" 4852 4696 # mode. It turns out that the SunPro C++ compiler does not properly 4853 # handle '-M -o', and we need to detect this. Also, some Intel4854 # versions had trouble with output in subdirs .4697 # handle `-M -o', and we need to detect this. Also, some Intel 4698 # versions had trouble with output in subdirs 4855 4699 am__obj=sub/conftest.${OBJEXT-o} 4856 4700 am__minus_obj="-o $am__obj" … … 4861 4705 ;; 4862 4706 nosideeffect) 4863 # After this tag, mechanisms are not by side-effect, so they'll4864 # only be used when explicitly requested .4707 # after this tag, mechanisms are not by side-effect, so they'll 4708 # only be used when explicitly requested 4865 4709 if test "x$enable_dependency_tracking" = xyes; then 4866 4710 continue … … 4870 4714 ;; 4871 4715 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 4872 # This compiler won't grok '-c -o', but also, the minuso test has4716 # This compiler won't grok `-c -o', but also, the minuso test has 4873 4717 # not run yet. These depmodes are late enough in the game, and 4874 4718 # so weak that their functioning should not be impacted. … … 4942 4786 # making bogus files that we don't know about and never remove. For 4943 4787 # instance it was reported that on HP-UX the gcc test will end up 4944 # making a dummy file named 'D' -- because '-MD' means "put the output4945 # in D ".4788 # making a dummy file named `D' -- because `-MD' means `put the output 4789 # in D'. 4946 4790 rm -rf conftest.dir 4947 4791 mkdir conftest.dir … … 4976 4820 for i in 1 2 3 4 5 6; do 4977 4821 echo '#include "conftst'$i'.h"' >> sub/conftest.c 4978 # Using ": > sub/conftst$i.h"creates only sub/conftst1.h with4979 # Solaris 10/bin/sh.4980 echo '/* dummy */' >sub/conftst$i.h4822 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with 4823 # Solaris 8's {/usr,}/bin/sh. 4824 touch sub/conftst$i.h 4981 4825 done 4982 4826 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 4983 4827 4984 # We check with '-c' and '-o' for the sake of the "dashmstdout"4828 # We check with `-c' and `-o' for the sake of the "dashmstdout" 4985 4829 # mode. It turns out that the SunPro C++ compiler does not properly 4986 # handle '-M -o', and we need to detect this. Also, some Intel4987 # versions had trouble with output in subdirs .4830 # handle `-M -o', and we need to detect this. Also, some Intel 4831 # versions had trouble with output in subdirs 4988 4832 am__obj=sub/conftest.${OBJEXT-o} 4989 4833 am__minus_obj="-o $am__obj" … … 4994 4838 ;; 4995 4839 nosideeffect) 4996 # After this tag, mechanisms are not by side-effect, so they'll4997 # only be used when explicitly requested .4840 # after this tag, mechanisms are not by side-effect, so they'll 4841 # only be used when explicitly requested 4998 4842 if test "x$enable_dependency_tracking" = xyes; then 4999 4843 continue … … 5003 4847 ;; 5004 4848 msvc7 | msvc7msys | msvisualcpp | msvcmsys) 5005 # This compiler won't grok '-c -o', but also, the minuso test has4849 # This compiler won't grok `-c -o', but also, the minuso test has 5006 4850 # not run yet. These depmodes are late enough in the game, and 5007 4851 # so weak that their functioning should not be impacted. … … 5057 4901 5058 4902 4903 if test "x$CC" != xcc; then 4904 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 4905 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } 4906 else 4907 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 4908 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } 4909 fi 4910 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) " >&6 4914 else 4915 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 4916 /* end confdefs.h. */ 4917 4918 int 4919 main () 4920 { 4921 4922 ; 4923 return 0; 4924 } 4925 _ACEOF 4926 # Make sure it works both with $CC and with simple cc. 4927 # We do the test twice because some compilers refuse to overwrite an 4928 # 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" in 4932 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 4933 *) ac_try_echo=$ac_try;; 4934 esac 4935 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 4936 $as_echo "$ac_try_echo"; } >&5 4937 (eval "$ac_try") 2>&5 4938 ac_status=$? 4939 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 4940 test $ac_status = 0; } && 4941 test -f conftest2.$ac_objext && { { case "(($ac_try" in 4942 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 4943 *) ac_try_echo=$ac_try;; 4944 esac 4945 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 4946 $as_echo "$ac_try_echo"; } >&5 4947 (eval "$ac_try") 2>&5 4948 ac_status=$? 4949 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 4950 test $ac_status = 0; }; 4951 then 4952 eval ac_cv_prog_cc_${ac_cc}_c_o=yes 4953 if test "x$CC" != xcc; then 4954 # Test first that cc exists at all. 4955 if { ac_try='cc -c conftest.$ac_ext >&5' 4956 { { case "(($ac_try" in 4957 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 4958 *) ac_try_echo=$ac_try;; 4959 esac 4960 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 4961 $as_echo "$ac_try_echo"; } >&5 4962 (eval "$ac_try") 2>&5 4963 ac_status=$? 4964 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 4965 test $ac_status = 0; }; }; then 4966 ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' 4967 rm -f conftest2.* 4968 if { { case "(($ac_try" in 4969 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 4970 *) ac_try_echo=$ac_try;; 4971 esac 4972 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 4973 $as_echo "$ac_try_echo"; } >&5 4974 (eval "$ac_try") 2>&5 4975 ac_status=$? 4976 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 4977 test $ac_status = 0; } && 4978 test -f conftest2.$ac_objext && { { case "(($ac_try" in 4979 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 4980 *) ac_try_echo=$ac_try;; 4981 esac 4982 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 4983 $as_echo "$ac_try_echo"; } >&5 4984 (eval "$ac_try") 2>&5 4985 ac_status=$? 4986 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 4987 test $ac_status = 0; }; 4988 then 4989 # cc works too. 4990 : 4991 else 4992 # cc exists but doesn't like -o. 4993 eval ac_cv_prog_cc_${ac_cc}_c_o=no 4994 fi 4995 fi 4996 fi 4997 else 4998 eval ac_cv_prog_cc_${ac_cc}_c_o=no 4999 fi 5000 rm -f core conftest* 5001 5002 fi 5003 if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then 5004 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 5005 $as_echo "yes" >&6; } 5006 else 5007 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5008 $as_echo "no" >&6; } 5009 5010 $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h 5011 5012 fi 5013 5014 # FIXME: we rely on the cache variable name because 5015 # there is no other way. 5016 set dummy $CC 5017 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_o 5019 if test "$am_t" != yes; then 5020 # 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 fi 5027 5059 5028 # deprecated 5060 5029 # These are often not installed and people miss seeing the "no", so stop the configure. … … 5077 5046 test -z "$as_dir" && as_dir=. 5078 5047 for ac_exec_ext in '' $ac_executable_extensions; do 5079 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then5048 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5080 5049 ac_cv_prog_YACC="$ac_prog" 5081 5050 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5122 5091 test -z "$as_dir" && as_dir=. 5123 5092 for ac_exec_ext in '' $ac_executable_extensions; do 5124 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then5093 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5125 5094 ac_cv_prog_LEX="$ac_prog" 5126 5095 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5154 5123 c { yymore (); } 5155 5124 d { yyless (1); } 5156 e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ 5157 yyless ((input () != 0)); } 5125 e { yyless (input () != 0); } 5158 5126 f { unput (yytext[0]); } 5159 5127 . { BEGIN INITIAL; } … … 5313 5281 test -z "$as_dir" && as_dir=. 5314 5282 for ac_exec_ext in '' $ac_executable_extensions; do 5315 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then5283 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5316 5284 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" 5317 5285 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5353 5321 test -z "$as_dir" && as_dir=. 5354 5322 for ac_exec_ext in '' $ac_executable_extensions; do 5355 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then5323 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5356 5324 ac_cv_prog_ac_ct_RANLIB="ranlib" 5357 5325 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 … … 5546 5514 for ac_exec_ext in '' $ac_executable_extensions; do 5547 5515 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" 5548 as_fn_executable_p "$ac_path_GREP"|| continue5516 { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue 5549 5517 # Check for GNU ac_path_GREP and select it if it is found. 5550 5518 # Check for GNU $ac_path_GREP … … 5612 5580 for ac_exec_ext in '' $ac_executable_extensions; do 5613 5581 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" 5614 as_fn_executable_p "$ac_path_EGREP"|| continue5582 { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue 5615 5583 # Check for GNU ac_path_EGREP and select it if it is found. 5616 5584 # Check for GNU $ac_path_EGREP … … 5951 5919 $ac_includes_default 5952 5920 int 5953 find_stack_direction ( int *addr, int depth)5921 find_stack_direction () 5954 5922 { 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; 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; 5961 5932 } 5962 5933 5963 5934 int 5964 main ( int argc, char **argv)5935 main () 5965 5936 { 5966 return find_stack_direction ( 0, argc + !argv + 20) < 0;5937 return find_stack_direction () < 0; 5967 5938 } 5968 5939 _ACEOF … … 6009 5980 /* end confdefs.h. */ 6010 5981 6011 #include <stdbool.h>6012 #ifndef bool6013 "error: bool is not defined"6014 #endif6015 #ifndef false6016 "error: false is not defined"6017 #endif6018 #if false6019 "error: false is not 0"6020 #endif6021 #ifndef true6022 "error: true is not defined"6023 #endif6024 #if true != 16025 "error: true is not 1"6026 #endif6027 #ifndef __bool_true_false_are_defined6028 "error: __bool_true_false_are_defined is not defined"6029 #endif6030 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 for6044 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. See6049 http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html6050 http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html6051 */6052 _Bool q = true;6053 _Bool *pq = &q;5982 #include <stdbool.h> 5983 #ifndef bool 5984 "error: bool is not defined" 5985 #endif 5986 #ifndef false 5987 "error: false is not defined" 5988 #endif 5989 #if false 5990 "error: false is not 0" 5991 #endif 5992 #ifndef true 5993 "error: true is not defined" 5994 #endif 5995 #if true != 1 5996 "error: true is not 1" 5997 #endif 5998 #ifndef __bool_true_false_are_defined 5999 "error: __bool_true_false_are_defined is not defined" 6000 #endif 6001 6002 struct s { _Bool s: 1; _Bool t; } s; 6003 6004 char a[true == 1 ? 1 : -1]; 6005 char b[false == 0 ? 1 : -1]; 6006 char c[__bool_true_false_are_defined == 1 ? 1 : -1]; 6007 char d[(bool) 0.5 == true ? 1 : -1]; 6008 /* See body of main program for 'e'. */ 6009 char f[(_Bool) 0.0 == false ? 1 : -1]; 6010 char g[true]; 6011 char h[sizeof (_Bool)]; 6012 char i[sizeof s.t]; 6013 enum { j = false, k = true, l = false * true, m = true * 256 }; 6014 /* The following fails for 6015 HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ 6016 _Bool n[m]; 6017 char o[sizeof n == m * sizeof n[0] ? 1 : -1]; 6018 char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; 6019 /* Catch a bug in an HP-UX C compiler. See 6020 http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html 6021 http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html 6022 */ 6023 _Bool q = true; 6024 _Bool *pq = &q; 6054 6025 6055 6026 int … … 6057 6028 { 6058 6029 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 + !!l6064 + !m + !n + !o + !p + !q + !pq);6030 bool e = &s; 6031 *pq |= q; 6032 *pq |= ! q; 6033 /* Refer to every declared value, to avoid compiler optimizations. */ 6034 return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l 6035 + !m + !n + !o + !p + !q + !pq); 6065 6036 6066 6037 ; … … 6077 6048 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 6078 6049 $as_echo "$ac_cv_header_stdbool_h" >&6; } 6079 ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"6050 ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" 6080 6051 if test "x$ac_cv_type__Bool" = xyes; then : 6081 6052 … … 6086 6057 6087 6058 fi 6088 6089 6059 6090 6060 if test $ac_cv_header_stdbool_h = yes; then … … 6393 6363 6394 6364 6395 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&56396 $as_echo_n "checking that generated files are newer than configure... " >&6; }6397 if test -n "$am_sleep_pid"; then6398 # Hide warnings about reused PIDs.6399 wait $am_sleep_pid 2>/dev/null6400 fi6401 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&56402 $as_echo "done" >&6; }6403 6365 if test -n "$EXEEXT"; then 6404 6366 am__EXEEXT_TRUE= … … 6743 6705 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 6744 6706 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 6745 # In both cases, we have to default to `cp -p R'.6707 # In both cases, we have to default to `cp -p'. 6746 6708 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 6747 as_ln_s='cp -p R'6709 as_ln_s='cp -p' 6748 6710 elif ln conf$$.file conf$$ 2>/dev/null; then 6749 6711 as_ln_s=ln 6750 6712 else 6751 as_ln_s='cp -p R'6713 as_ln_s='cp -p' 6752 6714 fi 6753 6715 else 6754 as_ln_s='cp -p R'6716 as_ln_s='cp -p' 6755 6717 fi 6756 6718 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file … … 6812 6774 fi 6813 6775 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 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 6824 6798 6825 6799 # Sed expression to map a string onto a valid CPP name. … … 6843 6817 ac_log=" 6844 6818 This file was extended by cfa-cc $as_me 1.0.0.0, which was 6845 generated by GNU Autoconf 2.6 9. Invocation command line was6819 generated by GNU Autoconf 2.68. Invocation command line was 6846 6820 6847 6821 CONFIG_FILES = $CONFIG_FILES … … 6909 6883 ac_cs_version="\\ 6910 6884 cfa-cc config.status 1.0.0.0 6911 configured by $0, generated by GNU Autoconf 2.6 9,6885 configured by $0, generated by GNU Autoconf 2.68, 6912 6886 with options \\"\$ac_cs_config\\" 6913 6887 6914 Copyright (C) 201 2Free Software Foundation, Inc.6888 Copyright (C) 2010 Free Software Foundation, Inc. 6915 6889 This config.status script is free software; the Free Software Foundation 6916 6890 gives unlimited permission to copy, distribute and modify it." … … 7003 6977 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 7004 6978 if \$ac_cs_recheck; then 7005 set X $SHELL'$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion6979 set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion 7006 6980 shift 7007 6981 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 … … 7645 7619 case $ac_file$ac_mode in 7646 7620 "depfiles":C) test x"$AMDEP_TRUE" != x"" || { 7647 # Older Autoconfquotes --file arguments for eval, but not when files7621 # Autoconf 2.62 quotes --file arguments for eval, but not when files 7648 7622 # are listed without --file. Let's play safe and only enable the eval 7649 7623 # if we detect the quoting. … … 7658 7632 mf=`echo "$mf" | sed -e 's/:.*$//'` 7659 7633 # Check whether this is an Automake generated Makefile or not. 7660 # We used to match only the files named 'Makefile.in', but7634 # We used to match only the files named `Makefile.in', but 7661 7635 # some people rename them; so instead we look at the file content. 7662 7636 # Grep'ing the first line is not enough: some people post-process … … 7692 7666 fi 7693 7667 # Extract the definition of DEPDIR, am__include, and am__quote 7694 # from the Makefile without running 'make'.7668 # from the Makefile without running `make'. 7695 7669 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` 7696 7670 test -z "$DEPDIR" && continue 7697 7671 am__include=`sed -n 's/^am__include = //p' < "$mf"` 7698 test -z " $am__include" && continue7672 test -z "am__include" && continue 7699 7673 am__quote=`sed -n 's/^am__quote = //p' < "$mf"` 7674 # When using ansi2knr, U may be empty or an underscore; expand it 7675 U=`sed -n 's/^U = //p' < "$mf"` 7700 7676 # Find all dependency output files, they are included files with 7701 7677 # $(DEPDIR) in their names. We invoke sed twice because it is the … … 7704 7680 for file in `sed -n " 7705 7681 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ 7706 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' `; do7682 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do 7707 7683 # Make sure the directory exists. 7708 7684 test -f "$dirpart/$file" && continue -
configure.ac
r208e5be rb1e63ac5 9 9 AM_SILENT_RULES([no]) 10 10 11 AM_INIT_AUTOMAKE ([subdir-objects])11 AM_INIT_AUTOMAKE 12 12 AM_MAINTAINER_MODE(enable) # may require auto* software to be installed 13 13 -
doc/LaTeXmacros/lstlang.sty
r208e5be rb1e63ac5 8 8 %% Created On : Sat May 13 16:34:42 2017 9 9 %% Last Modified By : Peter A. Buhr 10 %% Last Modified On : Thu Jun 22 07:40:31201711 %% Update Count : 1010 %% Last Modified On : Fri May 26 12:47:09 2017 11 %% Update Count : 8 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}%119 118 } 120 119 -
doc/generic_types/mail
r208e5be rb1e63ac5 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.edu87 Reply-To: jonathan.aldrich@cs.cmu.edu88 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 until93 the end of June 10th (Anywhere on Earth). No email with a snapshot of your94 reviews will be sent: you can see the live version of reviews (including95 current updates) on the HotCRP system (links at the bottom).96 97 An author response should aim to:98 -correct reviewers' mistakes or misunderstandings99 -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 a102 designated "Questions for Author Response" entry of a review.103 104 Please keep in mind that an author response is *not* a "rebuttal". You are105 not rebutting an opponent's arguments with your own, in front of an106 audience that weighs both sets of arguments. Instead, your audience is the107 same reviewers who offered the comments in the first place, and their108 subjective weighing of different factors is very unlikely to change.109 110 During author response, please keep in mind that the reviewers are still111 unaware of author identity. If you need to refer to author-identifying112 information during your response, the ideal course of action is to place it113 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 just118 evidence, but the claim that this evidence supports should be clear in the119 response text. For instance:120 "we have received public feedback from the developers of X that confirm the121 issue [supporting URL] (WARNING: following this link will reveal author122 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/20128 129 Use the link below to sign in to the site.130 131 https://oopsla17.hotcrp.com/?email=pabuhr%40uwaterloo.ca132 133 Please contact me <jonathan.aldrich@cs.cmu.edu> with any questions or134 concerns.135 136 Best Regards and wishes for a constructive response,137 138 Jonathan Aldrich139 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.edu146 Reply-To: jonathan.aldrich@cs.cmu.edu147 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 not152 been selected for the second phase of the review process. I understand this is153 not welcome news but selection was very competitive: 157 of the 223 papers154 submitted did not advance to the second phase. For several of these, there was155 a clear impression that in the future they can evolve into some of the156 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/20160 Login link: https://oopsla17.hotcrp.com/?email=pabuhr%40uwaterloo.ca161 162 Below you will find reviews, as well as author-visible comments--the latter may163 include further communication. I hope you will find the reviewers' feedback164 useful.165 166 Best Regards,167 168 - Jonathan Aldrich <jonathan.aldrich@cs.cmu.edu>, for OOPSLA 2017169 Submissions170 171 172 173 ===========================================================================174 OOPSLA'17 Review #20A175 ---------------------------------------------------------------------------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 fight180 strongly against it181 Confidence: X. I am an expert in this area182 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 #20B217 ---------------------------------------------------------------------------218 Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀219 ---------------------------------------------------------------------------220 221 Overall merit: D. Reject222 Confidence: X. I am an expert in this area223 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-forall235 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 ## Evaluation239 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 work250 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 #20C257 ---------------------------------------------------------------------------258 Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀259 ---------------------------------------------------------------------------260 261 Overall merit: D. Reject262 Confidence: Z. I am not an expert; my evaluation263 is that of an informed outsider264 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 adds292 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 for299 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 either314 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? -
doc/proposals/references.md
r208e5be rb1e63ac5 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 ible to the former.19 convertable 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 sely "addressable objects", in C, only lvalues can be25 Since lvalues are precicely "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 ible to references of type `T`, where `T` is also149 `T` should be convertable 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 itly not defined on `T&`,154 As a note, since pointer arithmetic is explictly 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. -
doc/user/Makefile
r208e5be rb1e63ac5 12 12 13 13 FIGURES = ${addsuffix .tex, \ 14 EHMHierarchy \15 14 Cdecl \ 16 15 pointer1 \ -
doc/user/user.tex
r208e5be rb1e63ac5 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Sun Jul 2 09:49:56201714 %% Update Count : 2 50313 %% Last Modified On : Fri Jun 16 12:00:01 2017 14 %% Update Count : 2433 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 underscore 28 % removes it as a variable-name character so keyworks in variables are highlighted 29 \DeclareTextCommandDefault{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}} 30 27 31 28 32 \usepackage{fullpage,times,comment} … … 44 48 \renewcommand{\UrlFont}{\small\sf} 45 49 46 % Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore47 % removes it as a variable-name character so keywords in variables are highlighted. MUST APPEAR48 % 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 52 50 \setlength{\topmargin}{-0.45in} % move running title into header 53 51 \setlength{\headsep}{0.25in} … … 112 110 \renewcommand{\subsectionmark}[1]{\markboth{\thesubsection\quad #1}{\thesubsection\quad #1}} 113 111 \pagenumbering{roman} 114 \linenumbers % comment out to turn off line numbering112 %\linenumbers % comment out to turn off line numbering 115 113 116 114 \maketitle … … 479 477 #endif // ! otype 480 478 481 # ®include_next®<bfd.h> §\C{// must have internal check for multiple expansion}§479 #include_next <bfd.h> §\C{// must have internal check for multiple expansion}§ 482 480 483 481 #if defined( otype ) && defined( __CFA_BFD_H__ ) §\C{// reset only if set}§ … … 489 487 \label{f:InterpositionHeaderFile} 490 488 \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 integers 596 // array of 5 pointers to char 597 // pointer to array of 5 doubles 598 599 // common bit field syntax 600 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 integer 623 // const pointer to array of 5 const integers 624 \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 integers 644 // internally visible pointer to constant int 645 \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 *)100 697 *x = 3; // implicit dereference 698 int * ®const® y = (int *)104; 699 *y = *x; // implicit dereference 700 \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 \hline 712 \begin{cfa} 713 lda r1,100 // load address of x 714 ld r2,(r1) // load value of x 715 lda r3,104 // load address of y 716 st r2,(r3) // store x into y 717 \end{cfa} 718 & 719 \begin{cfa} 720 721 ld r2,(100) // load value of x 722 723 st r2,(104) // store x into y 724 \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 x 738 p2 = p1; // p2 points to x 739 p1 = ®&®y; // p1 points to y 740 p3 = &p2; // p3 points to p2 741 \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 usage 750 \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 \item 969 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 \item 972 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 \item 1001 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 expression 1005 \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 \item 1011 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 rvalue 1015 \end{cfa} 1016 An rvalue has no type qualifiers (©cv©), so the reference qualifiers are dropped. 1017 1018 \item 1019 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 \item 1029 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 +0000 1043 Subject: Re: pointers / references 1044 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 forth 1047 between various real and imagined programming languages. If it were me I would rewrite into two 1048 subsections, one that specifies precisely the syntax and semantics of reference variables and 1049 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 not 1052 obvious that the description you're giving is complete, but I'm sure you'll find the special cases 1053 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, and 1056 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 a 1059 21 location in memory. 1060 1061 An address is not a location in memory; an address refers to a location in memory. Furthermore it 1062 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. By 1065 22 convention, no variable is placed at address 0, so addresses like 0, 1, 2, 3 are often used to denote no-value 1066 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 have 1069 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 necessary 1072 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 cause 1075 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 all 1078 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 of 1081 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 automatically 1084 2 dereferenced, as in: 1085 1086 There is no reason why a variable needs to have a location in memory, and indeed in a typical 1087 program many variables will not. In standard terminology an object identifier refers to data in the 1088 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 more 1091 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, which 1094 seem to be what you're describing here, but also pointer values, which can be stored in an object of 1095 pointer type but don't necessarily have to be. For example, how would you describe the value denoted 1096 by "&main" in a C program? I would call it a (function) pointer, but that doesn't satisfy your 1097 definition. 1098 1099 16 not occupy storage as the literal is embedded directly into instructions.) Hence, a pointer occupies memory 1100 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 a 1103 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 = *p2 1111 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 + 1 1115 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. The 1119 14 simplest way to understand a reference is to imagine the compiler inserting a dereference operator before 1120 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 is 1123 likely to be satisfied with "a reference behaves like the variable name for the current variable it 1124 is pointing-to," maybe with some examples. Your "simplest way" doesn't strike me as simpler than 1125 that. It feels like you're trying to provide a more precise definition for the semantics of 1126 references, but it isn't actually precise enough to be a formal specification. If you want to 1127 express the semantics of references using rewrite rules that's a great way to do it, but lay the 1128 rules out clearly, and when you're showing an example of rewriting keep your 1129 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 both 1133 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 duality 1139 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 to 1143 say. I don't think I've ever heard the term "method-wise assignment" and I don't see you defining 1144 it. Furthermore Java does have value assignment of basic (non-class) types, so your summary here 1145 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 value 1148 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 last 1151 clause ("the address value cannot be 0") comes out of the blue. It seems like you could have 1152 perfectly reasonable semantics that allowed the initialization of null references. 1153 1154 12 In effect, the compiler is managing the 1155 13 addresses for type & const not the programmer, and by a programming discipline of only using references 1156 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) not 1161 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 interpretations 1166 1167 Are you saying that we should be considering "x" as a possible interpretation of the initializer 1168 "&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-dereferencing 1171 1172 You mean, we can initialize a reference using an integer value? Surely we would need some sort of 1173 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 reference 1181 24 operator. 1182 1183 Furthermore, it would not be correct to use a reference operator. 1184 1185 45 The implicit conversion allows 1186 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 routine 1188 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're 1191 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 are 1195 > corrected in the attached updated. None of the text has changed, if you have started reading 1196 > 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 \newline 1273 \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 \newline 1283 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 \item 1383 Remembering the names of the parameters may be easier than the order in the routine definition. 1384 \item 1385 Parameter names provide documentation at the call site (assuming the names are descriptive). 1386 \item 1387 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 arguments 1434 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 \item 1447 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 \item 1451 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 \centering 1563 \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 \hline 1566 \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 qualification 1617 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 because 1668 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 its 1721 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, a 1743 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 ] = w 1794 \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 of 1885 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 is 1934 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} 491 1960 492 1961 … … 780 2249 still works. 781 2250 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. 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: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.: 783 2252 \begin{cfa} 784 2253 ®choose® ( i ) { … … 928 2397 929 2398 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 first951 // handle overflow952 } catch( Arithmetic )953 // handle other arithmetic issues954 }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 integers1064 // array of 5 pointers to char1065 // pointer to array of 5 doubles1066 1067 // common bit field syntax1068 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 integer1091 // const pointer to array of 5 const integers1092 \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 integers1112 // internally visible pointer to constant int1113 \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 *)1001165 *x = 3; // implicit dereference1166 int * ®const® y = (int *)104;1167 *y = *x; // implicit dereference1168 \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 \hline1180 \begin{cfa}1181 lda r1,100 // load address of x1182 ld r2,(r1) // load value of x1183 lda r3,104 // load address of y1184 st r2,(r3) // store x into y1185 \end{cfa}1186 &1187 \begin{cfa}1188 1189 ld r2,(100) // load value of x1190 1191 st r2,(104) // store x into y1192 \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 x1206 p2 = p1; // p2 points to x1207 p1 = ®&®y; // p1 points to y1208 p3 = &p2; // p3 points to p21209 \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 usage1218 \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 \item1437 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 \item1440 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 \item1469 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 expression1473 \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 \item1479 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 rvalue1483 \end{cfa}1484 An rvalue has no type qualifiers (©cv©), so the reference qualifiers are dropped.1485 1486 \item1487 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 \item1497 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 +00001511 Subject: Re: pointers / references1512 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 forth1515 between various real and imagined programming languages. If it were me I would rewrite into two1516 subsections, one that specifies precisely the syntax and semantics of reference variables and1517 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 not1520 obvious that the description you're giving is complete, but I'm sure you'll find the special cases1521 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, and1524 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 a1527 21 location in memory.1528 1529 An address is not a location in memory; an address refers to a location in memory. Furthermore it1530 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. By1533 22 convention, no variable is placed at address 0, so addresses like 0, 1, 2, 3 are often used to denote no-value1534 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 have1537 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 necessary1540 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 cause1543 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 all1546 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 of1549 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 automatically1552 2 dereferenced, as in:1553 1554 There is no reason why a variable needs to have a location in memory, and indeed in a typical1555 program many variables will not. In standard terminology an object identifier refers to data in the1556 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 more1559 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, which1562 seem to be what you're describing here, but also pointer values, which can be stored in an object of1563 pointer type but don't necessarily have to be. For example, how would you describe the value denoted1564 by "&main" in a C program? I would call it a (function) pointer, but that doesn't satisfy your1565 definition.1566 1567 16 not occupy storage as the literal is embedded directly into instructions.) Hence, a pointer occupies memory1568 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 a1571 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 = *p21579 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 + 11583 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. The1587 14 simplest way to understand a reference is to imagine the compiler inserting a dereference operator before1588 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 is1591 likely to be satisfied with "a reference behaves like the variable name for the current variable it1592 is pointing-to," maybe with some examples. Your "simplest way" doesn't strike me as simpler than1593 that. It feels like you're trying to provide a more precise definition for the semantics of1594 references, but it isn't actually precise enough to be a formal specification. If you want to1595 express the semantics of references using rewrite rules that's a great way to do it, but lay the1596 rules out clearly, and when you're showing an example of rewriting keep your1597 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 both1601 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 duality1607 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 to1611 say. I don't think I've ever heard the term "method-wise assignment" and I don't see you defining1612 it. Furthermore Java does have value assignment of basic (non-class) types, so your summary here1613 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 value1616 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 last1619 clause ("the address value cannot be 0") comes out of the blue. It seems like you could have1620 perfectly reasonable semantics that allowed the initialization of null references.1621 1622 12 In effect, the compiler is managing the1623 13 addresses for type & const not the programmer, and by a programming discipline of only using references1624 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) not1629 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 interpretations1634 1635 Are you saying that we should be considering "x" as a possible interpretation of the initializer1636 "&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-dereferencing1639 1640 You mean, we can initialize a reference using an integer value? Surely we would need some sort of1641 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 reference1649 24 operator.1650 1651 Furthermore, it would not be correct to use a reference operator.1652 1653 45 The implicit conversion allows1654 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 routine1656 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're1659 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 are1663 > corrected in the attached updated. None of the text has changed, if you have started reading1664 > 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 \newline1741 \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 \newline1751 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 \item1851 Remembering the names of the parameters may be easier than the order in the routine definition.1852 \item1853 Parameter names provide documentation at the call site (assuming the names are descriptive).1854 \item1855 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 arguments1902 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 \item1915 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 \item1919 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 \centering2031 \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 \hline2034 \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 qualification2085 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 because2136 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 its2189 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, a2211 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 ] = w2262 \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 of2353 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 is2402 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 2430 2399 \section{I/O Library} 2431 2400 \label{s:IOLibrary} … … 2433 2402 2434 2403 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.2436 2404 The \CFA header file for the I/O library is \Indexc{fstream}. 2437 2405 … … 2451 2419 \\ 2452 2420 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt] 2453 1 ® ®2® ®32421 1 2 3 2454 2422 \end{cfa} 2455 2423 & … … 2459 2427 \end{tabular} 2460 2428 \end{quote2} 2461 The \CFA form has half the characters ofthe \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]@, @''.2429 The \CFA form has half as many characters as the \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 ©", "©. 2463 2431 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2464 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ]];2432 [int, int] t1 = [1, 2], t2 = [3, 4]; 2465 2433 sout | t1 | t2 | endl; §\C{// print tuples}§ 2466 2434 \end{cfa} 2467 2435 \begin{cfa}[mathescape=off,showspaces=true,belowskip=0pt] 2468 1 ®, ®2®, ®3 3®, ®4®, ®52469 \end{cfa} 2470 Finally, \CFA uses the logical-or operator for I/O asit is the lowest-priority overloadable operator, other than assignment.2436 1, 2, 3, 4 2437 \end{cfa} 2438 \CFA uses the logical-or operator for I/O because it is the lowest-priority overloadable operator, other than assignment. 2471 2439 Therefore, fewer output expressions require parenthesis. 2472 2440 \begin{quote2} … … 2490 2458 \end{tabular} 2491 2459 \end{quote2} 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. 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. 2498 2464 The rules for implicitly adding the separator are: 2499 2465 \begin{enumerate} … … 2567 2533 \end{enumerate} 2568 2534 2569 2570 \subsection{Manipulator}2571 2572 2535 The following routines and \CC-style \Index{manipulator}s control implicit seperation. 2573 2536 \begin{enumerate} … … 2581 2544 %$ 2582 2545 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt] 2583 1 ®, $®2®, $®3 ®", $"®2546 1, $2, $3 ®", $"® 2584 2547 \end{cfa} 2585 2548 %$ … … 2589 2552 \end{cfa} 2590 2553 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt] 2591 1® ®2® ®3 ®" "® 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 2592 2591 \end{cfa} 2593 2592 … … 2611 2610 2612 2611 \item 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. 2612 The tuple separator can also be turned on and off. 2627 2613 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt] 2628 2614 sout | sepOn | t1 | sepOff | t2 | endl; §\C{// locally turn on/off implicit separation}§ … … 2632 2618 \end{cfa} 2633 2619 Notice a tuple seperator starts the line because the next item is a tuple. 2634 2635 \item2636 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 1232642 \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® ®232648 \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 32654 \end{cfa}2655 2620 \end{enumerate} 2656 2621 … … 2661 2626 int x = 1, y = 2, z = 3; 2662 2627 sout | x | y | z | endl; 2663 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ]];2664 sout | t1 | t2 | endl; // print tuple s2628 [int, int] t1 = [1, 2], t2 = [3, 4]; 2629 sout | t1 | t2 | endl; // print tuple 2665 2630 sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl; 2666 2631 sout | 1 | 2 | 3 | endl; … … 5224 5189 5225 5190 5226 \section{\ CFA Keywords}5191 \section{\protect\CFA Keywords} 5227 5192 \label{s:CFAKeywords} 5228 5193 … … 5522 5487 For an increase in storage size, new storage after the copied data may be filled. 5523 5488 \item[alignment] 5524 an allocation starts on a specified memory boundary, \eg, an address multiple of 64 or 128 for cache-line purposes.5489 an allocation starts on a specified memory boundary, e.g., an address multiple of 64 or 128 for cache-line purposes. 5525 5490 \item[array] 5526 5491 the allocation size is scaled to the specified number of array elements. -
src/ControlStruct/ExceptTranslate.cc
r208e5be rb1e63ac5 10 10 // Created On : Wed Jun 14 16:49:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jun 30 13:30:00 201712 // Last Modified On : Thr Jun 29 15:18:00 2017 13 13 // Update Count : 1 14 14 // … … 22 22 #include "SynTree/Attribute.h" 23 23 24 namespace Control Struct{24 namespace ControlFlow { 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 try_func_t(Type::Qualifiers(), false);31 // void (*function)() 32 static FunctionType void_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);41 39 42 40 static void init_func_types() { … … 50 48 LinkageSpec::Cforall, 51 49 /*bitfieldWidth*/ NULL, 52 new BasicType( emptyQualifiers, BasicType::SignedInt),50 new BasicType(emptyQualifiers, BasicType::UnsignedInt), 53 51 /*init*/ NULL 54 );52 ); 55 53 ObjectDecl exception_obj( 56 54 "__exception_inst", … … 58 56 LinkageSpec::Cforall, 59 57 /*bitfieldWidth*/ NULL, 60 new PointerType( 61 emptyQualifiers, 62 new BasicType( emptyQualifiers, BasicType::SignedInt ) 63 ), 58 new BasicType(emptyQualifiers, BasicType::UnsignedInt), 64 59 /*init*/ NULL 65 );60 ); 66 61 ObjectDecl bool_obj( 67 62 "__ret_bool", … … 71 66 new BasicType(emptyQualifiers, BasicType::Bool), 72 67 /*init*/ NULL 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() ); 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()); 96 76 97 77 init_complete = true; … … 134 114 // ThrowStmt Mutation Helpers 135 115 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 ) ); 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 ); 152 122 throwStmt->set_expr( nullptr ); 153 123 delete throwStmt; 154 124 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 );160 125 } 161 126 Statement * create_terminate_rethrow( ThrowStmt *throwStmt ) { … … 171 136 Statement * create_resume_throw( ThrowStmt *throwStmt ) { 172 137 // __throw_resume( EXPR ); 173 return create_given_throw( "__cfaehm__throw_resumption", throwStmt ); 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; 174 145 } 175 146 Statement * create_resume_rethrow( ThrowStmt *throwStmt ) { … … 193 164 194 165 return new FunctionDecl( "try", Type::StorageClasses(), 195 LinkageSpec::Cforall, try_func_t.clone(), body );166 LinkageSpec::Cforall, void_func_t.clone(), body ); 196 167 } 197 168 … … 264 235 std::list<Expression *> args; 265 236 args.push_back( number ); 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 237 args.push_back( nameOf( except_obj ) ); 273 238 cond = new UntypedExpr( new NameExpr( "?==?" /*???*/), args ); 274 239 } … … 311 276 *it = nullptr; 312 277 } 313 314 body->push_back( new ReturnStmt( noLabels, new ConstantExpr(315 Constant::from_int( 0 ) ) ) );316 278 317 279 return new FunctionDecl("match", Type::StorageClasses(), … … 354 316 } 355 317 handling_code->push_back( new ReturnStmt( noLabels, 356 new ConstantExpr( Constant::from_bool( true ) ) ) );318 new ConstantExpr( Constant::from_bool( false ) ) ) ); 357 319 handler->set_body( handling_code ); 358 320 … … 361 323 *it = nullptr; 362 324 } 363 364 body->push_back( new ReturnStmt( noLabels, new ConstantExpr(365 Constant::from_bool( false ) ) ) );366 325 367 326 return new FunctionDecl("handle", Type::StorageClasses(), … … 405 364 UntypedExpr *setup = new UntypedExpr( new NameExpr( 406 365 "__cfaehm__try_resume_setup" ) ); 407 setup->get_args().push_back( n ew AddressExpr( nameOf( obj )) );366 setup->get_args().push_back( nameOf( obj ) ); 408 367 setup->get_args().push_back( nameOf( resume_handler ) ); 409 368 … … 422 381 423 382 return new FunctionDecl("finally", Type::StorageClasses(), 424 LinkageSpec::Cforall, finally_func_t.clone(), body);383 LinkageSpec::Cforall, void_func_t.clone(), body); 425 384 } 426 385 -
src/ControlStruct/ExceptTranslate.h
r208e5be rb1e63ac5 10 10 // Created On : Tus Jun 06 10:13:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jun 30 10:20:00 201713 // Update Count : 212 // Last Modified On : Thr Jun 29 15:18:00 2017 13 // Update Count : 1 14 14 // 15 15 … … 20 20 #include "SynTree/SynTree.h" 21 21 22 namespace Control Struct{22 namespace ControlFlow { 23 23 void translateEHM( std::list< Declaration *> & translationUnit ); 24 24 /* Converts exception handling structures into their underlying C code. -
src/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 58 59 59 60 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 = yes113 am__make_dryrun = (target_option=n; $(am__make_running_with_option))114 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))115 61 pkgdatadir = $(datadir)/@PACKAGE@ 116 62 pkgincludedir = $(includedir)/@PACKAGE@ … … 131 77 build_triplet = @build@ 132 78 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.h 133 88 cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT) 134 89 subdir = src … … 137 92 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 138 93 $(ACLOCAL_M4) 139 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)140 94 mkinstalldirs = $(install_sh) -d 141 95 CONFIG_HEADER = $(top_builddir)/config.h … … 261 215 driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \ 262 216 $(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 = false266 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 =275 217 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 276 218 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 280 222 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 281 223 am__v_lt_0 = --silent 282 am__v_lt_1 =283 224 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ 284 225 $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 285 226 AM_V_CXX = $(am__v_CXX_@AM_V@) 286 227 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) 287 am__v_CXX_0 = @echo " CXX " $@; 288 am__v_CXX_1 = 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 = @ 289 232 CXXLD = $(CXX) 290 233 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ … … 292 235 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) 293 236 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) 294 am__v_CXXLD_0 = @echo " CXXLD " $@; 295 am__v_CXXLD_1 = 237 am__v_CXXLD_0 = @echo " CXXLD " $@; 296 238 @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || 297 239 LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) 298 240 AM_V_LEX = $(am__v_LEX_@AM_V@) 299 241 am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) 300 am__v_LEX_0 = @echo " LEX " $@; 301 am__v_LEX_1 = 242 am__v_LEX_0 = @echo " LEX " $@; 302 243 YLWRAP = $(top_srcdir)/automake/ylwrap 303 244 @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/306 245 YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) 307 246 AM_V_YACC = $(am__v_YACC_@AM_V@) 308 247 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) 309 am__v_YACC_0 = @echo " YACC " $@; 310 am__v_YACC_1 = 248 am__v_YACC_0 = @echo " YACC " $@; 311 249 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 312 250 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 313 251 AM_V_CC = $(am__v_CC_@AM_V@) 314 252 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 315 am__v_CC_0 = @echo " CC " $@; 316 am__v_CC_1 = 253 am__v_CC_0 = @echo " CC " $@; 317 254 CCLD = $(CC) 318 255 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 319 256 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 320 257 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 321 am__v_CCLD_0 = @echo " CCLD " $@; 322 am__v_CCLD_1 = 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 " $@; 323 262 SOURCES = $(driver_cfa_cpp_SOURCES) 324 263 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 esac330 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 is333 # *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 variables341 # 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)`347 264 ETAGS = etags 348 265 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.hh359 266 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 360 267 ACLOCAL = @ACLOCAL@ … … 469 376 program_transform_name = @program_transform_name@ 470 377 psdir = @psdir@ 471 runstatedir = @runstatedir@472 378 sbindir = @sbindir@ 473 379 sharedstatedir = @sharedstatedir@ … … 535 441 MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \ 536 442 ${cfa_cpplib_PROGRAMS}} 537 BUILT_SOURCES = Parser/parser.h h443 BUILT_SOURCES = Parser/parser.h 538 444 AM_YFLAGS = -d -t -v 539 445 … … 560 466 esac; \ 561 467 done; \ 562 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/Makefile'; \468 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ 563 469 $(am__cd) $(top_srcdir) && \ 564 $(AUTOMAKE) --gnu src/Makefile 470 $(AUTOMAKE) --foreign src/Makefile 471 .PRECIOUS: Makefile 565 472 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 566 473 @case '$?' in \ … … 571 478 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ 572 479 esac; 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):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: 574 481 575 482 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) … … 583 490 install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS) 584 491 @$(NORMAL_INSTALL) 492 test -z "$(cfa_cpplibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_cpplibdir)" 585 493 @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; \590 494 for p in $$list; do echo "$$p $$p"; done | \ 591 495 sed 's/$(EXEEXT)$$//' | \ 592 while read p p1; do if test -f $$p \593 ;then echo "$$p"; echo "$$p"; else :; fi; \496 while read p p1; do if test -f $$p; \ 497 then echo "$$p"; echo "$$p"; else :; fi; \ 594 498 done | \ 595 sed -e 'p;s,.*/,,;n;h' \ 596 -e 's|.*|.|' \ 499 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ 597 500 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ 598 501 sed 'N;N;N;s,\n, ,g' | \ … … 615 518 files=`for p in $$list; do echo "$$p"; done | \ 616 519 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ 617 -e 's/$$/$(EXEEXT)/' \ 618 `; \ 520 -e 's/$$/$(EXEEXT)/' `; \ 619 521 test -n "$$list" || exit 0; \ 620 522 echo " ( cd '$(DESTDIR)$(cfa_cpplibdir)' && rm -f" $$files ")"; \ … … 738 640 InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT): \ 739 641 InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp) 740 Parser/parser.h h: Parser/parser.cc642 Parser/parser.h: Parser/parser.cc 741 643 @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi 742 644 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi … … 941 843 @$(MKDIR_P) driver 942 844 @: > driver/$(am__dirstamp) 943 944 845 driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp) 945 846 @rm -f driver/cfa-cpp$(EXEEXT) … … 948 849 mostlyclean-compile: 949 850 -rm -f *.$(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) 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) 962 959 963 960 distclean-compile: … … 2635 2632 2636 2633 .yy.cc: 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) 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) 2645 2648 set x; \ 2646 2649 here=`pwd`; \ 2647 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 2648 2656 shift; \ 2649 2657 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 2657 2665 fi; \ 2658 2666 fi 2659 ctags: ctags-am 2660 2661 CTAGS: ctags 2662 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 2663 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 2664 2676 test -z "$(CTAGS_ARGS)$$unique" \ 2665 2677 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 2670 2682 && $(am__cd) $(top_srcdir) \ 2671 2683 && gtags -i $(GTAGS_ARGS) "$$here" 2672 cscopelist: cscopelist-am2673 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.files2687 2684 2688 2685 distclean-tags: … … 2785 2782 -rm -f Parser/lex.cc 2786 2783 -rm -f Parser/parser.cc 2787 -rm -f Parser/parser.h h2784 -rm -f Parser/parser.h 2788 2785 -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) 2789 2786 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) … … 2859 2856 .MAKE: all check install install-am install-strip 2860 2857 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 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 2876 2871 2877 2872 -
src/Parser/TypedefTable.h
r208e5be rb1e63ac5 22 22 #include <stack> 23 23 24 #include "ParserTypes.h"25 24 #include "parser.hh" 25 #include "parser.h" 26 26 27 27 class TypedefTable { -
src/Parser/module.mk
r208e5be rb1e63ac5 15 15 ############################################################################### 16 16 17 BUILT_SOURCES = Parser/parser.h h17 BUILT_SOURCES = Parser/parser.h 18 18 19 19 AM_YFLAGS = -d -t -v -
src/Parser/parser.yy
r208e5be rb1e63ac5 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jun 30 15:38:00201713 // Update Count : 241 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 28 22:11:22 2017 13 // Update Count : 2414 14 14 // 15 15 … … 104 104 std::string * str; 105 105 bool flag; 106 CatchStmt::Kind catch_kind;107 106 } 108 107 … … 193 192 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 194 193 %type<sn> /* handler_list */ handler_clause finally_clause 195 %type<catch_kind> handler_key196 194 197 195 // declarations … … 960 958 handler_clause: 961 959 // TEMPORARY, TEST EXCEPTIONS 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; } 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 ) ) ); } 978 973 ; 979 974 -
src/ResolvExpr/Resolver.cc
r208e5be rb1e63ac5 70 70 virtual void visit( BranchStmt *branchStmt ) override; 71 71 virtual void visit( ReturnStmt *returnStmt ) override; 72 virtual void visit( ThrowStmt *throwStmt ) override;73 72 74 73 virtual void visit( SingleInit *singleInit ) override; … … 367 366 } 368 367 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 377 368 template< typename T > 378 369 bool isCharType( T t ) { -
src/SymTab/Indexer.cc
r208e5be rb1e63ac5 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 ( ! LinkageSpec::isMangled( decl->second->get_linkage() )&& decl->first != mangleName ) return true;655 if ( decl->second->get_linkage() == LinkageSpec::C && 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 ( ! LinkageSpec::isMangled( decl->second->get_linkage() )&& decl->first == mangleName ) return true;672 if ( decl->second->get_linkage() == LinkageSpec::C && 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 ( LinkageSpec::isMangled( added->get_linkage() )|| ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) {727 } else if ( added->get_linkage() != LinkageSpec::C || 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 ( ! LinkageSpec::isMangled( decl->get_linkage() )) {768 if ( decl->get_linkage() == LinkageSpec::C ) { 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 -
src/benchmark/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 19 20 20 21 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 = yes74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))76 22 pkgdatadir = $(datadir)/@PACKAGE@ 77 23 pkgincludedir = $(includedir)/@PACKAGE@ … … 95 41 ctxswitch-thread$(EXEEXT) 96 42 subdir = src/benchmark 43 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in 97 44 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 98 45 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 99 46 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 100 47 $(ACLOCAL_M4) 101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)102 48 mkinstalldirs = $(install_sh) -d 103 49 CONFIG_HEADER = $(top_builddir)/config.h … … 114 60 ctxswitch_thread_OBJECTS = ctxswitch-thread.$(OBJEXT) 115 61 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 = false119 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 =128 62 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 129 63 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 134 68 AM_V_CC = $(am__v_CC_@AM_V@) 135 69 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 136 am__v_CC_0 = @echo " CC " $@; 137 am__v_CC_1 = 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 = @ 138 74 CCLD = $(CC) 139 75 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 140 76 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 141 77 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 142 am__v_CCLD_0 = @echo " CCLD " $@; 143 am__v_CCLD_1 = 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 " $@; 144 82 SOURCES = bench.c ctxswitch-coroutine.c ctxswitch-thread.c 145 83 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 esac151 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 is154 # *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 variables162 # 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)`168 84 ETAGS = etags 169 85 CTAGS = ctags 170 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp171 86 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 172 87 ACLOCAL = @ACLOCAL@ … … 283 198 program_transform_name = @program_transform_name@ 284 199 psdir = @psdir@ 285 runstatedir = @runstatedir@286 200 sbindir = @sbindir@ 287 201 sharedstatedir = @sharedstatedir@ … … 306 220 esac; \ 307 221 done; \ 308 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/benchmark/Makefile'; \222 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/benchmark/Makefile'; \ 309 223 $(am__cd) $(top_srcdir) && \ 310 $(AUTOMAKE) --gnu src/benchmark/Makefile 224 $(AUTOMAKE) --foreign src/benchmark/Makefile 225 .PRECIOUS: Makefile 311 226 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 312 227 @case '$?' in \ … … 341 256 342 257 .c.o: 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 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 346 260 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 347 261 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 348 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@$<262 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< 349 263 350 264 .c.obj: 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 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 354 267 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 355 268 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 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) 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) 364 283 set x; \ 365 284 here=`pwd`; \ 366 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 367 291 shift; \ 368 292 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 376 300 fi; \ 377 301 fi 378 ctags: ctags-am 379 380 CTAGS: ctags 381 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 382 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 383 311 test -z "$(CTAGS_ARGS)$$unique" \ 384 312 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 389 317 && $(am__cd) $(top_srcdir) \ 390 318 && gtags -i $(GTAGS_ARGS) "$$here" 391 cscopelist: cscopelist-am392 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.files406 319 407 320 distclean-tags: … … 543 456 .MAKE: install-am install-strip 544 457 545 .PHONY: CTAGS GTAGS TAGSall all-am check check-am clean clean-generic \546 clean-noinstPROGRAMS c scopelist-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-p df-am install-ps install-ps-am install-strip\553 installcheck installcheck-am installdirs maintainer-clean \458 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ 459 clean-noinstPROGRAMS ctags 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-ps install-ps-am install-strip installcheck \ 466 installcheck-am installdirs maintainer-clean \ 554 467 maintainer-clean-generic mostlyclean mostlyclean-compile \ 555 mostlyclean-generic pdf pdf-am ps ps-am tags tags-amuninstall \468 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ 556 469 uninstall-am 557 558 .PRECIOUS: Makefile559 470 560 471 -
src/driver/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 19 20 20 21 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 = yes74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))76 22 pkgdatadir = $(datadir)/@PACKAGE@ 77 23 pkgincludedir = $(includedir)/@PACKAGE@ … … 98 44 cc1lib_PROGRAMS = cc1$(EXEEXT) 99 45 subdir = src/driver 46 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in 100 47 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 101 48 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 102 49 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 103 50 $(ACLOCAL_M4) 104 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)105 51 mkinstalldirs = $(install_sh) -d 106 52 CONFIG_HEADER = $(top_builddir)/config.h … … 115 61 cfa_OBJECTS = $(am_cfa_OBJECTS) 116 62 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 = false120 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 =129 63 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 130 64 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 135 69 AM_V_CXX = $(am__v_CXX_@AM_V@) 136 70 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) 137 am__v_CXX_0 = @echo " CXX " $@; 138 am__v_CXX_1 = 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 = @ 139 75 CXXLD = $(CXX) 140 76 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ … … 142 78 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) 143 79 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) 144 am__v_CXXLD_0 = @echo " CXXLD " $@; 145 am__v_CXXLD_1 = 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 " $@; 146 84 SOURCES = $(cc1_SOURCES) $(cfa_SOURCES) 147 85 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 esac153 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 is156 # *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 variables164 # 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)`170 86 ETAGS = etags 171 87 CTAGS = ctags 172 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp173 88 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 174 89 ACLOCAL = @ACLOCAL@ … … 283 198 program_transform_name = @program_transform_name@ 284 199 psdir = @psdir@ 285 runstatedir = @runstatedir@286 200 sbindir = @sbindir@ 287 201 sharedstatedir = @sharedstatedir@ … … 315 229 esac; \ 316 230 done; \ 317 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/driver/Makefile'; \231 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/driver/Makefile'; \ 318 232 $(am__cd) $(top_srcdir) && \ 319 $(AUTOMAKE) --gnu src/driver/Makefile 233 $(AUTOMAKE) --foreign src/driver/Makefile 234 .PRECIOUS: Makefile 320 235 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 321 236 @case '$?' in \ … … 337 252 install-cc1libPROGRAMS: $(cc1lib_PROGRAMS) 338 253 @$(NORMAL_INSTALL) 254 test -z "$(cc1libdir)" || $(MKDIR_P) "$(DESTDIR)$(cc1libdir)" 339 255 @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; \344 256 for p in $$list; do echo "$$p $$p"; done | \ 345 257 sed 's/$(EXEEXT)$$//' | \ 346 while read p p1; do if test -f $$p \347 ;then echo "$$p"; echo "$$p"; else :; fi; \258 while read p p1; do if test -f $$p; \ 259 then echo "$$p"; echo "$$p"; else :; fi; \ 348 260 done | \ 349 sed -e 'p;s,.*/,,;n;h' \ 350 -e 's|.*|.|' \ 261 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ 351 262 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ 352 263 sed 'N;N;N;s,\n, ,g' | \ … … 369 280 files=`for p in $$list; do echo "$$p"; done | \ 370 281 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ 371 -e 's/$$/$(EXEEXT)/' \ 372 `; \ 282 -e 's/$$/$(EXEEXT)/' `; \ 373 283 test -n "$$list" || exit 0; \ 374 284 echo " ( cd '$(DESTDIR)$(cc1libdir)' && rm -f" $$files ")"; \ … … 380 290 clean-noinstPROGRAMS: 381 291 -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) 382 383 292 cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES) 384 293 @rm -f cc1$(EXEEXT) 385 294 $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS) 386 387 295 cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES) 388 296 @rm -f cfa$(EXEEXT) … … 399 307 400 308 .cc.o: 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 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 404 311 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 405 312 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ … … 407 314 408 315 .cc.obj: 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 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 412 318 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 413 319 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 414 320 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 415 321 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) 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) 422 334 set x; \ 423 335 here=`pwd`; \ 424 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 425 342 shift; \ 426 343 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 434 351 fi; \ 435 352 fi 436 ctags: ctags-am 437 438 CTAGS: ctags 439 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 440 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 441 362 test -z "$(CTAGS_ARGS)$$unique" \ 442 363 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 447 368 && $(am__cd) $(top_srcdir) \ 448 369 && gtags -i $(GTAGS_ARGS) "$$here" 449 cscopelist: cscopelist-am450 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.files464 370 465 371 distclean-tags: … … 608 514 .MAKE: install-am install-exec-am install-strip uninstall-am 609 515 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 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 626 529 627 530 -
src/examples/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 19 20 20 21 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 = yes74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))76 22 pkgdatadir = $(datadir)/@PACKAGE@ 77 23 pkgincludedir = $(includedir)/@PACKAGE@ … … 95 41 avl_test$(EXEEXT) Bench$(EXEEXT) 96 42 subdir = src/examples 43 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in 97 44 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 98 45 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 99 46 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 100 47 $(ACLOCAL_M4) 101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)102 48 mkinstalldirs = $(install_sh) -d 103 49 CONFIG_HEADER = $(top_builddir)/config.h … … 108 54 Bench_OBJECTS = Bench.$(OBJEXT) 109 55 Bench_LDADD = $(LDADD) 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) 56 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \ 57 avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \ 58 avl-private.$(OBJEXT) 115 59 avl_test_OBJECTS = $(am_avl_test_OBJECTS) 116 60 avl_test_LDADD = $(LDADD) … … 122 66 vector_test_OBJECTS = $(am_vector_test_OBJECTS) 123 67 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 = false127 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 =136 68 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 137 69 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp 138 70 am__depfiles_maybe = depfiles 139 71 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 = --silent 140 75 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 141 76 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 142 77 AM_V_CC = $(am__v_CC_@AM_V@) 143 78 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 144 am__v_CC_0 = @echo " CC " $@; 145 am__v_CC_1 = 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 = @ 146 83 CCLD = $(CC) 147 84 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 148 85 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 149 86 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 150 am__v_CCLD_0 = @echo " CCLD " $@; 151 am__v_CCLD_1 = 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 " $@; 152 91 SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 153 92 $(vector_test_SOURCES) 154 93 DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 155 94 $(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 esac161 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 is164 # *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 variables172 # 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)`178 95 ETAGS = etags 179 96 CTAGS = ctags 180 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp181 97 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 182 98 ACLOCAL = @ACLOCAL@ … … 293 209 program_transform_name = @program_transform_name@ 294 210 psdir = @psdir@ 295 runstatedir = @runstatedir@296 211 sbindir = @sbindir@ 297 212 sharedstatedir = @sharedstatedir@ … … 319 234 esac; \ 320 235 done; \ 321 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/examples/Makefile'; \236 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/examples/Makefile'; \ 322 237 $(am__cd) $(top_srcdir) && \ 323 $(AUTOMAKE) --gnu src/examples/Makefile 238 $(AUTOMAKE) --foreign src/examples/Makefile 239 .PRECIOUS: Makefile 324 240 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 325 241 @case '$?' in \ … … 342 258 clean-noinstPROGRAMS: 343 259 -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) 344 avltree/$(am__dirstamp):345 @$(MKDIR_P) avltree346 @: > 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 365 260 avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 366 261 @rm -f avl_test$(EXEEXT) 367 262 $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS) 368 369 263 fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 370 264 @rm -f fstream_test$(EXEEXT) 371 265 $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS) 372 373 266 vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 374 267 @rm -f vector_test$(EXEEXT) … … 377 270 mostlyclean-compile: 378 271 -rm -f *.$(OBJEXT) 379 -rm -f avltree/*.$(OBJEXT)380 272 381 273 distclean-compile: … … 384 276 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@ 385 277 @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@ 386 285 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@ 387 286 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@ 388 287 @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@396 288 397 289 .c.o: 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 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 401 292 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 402 293 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 403 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@$<294 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< 404 295 405 296 .c.obj: 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 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 409 299 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 410 300 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 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) 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) 419 413 set x; \ 420 414 here=`pwd`; \ 421 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 422 421 shift; \ 423 422 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 431 430 fi; \ 432 431 fi 433 ctags: ctags-am 434 435 CTAGS: ctags 436 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 437 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 438 441 test -z "$(CTAGS_ARGS)$$unique" \ 439 442 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 444 447 && $(am__cd) $(top_srcdir) \ 445 448 && gtags -i $(GTAGS_ARGS) "$$here" 446 cscopelist: cscopelist-am447 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.files461 449 462 450 distclean-tags: … … 523 511 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 524 512 -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)527 513 528 514 maintainer-clean-generic: … … 534 520 535 521 distclean: distclean-am 536 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR)522 -rm -rf ./$(DEPDIR) 537 523 -rm -f Makefile 538 524 distclean-am: clean-am distclean-compile distclean-generic \ … … 580 566 581 567 maintainer-clean: maintainer-clean-am 582 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR)568 -rm -rf ./$(DEPDIR) 583 569 -rm -f Makefile 584 570 maintainer-clean-am: distclean-am maintainer-clean-generic … … 600 586 .MAKE: install-am install-strip 601 587 602 .PHONY: CTAGS GTAGS TAGSall all-am check check-am clean clean-generic \603 clean-noinstPROGRAMS c scopelist-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-p df-am install-ps install-ps-am install-strip\610 installcheck installcheck-am installdirs maintainer-clean \588 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ 589 clean-noinstPROGRAMS ctags 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-ps install-ps-am install-strip installcheck \ 596 installcheck-am installdirs maintainer-clean \ 611 597 maintainer-clean-generic mostlyclean mostlyclean-compile \ 612 mostlyclean-generic pdf pdf-am ps ps-am tags tags-amuninstall \598 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ 613 599 uninstall-am 614 615 .PRECIOUS: Makefile616 600 617 601 -
src/libcfa/Makefile.am
r208e5be rb1e63ac5 50 50 51 51 libobjs = ${headers:=.o} 52 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} exception.c52 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} 53 53 54 54 # not all platforms support concurrency, add option do disable it -
src/libcfa/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 20 21 21 22 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 = yes75 am__make_dryrun = (target_option=n; $(am__make_running_with_option))76 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))77 23 pkgdatadir = $(datadir)/@PACKAGE@ 78 24 pkgincludedir = $(includedir)/@PACKAGE@ … … 102 48 @BUILD_CONCURRENCY_TRUE@am__append_4 = concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c concurrency/invoke.c concurrency/preemption.c 103 49 subdir = src/libcfa 50 DIST_COMMON = $(am__nobase_cfa_include_HEADERS_DIST) \ 51 $(srcdir)/Makefile.am $(srcdir)/Makefile.in 104 52 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 105 53 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 106 54 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 107 55 $(ACLOCAL_M4) 108 DIST_COMMON = $(srcdir)/Makefile.am \109 $(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON)110 56 mkinstalldirs = $(install_sh) -d 111 57 CONFIG_HEADER = $(top_builddir)/config.h … … 145 91 AM_V_AR = $(am__v_AR_@AM_V@) 146 92 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) 147 am__v_AR_0 = @echo " AR " $@; 148 am__v_AR_1 = 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 = @ 149 97 libcfa_d_a_AR = $(AR) $(ARFLAGS) 150 98 libcfa_d_a_LIBADD = … … 154 102 containers/pair.c containers/result.c containers/vector.c \ 155 103 concurrency/coroutine.c concurrency/thread.c \ 156 concurrency/kernel.c concurrency/monitor.c exception.c\104 concurrency/kernel.c concurrency/monitor.c \ 157 105 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \ 158 106 concurrency/invoke.c concurrency/preemption.c … … 178 126 libcfa_d_a-interpose.$(OBJEXT) \ 179 127 libhdr/libcfa_d_a-libdebug.$(OBJEXT) $(am__objects_2) \ 180 libcfa_d_a-exception.$(OBJEXT)$(am__objects_3)128 $(am__objects_3) 181 129 am_libcfa_d_a_OBJECTS = $(am__objects_4) 182 130 libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS) … … 188 136 containers/pair.c containers/result.c containers/vector.c \ 189 137 concurrency/coroutine.c concurrency/thread.c \ 190 concurrency/kernel.c concurrency/monitor.c exception.c\138 concurrency/kernel.c concurrency/monitor.c \ 191 139 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \ 192 140 concurrency/invoke.c concurrency/preemption.c … … 210 158 libcfa_a-interpose.$(OBJEXT) \ 211 159 libhdr/libcfa_a-libdebug.$(OBJEXT) $(am__objects_6) \ 212 libcfa_a-exception.$(OBJEXT)$(am__objects_7)160 $(am__objects_7) 213 161 am_libcfa_a_OBJECTS = $(am__objects_8) 214 162 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 = false218 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 =227 163 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 228 164 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 233 169 AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) 234 170 am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) 235 am__v_CPPAS_0 = @echo " CPPAS " $@; 236 am__v_CPPAS_1 = 171 am__v_CPPAS_0 = @echo " CPPAS " $@; 237 172 AM_V_lt = $(am__v_lt_@AM_V@) 238 173 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 239 174 am__v_lt_0 = --silent 240 am__v_lt_1 =241 175 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 242 176 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 243 177 AM_V_CC = $(am__v_CC_@AM_V@) 244 178 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 245 am__v_CC_0 = @echo " CC " $@; 246 am__v_CC_1 = 179 am__v_CC_0 = @echo " CC " $@; 247 180 CCLD = $(CC) 248 181 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 249 182 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 250 183 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 251 am__v_CCLD_0 = @echo " CCLD " $@; 252 am__v_CCLD_1 = 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 " $@; 253 188 SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES) 254 189 DIST_SOURCES = $(am__libcfa_d_a_SOURCES_DIST) \ 255 190 $(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 esac261 191 am__nobase_cfa_include_HEADERS_DIST = assert fstream iostream iterator \ 262 192 limits math rational stdlib containers/maybe containers/pair \ … … 265 195 ${shell echo stdhdr/*} gmp concurrency/invoke.h 266 196 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 is270 # *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 variables278 # 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)`284 197 ETAGS = etags 285 198 CTAGS = ctags 286 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp287 199 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 288 200 ACLOCAL = @ACLOCAL@ … … 397 309 program_transform_name = @program_transform_name@ 398 310 psdir = @psdir@ 399 runstatedir = @runstatedir@400 311 sbindir = @sbindir@ 401 312 sharedstatedir = @sharedstatedir@ … … 417 328 libobjs = ${headers:=.o} 418 329 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \ 419 exception.c$(am__append_4)330 $(am__append_4) 420 331 libcfa_a_SOURCES = ${libsrc} 421 332 libcfa_a_CFLAGS = -nodebug -O2 … … 439 350 esac; \ 440 351 done; \ 441 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/libcfa/Makefile'; \352 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcfa/Makefile'; \ 442 353 $(am__cd) $(top_srcdir) && \ 443 $(AUTOMAKE) --gnu src/libcfa/Makefile 354 $(AUTOMAKE) --foreign src/libcfa/Makefile 355 .PRECIOUS: Makefile 444 356 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 445 357 @case '$?' in \ … … 461 373 install-libLIBRARIES: $(lib_LIBRARIES) 462 374 @$(NORMAL_INSTALL) 375 test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" 463 376 @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ 464 377 list2=; for p in $$list; do \ … … 468 381 done; \ 469 382 test -z "$$list2" || { \ 470 echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \471 $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \472 383 echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ 473 384 $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } … … 537 448 concurrency/$(am__dirstamp) \ 538 449 concurrency/$(DEPDIR)/$(am__dirstamp) 539 540 450 libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES) 541 451 $(AM_V_at)-rm -f libcfa-d.a … … 567 477 concurrency/$(am__dirstamp) \ 568 478 concurrency/$(DEPDIR)/$(am__dirstamp) 569 570 479 libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 571 480 $(AM_V_at)-rm -f libcfa.a … … 575 484 mostlyclean-compile: 576 485 -rm -f *.$(OBJEXT) 577 -rm -f concurrency/*.$(OBJEXT) 578 -rm -f containers/*.$(OBJEXT) 579 -rm -f libhdr/*.$(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) 580 511 581 512 distclean-compile: … … 583 514 584 515 @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@586 516 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@ 587 517 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-interpose.Po@am__quote@ … … 594 524 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@ 595 525 @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@597 526 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@ 598 527 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-interpose.Po@am__quote@ … … 921 850 @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` 922 851 923 libcfa_d_a-exception.obj: exception.c924 @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.Po926 @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 930 852 concurrency/libcfa_d_a-alarm.o: concurrency/alarm.c 931 853 @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 … … 1222 1144 @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` 1223 1145 1224 libcfa_a-exception.obj: exception.c1225 @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.Po1227 @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 1231 1146 concurrency/libcfa_a-alarm.o: concurrency/alarm.c 1232 1147 @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 … … 1265 1180 install-nobase_cfa_includeHEADERS: $(nobase_cfa_include_HEADERS) 1266 1181 @$(NORMAL_INSTALL) 1182 test -z "$(cfa_includedir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)" 1267 1183 @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; \1272 1184 $(am__nobase_list) | while read dir files; do \ 1273 1185 xfiles=; for file in $$files; do \ … … 1276 1188 test -z "$$xfiles" || { \ 1277 1189 test "x$$dir" = x. || { \ 1278 echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \1190 echo "$(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \ 1279 1191 $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)/$$dir"; }; \ 1280 1192 echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(cfa_includedir)/$$dir'"; \ … … 1288 1200 dir='$(DESTDIR)$(cfa_includedir)'; $(am__uninstall_files_from_dir) 1289 1201 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) 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) 1296 1214 set x; \ 1297 1215 here=`pwd`; \ 1298 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 1299 1222 shift; \ 1300 1223 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 1308 1231 fi; \ 1309 1232 fi 1310 ctags: ctags-am 1311 1312 CTAGS: ctags 1313 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 1314 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 1315 1242 test -z "$(CTAGS_ARGS)$$unique" \ 1316 1243 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 1321 1248 && $(am__cd) $(top_srcdir) \ 1322 1249 && gtags -i $(GTAGS_ARGS) "$$here" 1323 cscopelist: cscopelist-am1324 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.files1338 1250 1339 1251 distclean-tags: … … 1487 1399 .MAKE: install-am install-strip 1488 1400 1489 .PHONY: CTAGS GTAGS TAGSall all-am check check-am clean clean-generic \1490 clean-libLIBRARIES c scopelist-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 \1401 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ 1402 clean-libLIBRARIES ctags 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 \ 1496 1408 install-nobase_cfa_includeHEADERS install-pdf install-pdf-am \ 1497 1409 install-ps install-ps-am install-strip installcheck \ … … 1499 1411 maintainer-clean-generic maintainer-clean-local mostlyclean \ 1500 1412 mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ 1501 tags tags-amuninstall uninstall-am uninstall-libLIBRARIES \1413 tags uninstall uninstall-am uninstall-libLIBRARIES \ 1502 1414 uninstall-nobase_cfa_includeHEADERS 1503 1504 .PRECIOUS: Makefile1505 1415 1506 1416 -
src/libcfa/exception.c
r208e5be rb1e63ac5 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(*)( exception *)39 // struct _Unwind_Context * -> _Unwind_Reason_Code(*)() 40 40 #define MATCHER_FROM_CONTEXT(ptr_to_context) \ 41 (*(_Unwind_Reason_Code(**)( exception*))(_Unwind_GetCFA(ptr_to_context) + 8))41 (*(_Unwind_Reason_Code(**)())(_Unwind_GetCFA(ptr_to_context) + 8)) 42 42 43 43 44 44 // RESUMPTION ================================================================ 45 45 46 void __cfaehm__throw_resum ption(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 =46 void __cfaehm__throw_resume(exception except) { 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 = 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-> handler(except)) {57 if (current->try_to_handle(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 ion(except);67 __cfaehm__throw_terminate(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 __ cfaehm__try_resume_setup(struct __cfaehm__try_resume_node * node,76 int (*handler)(exception *except)) {75 void __try_resume_setup(struct __try_resume_node * node, 76 bool (*handler)(exception except)) { 77 77 node->next = shared_stack.top_resume; 78 node-> handler= handler;78 node->try_to_handle = handler; 79 79 shared_stack.top_resume = node; 80 80 } 81 81 82 void __ cfaehm__try_resume_cleanup(struct __cfaehm__try_resume_node * node) {82 void __try_resume_cleanup(struct __try_resume_node * node) { 83 83 shared_stack.top_resume = node->next; 84 84 } … … 111 111 } 112 112 113 void __cfaehm__throw_terminat ion( exception *val ) {113 void __cfaehm__throw_terminate( int 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 ion(void) {149 void __cfaehm__rethrow_terminate(void) { 150 150 // DEBUG 151 151 printf("Rethrowing termination exception\n"); 152 152 153 __cfaehm__throw_terminat ion(&shared_stack.current_exception);153 __cfaehm__throw_terminate(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)( exception *) =263 _Unwind_Reason_Code (*matcher)() = 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 __ cfaehm__try_terminate(void (*try_block)(),325 void (*catch_block)(int index, exception *except),326 __attribute__((unused)) int (*match_block)(exception *except)) {324 void __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-__ cfaehm__try_terminate\n" // Handled area start (relative to start of function)386 " .uleb128 .TRYSTART-__try_terminate\n" // Handled area start (relative to start of function) 387 387 " .uleb128 .TRYEND-.TRYSTART\n" // Handled area length 388 " .uleb128 .CATCH-__ cfaehm__try_terminate\n" // Hanlder landing pad adress (relative to start of function)388 " .uleb128 .CATCH-__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 __ cfaehm__try_terminate, .-__cfaehm__try_terminate\n"392 " .size __try_terminate, .-__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" -
src/libcfa/exception.h
r208e5be rb1e63ac5 38 38 // Data structure creates a list of resume handlers. 39 39 struct __cfaehm__try_resume_node { 40 struct__cfaehm__try_resume_node * next;40 __cfaehm__try_resume_node * next; 41 41 int (*handler)(exception * except); 42 42 }; 43 43 44 44 void __cfaehm__try_resume_setup( 45 struct__cfaehm__try_resume_node * node,45 __cfaehm__try_resume_node * node, 46 46 int (*handler)(exception * except)); 47 47 void __cfaehm__try_resume_cleanup( 48 struct__cfaehm__try_resume_node * node);48 __cfaehm__try_resume_node * node); 49 49 50 50 // Check for a standard way to call fake deconstructors. -
src/libcfa/fstream
r208e5be rb1e63ac5 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 1 16:37:53201713 // Update Count : 1 1212 // Last Modified On : Mon May 15 18:11:09 2017 13 // Update Count : 104 14 14 // 15 15 … … 24 24 _Bool sepDefault; 25 25 _Bool sepOnOff; 26 _Bool lastSepOn;27 26 const char * sepCur; 28 27 char separator[separateSize]; … … 36 35 const char * sepGetCur( ofstream * ); 37 36 void sepSetCur( ofstream *, const char * ); 38 _Bool lastSepOn( ofstream * );39 37 40 38 // public -
src/libcfa/fstream.c
r208e5be rb1e63ac5 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 1 16:37:54201713 // Update Count : 2 4212 // Last Modified On : Mon May 15 18:11:11 2017 13 // Update Count : 234 14 14 // 15 15 … … 33 33 this->sepDefault = sepDefault; 34 34 this->sepOnOff = sepOnOff; 35 this->lastSepOn = false;36 35 sepSet( this, separator ); 37 36 sepSetCur( this, sepGet( this ) ); … … 40 39 41 40 // private 42 _Bool lastSepOn( ofstream * os ) { return os->lastSepOn; } 43 _Bool sepPrt( ofstream * os ) { os->lastSepOn = false; return os->sepOnOff; } 41 _Bool sepPrt( ofstream * os ) { return os->sepOnOff; } 44 42 void sepReset( ofstream * os ) { os->sepOnOff = os->sepDefault; } 45 43 void sepReset( ofstream * os, _Bool reset ) { os->sepDefault = reset; os->sepOnOff = os->sepDefault; } … … 48 46 49 47 // public 50 void sepOn( ofstream * os ) { os-> lastSepOn = true; os->sepOnOff = true; }51 void sepOff( ofstream * os ) { os-> lastSepOn = false; os->sepOnOff = 0; }48 void sepOn( ofstream * os ) { os->sepOnOff = 1; } 49 void sepOff( ofstream * os ) { os->sepOnOff = 0; } 52 50 53 51 _Bool sepDisable( ofstream *os ) { 54 52 _Bool temp = os->sepDefault; 55 53 os->sepDefault = false; 56 os->lastSepOn = false;57 54 sepReset( os ); 58 55 return temp; … … 95 92 exit( EXIT_FAILURE ); 96 93 } // if 97 ?{}( os, file, true, false, " ", ", " );94 ?{}( os, file, 1, 0, " ", ", " ); 98 95 } // open 99 96 … … 135 132 } // fmt 136 133 137 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };134 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, " ", ", " }; 138 135 ofstream *sout = &soutFile; 139 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };136 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 1, 0, " ", ", " }; 140 137 ofstream *serr = &serrFile; 141 138 -
src/libcfa/iostream
r208e5be rb1e63ac5 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jul 2 08:42:56201713 // Update Count : 1 1012 // Last Modified On : Mon May 15 18:08:44 2017 13 // Update Count : 105 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)29 28 // public 30 29 void sepOn( ostype * ); // turn separator state on … … 44 43 ostype * write( ostype *, const char *, unsigned long int ); 45 44 int fmt( ostype *, const char fmt[], ... ); 46 }; // ostream45 }; 47 46 48 47 trait writeable( otype T ) { 49 48 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 50 }; // writeable49 }; 51 50 52 51 // implement writable for intrinsic types … … 104 103 istype * ungetc( istype *, char ); 105 104 int fmt( istype *, const char fmt[], ... ); 106 }; // istream105 }; 107 106 108 107 trait readable( otype T ) { 109 108 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T ); 110 }; // readable109 }; 111 110 112 111 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * ); -
src/libcfa/iostream.c
r208e5be rb1e63ac5 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jul 2 08:54:02201713 // Update Count : 3 7512 // Last Modified On : Mon May 8 18:24:23 2017 13 // Update Count : 369 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 sepSetCur( os, sepGetTuple( os ) ); // switch to tuple separator 203 204 os | arg; // print first argument 204 sepSetCur( os, sepGetTuple( os ) ); // switch to tuple separator205 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 ) );220 219 os | '\n'; 221 220 flush( os ); -
src/main.cc
r208e5be rb1e63ac5 25 25 using namespace std; 26 26 27 #include "Parser/ ParserTypes.h"27 #include "Parser/parser.hh" 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"42 41 #include "SymTab/Validate.h" 43 42 #include "ResolvExpr/AlternativePrinter.h" … … 291 290 Tuples::expandUniqueExpr( translationUnit ); 292 291 293 OPTPRINT( "translateEHM" );294 ControlStruct::translateEHM( translationUnit );295 296 292 OPTPRINT( "convertSpecializations" ) // needs to happen before tuple types are expanded 297 293 GenPoly::convertSpecializations( translationUnit ); -
src/prelude/Makefile.am
r208e5be rb1e63ac5 23 23 noinst_DATA = ../libcfa/libcfa-prelude.c 24 24 25 CC = ${abs_top_srcdir}/src/driver/cfa26 27 25 $(DEPDIR) : 28 26 mkdir $(DEPDIR) … … 47 45 48 46 # create forward declarations for cfa builtins 49 builtins.cf : builtins.c ${CC}50 ${AM_V_GEN} ${CC}-E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po47 builtins.cf : builtins.c 48 ${AM_V_GEN}@BACKEND_CC@ -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po 51 49 ${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po 52 50 -
src/prelude/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 19 20 20 21 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 = yes74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))76 22 pkgdatadir = $(datadir)/@PACKAGE@ 77 23 pkgincludedir = $(includedir)/@PACKAGE@ … … 93 39 host_triplet = @host@ 94 40 subdir = src/prelude 41 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in 95 42 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 96 43 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 97 44 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 98 45 $(ACLOCAL_M4) 99 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)100 46 mkinstalldirs = $(install_sh) -d 101 47 CONFIG_HEADER = $(top_builddir)/config.h 102 48 CONFIG_CLEAN_FILES = 103 49 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 = false107 am__v_P_1 = :108 50 AM_V_GEN = $(am__v_GEN_@AM_V@) 109 51 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 110 am__v_GEN_0 = @echo " GEN " $@; 111 am__v_GEN_1 = 52 am__v_GEN_0 = @echo " GEN " $@; 112 53 AM_V_at = $(am__v_at_@AM_V@) 113 54 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 114 55 am__v_at_0 = @ 115 am__v_at_1 =116 56 SOURCES = 117 57 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 esac123 58 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; 124 59 am__vpath_adj = case $$p in \ … … 150 85 am__installdirs = "$(DESTDIR)$(cfalibdir)" 151 86 DATA = $(cfalib_DATA) $(noinst_DATA) 152 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)153 am__DIST_COMMON = $(srcdir)/Makefile.in154 87 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 155 88 ACLOCAL = @ACLOCAL@ … … 162 95 AWK = @AWK@ 163 96 BACKEND_CC = @BACKEND_CC@ 164 CC = ${abs_top_srcdir}/src/driver/cfa97 CC = @CC@ 165 98 CCAS = @CCAS@ 166 99 CCASDEPMODE = @CCASDEPMODE@ … … 264 197 program_transform_name = @program_transform_name@ 265 198 psdir = @psdir@ 266 runstatedir = @runstatedir@267 199 sbindir = @sbindir@ 268 200 sharedstatedir = @sharedstatedir@ … … 294 226 esac; \ 295 227 done; \ 296 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/prelude/Makefile'; \228 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/prelude/Makefile'; \ 297 229 $(am__cd) $(top_srcdir) && \ 298 $(AUTOMAKE) --gnu src/prelude/Makefile 230 $(AUTOMAKE) --foreign src/prelude/Makefile 231 .PRECIOUS: Makefile 299 232 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 300 233 @case '$?' in \ … … 316 249 install-cfalibDATA: $(cfalib_DATA) 317 250 @$(NORMAL_INSTALL) 251 test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)" 318 252 @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; \323 253 for p in $$list; do \ 324 254 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ … … 335 265 files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ 336 266 dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir) 337 tags TAGS:338 339 ctags CTAGS: 340 341 cscope cscopelist:267 tags: TAGS 268 TAGS: 269 270 ctags: CTAGS 271 CTAGS: 342 272 343 273 … … 479 409 .MAKE: install-am install-strip 480 410 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-p df-am install-ps install-ps-am install-strip\488 installcheck installcheck-am installdirs maintainer-clean \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-ps install-ps-am install-strip installcheck \ 418 installcheck-am installdirs maintainer-clean \ 489 419 maintainer-clean-generic maintainer-clean-local mostlyclean \ 490 mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ 491 uninstall-am uninstall-cfalibDATA 492 493 .PRECIOUS: Makefile 420 mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ 421 uninstall-cfalibDATA 494 422 495 423 … … 516 444 517 445 # create forward declarations for cfa builtins 518 builtins.cf : builtins.c ${CC}519 ${AM_V_GEN} ${CC}-E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po446 builtins.cf : builtins.c 447 ${AM_V_GEN}@BACKEND_CC@ -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po 520 448 ${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po 521 449 -
src/tests/.expect/io.txt
r208e5be rb1e63ac5 4 4 123 5 5 6 opening delimiters7 6 x (1 x [2 x {3 x =4 x $5 x £6 x ¥7 x ¡8 x ¿9 x «10 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 7 1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x 13 8 x`1`x'2'x"3"x:4:x 5 x 6 x 14 9 7 … … 19 14 x 20 15 10 21 x 22 23 override opening/closing delimiters 16 x 24 17 x ( 1 ) x 2 , x 3 :x: 4 25 26 input bacis types27 28 output basic types29 18 A 30 19 1 2 3 4 5 6 7 8 … … 32 21 1.1+2.3i 1.1-2.3i 1.1-2.3i 33 22 34 tuples35 1, 2, 3 3, 4, 536 37 toggle separator38 23 1.11.21.3 39 24 1.1+2.3i1.1-2.3i1.1-2.3i 40 abcxyz 41 abcxyz 25 abcxyz 26 abcxyz 42 27 43 change separator44 from " "to " , $"45 28 1.1, $1.2, $1.3 46 29 1.1+2.3i, $1.1-2.3i, $1.1-2.3i 47 abc, $xyz, $ 48 1, 2, 3, $3, 4, 5 30 abc, $xyz 49 31 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 32 1, 2, 3, 4 33 1, $2, $3 ", $" 34 1 2 3 " " 35 1 2 3 57 36 12 3 58 1 2 359 1 2 360 1 2 361 62 37 123 63 38 1 23 64 39 1 2 3 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 40 1 2 3 4 " " 41 1, 2, 3, 4 ", " 42 1, 2, 3, 4 74 43 3, 4, a, 7.2 75 44 3, 4, a, 7.2 76 45 3 4 a 7.2 77 46 3 4 a 7.234a7.23 4 a 7.2 78 3-4-a-7.2^3^4 ^3-4-a-7.247 3-4-a-7.2^3^4-3-4-a-7.2 -
src/tests/Makefile.am
r208e5be rb1e63ac5 32 32 BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ ${EXTRA_FLAGS} 33 33 TEST_FLAGS = $(if $(test), 2> .err/${@}.log, ) 34 AM_CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}34 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 43 41 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 46 42 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}48 43 49 44 all-local : … … 67 62 68 63 % : %.c @CFA_BINDIR@/@CFA_NAME@ 69 ${CC} ${ AM_CFLAGS} ${CFLAGS} ${<} -o ${@}64 ${CC} ${CFLAGS} ${<} -o ${@} 70 65 71 66 dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 72 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}67 ${CC} ${CFLAGS} -DERR1 ${<} -o ${@} 73 68 74 69 dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 75 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR2 ${<} -o ${@}70 ${CC} ${CFLAGS} -DERR2 ${<} -o ${@} 76 71 77 72 declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@ 78 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}73 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 79 74 80 75 gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@ 81 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}76 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 82 77 83 78 extension : extension.c @CFA_BINDIR@/@CFA_NAME@ 84 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}79 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 85 80 86 81 attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@ 87 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}82 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 88 83 89 84 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@ 90 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}85 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 91 86 92 87 gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@ 93 ${CC} ${ AM_CFLAGS} ${CFLAGS} -lgmp ${<} -o ${@}88 ${CC} ${CFLAGS} -lgmp ${<} -o ${@} 94 89 95 90 memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@ 96 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}91 ${CC} ${CFLAGS} -DERR1 ${<} -o ${@} 97 92 98 93 completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@ 99 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}94 ${CC} ${CFLAGS} -DERR1 ${<} -o ${@} -
src/tests/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 18 19 ############################################################################### 19 20 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 = yes73 am__make_dryrun = (target_option=n; $(am__make_running_with_option))74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))75 21 pkgdatadir = $(datadir)/@PACKAGE@ 76 22 pkgincludedir = $(includedir)/@PACKAGE@ … … 95 41 avl_test$(EXEEXT) 96 42 subdir = src/tests 43 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in 97 44 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 98 45 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 99 46 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 100 47 $(ACLOCAL_M4) 101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)102 48 mkinstalldirs = $(install_sh) -d 103 49 CONFIG_HEADER = $(top_builddir)/config.h 104 50 CONFIG_CLEAN_FILES = 105 51 CONFIG_CLEAN_VPATH_FILES = 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) 52 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \ 53 avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \ 54 avl-private.$(OBJEXT) 114 55 avl_test_OBJECTS = $(am_avl_test_OBJECTS) 115 56 avl_test_LDADD = $(LDADD) 116 avl_test_LINK = $(CCLD) $(avl_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ 117 $(LDFLAGS) -o $@ 118 am_fstream_test_OBJECTS = fstream_test-fstream_test.$(OBJEXT) 57 am_fstream_test_OBJECTS = fstream_test.$(OBJEXT) 119 58 fstream_test_OBJECTS = $(am_fstream_test_OBJECTS) 120 59 fstream_test_LDADD = $(LDADD) 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) 60 am_vector_test_OBJECTS = vector_int.$(OBJEXT) array.$(OBJEXT) \ 61 vector_test.$(OBJEXT) 126 62 vector_test_OBJECTS = $(am_vector_test_OBJECTS) 127 63 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 = false133 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 =142 64 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 143 65 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 147 69 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 148 70 am__v_lt_0 = --silent 149 am__v_lt_1 =150 71 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 151 72 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 152 73 AM_V_CC = $(am__v_CC_@AM_V@) 153 74 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 154 am__v_CC_0 = @echo " CC " $@; 155 am__v_CC_1 = 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 = @ 156 79 CCLD = $(CC) 157 80 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 158 81 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 159 82 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 160 am__v_CCLD_0 = @echo " CCLD " $@; 161 am__v_CCLD_1 = 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 " $@; 162 87 SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 163 88 $(vector_test_SOURCES) 164 89 DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \ 165 90 $(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 esac171 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 is174 # *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 variables182 # 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)`188 91 ETAGS = etags 189 92 CTAGS = ctags 190 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp191 93 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 192 94 ACLOCAL = @ACLOCAL@ … … 211 113 CFA_NAME = @CFA_NAME@ 212 114 CFA_PREFIX = @CFA_PREFIX@ 213 CFLAGS = @CFLAGS@115 CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS} 214 116 CPP = @CPP@ 215 117 CPPFLAGS = @CPPFLAGS@ … … 301 203 program_transform_name = @program_transform_name@ 302 204 psdir = @psdir@ 303 runstatedir = @runstatedir@304 205 sbindir = @sbindir@ 305 206 sharedstatedir = @sharedstatedir@ … … 323 224 BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ ${EXTRA_FLAGS} 324 225 TEST_FLAGS = $(if $(test), 2> .err/${@}.log, ) 325 AM_CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}326 226 fstream_test_SOURCES = fstream_test.c 327 fstream_test_CFLAGS = $(if $(test), 2>> .err/fstream_test.log, ) ${BUILD_FLAGS}328 227 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}330 228 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}332 229 all: all-am 333 230 … … 343 240 esac; \ 344 241 done; \ 345 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/tests/Makefile'; \242 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/Makefile'; \ 346 243 $(am__cd) $(top_srcdir) && \ 347 $(AUTOMAKE) --gnu src/tests/Makefile 244 $(AUTOMAKE) --foreign src/tests/Makefile 245 .PRECIOUS: Makefile 348 246 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 349 247 @case '$?' in \ … … 363 261 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 364 262 $(am__aclocal_m4_deps): 365 avltree/$(am__dirstamp):366 @$(MKDIR_P) avltree367 @: > 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 386 263 avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 387 264 @rm -f avl_test$(EXEEXT) 388 $(AM_V_CCLD)$(avl_test_LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS) 389 265 $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS) 390 266 fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 391 267 @rm -f fstream_test$(EXEEXT) 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 268 $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS) 406 269 vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 407 270 @rm -f vector_test$(EXEEXT) 408 $(AM_V_CCLD)$( vector_test_LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)271 $(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS) 409 272 410 273 mostlyclean-compile: 411 274 -rm -f *.$(OBJEXT) 412 -rm -f avltree/*.$(OBJEXT)413 -rm -f vector/*.$(OBJEXT)414 275 415 276 distclean-compile: 416 277 -rm -f *.tab.c 417 278 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@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@ 429 290 430 291 .c.o: 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 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 434 294 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 435 295 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 436 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@$<296 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< 437 297 438 298 .c.obj: 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 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 442 301 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 443 302 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 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) 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) 606 457 set x; \ 607 458 here=`pwd`; \ 608 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 609 465 shift; \ 610 466 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 618 474 fi; \ 619 475 fi 620 ctags: ctags-am 621 622 CTAGS: ctags 623 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 624 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 625 485 test -z "$(CTAGS_ARGS)$$unique" \ 626 486 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 631 491 && $(am__cd) $(top_srcdir) \ 632 492 && gtags -i $(GTAGS_ARGS) "$$here" 633 cscopelist: cscopelist-am634 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.files648 493 649 494 distclean-tags: … … 710 555 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 711 556 -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)716 557 717 558 maintainer-clean-generic: … … 723 564 724 565 distclean: distclean-am 725 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) vector/$(DEPDIR)566 -rm -rf ./$(DEPDIR) 726 567 -rm -f Makefile 727 568 distclean-am: clean-am distclean-compile distclean-generic \ … … 769 610 770 611 maintainer-clean: maintainer-clean-am 771 -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) vector/$(DEPDIR)612 -rm -rf ./$(DEPDIR) 772 613 -rm -f Makefile 773 614 maintainer-clean-am: distclean-am maintainer-clean-generic … … 789 630 .MAKE: install-am install-strip 790 631 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 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 805 644 806 645 … … 826 665 827 666 % : %.c @CFA_BINDIR@/@CFA_NAME@ 828 ${CC} ${ AM_CFLAGS} ${CFLAGS} ${<} -o ${@}667 ${CC} ${CFLAGS} ${<} -o ${@} 829 668 830 669 dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 831 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}670 ${CC} ${CFLAGS} -DERR1 ${<} -o ${@} 832 671 833 672 dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@ 834 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR2 ${<} -o ${@}673 ${CC} ${CFLAGS} -DERR2 ${<} -o ${@} 835 674 836 675 declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@ 837 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}676 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 838 677 839 678 gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@ 840 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}679 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 841 680 842 681 extension : extension.c @CFA_BINDIR@/@CFA_NAME@ 843 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}682 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 844 683 845 684 attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@ 846 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}685 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 847 686 848 687 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@ 849 ${CC} ${ AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}688 ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@} 850 689 851 690 gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@ 852 ${CC} ${ AM_CFLAGS} ${CFLAGS} -lgmp ${<} -o ${@}691 ${CC} ${CFLAGS} -lgmp ${<} -o ${@} 853 692 854 693 memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@ 855 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}694 ${CC} ${CFLAGS} -DERR1 ${<} -o ${@} 856 695 857 696 completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@ 858 ${CC} ${ AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}697 ${CC} ${CFLAGS} -DERR1 ${<} -o ${@} 859 698 860 699 # Tell versions [3.59,3.63) of GNU make to not export all variables. -
src/tests/io.c
r208e5be rb1e63ac5 10 10 // Created On : Wed Mar 2 16:56:02 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jul 2 09:40:58201713 // Update Count : 6812 // Last Modified On : Thu Jun 8 09:52:10 2017 13 // Update Count : 51 14 14 // 15 15 … … 42 42 sout | endl; 43 43 44 sout | "opening delimiters" | endl;45 44 sout 45 // opening delimiters 46 46 | "x (" | 1 47 47 | "x [" | 2 … … 54 54 | "x ¿" | 9 55 55 | "x «" | 10 56 | endl | endl; 57 58 sout | "closing delimiters" | endl; 56 | endl; 59 57 sout 58 // closing delimiters 60 59 | 1 | ", x" 61 60 | 2 | ". x" … … 69 68 | 10 | "] x" 70 69 | 11 | "} x" 71 | endl | endl; 72 73 sout | "opening/closing delimiters" | endl; 70 | endl; 74 71 sout 72 // opening-closing delimiters 75 73 | "x`" | 1 | "`x'" | 2 76 74 | "'x\"" | 3 | "\"x:" | 4 … … 78 76 | "\tx\f" | 7 | "\fx\v" | 8 79 77 | "\vx\n" | 9 | "\nx\r" | 10 80 | "\rx" 81 | endl | endl; 82 83 sout | "override opening/closing delimiters" | endl; 78 | "\rx" | 79 endl; 84 80 sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl; 85 sout | endl;86 81 87 82 ifstream in; // create / open file 88 83 open( &in, "io.data", "r" ); 89 84 90 sout | "input bacis types" | endl;91 85 &in | &c // character 92 86 | &si | &usi | &i | &ui | &li | &uli | &lli | &ulli // integral … … 94 88 | &fc | &dc | &ldc // floating-point complex 95 89 | cstr( s1 ) | cstr( s2, size ); // C string, length unchecked and checked 96 sout | endl;97 90 98 sout | "output basic types" | endl;99 91 sout | c | ' ' | endl // character 100 92 | si | usi | i | ui | li | uli | lli | ulli | endl // integral … … 102 94 | fc | dc | ldc | endl; // complex 103 95 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 tuple108 sout | endl;109 110 sout | "toggle separator" | endl;111 96 sout | f | "" | d | "" | ld | endl // floating point without separator 112 97 | sepDisable | fc | dc | ldc | sepEnable | endl // complex without separator … … 115 100 sout | endl; 116 101 117 sout | "change separator" | endl;118 sout | "from \" " | sepGet( sout ) | "\"";119 102 sepSet( sout, ", $" ); // change separator, maximum of 15 characters 120 sout | "to \" " | sepGet( sout ) | "\"" | endl;121 103 sout | f | d | ld | endl 122 104 | fc | dc | ldc | 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 105 | s1 | s2 | endl; 133 106 sout | endl; 134 107 135 sout | sepOn | 1 | 2 | 3 | sepOn | endl; // separator at start/end of line 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 136 118 sout | 1 | sepOff | 2 | 3 | endl; // locally turn off implicit separator 137 sout | sepOn | 1 | 2 | 3 | sepOn | sepOff | endl; // separator at start of line138 sout | 1 | 2 | 3 | endl | sepOn; // separator at start of next line139 sout | 1 | 2 | 3 | endl;140 sout | endl;141 119 142 120 sout | sepDisable | 1 | 2 | 3 | endl; // globally turn off implicit separation 143 121 sout | 1 | sepOn | 2 | 3 | endl; // locally turn on implicit separator 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; 122 sout | sepEnable | 1 | 2 | 3 | endl; // globally turn on implicit separation 150 123 151 124 sepSetTuple( sout, " " ); // set tuple separator from ", " to " " … … 153 126 sepSetTuple( sout, ", " ); // reset tuple separator to ", " 154 127 sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"" | endl; 128 155 129 sout | t1 | t2 | endl; // print tuple 156 sout | endl;157 130 158 131 [int, int, const char *, double] t3 = { 3, 4, "a", 7.2 }; -
src/tests/preempt_longrun/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 18 19 ############################################################################### 19 20 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 = yes73 am__make_dryrun = (target_option=n; $(am__make_running_with_option))74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))75 21 pkgdatadir = $(datadir)/@PACKAGE@ 76 22 pkgincludedir = $(includedir)/@PACKAGE@ … … 92 38 host_triplet = @host@ 93 39 subdir = src/tests/preempt_longrun 40 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in 94 41 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 95 42 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 96 43 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 97 44 $(ACLOCAL_M4) 98 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)99 45 mkinstalldirs = $(install_sh) -d 100 46 CONFIG_HEADER = $(top_builddir)/config.h 101 47 CONFIG_CLEAN_FILES = 102 48 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 = false106 am__v_P_1 = :107 49 AM_V_GEN = $(am__v_GEN_@AM_V@) 108 50 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 109 am__v_GEN_0 = @echo " GEN " $@; 110 am__v_GEN_1 = 51 am__v_GEN_0 = @echo " GEN " $@; 111 52 AM_V_at = $(am__v_at_@AM_V@) 112 53 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 113 54 am__v_at_0 = @ 114 am__v_at_1 =115 55 SOURCES = 116 56 DIST_SOURCES = 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 57 am__tty_colors = \ 58 red=; grn=; lgn=; blu=; std= 329 59 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 330 60 ACLOCAL = @ACLOCAL@ … … 439 169 program_transform_name = @program_transform_name@ 440 170 psdir = @psdir@ 441 runstatedir = @runstatedir@442 171 sbindir = @sbindir@ 443 172 sharedstatedir = @sharedstatedir@ … … 457 186 458 187 .SUFFIXES: 459 .SUFFIXES: .log .test .test$(EXEEXT) .trs460 188 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) 461 189 @for dep in $?; do \ … … 467 195 esac; \ 468 196 done; \ 469 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/tests/preempt_longrun/Makefile'; \197 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile'; \ 470 198 $(am__cd) $(top_srcdir) && \ 471 $(AUTOMAKE) --gnu src/tests/preempt_longrun/Makefile 199 $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile 200 .PRECIOUS: Makefile 472 201 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 473 202 @case '$?' in \ … … 487 216 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 488 217 $(am__aclocal_m4_deps): 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; }; \ 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; \ 259 else \ 260 skip=`expr $$skip + 1`; \ 261 col=$$blu; res=SKIP; \ 262 fi; \ 263 echo "$${col}$$res$${std}: $$tst"; \ 537 264 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; \ 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"; \ 563 275 else \ 564 echo "$@: invalid 'result_count' usage" >&2; exit 4; \565 fi; \566 shift; \567 desc=$$1 count=$$2;\568 if test $$maybe_colorize = yes && test $$count -gt0; then \569 color_start=$$3 color_end=$$std; \276 if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ 277 banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ 278 fi; \ 279 else \ 280 if test "$$xpass" -eq 0; then \ 281 banner="$$failed of $$all $$tests failed"; \ 570 282 else \ 571 color_start= color_end=; \ 572 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) 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 707 317 708 318 distdir: $(DISTFILES) … … 761 371 fi 762 372 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)766 373 767 374 clean-generic: … … 843 450 844 451 .PHONY: all all-am all-local check check-TESTS check-am clean \ 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 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 857 461 858 462 -
src/tests/test.py
r208e5be rb1e63ac5 161 161 162 162 # remove any outputs from the previous tests to prevent side effects 163 rm( (out_file, err_file,test.name), dry_run )163 rm( (out_file, test.name), dry_run ) 164 164 165 165 options = "-debug" if debug else "-nodebug" -
tools/cfa.nanorc
r208e5be rb1e63ac5 18 18 # Control Flow Structures 19 19 color brightyellow "\<(if|else|while|do|for|switch|choose|case|default)\>" 20 color brightyellow "\<(try|catch (Resume)?|finally)\>"20 color brightyellow "\<(try|catch|catchResume|finally)\>" 21 21 22 22 # Control Flow Statements 23 color magenta "\<( goto|return|break|continue|fallthr(u|ough)|throw(Resume)?)\>"23 color magenta "\<(return|break|continue|fallthru|throw|throwResume)\>" 24 24 25 25 # Operator Names -
tools/prettyprinter/Makefile.am
r208e5be rb1e63ac5 15 15 ############################################################################### 16 16 17 BUILT_SOURCES = parser.h h17 BUILT_SOURCES = parser.h 18 18 19 19 AM_YFLAGS = -d -t -v -
tools/prettyprinter/Makefile.in
r208e5be rb1e63ac5 1 # Makefile.in generated by automake 1.1 5from Makefile.am.1 # Makefile.in generated by automake 1.11.3 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 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. 6 7 # This Makefile.in is free software; the Free Software Foundation 7 8 # gives unlimited permission to copy and/or distribute it, … … 19 20 20 21 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 = yes74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))76 22 pkgdatadir = $(datadir)/@PACKAGE@ 77 23 pkgincludedir = $(includedir)/@PACKAGE@ … … 94 40 tools_prettyprinter_PROGRAMS = pretty$(EXEEXT) 95 41 subdir = tools/prettyprinter 42 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in lex.cc \ 43 parser.cc parser.h 96 44 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 97 45 am__aclocal_m4_deps = $(top_srcdir)/configure.ac 98 46 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 99 47 $(ACLOCAL_M4) 100 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)101 48 mkinstalldirs = $(install_sh) -d 102 49 CONFIG_HEADER = $(top_builddir)/config.h … … 114 61 pretty_LINK = $(CXXLD) $(pretty_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ 115 62 $(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 = false119 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 =128 63 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) 129 64 depcomp = $(SHELL) $(top_srcdir)/automake/depcomp … … 133 68 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) 134 69 am__v_lt_0 = --silent 135 am__v_lt_1 =136 70 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ 137 71 $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 138 72 AM_V_CXX = $(am__v_CXX_@AM_V@) 139 73 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) 140 am__v_CXX_0 = @echo " CXX " $@; 141 am__v_CXX_1 = 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 = @ 142 78 CXXLD = $(CXX) 143 79 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ … … 145 81 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) 146 82 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) 147 am__v_CXXLD_0 = @echo " CXXLD " $@; 148 am__v_CXXLD_1 = 83 am__v_CXXLD_0 = @echo " CXXLD " $@; 149 84 @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || 150 85 LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) 151 86 AM_V_LEX = $(am__v_LEX_@AM_V@) 152 87 am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) 153 am__v_LEX_0 = @echo " LEX " $@; 154 am__v_LEX_1 = 88 am__v_LEX_0 = @echo " LEX " $@; 155 89 YLWRAP = $(top_srcdir)/automake/ylwrap 156 90 @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/159 91 YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) 160 92 AM_V_YACC = $(am__v_YACC_@AM_V@) 161 93 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) 162 am__v_YACC_0 = @echo " YACC " $@; 163 am__v_YACC_1 = 94 am__v_YACC_0 = @echo " YACC " $@; 164 95 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 165 96 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 166 97 AM_V_CC = $(am__v_CC_@AM_V@) 167 98 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) 168 am__v_CC_0 = @echo " CC " $@; 169 am__v_CC_1 = 99 am__v_CC_0 = @echo " CC " $@; 170 100 CCLD = $(CC) 171 101 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 172 102 AM_V_CCLD = $(am__v_CCLD_@AM_V@) 173 103 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) 174 am__v_CCLD_0 = @echo " CCLD " $@; 175 am__v_CCLD_1 = 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 " $@; 176 108 SOURCES = $(pretty_SOURCES) 177 109 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 esac183 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 is186 # *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 variables194 # 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)`200 110 ETAGS = etags 201 111 CTAGS = ctags 202 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp \203 $(top_srcdir)/automake/ylwrap lex.cc parser.cc parser.hh204 112 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 205 113 ACLOCAL = @ACLOCAL@ … … 314 222 program_transform_name = @program_transform_name@ 315 223 psdir = @psdir@ 316 runstatedir = @runstatedir@317 224 sbindir = @sbindir@ 318 225 sharedstatedir = @sharedstatedir@ … … 323 230 top_builddir = @top_builddir@ 324 231 top_srcdir = @top_srcdir@ 325 BUILT_SOURCES = parser.h h232 BUILT_SOURCES = parser.h 326 233 AM_YFLAGS = -d -t -v 327 234 SRC = lex.ll \ … … 350 257 esac; \ 351 258 done; \ 352 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnutools/prettyprinter/Makefile'; \259 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/prettyprinter/Makefile'; \ 353 260 $(am__cd) $(top_srcdir) && \ 354 $(AUTOMAKE) --gnu tools/prettyprinter/Makefile 261 $(AUTOMAKE) --foreign tools/prettyprinter/Makefile 262 .PRECIOUS: Makefile 355 263 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 356 264 @case '$?' in \ … … 372 280 install-tools_prettyprinterPROGRAMS: $(tools_prettyprinter_PROGRAMS) 373 281 @$(NORMAL_INSTALL) 282 test -z "$(tools_prettyprinterdir)" || $(MKDIR_P) "$(DESTDIR)$(tools_prettyprinterdir)" 374 283 @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; \379 284 for p in $$list; do echo "$$p $$p"; done | \ 380 285 sed 's/$(EXEEXT)$$//' | \ 381 while read p p1; do if test -f $$p \382 ;then echo "$$p"; echo "$$p"; else :; fi; \286 while read p p1; do if test -f $$p; \ 287 then echo "$$p"; echo "$$p"; else :; fi; \ 383 288 done | \ 384 sed -e 'p;s,.*/,,;n;h' \ 385 -e 's|.*|.|' \ 289 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ 386 290 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ 387 291 sed 'N;N;N;s,\n, ,g' | \ … … 404 308 files=`for p in $$list; do echo "$$p"; done | \ 405 309 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ 406 -e 's/$$/$(EXEEXT)/' \ 407 `; \ 310 -e 's/$$/$(EXEEXT)/' `; \ 408 311 test -n "$$list" || exit 0; \ 409 312 echo " ( cd '$(DESTDIR)$(tools_prettyprinterdir)' && rm -f" $$files ")"; \ … … 412 315 clean-tools_prettyprinterPROGRAMS: 413 316 -test -z "$(tools_prettyprinter_PROGRAMS)" || rm -f $(tools_prettyprinter_PROGRAMS) 414 parser.h h: parser.cc317 parser.h: parser.cc 415 318 @if test ! -f $@; then rm -f parser.cc; else :; fi 416 319 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parser.cc; else :; fi 417 418 320 pretty$(EXEEXT): $(pretty_OBJECTS) $(pretty_DEPENDENCIES) $(EXTRA_pretty_DEPENDENCIES) 419 321 @rm -f pretty$(EXEEXT) … … 433 335 434 336 .cc.o: 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 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 438 339 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 439 340 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ … … 441 342 442 343 .cc.obj: 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 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 446 346 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ 447 347 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ … … 522 422 523 423 .yy.cc: 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) 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) 532 438 set x; \ 533 439 here=`pwd`; \ 534 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 535 446 shift; \ 536 447 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ … … 544 455 fi; \ 545 456 fi 546 ctags: ctags-am 547 548 CTAGS: ctags 549 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 550 $(am__define_uniq_tagged_files); \ 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; }; }'`; \ 551 466 test -z "$(CTAGS_ARGS)$$unique" \ 552 467 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ … … 557 472 && $(am__cd) $(top_srcdir) \ 558 473 && gtags -i $(GTAGS_ARGS) "$$here" 559 cscopelist: cscopelist-am560 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.files574 474 575 475 distclean-tags: … … 647 547 -rm -f lex.cc 648 548 -rm -f parser.cc 649 -rm -f parser.h h549 -rm -f parser.h 650 550 -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) 651 551 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) … … 722 622 .MAKE: all check install install-am install-strip 723 623 724 .PHONY: CTAGS GTAGS TAGSall all-am check check-am clean clean-generic \725 clean-tools_prettyprinterPROGRAMS c scopelist-am ctags ctags-am\726 distclean distclean-compile distclean-generic distclean-tags\727 d istdir 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 \624 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ 625 clean-tools_prettyprinterPROGRAMS ctags distclean \ 626 distclean-compile distclean-generic distclean-tags distdir dvi \ 627 dvi-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 \ 733 633 installcheck-am installdirs maintainer-clean \ 734 634 maintainer-clean-generic mostlyclean mostlyclean-compile \ 735 mostlyclean-generic pdf pdf-am ps ps-am tags tags-amuninstall \635 mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ 736 636 uninstall-am uninstall-tools_prettyprinterPROGRAMS 737 738 .PRECIOUS: Makefile739 637 740 638 -
tools/prettyprinter/filter.cc
r208e5be rb1e63ac5 19 19 using namespace std; 20 20 #include "filter.h" 21 #include "parser.h h"21 #include "parser.h" 22 22 23 23 -
tools/prettyprinter/filter.h
r208e5be rb1e63ac5 17 17 #define __FILTER_H__ 18 18 19 #include " ParserTypes.h"19 #include "parser.hh" 20 20 21 21 extern void (* filter)( Token * tree ); // pointer to filter for parse tree -
tools/prettyprinter/lex.ll
r208e5be rb1e63ac5 23 23 #include <iostream> 24 24 using namespace std; 25 #include "ParserTypes.h"26 25 #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; -
tools/prettyprinter/parser.hh
r208e5be rb1e63ac5 1 /* A Bison parser, made by GNU Bison 3.0.4. */ 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 // 2 18 3 /* Bison interface for Yacc-like parsers in C 19 #ifndef __PARSER_HH__ 20 #define __PARSER_HH__ 4 21 5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. 22 int yylex(); 6 23 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. 24 #include <string> 25 #include <list> 26 #include "token.h" 11 27 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. 28 #endif // __PARSER_HH__ 16 29 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 */ 30 // Local Variables: // 31 // mode: c++ // 32 // tab-width: 4 // 33 // compile-command: "make install" // 34 // End: // -
tools/prettyprinter/parser.yy
r208e5be rb1e63ac5 20 20 #include <iostream> 21 21 using namespace std; 22 #include " ParserTypes.h"22 #include "parser.hh" 23 23 #include "filter.h" 24 24 -
tools/prettyprinter/token.cc
r208e5be rb1e63ac5 16 16 #include <string> 17 17 using namespace std; 18 #include " ParserTypes.h"19 #include "parser.h h"18 #include "parser.hh" 19 #include "parser.h" 20 20 #include "filter.h" 21 21
Note:
See TracChangeset
for help on using the changeset viewer.