1 /* Definitions for using pattern rules in 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 Free Software 4 Foundation, Inc. 5 This file is part of GNU Make. 6 7 GNU Make is free software; you can redistribute it and/or modify it under the 8 terms of the GNU General Public License as published by the Free Software 9 Foundation; either version 2, or (at your option) any later version. 10 11 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY 12 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 13 A PARTICULAR PURPOSE. See the GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License along with 16 GNU Make; see the file COPYING. If not, write to the Free Software 17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ 18 19 /* Structure used for pattern rules. */ 20 21 struct rule 22 { 23 struct rule *next; 24 char **targets; /* Targets of the rule. */ 25 unsigned int *lens; /* Lengths of each target. */ 26 char **suffixes; /* Suffixes (after `%') of each target. */ 27 struct dep *deps; /* Dependencies of the rule. */ 28 struct commands *cmds; /* Commands to execute. */ 29 char terminal; /* If terminal (double-colon). */ 30 char in_use; /* If in use by a parent pattern_search. */ 31 }; 32 33 /* For calling install_pattern_rule. */ 34 struct pspec 35 { 36 char *target, *dep, *commands; 37 }; 38 39 40 extern struct rule *pattern_rules; 41 extern struct rule *last_pattern_rule; 42 extern unsigned int num_pattern_rules; 43 44 extern unsigned int max_pattern_deps; 45 extern unsigned int max_pattern_targets; 46 extern unsigned int max_pattern_dep_length; 47 48 extern struct file *suffix_file; 49 extern unsigned int maxsuffix; 50 51 52 extern void install_pattern_rule PARAMS ((struct pspec *p, int terminal)); 53 extern int new_pattern_rule PARAMS ((struct rule *rule, int override)); 54 extern void count_implicit_rule_limits PARAMS ((void)); 55 extern void convert_to_pattern PARAMS ((void)); 56 extern void create_pattern_rule PARAMS ((char **targets, 57 char **target_percents, int terminal, 58 struct dep *deps, 59 struct commands *commands, 60 int override)); 61