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)
192 else if (strcasecmp(s,
"I18nCatalog")==0)
229 for(i=0; i<indent; i++)
230 fprintf(stderr,
" ");
231 fprintf(stderr,
"%s = %s\n", sName, sValue?sValue:
"<empty>");
240 for(i=0; i<indent; i++)
241 fprintf(stderr,
" ");
242 fprintf(stderr,
"%s = %d\n", sName, value);
251 for(i=0; i<indent; i++)
252 fprintf(stderr,
" ");
253 fprintf(stderr,
"%s:\n", sName);
258 kvp=GWB_KeyValuePair_List_First(kvpList);
266 kvp=GWB_KeyValuePair_List_Next(kvp);
277 for(i=0; i<indent; i++)
278 fprintf(stderr,
" ");
279 fprintf(stderr,
"%s:\n", sName);
291 for(i=0; i<indent; i++)
292 fprintf(stderr,
" ");
295 fprintf(stderr,
"%s = ", sName);
301 const char *sInstallPath;
302 const char *sFileType;
312 fprintf(stderr,
"[%5d] ", (
int)
id);
313 if (sFolder && *sFolder)
314 fprintf(stderr,
"%s/", sFolder);
315 fprintf(stderr,
"%s", sName?sName:
"<no name>");
316 fprintf(stderr,
" (%s)", sFileType?sFileType:
"no type");
319 fprintf(stderr,
" DIST");
321 fprintf(stderr,
" INSTALL");
323 fprintf(stderr,
" GENERATED");
324 fprintf(stderr,
" %s", sInstallPath?sInstallPath:
"<no install path>");
326 fprintf(stderr,
"\n");
329 fprintf(stderr,
"<empty>\n");
338 for(i=0; i<indent; i++)
339 fprintf(stderr,
" ");
340 fprintf(stderr,
"%s:\n", sName);
343 GWB_FILE_LIST2_ITERATOR *it;
345 it=GWB_File_List2_First(fileList2);
349 file=GWB_File_List2Iterator_Data(it);
352 file=GWB_File_List2Iterator_Next(it);
354 GWB_File_List2Iterator_free(it);
365 for(i=0; i<indent; i++)
366 fprintf(stderr,
" ");
367 fprintf(stderr,
"%s:\n", sName);
370 GWB_TARGET_LIST2_ITERATOR *it;
372 it=GWB_Target_List2_First(targetList2);
376 target=GWB_Target_List2Iterator_Data(it);
379 target=GWB_Target_List2Iterator_Next(it);
381 GWB_Target_List2Iterator_free(it);
392 for(i=0; i<indent; i++)
393 fprintf(stderr,
" ");
394 fprintf(stderr,
"%s:\n", sName);
399 option=GWB_Option_List_First(optionList);
402 option=GWB_Option_List_Next(option);
413 for(i=0; i<indent; i++)
414 fprintf(stderr,
" ");
415 fprintf(stderr,
"%s:\n", sName);
418 GWB_BUILDER_LIST2_ITERATOR *it;
420 it=GWB_Builder_List2_First(builderList2);
424 builder=GWB_Builder_List2Iterator_Data(it);
427 builder=GWB_Builder_List2Iterator_Next(it);
429 GWB_Builder_List2Iterator_free(it);
440 for(i=0; i<indent; i++)
441 fprintf(stderr,
" ");
442 fprintf(stderr,
"%s:\n", sName);
445 GWB_BUILD_CMD_LIST2_ITERATOR *it;
447 it=GWB_BuildCmd_List2_First(buildCmdList2);
451 builder=GWB_BuildCmd_List2Iterator_Data(it);
454 builder=GWB_BuildCmd_List2Iterator_Next(it);
456 GWB_BuildCmd_List2Iterator_free(it);
469 for(i=0; i<indent; i++)
470 fprintf(stderr,
" ");
471 fprintf(stderr,
"%s:\n", sName);
478 for(i=0; i<indent+2; i++)
479 fprintf(stderr,
" ");
480 fprintf(stderr,
"[%s]\n", (s && *s)?s:
"<empty>");
491 GWB_TARGET_LIST2 *targetList;
495 GWB_TARGET_LIST2_ITERATOR *it;
498 it=GWB_Target_List2_First(targetList);
502 target=GWB_Target_List2Iterator_Data(it);
509 GWB_Target_List2Iterator_free(it);
521 target=GWB_Target_List2Iterator_Next(it);
523 GWB_Target_List2Iterator_free(it);
539 GWB_FILE_LIST2 *fileList1;
544 if (!(fileList1 && GWB_File_List2_GetSize(fileList1)>0)) {
550 fileList1=GWB_File_List2_dup(fileList1);
551 while(GWB_File_List2_GetSize(fileList1)>0) {
552 GWB_FILE_LIST2 *fileList2;
555 fileList2=GWB_File_List2_new();
559 GWB_File_List2_free(fileList1);
560 GWB_File_List2_free(fileList1);
563 GWB_File_List2_free(fileList1);
566 GWB_File_List2_free(fileList1);
574 GWB_FILE_LIST2 *sourceFileList,
575 GWB_FILE_LIST2 *newOutputList)
579 GWB_FILE_LIST2_ITERATOR *it;
586 it=GWB_File_List2_First(sourceFileList);
590 file=GWB_File_List2Iterator_Data(it);
596 DBG_DEBUG(
NULL,
"- adding file \"%s\" as input for target \"%s\"",
606 GWB_FILE_LIST2 *buildersOutputFileList;
615 file=GWB_File_List2Iterator_Next(it);
618 GWB_File_List2Iterator_free(it);
628 GWB_TARGET_LIST2 *targetList;
632 GWB_TARGET_LIST2_ITERATOR *it;
634 it=GWB_Target_List2_First(targetList);
638 target=GWB_Target_List2Iterator_Data(it);
649 GWB_Target_List2Iterator_free(it);
654 target=GWB_Target_List2Iterator_Next(it);
656 GWB_Target_List2Iterator_free(it);
700 GWB_FILE_LIST2 *subTargetOutputFileList;
707 if (targetBuilder==
NULL) {
712 if (subTargetBuilder==
NULL) {
718 if (subTargetOutputFileList==
NULL) {
722 subTargetFile=GWB_File_List2_GetFront(subTargetOutputFileList);
723 if (subTargetFile==
NULL) {
775 GWB_BUILDER_LIST2 *builderList;
779 GWB_BUILDER_LIST2_ITERATOR *it;
781 it=GWB_Builder_List2_First(builderList);
785 builder=GWB_Builder_List2Iterator_Data(it);
792 GWB_Builder_List2Iterator_free(it);
795 builder=GWB_Builder_List2Iterator_Next(it);
798 GWB_Builder_List2Iterator_free(it);
811 GWB_TARGET_LIST2 *targetList;
812 GWB_BUILD_CMD_LIST *explicitBuildCmdList;
816 if (explicitBuildCmdList)
822 GWB_TARGET_LIST2_ITERATOR *it;
824 it=GWB_Target_List2_First(targetList);
828 target=GWB_Target_List2Iterator_Data(it);
831 if (explicitBuildCmdList)
833 target=GWB_Target_List2Iterator_Next(it);
835 GWB_Target_List2Iterator_free(it);
847 cmd=GWB_BuildCmd_List_First(buildCmdList);
852 cmd=GWB_BuildCmd_List_Next(cmd);
862 GWB_FILE_LIST2_ITERATOR *it;
864 it=GWB_File_List2_First(fileList);
868 file=GWB_File_List2Iterator_Data(it);
875 file=GWB_File_List2Iterator_Next(it);
878 GWB_File_List2Iterator_free(it);
890 #if _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED 891 rv=lstat(filename, &st);
893 rv=stat(filename, &st);
896 DBG_INFO(
NULL,
"Error on stat(%s): %s", filename, strerror(errno));
907 #if defined(__x86_64__) || defined(_M_X64) 909 #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) 911 #elif defined(__ARM_ARCH_2__) 913 #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) 915 #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T) 917 #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_) 919 #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_) 921 #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) 923 #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) 925 #elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) 927 #elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) 929 #elif defined(__ARM_ARCH_7M__) 931 #elif defined(__ARM_ARCH_7S__) 933 #elif defined(__aarch64__) || defined(_M_ARM64) 935 #elif defined(mips) || defined(__mips__) || defined(__mips) 937 #elif defined(__sh__) 939 #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) 941 #elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64) 943 #elif defined(__sparc__) || defined(__sparc) 945 #elif defined(__m68k__) 955 #if defined(__linux__) 959 #elif defined(__FreeBSD__) 961 #elif defined(__NetBSD__) 963 #elif defined(__OpenBSD__) 965 #elif defined(__APPLE__) 967 #elif defined(__hpux) 970 #elif defined(__osf__) 976 #elif defined(_WIN32) 1010 const char *sFolder,
1012 GWB_FILE_LIST2 *outFileList,
1013 uint32_t flagsToAdd,
1014 int copyFileForOutList)
1030 if (copyFileForOutList)
1031 GWB_File_List2_PushBack(outFileList,
GWB_File_dup(file));
1033 GWB_File_List2_PushBack(outFileList, file);
1067 if (gwenbuild->builderDescrList==
NULL)
1078 if (builder==
NULL) {
1079 DBG_ERROR(
NULL,
"Error instantiating builder \"%s\"", builderName);
1097 const char *builderName;
1103 if (!(name && *name)) {
1109 DBG_DEBUG(
NULL,
"Unable to determine builder for source file \"%s\"", name);
1114 if (!(builderName && *builderName)) {
1115 DBG_INFO(
NULL,
"Determining builder type for file \%s\"", name);
1116 if (strcasecmp(ext,
".c")==0)
1117 builderName=
"cbuilder";
1118 else if (strcasecmp(ext,
".cpp")==0)
1119 builderName=
"cxxbuilder";
1120 else if (strcasecmp(ext,
".t2d")==0 || strcasecmp(ext,
".xml")==0)
1121 builderName=
"tm2builder";
1124 DBG_DEBUG(
NULL,
"Unable to determine builder for source file \"%s\" (unhandled ext)", name);
1130 DBG_INFO(
NULL,
"Selected builder type is for file \%s\" is \"%s\"", name, builderName);
1132 if (builder==
NULL) {
1133 DBG_ERROR(
NULL,
"Could not create builder for type \"%s\"", ext);
1180 if (builder==
NULL) {
1182 "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)
GWB_BUILDER * GWB_GenericBuilder_new(GWENBUILD *gwenbuild, GWB_CONTEXT *context, GWEN_XMLNODE *xmlDescr)
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_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)