15 #include "gwenbuild/buildctx/buildcmd_p.h" 17 #include <gwenhywfar/debug.h> 18 #include <gwenhywfar/misc.h> 30 const char *groupName,
31 GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList);
34 const char *groupName);
37 const char *groupName);
49 bcmd->inFileList2=GWB_File_List2_new();
50 bcmd->outFileList2=GWB_File_List2_new();
52 bcmd->prepareCommandList=GWB_BuildSubCmd_List_new();
53 bcmd->buildCommandList=GWB_BuildSubCmd_List_new();
67 bcmd->flags=origCmd->flags;
68 bcmd->builderName=(origCmd->builderName)?strdup(origCmd->builderName):
NULL;
69 bcmd->folder=(origCmd->folder)?strdup(origCmd->folder):
NULL;
70 bcmd->buildMessage=(origCmd->buildMessage)?strdup(origCmd->buildMessage):
NULL;
71 if (origCmd->prepareCommandList)
74 bcmd->prepareCommandList=GWB_BuildSubCmd_List_new();
76 if (origCmd->buildCommandList)
79 bcmd->buildCommandList=GWB_BuildSubCmd_List_new();
80 bcmd->blockingFiles=origCmd->blockingFiles;
81 if (origCmd->inFileList2)
82 bcmd->inFileList2=GWB_File_List2_dup(origCmd->inFileList2);
84 bcmd->inFileList2=GWB_File_List2_new();
85 if (origCmd->outFileList2)
86 bcmd->outFileList2=GWB_File_List2_dup(origCmd->outFileList2);
88 bcmd->outFileList2=GWB_File_List2_new();
89 bcmd->currentProcess=
NULL;
90 bcmd->currentCommand=
NULL;
105 free(bcmd->buildMessage);
107 free(bcmd->builderName);
109 GWB_BuildSubCmd_List_free(bcmd->prepareCommandList);
110 GWB_BuildSubCmd_List_free(bcmd->buildCommandList);
112 GWB_File_List2_free(bcmd->inFileList2);
113 GWB_File_List2_free(bcmd->outFileList2);
150 return bcmd->builderName;
157 free(bcmd->builderName);
158 bcmd->builderName=s?strdup(s):
NULL;
176 bcmd->folder=s?strdup(s):
NULL;
183 return bcmd->buildMessage;
190 free(bcmd->buildMessage);
191 bcmd->buildMessage=s?strdup(s):
NULL;
198 return bcmd->prepareCommandList;
205 GWB_BuildSubCmd_List_Add(cmd, bcmd->prepareCommandList);
212 return bcmd->buildCommandList;
219 GWB_BuildSubCmd_List_Add(cmd, bcmd->buildCommandList);
226 return bcmd->blockingFiles;
233 bcmd->blockingFiles=i;
240 return ++(bcmd->blockingFiles);
247 if (bcmd->blockingFiles>0)
248 return --(bcmd->blockingFiles);
250 return bcmd->blockingFiles;
257 return bcmd->inFileList2;
265 GWB_File_List2_PushBack(bcmd->inFileList2, file);
272 return bcmd->outFileList2;
280 GWB_File_List2_PushBack(bcmd->outFileList2, file);
287 return bcmd->currentProcess;
294 if (bcmd->currentProcess) {
301 bcmd->currentProcess=process;
308 return bcmd->currentCommand;
315 bcmd->currentCommand=cmd;
325 if (bcmd->builderName)
333 if (bcmd->buildMessage)
336 if (bcmd->prepareCommandList) {
344 if (bcmd->buildCommandList) {
352 if (bcmd->inFileList2) {
360 if (bcmd->outFileList2) {
414 const char *groupName)
418 cmd=GWB_BuildSubCmd_List_First(cmdList);
425 cmd=GWB_BuildSubCmd_List_Next(cmd);
433 const char *groupName)
443 GWB_BuildSubCmd_List_Add(cmd, cmdList);
452 const char *groupName)
454 GWB_FILE_LIST2_ITERATOR *it;
456 it=GWB_File_List2_First(fileList2);
460 file=GWB_File_List2Iterator_Data(it);
469 file=GWB_File_List2Iterator_Next(it);
471 GWB_File_List2Iterator_free(it);
478 const char *groupName,
479 GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList)
499 GWB_File_List2_PushBack(destFileList, file);
509 GWB_BUILD_CMD_LIST2_ITERATOR *it;
511 it=GWB_BuildCmd_List2_First(cmdList);
515 cmd=GWB_BuildCmd_List2Iterator_Data(it);
522 cmd=GWB_BuildCmd_List2Iterator_Next(it);
524 GWB_BuildCmd_List2Iterator_free(it);
534 cmd=GWB_BuildCmd_List_First(cmdList);
541 cmd=GWB_BuildCmd_List_Next(cmd);
551 GWB_BUILD_CMD_LIST2_ITERATOR *it;
553 it=GWB_BuildCmd_List2_First(cmdList);
557 cmd=GWB_BuildCmd_List2Iterator_Data(it);
560 cmd=GWB_BuildCmd_List2Iterator_Next(it);
563 GWB_BuildCmd_List2_free(cmdList);
575 for(i=0; i<indent; i++)
576 fprintf(stderr,
" ");
577 fprintf(stderr,
"BuildCmd:\n");
596 if (bcmd->inFileList2)
597 fileIn=GWB_File_List2_GetFront(bcmd->inFileList2);
598 if (bcmd->outFileList2)
599 fileOut=GWB_File_List2_GetFront(bcmd->outFileList2);
600 if (fileIn || fileOut) {
602 const char *fileNameIn=
NULL;
603 const char *fileNameOut=
NULL;
612 if (fileNameIn && fileNameOut) {
615 for(i=0; i<indent; i++)
616 fprintf(stderr,
" ");
617 fprintf(stderr,
"%s: %s (%s -> %s)\n",
618 folder?folder:
"<no folder>",
619 text?text:
"BuildCmd",
620 fileNameIn?fileNameIn:
"<no filename>",
621 fileNameOut?fileNameOut:
"<no filename>");
626 for(i=0; i<indent; i++)
627 fprintf(stderr,
" ");
628 fprintf(stderr,
"%s: %s (%s) \n",
629 folder?folder:
"<no folder>",
630 text?text:
"BuildCmd",
631 fileNameIn?fileNameIn:
"<no filename>");
GWEN_LIST2_FUNCTIONS(GWB_BUILD_CMD, GWB_BuildCmd)
GWB_FILE_LIST2 * GWB_BuildCmd_GetInFileList2(const GWB_BUILD_CMD *bcmd)
void GWBUILD_Debug_PrintIntValue(const char *sName, int value, int indent)
GWB_BUILD_SUBCMD_LIST * GWB_BuildCmd_GetPrepareCommandList(const GWB_BUILD_CMD *bcmd)
GWB_FILE * GWB_File_List2_GetFileById(const GWB_FILE_LIST2 *fileList, uint32_t id)
const char * GWB_BuildCmd_GetBuildMessage(const GWB_BUILD_CMD *bcmd)
uint32_t GWB_File_GetId(const GWB_FILE *f)
void GWB_BuildCmd_SetCurrentProcess(GWB_BUILD_CMD *bcmd, GWEN_PROCESS *process)
static void _writeIdsFromFile2ListToXml(const GWB_FILE_LIST2 *fileList2, GWEN_XMLNODE *xmlNode, const char *groupName)
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
void GWB_BuildCmd_SetFolder(GWB_BUILD_CMD *bcmd, const char *s)
#define GWEN_FREE_OBJECT(varname)
void GWB_BuildCmd_DelFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
GWB_BUILD_CMD * GWB_BuildCmd_fromXml(GWEN_XMLNODE *xmlNode, GWB_FILE_LIST2 *fileList)
const char * GWB_BuildCmd_GetFolder(const GWB_BUILD_CMD *bcmd)
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
GWEN_LIST_FUNCTIONS(GWB_BUILD_CMD, GWB_BuildCmd)
void GWB_BuildCmd_List2_WriteXml(const GWB_BUILD_CMD_LIST2 *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
void GWB_BuildCmd_SetBuildMessage(GWB_BUILD_CMD *bcmd, const char *s)
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
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)
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
void GWB_BuildCmd_SetBuilderName(GWB_BUILD_CMD *bcmd, const char *s)
#define GWEN_NEW_OBJECT(typ, varname)
int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
GWENHYWFAR_API GWEN_PROCESS_STATE GWEN_Process_CheckState(GWEN_PROCESS *pr)
GWEN_PROCESS * GWB_BuildCmd_GetCurrentProcess(const GWB_BUILD_CMD *bcmd)
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
GWB_BUILD_SUBCMD_LIST * GWB_BuildSubCmd_List_dup(const GWB_BUILD_SUBCMD_LIST *cmdList)
int GWB_BuildCmd_DecBlockingFiles(GWB_BUILD_CMD *bcmd)
void GWBUILD_Debug_PrintKvpList(const char *sName, const GWB_KEYVALUEPAIR_LIST *kvpList, int indent)
GWB_FILE_LIST2 * GWB_BuildCmd_GetOutFileList2(const GWB_BUILD_CMD *bcmd)
void GWB_BuildCmd_AddInFile(GWB_BUILD_CMD *bcmd, GWB_FILE *file)
void GWB_BuildCmd_SetBlockingFiles(GWB_BUILD_CMD *bcmd, int i)
void GWBUILD_Debug_PrintFileList2(const char *sName, const GWB_FILE_LIST2 *fileList2, int indent)
GWB_BUILD_SUBCMD_LIST * GWB_BuildCmd_GetBuildCommandList(const GWB_BUILD_CMD *bcmd)
struct GWB_BUILD_SUBCMD GWB_BUILD_SUBCMD
GWENHYWFAR_API int GWEN_Process_Terminate(GWEN_PROCESS *pr)
void GWEN_XMLNode_SetIntProperty(GWEN_XMLNODE *n, const char *name, int value)
void GWB_BuildCmd_SetFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
#define DBG_ERROR(dbg_logger, format, args...)
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_fromXml(GWEN_XMLNODE *xmlNode)
void GWB_BuildSubCmd_toXml(const GWB_BUILD_SUBCMD *cmd, GWEN_XMLNODE *xmlNode)
struct GWEN_PROCESS GWEN_PROCESS
GWB_BUILD_SUBCMD * GWB_BuildCmd_GetCurrentCommand(const GWB_BUILD_CMD *bcmd)
void GWB_BuildCmd_AddPrepareCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
GWB_BUILD_CMD * GWB_BuildCmd_new(void)
void GWB_BuildCmd_Dump(const GWB_BUILD_CMD *bcmd, int indent)
void GWB_BuildCmd_List2_FreeAll(GWB_BUILD_CMD_LIST2 *cmdList)
void GWB_BuildCmd_AddFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
struct GWB_BUILD_CMD GWB_BUILD_CMD
void GWB_BuildCmd_AddOutFile(GWB_BUILD_CMD *bcmd, GWB_FILE *file)
int GWB_BuildCmd_IncBlockingFiles(GWB_BUILD_CMD *bcmd)
static void _readFileIdsFromXml(GWEN_XMLNODE *xmlNode, const char *groupName, GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList)
#define GWEN_LIST_INIT(t, element)
void GWB_BuildCmd_toXml(const GWB_BUILD_CMD *bcmd, GWEN_XMLNODE *xmlNode)
void GWB_BuildCmd_AddBuildCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
const char * GWB_BuildCmd_GetBuilderName(const GWB_BUILD_CMD *bcmd)
void GWB_BuildCmd_PrintDescriptionWithText(const GWB_BUILD_CMD *bcmd, int indent, const char *text)
void GWB_BuildCmd_free(GWB_BUILD_CMD *bcmd)
uint32_t GWB_BuildCmd_GetFlags(const GWB_BUILD_CMD *bcmd)
int GWB_BuildCmd_GetBlockingFiles(const GWB_BUILD_CMD *bcmd)
static void _readSubCommandListFromXml(GWB_BUILD_SUBCMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
#define GWEN_LIST_FINI(t, element)
struct GWEN__XMLNODE GWEN_XMLNODE
static void _writeSubCommandListToXml(const GWB_BUILD_SUBCMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
GWENHYWFAR_API void GWEN_Process_free(GWEN_PROCESS *pr)
void GWB_BuildCmd_List_WriteXml(const GWB_BUILD_CMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
void GWB_BuildCmd_SetCurrentCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)