Changeset 3140 in kBuild for trunk/src/kmk/default.c
- Timestamp:
- Mar 14, 2018 9:28:10 PM (7 years ago)
- Location:
- trunk/src/kmk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk
-
Property svn:mergeinfo
set to
/vendor/gnumake/current merged eligible
-
Property svn:mergeinfo
set to
-
trunk/src/kmk/default.c
r2591 r3140 1 1 /* Data base of default implicit rules for GNU Make. 2 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 3 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 4 2010 Free Software Foundation, Inc. 2 Copyright (C) 1988-2016 Free Software Foundation, Inc. 5 3 This file is part of GNU Make. 6 4 … … 17 15 this program. If not, see <http://www.gnu.org/licenses/>. */ 18 16 19 #include "make.h" 17 #include "makeint.h" 18 19 #include <assert.h> 20 20 21 #include "filedef.h" 21 22 #include "variable.h" … … 33 34 34 35 /* This is the default list of suffixes for suffix rules. 35 `.s' must come last, so that a `.o' file will be made from36 a `.c' or `.p' or ... file rather than from a .s file. */36 '.s' must come last, so that a '.o' file will be made from 37 a '.c' or '.p' or ... file rather than from a .s file. */ 37 38 38 39 static char default_suffixes[] 39 40 #ifndef CONFIG_NO_DEFAULT_SUFFIXES 40 41 #ifdef VMS 41 = ".exe .olb .ln .obj .c .cxx .cc .pas .p .for .f .r .y .l .mar \ 42 .s .ss .i .ii .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \ 43 .w .ch .cweb .web .com .sh .elc .el"; 42 /* VMS should include all UNIX/POSIX + some VMS extensions */ 43 = ".out .exe .a .olb .hlb .tlb .mlb .ln .o .obj .c .cxx .cc .cpp .pas .p \ 44 .for .f .r .y .l .ym .yl .mar .s .ss .i .ii .mod .sym .def .h .info .dvi \ 45 .tex .texinfo .texi .txinfo .mem .hlp .brn .rnh .rno .rnt .rnx .w .ch .cweb \ 46 .web .com .sh .elc .el"; 44 47 #elif defined(__EMX__) 45 48 = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \ … … 58 61 { 59 62 #ifndef CONFIG_NO_DEFAULT_PATTERN_RULES 63 #ifdef VMS 60 64 { "(%)", "%", 61 "$(AR) $(ARFLAGS) $@ $<" }, 62 65 "@if f$$search(\"$@\") .eqs. \"\" then $(LIBRARY)/CREATE/" 66 "$(or " 67 "$(patsubst %,TEXT,$(filter %.tlb %.TLB,$@))," 68 "$(patsubst %,HELP,$(filter %.hlb %.HLB,$@))," 69 "$(patsubst %,MACRO,$(filter %.mlb %.MLB,$@))," 70 "$(and " 71 "$(patsubst %,SHARE,$(filter %.olb %.OLB,$@))," 72 "$(patsubst %,SHARE,$(filter %.exe %.EXE,$<)))," 73 "OBJECT)" 74 " $@\n" 75 "$(AR) $(ARFLAGS) $@ $<" }, 76 77 #else 78 { "(%)", "%", 79 "$(AR) $(ARFLAGS) $@ $<" }, 80 #endif 63 81 /* The X.out rules are only in BSD's default set because 64 BSD Make has no null-suffix rules, so `foo.out' and65 `foo' are the same thing. */82 BSD Make has no null-suffix rules, so 'foo.out' and 83 'foo' are the same thing. */ 66 84 #ifdef VMS 67 85 { "%.exe", "%", 68 "copy $< $@" }, 69 #else 86 "$(CP) $< $@" }, 87 88 #endif 70 89 { "%.out", "%", 71 72 #endif 90 "@rm -f $@ \n cp $< $@" }, 91 73 92 /* Syntax is "ctangle foo.w foo.ch foo.c". */ 74 93 { "%.c", "%.w %.ch", 75 94 "$(CTANGLE) $^ $@" }, 76 95 { "%.tex", "%.w %.ch", 77 96 "$(CWEAVE) $^ $@" }, 78 97 #endif /* !CONFIG_NO_DEFAULT_PATTERN_RULES */ 79 98 { 0, 0, 0 } … … 84 103 #ifndef CONFIG_NO_DEFAULT_TERMINAL_RULES 85 104 #ifdef VMS 105 86 106 /* RCS. */ 87 107 { "%", "%$$5lv", /* Multinet style */ 88 "if f$$search( $@) .nes. \"\" then +$(CHECKOUT,v)" },108 "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, 89 109 { "%", "[.$$rcs]%$$5lv", /* Multinet style */ 90 "if f$$search( $@) .nes. \"\" then +$(CHECKOUT,v)" },110 "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, 91 111 { "%", "%_v", /* Normal style */ 92 "if f$$search( $@) .nes. \"\" then +$(CHECKOUT,v)" },112 "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, 93 113 { "%", "[.rcs]%_v", /* Normal style */ 94 "if f$$search( $@) .nes. \"\" then +$(CHECKOUT,v)" },114 "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, 95 115 96 116 /* SCCS. */ 97 /* ain't no SCCS on vms */ 117 /* ain't no SCCS on vms */ 118 98 119 #else 99 120 /* RCS. */ 100 121 { "%", "%,v", 101 122 "$(CHECKOUT,v)" }, 102 123 { "%", "RCS/%,v", 103 124 "$(CHECKOUT,v)" }, 104 125 { "%", "RCS/%", 105 126 "$(CHECKOUT,v)" }, 106 127 107 128 /* SCCS. */ 108 129 { "%", "s.%", 109 130 "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" }, 110 131 { "%", "SCCS/s.%", 111 132 "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" }, 112 133 #endif /* !VMS */ 113 134 #endif /* !CONFIG_NO_DEFAULT_TERMINAL_RULES */ … … 115 136 }; 116 137 117 static c har *default_suffix_rules[] =138 static const char *default_suffix_rules[] = 118 139 { 119 140 #ifndef CONFIG_NO_DEFAULT_SUFFIX_RULES 120 141 #ifdef VMS 142 ".o", 143 "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) -o $@", 144 ".obj", 145 "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) -o $@", 146 ".s", 147 "$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@", 148 ".S", 149 "$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@", 150 ".c", 151 "$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@", 152 ".cc", 153 "$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@", 154 ".C", 155 "$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@", 156 ".cpp", 157 "$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@", 158 ".f", 159 "$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@", 160 ".m", 161 "$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@", 162 ".p", 163 "$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@", 164 ".F", 165 "$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@", 166 ".r", 167 "$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@", 168 ".mod", 169 "$(COMPILE.mod) -o $@ -e $@ $^", 170 171 ".def.sym", 172 "$(COMPILE.def) -o $@ $<", 173 174 ".sh", 175 "copy $< >$@", 176 121 177 ".obj.exe", 122 178 "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", 123 179 ".mar.exe", 124 180 "$(COMPILE.mar) $^ \n $(LINK.obj) $(subst .mar,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", 181 ".s.o", 182 "$(COMPILE.s) -o $@ $<", 125 183 ".s.exe", 126 184 "$(COMPILE.s) $^ \n $(LINK.obj) $(subst .s,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", … … 157 215 ".c.obj", 158 216 "$(COMPILE.c) /obj=$@ $<", 217 ".c.o", 218 "$(COMPILE.c) /obj=$@ $<", 159 219 ".cc.ii", 160 220 "$(COMPILE.cc)/prep /list=$@ $<", … … 165 225 ".cc.obj", 166 226 "$(COMPILE.cc) /obj=$@ $<", 227 ".cc.o", 228 "$(COMPILE.cc) /obj=$@ $<", 167 229 ".cxx.obj", 230 "$(COMPILE.cxx) /obj=$@ $<", 231 ".cxx.o", 168 232 "$(COMPILE.cxx) /obj=$@ $<", 169 233 ".for.obj", 170 234 "$(COMPILE.for) /obj=$@ $<", 235 ".for.o", 236 "$(COMPILE.for) /obj=$@ $<", 171 237 ".pas.obj", 238 "$(COMPILE.pas) /obj=$@ $<", 239 ".pas.o", 172 240 "$(COMPILE.pas) /obj=$@ $<", 173 241 … … 182 250 ".tex.dvi", 183 251 "$(TEX) $<", 252 253 ".cpp.o", 254 "$(COMPILE.cpp) $(OUTPUT_OPTION) $<", 255 ".f.o", 256 "$(COMPILE.f) $(OUTPUT_OPTION) $<", 257 ".m.o", 258 "$(COMPILE.m) $(OUTPUT_OPTION) $<", 259 ".p.o", 260 "$(COMPILE.p) $(OUTPUT_OPTION) $<", 261 ".r.o", 262 "$(COMPILE.r) $(OUTPUT_OPTION) $<", 263 ".mod.o", 264 "$(COMPILE.mod) -o $@ $<", 265 266 ".c.ln", 267 "$(LINT.c) -C$* $<", 268 ".y.ln", 269 "$(YACC.y) $< \n rename y_tab.c $@", 270 271 ".l.ln", 272 "@$(RM) $*.c\n $(LEX.l) $< > $*.c\n$(LINT.c) -i $*.c -o $@\n $(RM) $*.c", 184 273 185 274 #else /* ! VMS */ … … 302 391 303 392 ".w.c", 304 "$(CTANGLE) $< - $@", /* The `-' says there is no `.ch' file. */393 "$(CTANGLE) $< - $@", /* The '-' says there is no '.ch' file. */ 305 394 306 395 ".web.p", … … 308 397 309 398 ".w.tex", 310 "$(CWEAVE) $< - $@", /* The `-' says there is no `.ch' file. */399 "$(CWEAVE) $< - $@", /* The '-' says there is no '.ch' file. */ 311 400 312 401 ".web.tex", … … 331 420 "ARCH", "VAX", 332 421 #endif 333 "AR", "library/obj", 422 "AR", "library", 423 "LIBRARY", "library", 334 424 "ARFLAGS", "/replace", 335 425 "AS", "macro", … … 341 431 #endif 342 432 "CD", "builtin_cd", 343 "MAKE", "make", 344 "ECHO", "write sys$$output \"", 433 "ECHO", "builtin_echo", 345 434 #ifdef GCC_IS_NATIVE 346 435 "C++", "gcc/plus", … … 349 438 "C++", "cxx", 350 439 "CXX", "cxx", 440 #ifndef __ia64 351 441 "CXXLD", "cxxlink", 442 "CXXLINK", "cxxlink", 443 #else 444 /* CXXLINK is not used on VMS/IA64 */ 445 "CXXLD", "link", 446 "CXXLINK", "link", 447 #endif 352 448 #endif 353 449 "CO", "co", … … 385 481 #endif 386 482 483 "LINK.o", "$(LD) $(LDFLAGS)", 387 484 "LINK.obj", "$(LD) $(LDFLAGS)", 388 485 #ifndef GCC_IS_NATIVE … … 391 488 #endif 392 489 "COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", 490 "LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", 491 "COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", 492 "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 393 493 "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", 494 "COMPILE.C", "$(COMPILE.cc)", 495 "COMPILE.cpp", "$(COMPILE.cc)", 496 "LINK.C", "$(LINK.cc)", 497 "LINK.cpp", "$(LINK.cc)", 394 498 "YACC.y", "$(YACC) $(YFLAGS)", 395 499 "LEX.l", "$(LEX) $(LFLAGS)", 500 "YACC.m", "$(YACC) $(YFLAGS)", 501 "LEX.m", "$(LEX) $(LFLAGS) -t", 396 502 "COMPILE.for", "$(FC) $(FFLAGS) $(TARGET_ARCH)", 503 "COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c", 504 "LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 505 "COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", 506 "LINK.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 507 "COMPILE.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c", 508 "LINK.r", "$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 397 509 "COMPILE.pas", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", 510 "COMPILE.def", "$(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)", 511 "COMPILE.mod", "$(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)", 512 "COMPILE.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", 513 "LINK.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 398 514 "COMPILE.mar", "$(MACRO) $(MACROFLAGS)", 399 515 "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", 516 "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", 517 "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", 518 "PREPROCESS.S", "$(CC) -E $(CPPFLAGS)", 519 "PREPROCESS.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F", 520 "PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F", 400 521 "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", 401 522 402 523 "MV", "rename/new_version", 403 524 "CP", "copy", 525 ".LIBPATTERNS", "%.olb lib%.a", 404 526 405 527 #else /* !VMS */ … … 411 533 "CC", "gcc", 412 534 # ifdef __MSDOS__ 413 "CXX", "gpp", 535 "CXX", "gpp", /* g++ is an invalid name on MSDOS */ 414 536 # else 415 537 "CXX", "gcc", … … 429 551 430 552 "CPP", "$(CC) -E", 431 #ifdef 553 #ifdef CRAY 432 554 "CF77PPFLAGS", "-P", 433 555 "CF77PP", "/lib/cpp", … … 435 557 "CF", "cf77", 436 558 "FC", "$(CF)", 437 #else 438 #ifdef 559 #else /* Not CRAY. */ 560 #ifdef _IBMR2 439 561 "FC", "xlf", 440 562 #else 441 #ifdef 563 #ifdef __convex__ 442 564 "FC", "fc", 443 565 #else … … 449 571 "F77", "$(FC)", 450 572 "F77FLAGS", "$(FFLAGS)", 451 #endif 573 #endif /* Cray. */ 452 574 "GET", SCCS_GET, 453 575 "LD", "ld", … … 459 581 "LINT", "lint", 460 582 "M2C", "m2c", 461 #ifdef 583 #ifdef pyr 462 584 "PC", "pascal", 463 585 #else 464 #ifdef 586 #ifdef CRAY 465 587 "PC", "PASCAL", 466 588 "SEGLDR", "segldr", 467 589 #else 468 590 "PC", "pc", 469 #endif 470 #endif 591 #endif /* CRAY. */ 592 #endif /* pyr. */ 471 593 #ifdef GCC_IS_NATIVE 472 594 "YACC", "bison -y", 473 595 #else 474 "YACC", "yacc", 596 "YACC", "yacc", /* Or "bison -y" */ 475 597 #endif 476 598 "MAKEINFO", "makeinfo", … … 490 612 "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 491 613 "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", 614 #ifndef HAVE_CASE_INSENSITIVE_FS 615 /* On case-insensitive filesystems, treat *.C files as *.c files, 616 to avoid erroneously compiling C sources as C++, which will 617 probably fail. */ 492 618 "COMPILE.C", "$(COMPILE.cc)", 619 #else 620 "COMPILE.C", "$(COMPILE.c)", 621 #endif 493 622 "COMPILE.cpp", "$(COMPILE.cc)", 494 623 "LINK.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", 624 #ifndef HAVE_CASE_INSENSITIVE_FS 495 625 "LINK.C", "$(LINK.cc)", 626 #else 627 "LINK.C", "$(LINK.c)", 628 #endif 496 629 "LINK.cpp", "$(LINK.cc)", 497 630 "YACC.y", "$(YACC) $(YFLAGS)", … … 518 651 "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", 519 652 520 #ifndef 653 #ifndef NO_MINUS_C_MINUS_O 521 654 "OUTPUT_OPTION", "-o $@", 522 655 #endif 523 656 524 #ifdef 657 #ifdef SCCS_GET_MINUS_G 525 658 "SCCS_OUTPUT_OPTION", "-G$@", 526 659 #endif 527 660 528 #if def _AMIGA661 #if defined(_AMIGA) 529 662 ".LIBPATTERNS", "%.lib", 530 #else 531 #ifdef __MSDOS__ 663 #elif defined(__MSDOS__) 532 664 ".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a", 665 #elif defined(__APPLE__) 666 ".LIBPATTERNS", "lib%.dylib lib%.a", 667 #elif defined(__CYGWIN__) || defined(WINDOWS32) 668 ".LIBPATTERNS", "lib%.dll.a %.dll.a lib%.a %.lib lib%.dll %.dll", 533 669 #else 534 670 ".LIBPATTERNS", "lib%.so lib%.a", 535 #endif536 671 #endif 537 672 538 673 #endif /* !VMS */ 539 674 #endif /* !CONFIG_NO_DEFAULT_VARIABLES */ 675 /* Make this assignment to avoid undefined variable warnings. */ 676 "GNUMAKEFLAGS", "", 540 677 0, 0 541 678 }; … … 548 685 { 549 686 suffix_file = enter_file (strcache_add (".SUFFIXES")); 687 suffix_file->builtin = 1; 550 688 551 689 if (no_builtin_rules_flag) … … 553 691 else 554 692 { 555 char *p = default_suffixes; 556 suffix_file->deps = enter_prereqs(PARSE_FILE_SEQ (&p, struct dep, '\0', 557 NULL, 0), 558 NULL); 693 struct dep *d; 694 const char *p = default_suffixes; 695 suffix_file->deps = enter_prereqs (PARSE_SIMPLE_SEQ ((char **)&p, struct dep), 696 NULL); 697 for (d = suffix_file->deps; d; d = d->next) 698 d->file->builtin = 1; 699 559 700 define_variable_cname ("SUFFIXES", default_suffixes, o_default, 0); 560 701 } … … 569 710 install_default_suffix_rules (void) 570 711 { 571 c har **s;712 const char **s; 572 713 573 714 if (no_builtin_rules_flag) … … 577 718 { 578 719 struct file *f = enter_file (strcache_add (s[0])); 579 /* Don't clobber cmds given in a makefile if there were any. */ 580 if (f->cmds == 0) 581 { 720 /* This function should run before any makefile is parsed. */ 721 assert (f->cmds == 0); 582 722 #ifndef CONFIG_WITH_ALLOC_CACHES 583 f->cmds = xmalloc (sizeof (struct commands)); 584 #else 585 f->cmds = alloccache_alloc (&commands_cache); 586 #endif 587 f->cmds->fileinfo.filenm = 0; 588 f->cmds->commands = s[1]; 589 f->cmds->command_lines = 0; 723 f->cmds = xmalloc (sizeof (struct commands)); 724 #else 725 f->cmds = alloccache_alloc (&commands_cache); 726 #endif 727 f->cmds->fileinfo.filenm = 0; 728 f->cmds->commands = xstrdup (s[1]); 729 f->cmds->command_lines = 0; 730 f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; 590 731 #ifdef CONFIG_WITH_MEMORY_OPTIMIZATIONS 591 592 #endif 593 } 732 f->cmds->refs = 1000; 733 #endif 734 f->builtin = 1; 594 735 } 595 736 } … … 624 765 define_variable (s[0], strlen (s[0]), s[1], o_default, 1); 625 766 } 767 768 void 769 undefine_default_variables (void) 770 { 771 const char **s; 772 773 for (s = default_variables; *s != 0; s += 2) 774 undefine_variable_global (s[0], strlen (s[0]), o_default); 775 }
Note:
See TracChangeset
for help on using the changeset viewer.