15 #include "gwenbuild/types/gwenbuild_p.h" 19 #include <gwenhywfar/debug.h> 20 #include <gwenhywfar/directory.h> 21 #include <gwenhywfar/text.h> 22 #include <gwenhywfar/stringlist.h> 25 #include <sys/types.h> 45 GWB_FILE_LIST2 *sourceFileList,
46 GWB_FILE_LIST2 *newOutputList);
76 GWB_GBuilderDescr_List_free(gwenbuild->builderDescrList);
86 return gwenbuild->flags;
107 gwenbuild->flags&=~f;
114 return gwenbuild->targetSystem;
121 free(gwenbuild->targetSystem);
122 gwenbuild->targetSystem=s?strdup(s):
NULL;
128 return gwenbuild->targetIsWindows;
135 gwenbuild->targetIsWindows=i;
142 return gwenbuild->buildFilenameList;
179 if (strcasecmp(s,
"InstallLibrary")==0)
181 else if (strcasecmp(s,
"ConvenienceLibrary")==0 ||
182 strcasecmp(s,
"TempLibrary")==0)
184 else if (strcasecmp(s,
"Program")==0)
186 else if (strcasecmp(s,
"CxxProgram")==0)
188 else if (strcasecmp(s,
"Objects")==0)
190 else if (strcasecmp(s,
"Module")==0)
226 for(i=0; i<indent; i++)
227 fprintf(stderr,
" ");
228 fprintf(stderr,
"%s = %s\n", sName, sValue?sValue:
"<empty>");
237 for(i=0; i<indent; i++)
238 fprintf(stderr,
" ");
239 fprintf(stderr,
"%s = %d\n", sName, value);
248 for(i=0; i<indent; i++)
249 fprintf(stderr,
" ");
250 fprintf(stderr,
"%s:\n", sName);
255 kvp=GWB_KeyValuePair_List_First(kvpList);
263 kvp=GWB_KeyValuePair_List_Next(kvp);
274 for(i=0; i<indent; i++)
275 fprintf(stderr,
" ");
276 fprintf(stderr,
"%s:\n", sName);
288 for(i=0; i<indent; i++)
289 fprintf(stderr,
" ");
292 fprintf(stderr,
"%s = ", sName);
298 const char *sInstallPath;
299 const char *sFileType;
309 fprintf(stderr,
"[%5d] ", (
int)
id);
310 if (sFolder && *sFolder)
311 fprintf(stderr,
"%s/", sFolder);
312 fprintf(stderr,
"%s", sName?sName:
"<no name>");
313 fprintf(stderr,
" (%s)", sFileType?sFileType:
"no type");
316 fprintf(stderr,
" DIST");
318 fprintf(stderr,
" INSTALL");
320 fprintf(stderr,
" GENERATED");
321 fprintf(stderr,
" %s", sInstallPath?sInstallPath:
"<no install path>");
323 fprintf(stderr,
"\n");
326 fprintf(stderr,
"<empty>\n");
335 for(i=0; i<indent; i++)
336 fprintf(stderr,
" ");
337 fprintf(stderr,
"%s:\n", sName);
340 GWB_FILE_LIST2_ITERATOR *it;
342 it=GWB_File_List2_First(fileList2);
346 file=GWB_File_List2Iterator_Data(it);
349 file=GWB_File_List2Iterator_Next(it);
351 GWB_File_List2Iterator_free(it);
362 for(i=0; i<indent; i++)
363 fprintf(stderr,
" ");
364 fprintf(stderr,
"%s:\n", sName);
367 GWB_TARGET_LIST2_ITERATOR *it;
369 it=GWB_Target_List2_First(targetList2);
373 target=GWB_Target_List2Iterator_Data(it);
376 target=GWB_Target_List2Iterator_Next(it);
378 GWB_Target_List2Iterator_free(it);
389 for(i=0; i<indent; i++)
390 fprintf(stderr,
" ");
391 fprintf(stderr,
"%s:\n", sName);
396 option=GWB_Option_List_First(optionList);
399 option=GWB_Option_List_Next(option);
410 for(i=0; i<indent; i++)
411 fprintf(stderr,
" ");
412 fprintf(stderr,
"%s:\n", sName);
415 GWB_BUILDER_LIST2_ITERATOR *it;
417 it=GWB_Builder_List2_First(builderList2);
421 builder=GWB_Builder_List2Iterator_Data(it);
424 builder=GWB_Builder_List2Iterator_Next(it);
426 GWB_Builder_List2Iterator_free(it);
437 for(i=0; i<indent; i++)
438 fprintf(stderr,
" ");
439 fprintf(stderr,
"%s:\n", sName);
442 GWB_BUILD_CMD_LIST2_ITERATOR *it;
444 it=GWB_BuildCmd_List2_First(buildCmdList2);
448 builder=GWB_BuildCmd_List2Iterator_Data(it);
451 builder=GWB_BuildCmd_List2Iterator_Next(it);
453 GWB_BuildCmd_List2Iterator_free(it);
466 for(i=0; i<indent; i++)
467 fprintf(stderr,
" ");
468 fprintf(stderr,
"%s:\n", sName);
475 for(i=0; i<indent+2; i++)
476 fprintf(stderr,
" ");
477 fprintf(stderr,
"[%s]\n", (s && *s)?s:
"<empty>");
488 GWB_TARGET_LIST2 *targetList;
492 GWB_TARGET_LIST2_ITERATOR *it;
495 it=GWB_Target_List2_First(targetList);
499 target=GWB_Target_List2Iterator_Data(it);
506 GWB_Target_List2Iterator_free(it);
518 target=GWB_Target_List2Iterator_Next(it);
520 GWB_Target_List2Iterator_free(it);
536 GWB_FILE_LIST2 *fileList1;
541 if (!(fileList1 && GWB_File_List2_GetSize(fileList1)>0)) {
547 fileList1=GWB_File_List2_dup(fileList1);
548 while(GWB_File_List2_GetSize(fileList1)>0) {
549 GWB_FILE_LIST2 *fileList2;
552 fileList2=GWB_File_List2_new();
556 GWB_File_List2_free(fileList1);
557 GWB_File_List2_free(fileList1);
560 GWB_File_List2_free(fileList1);
563 GWB_File_List2_free(fileList1);
571 GWB_FILE_LIST2 *sourceFileList,
572 GWB_FILE_LIST2 *newOutputList)
576 GWB_FILE_LIST2_ITERATOR *it;
583 it=GWB_File_List2_First(sourceFileList);
587 file=GWB_File_List2Iterator_Data(it);
593 DBG_DEBUG(
NULL,
"- adding file \"%s\" as input for target \"%s\"",
603 GWB_FILE_LIST2 *buildersOutputFileList;
612 file=GWB_File_List2Iterator_Next(it);
615 GWB_File_List2Iterator_free(it);
625 GWB_TARGET_LIST2 *targetList;
629 GWB_TARGET_LIST2_ITERATOR *it;
631 it=GWB_Target_List2_First(targetList);
635 target=GWB_Target_List2Iterator_Data(it);
646 GWB_Target_List2Iterator_free(it);
651 target=GWB_Target_List2Iterator_Next(it);
653 GWB_Target_List2Iterator_free(it);
697 GWB_FILE_LIST2 *subTargetOutputFileList;
704 if (targetBuilder==
NULL) {
709 if (subTargetBuilder==
NULL) {
715 if (subTargetOutputFileList==
NULL) {
719 subTargetFile=GWB_File_List2_GetFront(subTargetOutputFileList);
720 if (subTargetFile==
NULL) {
772 GWB_BUILDER_LIST2 *builderList;
776 GWB_BUILDER_LIST2_ITERATOR *it;
778 it=GWB_Builder_List2_First(builderList);
782 builder=GWB_Builder_List2Iterator_Data(it);
789 GWB_Builder_List2Iterator_free(it);
792 builder=GWB_Builder_List2Iterator_Next(it);
795 GWB_Builder_List2Iterator_free(it);
808 GWB_TARGET_LIST2 *targetList;
809 GWB_BUILD_CMD_LIST *explicitBuildCmdList;
813 if (explicitBuildCmdList)
819 GWB_TARGET_LIST2_ITERATOR *it;
821 it=GWB_Target_List2_First(targetList);
825 target=GWB_Target_List2Iterator_Data(it);
828 if (explicitBuildCmdList)
830 target=GWB_Target_List2Iterator_Next(it);
832 GWB_Target_List2Iterator_free(it);
844 cmd=GWB_BuildCmd_List_First(buildCmdList);
849 cmd=GWB_BuildCmd_List_Next(cmd);
859 GWB_FILE_LIST2_ITERATOR *it;
861 it=GWB_File_List2_First(fileList);
865 file=GWB_File_List2Iterator_Data(it);
872 file=GWB_File_List2Iterator_Next(it);
875 GWB_File_List2Iterator_free(it);
886 if (lstat(filename, &st)==-1) {
887 DBG_INFO(
NULL,
"Error on stat(%s): %s", filename, strerror(errno));
898 #if defined(__x86_64__) || defined(_M_X64) 900 #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) 902 #elif defined(__ARM_ARCH_2__) 904 #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) 906 #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T) 908 #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_) 910 #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_) 912 #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) 914 #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) 916 #elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) 918 #elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) 920 #elif defined(__ARM_ARCH_7M__) 922 #elif defined(__ARM_ARCH_7S__) 924 #elif defined(__aarch64__) || defined(_M_ARM64) 926 #elif defined(mips) || defined(__mips__) || defined(__mips) 928 #elif defined(__sh__) 930 #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) 932 #elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64) 934 #elif defined(__sparc__) || defined(__sparc) 936 #elif defined(__m68k__) 946 #if defined(__linux__) 950 #elif defined(__FreeBSD__) 952 #elif defined(__NetBSD__) 954 #elif defined(__OpenBSD__) 956 #elif defined(__APPLE__) 958 #elif defined(__hpux) 961 #elif defined(__osf__) 967 #elif defined(_WIN32) 1001 const char *sFolder,
1003 GWB_FILE_LIST2 *outFileList,
1004 uint32_t flagsToAdd,
1005 int copyFileForOutList)
1021 if (copyFileForOutList)
1022 GWB_File_List2_PushBack(outFileList,
GWB_File_dup(file));
1024 GWB_File_List2_PushBack(outFileList, file);
1058 if (gwenbuild->builderDescrList==
NULL)
1069 if (builder==
NULL) {
1070 DBG_ERROR(
NULL,
"Error instantiating builder \"%s\"", builderName);
1088 const char *builderName;
1094 if (!(name && *name)) {
1100 DBG_DEBUG(
NULL,
"Unable to determine builder for source file \"%s\"", name);
1105 if (!(builderName && *builderName)) {
1106 DBG_INFO(
NULL,
"Determining builder type for file \%s\"", name);
1107 if (strcasecmp(ext,
".c")==0)
1108 builderName=
"cbuilder";
1109 else if (strcasecmp(ext,
".cpp")==0)
1110 builderName=
"cxxbuilder";
1111 else if (strcasecmp(ext,
".t2d")==0 || strcasecmp(ext,
".xml")==0)
1112 builderName=
"tm2builder";
1115 DBG_DEBUG(
NULL,
"Unable to determine builder for source file \"%s\" (unhandled ext)", name);
1121 DBG_INFO(
NULL,
"Selected builder type is for file \%s\" is \"%s\"", name, builderName);
1123 if (builder==
NULL) {
1124 DBG_ERROR(
NULL,
"Could not create builder for type \"%s\"", ext);
1168 if (builder==
NULL) {
1170 "Could not create builder for type \"%s\"",
GWEN_STRINGLIST * GWEN_StringList_fromString2(const char *str, const char *delimiters, int checkDouble, uint32_t flags)
GWB_BUILDER_LIST2 * GWB_Project_GetBuilderList(const GWB_PROJECT *project)
const char * GWB_File_GetFileType(const GWB_FILE *f)
GWB_FILE_LIST2 * GWB_BuildCmd_GetInFileList2(const GWB_BUILD_CMD *bcmd)
void GWBUILD_Debug_PrintIntValue(const char *sName, int value, int indent)
GWB_BUILD_CONTEXT * GWB_BuildCtx_new()
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
struct GWEN_STRINGLISTENTRYSTRUCT GWEN_STRINGLISTENTRY
const char * GWBUILD_GetHostArch()
struct GWB_CONTEXT GWB_CONTEXT
#define GWEN_TEXT_FLAGS_DEL_TRAILING_BLANKS
static void _addFilesToBuildCtx(GWB_BUILD_CONTEXT *buildCtx, GWB_FILE_LIST2 *fileList)
GWEN_XMLNODE * GWB_GBuilderDescr_GetXmlDescr(const GWB_GBUILDER_DESCR *descr)
void GWEN_DB_Dump(GWEN_DB_NODE *n, int insert)
struct GWEN_DB_NODE GWEN_DB_NODE
uint32_t GWB_File_GetId(const GWB_FILE *f)
#define GWEN_DIR_SEPARATOR_S
void GWB_Target_Dump(const GWB_TARGET *target, int indent, int fullDump)
GWENBUILD * GWBUILD_new(void)
static GWB_BUILDER * _genBuilderForSourceFile(GWENBUILD *gwenbuild, GWB_CONTEXT *context, GWB_FILE *file)
void GWB_Builder_AddInputFile(GWB_BUILDER *builder, GWB_FILE *f)
GWENBUILD * GWB_Project_GetGwbuild(const GWB_PROJECT *project)
struct GWB_OPTION GWB_OPTION
struct GWB_BUILD_CONTEXT GWB_BUILD_CONTEXT
#define GWEN_FREE_OBJECT(varname)
void GWB_File_AddFlags(GWB_FILE *f, uint32_t i)
GWB_FILE * GWB_File_dup(const GWB_FILE *oldFile)
int GWB_Builder_AddBuildCmd(GWB_BUILDER *builder, GWB_BUILD_CONTEXT *bctx)
void GWBUILD_Debug_PrintTargetList2(const char *sName, const GWB_TARGET_LIST2 *targetList2, int indent, int fullDump)
const char * GWBUILD_GetHostSystem()
GWB_FILE * GWB_File_List2_GetOrCreateFile(GWB_FILE_LIST2 *fileList, const char *folder, const char *fname)
void GWB_BuildCtx_free(GWB_BUILD_CONTEXT *bctx)
#define GWENBUILD_FLAGS_STATIC
GWB_TARGET_LIST2 * GWB_Project_GetTargetList(const GWB_PROJECT *project)
void GWBUILD_AddFlags(GWENBUILD *gwenbuild, uint32_t f)
struct GWB_PROJECT GWB_PROJECT
GWBUILD_TARGETTYPE GWBUILD_TargetType_fromString(const char *s)
const char * GWBUILD_GetArchFromTriplet(const char *sTriplet)
void GWB_File_SetId(GWB_FILE *f, uint32_t i)
void GWB_File_AddFileList2ToFileList2(GWB_FILE_LIST2 *sourceList, GWB_FILE_LIST2 *destList, const char *ext)
void GWBUILD_SetFlags(GWENBUILD *gwenbuild, uint32_t f)
void GWB_Builder_AddSourceFile(GWB_BUILDER *builder, GWB_FILE *f)
void GWBUILD_Debug_PrintBuildCmdList2(const char *sName, const GWB_BUILD_CMD_LIST2 *buildCmdList2, int indent)
#define GWB_FILE_FLAGS_DIST
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
GWEN_STRINGLIST * GWBUILD_GetPathFromEnvironment()
void GWBUILD_AddFilesFromStringList(GWB_FILE_LIST2 *mainFileList, const char *sFolder, const GWEN_STRINGLIST *fileNameList, GWB_FILE_LIST2 *outFileList, uint32_t flagsToAdd, int copyFileForOutList)
void GWB_Builder_AddRelativeFolderToBuffer(const GWB_CONTEXT *context, const char *folder, int useBuildDir, GWEN_BUFFER *argBuffer)
GWEN_STRINGLISTENTRY * GWEN_StringList_FirstEntry(const GWEN_STRINGLIST *sl)
const char * GWEN_StringListEntry_Data(const GWEN_STRINGLISTENTRY *se)
#define GWB_FILE_FLAGS_INSTALL
GWB_FILE_LIST2 * GWB_Context_GetSourceFileList2(const GWB_CONTEXT *ctx)
const char * GWB_File_GetInstallPath(const GWB_FILE *f)
const char * GWB_File_GetFolder(const GWB_FILE *f)
GWB_BUILD_CMD * GWB_BuildCmd_dup(GWB_BUILD_CMD *origCmd)
const char * GWB_File_GetName(const GWB_FILE *f)
void GWBUILD_Debug_PrintValue(const char *sName, const char *sValue, int indent)
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
static int _addSourcesOrMkBuildersAndGetTheirOutputs(GWB_PROJECT *project, GWB_TARGET *target, GWB_FILE_LIST2 *sourceFileList, GWB_FILE_LIST2 *newOutputList)
GWB_FILE_LIST2 * GWB_Builder_GetOutputFileList2(const GWB_BUILDER *builder)
void GWB_File_SetBuilder(GWB_FILE *f, const char *s)
GWEN_STRINGLIST * GWB_Target_GetUsedTargetNameList(const GWB_TARGET *target)
#define GWEN_NEW_OBJECT(typ, varname)
void GWBUILD_Debug_PrintFile(const char *sName, const GWB_FILE *file, int indent)
struct GWB_TARGET GWB_TARGET
void GWBUILD_Debug_PrintOptionList(const char *sName, const GWB_OPTION_LIST *optionList, int indent)
const char * GWB_Context_GetInitialSourceDir(const GWB_CONTEXT *ctx)
int GWEN_StringList_AppendString(GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
#define DBG_DEBUG(dbg_logger, format, args...)
void _readBuilderDescrList(GWENBUILD *gwenbuild)
GWB_BUILD_CMD_LIST * GWB_Target_GetExplicitBuildList(const GWB_TARGET *target)
void GWBUILD_Debug_PrintKvpList(const char *sName, const GWB_KEYVALUEPAIR_LIST *kvpList, int indent)
uint32_t GWBUILD_GetFlags(const GWENBUILD *gwenbuild)
GWB_FILE_LIST2 * GWB_BuildCmd_GetOutFileList2(const GWB_BUILD_CMD *bcmd)
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
void GWBUILD_Debug_PrintStringList(const char *sName, const GWEN_STRINGLIST *sl, int indent)
#define GWEN_ERROR_GENERIC
void GWB_BuildCtx_SetInitialSourceDir(GWB_BUILD_CONTEXT *bctx, const char *s)
void GWBUILD_Debug_PrintFileList2(const char *sName, const GWB_FILE_LIST2 *fileList2, int indent)
GWB_BUILDER * GWB_GenericBuilder_new(GWENBUILD *gwenbuild, GWB_CONTEXT *context, GWEN_XMLNODE *xmlDescr)
GWB_GBUILDER_DESCR_LIST * GWB_GBuilderDescr_ReadAll(const char *folder)
static void _addBuildCommands(GWB_BUILD_CONTEXT *buildCtx, const GWB_BUILD_CMD_LIST *buildCmdList)
const char * GWB_File_GetExt(const GWB_FILE *f)
static int _addOneSubTargetForTarget(GWB_TARGET *target, GWB_TARGET *subTarget)
static void _addExplicitBuildCommandsFromTargets(GWB_PROJECT *project, GWB_BUILD_CONTEXT *buildCtx)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
const char * GWBUILD_TargetType_toString(GWBUILD_TARGETTYPE tt)
const char * GWB_Target_GetId(const GWB_TARGET *target)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
GWB_TARGET * GWB_Project_GetTargetById(const GWB_PROJECT *project, const char *id)
const char * GWB_Builder_GetTargetLinkSpec(const GWB_BUILDER *builder)
static GWB_BUILDER * _genBuilderForTarget(GWB_PROJECT *project, GWB_TARGET *target)
GWB_BUILD_CONTEXT * GWBUILD_MakeBuildCommands(GWB_PROJECT *project)
GWB_BUILDER * GWB_Target_GetBuilder(const GWB_TARGET *target)
void GWB_BuildCtx_AddCommand(GWB_BUILD_CONTEXT *bctx, GWB_BUILD_CMD *cmd)
int GWBUILD_MakeBuildersForTargets(GWB_PROJECT *project)
unsigned int GWEN_StringList_Count(const GWEN_STRINGLIST *sl)
int GWBUILD_GetTargetIsWindows(const GWENBUILD *gwenbuild)
#define DBG_ERROR(dbg_logger, format, args...)
GWB_BUILD_CMD_LIST * GWB_Project_GetExplicitBuildList(const GWB_PROJECT *project)
static int _addBuildCommandsFromBuilder(GWB_PROJECT *project, GWB_BUILD_CONTEXT *buildCtx)
void GWBUILD_free(GWENBUILD *gwenbuild)
void GWBUILD_Debug_PrintBuilderList2(const char *sName, const GWB_BUILDER_LIST2 *builderList2, int indent, int fullDump)
time_t GWBUILD_GetModificationTimeOfFile(const char *filename)
int GWEN_Text_ComparePattern(const char *w, const char *p, int sensecase)
void GWB_BuildCmd_Dump(const GWB_BUILD_CMD *bcmd, int indent)
const char * GWBUILD_GetSystemFromTriplet(const char *sTriplet)
const char * GWB_File_GetBuilder(const GWB_FILE *f)
void GWBUILD_Debug_PrintDb(const char *sName, GWEN_DB_NODE *db, int indent)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_Next(const GWEN_STRINGLISTENTRY *se)
void GWBUILD_SetTargetSystem(GWENBUILD *gwenbuild, const char *s)
static int _addSubTargetsForTarget(GWB_PROJECT *project, GWB_TARGET *target, GWEN_STRINGLIST *usedTargetList)
void GWB_BuildCtx_AddFile(GWB_BUILD_CONTEXT *bctx, GWB_FILE *file)
struct GWB_KEYVALUEPAIR GWB_KEYVALUEPAIR
struct GWB_BUILD_CMD GWB_BUILD_CMD
uint32_t GWB_File_GetFlags(const GWB_FILE *f)
struct GWB_BUILDER GWB_BUILDER
int GWB_Builder_IsAcceptableInput(GWB_BUILDER *builder, const GWB_FILE *file)
GWEN_XMLNODE * GWEN_XMLNode_dup(const GWEN_XMLNODE *n)
void GWB_Builder_Dump(const GWB_BUILDER *builder, int indent, int fullDump)
#define DBG_INFO(dbg_logger, format, args...)
#define GWEN_TEXT_FLAGS_DEL_QUOTES
void GWB_Target_AddUsedTargetLinkSpec(GWB_TARGET *target, const char *s)
void GWB_Option_Dump(const GWB_OPTION *option, int indent)
#define GWEN_TEXT_FLAGS_DEL_LEADING_BLANKS
GWB_GBUILDER_DESCR * GWB_GBuilderDescr_List_GetByName(const GWB_GBUILDER_DESCR_LIST *descrList, const char *name)
GWBUILD_TARGETTYPE GWB_Target_GetTargetType(const GWB_TARGET *target)
static int _addOrBuildTargetSources(GWB_PROJECT *project, GWB_TARGET *target)
void GWBUILD_DelFlags(GWENBUILD *gwenbuild, uint32_t f)
static GWB_BUILDER * _getBuilderByName(GWENBUILD *gwenbuild, GWB_CONTEXT *context, const char *builderName)
GWB_CONTEXT * GWB_Target_GetContext(const GWB_TARGET *target)
#define GWEN_ERROR_NO_DATA
#define GWEN_TEXT_FLAGS_CHECK_BACKSLASH
struct GWENBUILD GWENBUILD
const char * GWB_KeyValuePair_GetValue(const GWB_KEYVALUEPAIR *kvp)
static int _addSubTargets(GWB_PROJECT *project)
const char * GWB_KeyValuePair_GetKey(const GWB_KEYVALUEPAIR *kvp)
GWEN_STRINGLIST * GWEN_StringList_new(void)
void GWB_Project_AddBuilder(GWB_PROJECT *project, GWB_BUILDER *builder)
void GWBUILD_AddBuildFilename(GWENBUILD *gwenbuild, const char *s)
struct GWEN__XMLNODE GWEN_XMLNODE
GWB_CONTEXT * GWB_Project_GetRootContext(const GWB_PROJECT *project)
GWEN_STRINGLIST * GWBUILD_GetBuildFilenameList(const GWENBUILD *gwenbuild)
void GWBUILD_SetTargetIsWindows(GWENBUILD *gwenbuild, int i)
#define GWB_FILE_FLAGS_GENERATED
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
struct GWB_GBUILDER_DESCR GWB_GBUILDER_DESCR
const char * GWBUILD_GetTargetSystem(const GWENBUILD *gwenbuild)
void GWB_Target_SetBuilder(GWB_TARGET *target, GWB_BUILDER *builder)