1 ///////////////////////////////////////////////////////////////////////////////
2 // Copyright (c) 2000-2015 Ericsson Telecom AB
3 // All rights reserved. This program and the accompanying materials
4 // are made available under the terms of the Eclipse Public License v1.0
5 // which accompanies this distribution, and is available at
6 // http://www.eclipse.org/legal/epl-v10.html
7 ///////////////////////////////////////////////////////////////////////////////
17 enum tpd_result
{ TPD_FAILED
= -1, TPD_SKIPPED
= 0, TPD_SUCCESS
= 1 };
21 struct string_list
* next
;
27 struct string2_list
* next
;
33 boolean
isTopLevelExecutable(const char* projName
);
38 boolean
isDynamicLibrary(const char* key
);
43 const char* findLibraryPath(const char* libraryName
, const char* projName
);
48 const char* findLibraryName(const char* libraryName
, const char* projName
);
58 const char* getLibFromProject(const char* projName
);
63 struct string_list
* getExternalLibs(const char* projName
);
68 struct string_list
* getExternalLibPaths(const char* projName
);
73 struct string2_list
* getLinkerLibs(const char* projName
);
78 struct string_list
* getRefWorkingDirs(const char* projName
);
83 boolean
hasExternalLibrary(const char* libName
, const char* projName
);
88 boolean
hasSubProject(const char* projName
);
98 boolean
isTtcn3ModuleInLibrary(const char* moduleName
);
103 const char* getTPDFileName(const char* projName
);
108 const char* getPathToRootDir(const char* projName
);
113 boolean
isAsn1ModuleInLibrary(const char* moduleName
);
118 boolean
isSourceFileInLibrary(const char* fileName
);
123 boolean
isHeaderFileInLibrary(const char* fileName
);
128 boolean
isTtcnPPFileInLibrary(const char* fileName
);
133 boolean
buildObjects(const char* projName
, boolean add_referenced
);
138 * @param p_tpd_name filename
139 * @param actcfg actual configuration name
140 * @param file_list_path the argument of the -P switch
141 * @param argc pointer to argv
142 * @param argv pointer to argc
143 * @param optind pointer to optind
144 * @param ets_name from the -e switch
145 * @param gnu_make from the -g switch
146 * @param single_mode -s switch
147 * @param central_storage -c switch
148 * @param absolute_paths -a switch
149 * @param preprocess -p switch
150 * @param use_runtime_2 -R switch
151 * @param dynamic dynamic linking, -l switch
152 * @param makedepend -m switch
153 * @param filelist -P switch
154 * @param recursive -r switch
155 * @param force_overwrite -F switch
156 * @param output_file from the -o switch
157 * @param abs_work_dir workingDirectory element of TPD will be stored here, must be Free()'d
158 * @param sub_project_dirs directories of sub-projects that need to be built before this one,
159 if set to NULL when calling this function then it won't be set, otherwise it must be deallocated after the call
160 * @param program_name original value of argv[0], which is the executable path used to start this program
161 * @param prj_graph_fp write project graph xml data into this file if not NULL
162 * @create_symlink_list a list of symlinks to be created
163 * @param ttcn3_prep_includes TTCN3preprocessorIncludes
164 * @param ttcn3_prep_defines preprocessorDefines
165 * @param prep_includes preprocessorIncludes
166 * @param prep_defines preprocessorDefines
167 * @param codesplit codeSplitting
168 * @param quietly quietly
169 * @param disablesubtypecheck disableSubtypeChecking
170 * @param cxxcompiler CxxCompiler
171 * @param optlevel optimizationLevel
172 * @param optflags otherOptimizationFlags
173 * @param disableber disableBER -b
174 * @param disableraw disableRAW -r
175 * @param disabletext disableTEXT -x
176 * @param disablexer disableXER -X
177 * @param disablejson disableJSON -j
178 * @param forcexerinasn forceXERinASN.1 -a
179 * @param defaultasomit defaultasOmit -d
180 * @param gccmessageformat gccMessageFormat -g
181 * @param linenumber lineNumbersOnlyInMessages -i
182 * @param includesourceinfo includeSourceInfo -L
183 * @param addsourcelineinfo addSourceLineInfo -l
184 * @param suppresswarnings suppressWarnings -S
185 * @param outparamboundness outParamBoundness -Y
186 * @param omit_in_value_list omitInValueList -M
187 * @param warnings_for_bad_variants warningsForBadVariants -E
188 * @param disable_predef_exp_folder disablePredefinedExternalFolder
189 * @param solspeclibs SolarisSpecificLibraries
190 * @param sol8speclibs Solaris8SpecificLibraries
191 * @param linuxspeclibs LinuxSpecificLibraries
192 * @param freebsdspeclibs FreeBSDSpecificLibraries
193 * @param win32speclibs Win32SpecificLibraries
194 * @param ttcn3preprocessor ttcn3preprocessor
195 * @param linkerlibs linkerlibs
196 * @param linkerlibrarysearchpath linkerlibrarysearchpath
197 * @param Vflag -V switch
198 * @param Dflag -D switch
199 * @param generatorCommandOutput the output of the command that generates a Makefile snippet
200 * @param target_placement_list a list of (target,placement) strings pairs from the TPD
201 * @param prefix_workdir prefix working directory with project name
202 * @param run_command_list contains the working directories and the makefilegen commands to be called there
203 * @param search_paths contains the paths that can be tried if a file is not found
204 * @param n_search_paths contains the size of relative_prefixes
205 * @return TPD_SUCCESS if parsing successful, TPD_SKIPPED if the tpd
206 * was seen already, or TPD_FAILED on error.
213 tpd_result
process_tpd(const char *p_tpd_name
, const char *actcfg
,
214 const char *file_list_path
,
215 int *argc
, char ***argv
,
216 int *optind
, char **ets_name
, char **project_name
,
217 boolean
*gnu_make
, boolean
*single_mode
,
218 boolean
*central_storage
, boolean
*absolute_paths
,
219 boolean
*preprocess
, boolean
*use_runtime_2
,
220 boolean
*dynamic
, boolean
*makedepend
, boolean
*filelist
,
221 boolean
*library
, boolean recursive
, boolean force_overwrite
, boolean gen_only_top_level
,
222 const char *output_file
, char** abs_work_dir
, struct string_list
* sub_project_dirs
,
223 const char* program_name
, FILE* prj_graph_fp
, struct string2_list
* create_symlink_list
, struct string_list
* ttcn3_prep_includes
,
224 struct string_list
* ttcn3_prep_defines
, struct string_list
* ttcn3_prep_undefines
, struct string_list
* prep_includes
,
225 struct string_list
* prep_defines
, struct string_list
* prep_undefines
, boolean
*codesplit
, boolean
*quietly
, boolean
*disablesubtypecheck
,
226 char** cxxcompiler
, char** optlevel
, char** optflags
, boolean
*disableber
, boolean
*disableraw
, boolean
*disabletext
, boolean
*disablexer
,
227 boolean
*disablejson
, boolean
*forcexerinasn
, boolean
*defaultasomit
, boolean
*gccmessageformat
,
228 boolean
*linenumber
, boolean
*includesourceinfo
, boolean
*addsourcelineinfo
, boolean
*suppresswarnings
,
229 boolean
*outparamboundness
, boolean
*omit_in_value_list
, boolean
*warnings_for_bad_variants
, boolean
*disable_predef_exp_folder
, struct string_list
* solspeclibs
, struct string_list
* sol8speclibs
,
230 struct string_list
* linuxspeclibs
, struct string_list
* freebsdspeclibs
, struct string_list
* win32speclibs
,
231 char** ttcn3preprocessor
, struct string_list
* linkerlibs
, struct string_list
* additionalObjects
, struct string_list
* linkerlibsearchpath
, boolean Vflag
, boolean Dflag
,
232 boolean
*Zflag
, boolean
*Hflag
, char** generatorCommandOutput
, struct string2_list
* target_placement_list
, boolean prefix_workdir
, struct string2_list
* run_command_list
,
233 struct string2_list
* required_configs
, struct string_list
** profiled_file_list
, const char **search_paths
, size_t n_search_paths
);
235 #endif /* XPATHER_H_ */