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