1 /* $Id: kbuild.h 2717 2013-12-30 00:58:43Z bird $ */ 2 /** @file 3 * kBuild specific make functionality. 4 */ 5 6 /* 7 * Copyright (c) 2006-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net> 8 * 9 * This file is part of kBuild. 10 * 11 * kBuild is free software; you can redistribute it and/or modify 12 * it under the terms of the GNU General Public License as published by 13 * the Free Software Foundation; either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * kBuild is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with kBuild. If not, see <http://www.gnu.org/licenses/> 23 * 24 */ 25 26 #ifndef ___kBuild_h 27 #define ___kBuild_h 28 29 char *func_kbuild_source_tool(char *o, char **argv, const char *pszFuncName); 30 char *func_kbuild_object_base(char *o, char **argv, const char *pszFuncName); 31 char *func_kbuild_object_suffix(char *o, char **argv, const char *pszFuncName); 32 char *func_kbuild_source_prop(char *o, char **argv, const char *pszFuncName); 33 char *func_kbuild_source_one(char *o, char **argv, const char *pszFuncName); 34 char *func_kbuild_expand_template(char *o, char **argv, const char *pszFuncName); 35 36 void init_kbuild(int argc, char **argv); 37 const char *get_kbuild_path(void); 38 const char *get_kbuild_bin_path(void); 39 const char *get_default_kbuild_shell(void); 40 41 /** @name kBuild objects 42 * @{ */ 43 struct kbuild_eval_data; 44 struct kbuild_object; 45 46 extern struct kbuild_eval_data *g_pTopKbEvalData; 47 48 49 /** Special return value indicating variable name isn't an accessor. */ 50 #define KOBJ_NOT_KBUILD_ACCESSOR ( (struct kbuild_object *)~(size_t)0 ) 51 52 /** Special lookup_kbuild_object_variable return value. */ 53 #define VAR_NOT_KBUILD_ACCESSOR ( (struct variable *)~(size_t)0 ) 54 55 struct variable *lookup_kbuild_object_variable_accessor(const char *pchName, size_t cchName); 56 int is_kbuild_object_variable_accessor(const char *pchName, size_t cchName); 57 struct variable *try_define_kbuild_object_variable_via_accessor(const char *pszName, size_t cchName, 58 const char *pszValue, size_t cchValue, int fDuplicateValue, 59 enum variable_origin enmOrigin, int fRecursive, 60 struct floc const *pFileLoc); 61 struct variable *define_kbuild_object_variable_in_top_obj(const char *pszName, size_t cchName, 62 const char *pszValue, size_t cchValue, int fDuplicateValue, 63 enum variable_origin enmOrigin, int fRecursive, 64 struct floc const *pFileLoc); 65 struct variable *kbuild_object_variable_pre_append(const char *pchName, size_t cchName, 66 const char *pchValue, size_t cchValue, int fSimpleValue, 67 enum variable_origin enmOrigin, int fAppend, 68 const struct floc *pFileLoc); 69 int eval_kbuild_read_hook(struct kbuild_eval_data **kdata, const struct floc *flocp, 70 const char *word, size_t wlen, const char *line, const char *eos, int ignoring); 71 void print_kbuild_data_base(void); 72 void print_kbuild_define_stats(void); 73 void init_kbuild_object(void); 74 /** @} */ 75 76 #endif 77 78