1 /******************************************************************************
2 * Copyright (c) 2000-2016 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
19 ******************************************************************************/
29 enum tpd_result
{ TPD_FAILED
= -1, TPD_SKIPPED
= 0, TPD_SUCCESS
= 1 };
33 struct string_list
* next
;
39 struct string2_list
* next
;
45 boolean
isTopLevelExecutable(const char* projName
);
50 boolean
isDynamicLibrary(const char* key
);
55 const char* findLibraryPath(const char* libraryName
, const char* projName
);
60 const char* findLibraryName(const char* libraryName
, const char* projName
);
70 const char* getLibFromProject(const char* projName
);
75 struct string_list
* getExternalLibs(const char* projName
);
80 struct string_list
* getExternalLibPaths(const char* projName
);
85 struct string2_list
* getLinkerLibs(const char* projName
);
90 struct string_list
* getRefWorkingDirs(const char* projName
);
95 boolean
hasExternalLibrary(const char* libName
, const char* projName
);
100 boolean
hasSubProject(const char* projName
);
110 boolean
isTtcn3ModuleInLibrary(const char* moduleName
);
115 const char* getTPDFileName(const char* projName
);
120 const char* getPathToRootDir(const char* projName
);
125 boolean
isAsn1ModuleInLibrary(const char* moduleName
);
130 boolean
isSourceFileInLibrary(const char* fileName
);
135 boolean
isHeaderFileInLibrary(const char* fileName
);
140 boolean
isTtcnPPFileInLibrary(const char* fileName
);
145 boolean
buildObjects(const char* projName
, boolean add_referenced
);
150 * @param p_tpd_name filename
151 * @param actcfg actual configuration name
152 * @param file_list_path the argument of the -P switch
153 * @param argc pointer to argv
154 * @param argv pointer to argc
155 * @param optind pointer to optind
156 * @param ets_name from the -e switch
157 * @param gnu_make from the -g switch
158 * @param single_mode -s switch
159 * @param central_storage -c switch
160 * @param absolute_paths -a switch
161 * @param preprocess -p switch
162 * @param use_runtime_2 -R switch
163 * @param dynamic dynamic linking, -l switch
164 * @param makedepend -m switch
165 * @param filelist -P switch
166 * @param recursive -r switch
167 * @param force_overwrite -F switch
168 * @param output_file from the -o switch
169 * @param abs_work_dir workingDirectory element of TPD will be stored here, must be Free()'d
170 * @param sub_project_dirs directories of sub-projects that need to be built before this one,
171 if set to NULL when calling this function then it won't be set, otherwise it must be deallocated after the call
172 * @param program_name original value of argv[0], which is the executable path used to start this program
173 * @param prj_graph_fp write project graph xml data into this file if not NULL
174 * @create_symlink_list a list of symlinks to be created
175 * @param ttcn3_prep_includes TTCN3preprocessorIncludes
176 * @param ttcn3_prep_defines preprocessorDefines
177 * @param prep_includes preprocessorIncludes
178 * @param prep_defines preprocessorDefines
179 * @param codesplit codeSplitting
180 * @param quietly quietly
181 * @param disablesubtypecheck disableSubtypeChecking
182 * @param cxxcompiler CxxCompiler
183 * @param optlevel optimizationLevel
184 * @param optflags otherOptimizationFlags
185 * @param disableber disableBER -b
186 * @param disableraw disableRAW -r
187 * @param disabletext disableTEXT -x
188 * @param disablexer disableXER -X
189 * @param disablejson disableJSON -j
190 * @param forcexerinasn forceXERinASN.1 -a
191 * @param defaultasomit defaultasOmit -d
192 * @param gccmessageformat gccMessageFormat -g
193 * @param linenumber lineNumbersOnlyInMessages -i
194 * @param includesourceinfo includeSourceInfo -L
195 * @param addsourcelineinfo addSourceLineInfo -l
196 * @param suppresswarnings suppressWarnings -S
197 * @param outparamboundness outParamBoundness -Y
198 * @param omit_in_value_list omitInValueList -M
199 * @param warnings_for_bad_variants warningsForBadVariants -E
200 * @param disable_predef_exp_folder disablePredefinedExternalFolder
201 * @param solspeclibs SolarisSpecificLibraries
202 * @param sol8speclibs Solaris8SpecificLibraries
203 * @param linuxspeclibs LinuxSpecificLibraries
204 * @param freebsdspeclibs FreeBSDSpecificLibraries
205 * @param win32speclibs Win32SpecificLibraries
206 * @param ttcn3preprocessor ttcn3preprocessor
207 * @param linkerlibs linkerlibs
208 * @param linkerlibrarysearchpath linkerlibrarysearchpath
209 * @param Vflag -V switch
210 * @param Dflag -D switch
211 * @param generatorCommandOutput the output of the command that generates a Makefile snippet
212 * @param target_placement_list a list of (target,placement) strings pairs from the TPD
213 * @param prefix_workdir prefix working directory with project name
214 * @param run_command_list contains the working directories and the makefilegen commands to be called there
215 * @param search_paths contains the paths that can be tried if a file is not found
216 * @param n_search_paths contains the size of relative_prefixes
217 * @return TPD_SUCCESS if parsing successful, TPD_SKIPPED if the tpd
218 * was seen already, or TPD_FAILED on error.
225 tpd_result
process_tpd(const char *p_tpd_name
, const char *actcfg
,
226 const char *file_list_path
,
227 int *argc
, char ***argv
,
228 int *optind
, char **ets_name
, char **project_name
,
229 boolean
*gnu_make
, boolean
*single_mode
,
230 boolean
*central_storage
, boolean
*absolute_paths
,
231 boolean
*preprocess
, boolean
*use_runtime_2
,
232 boolean
*dynamic
, boolean
*makedepend
, boolean
*filelist
,
233 boolean
*library
, boolean recursive
, boolean force_overwrite
, boolean gen_only_top_level
,
234 const char *output_file
, char** abs_work_dir
, struct string_list
* sub_project_dirs
,
235 const char* program_name
, FILE* prj_graph_fp
, struct string2_list
* create_symlink_list
, struct string_list
* ttcn3_prep_includes
,
236 struct string_list
* ttcn3_prep_defines
, struct string_list
* ttcn3_prep_undefines
, struct string_list
* prep_includes
,
237 struct string_list
* prep_defines
, struct string_list
* prep_undefines
, boolean
*codesplit
, boolean
*quietly
, boolean
*disablesubtypecheck
,
238 char** cxxcompiler
, char** optlevel
, char** optflags
, boolean
*disableber
, boolean
*disableraw
, boolean
*disabletext
, boolean
*disablexer
,
239 boolean
*disablejson
, boolean
*forcexerinasn
, boolean
*defaultasomit
, boolean
*gccmessageformat
,
240 boolean
*linenumber
, boolean
*includesourceinfo
, boolean
*addsourcelineinfo
, boolean
*suppresswarnings
,
241 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
,
242 struct string_list
* linuxspeclibs
, struct string_list
* freebsdspeclibs
, struct string_list
* win32speclibs
,
243 char** ttcn3preprocessor
, struct string_list
* linkerlibs
, struct string_list
* additionalObjects
, struct string_list
* linkerlibsearchpath
, boolean Vflag
, boolean Dflag
,
244 boolean
*Zflag
, boolean
*Hflag
, char** generatorCommandOutput
, struct string2_list
* target_placement_list
, boolean prefix_workdir
, struct string2_list
* run_command_list
,
245 struct string2_list
* required_configs
, struct string_list
** profiled_file_list
, const char **search_paths
, size_t n_search_paths
);
247 #endif /* XPATHER_H_ */