15#include "gwenbuild/types/builder_p.h"
17#include <gwenhywfar/debug.h>
18#include <gwenhywfar/memory.h>
19#include <gwenhywfar/directory.h>
34 builder->gwenbuild=gwenbuild;
35 builder->context=context;
37 builder->typeName=strdup(typeName);
48 free(builder->targetLinkSpec);
49 free(builder->typeName);
50 GWB_File_List2_free(builder->inputFileList2);
51 GWB_File_List2_free(builder->outputFileList2);
59 return builder->gwenbuild;
73 return builder->typeName;
80 return builder->targetLinkSpec;
87 free(builder->targetLinkSpec);
88 builder->targetLinkSpec=s?strdup(s):
NULL;
95 return builder->context;
102 return builder->inputFileList2;
109 if (builder->inputFileList2==
NULL)
110 builder->inputFileList2=GWB_File_List2_new();
111 GWB_File_List2_PushBack(builder->inputFileList2, f);
118 return builder->outputFileList2;
125 if (builder->outputFileList2==
NULL)
126 builder->outputFileList2=GWB_File_List2_new();
127 GWB_File_List2_PushBack(builder->outputFileList2, f);
134 return builder->numBlockingInputFiles;
141 builder->numBlockingInputFiles++;
142 return builder->numBlockingInputFiles;
149 if (builder->numBlockingInputFiles>0)
150 builder->numBlockingInputFiles--;
151 return builder->numBlockingInputFiles;
158 if (builder->isAcceptableInputFn)
159 return builder->isAcceptableInputFn(builder, file);
168 if (builder->addBuildCmdFn)
169 return builder->addBuildCmdFn(builder, bctx);
178 if (builder->addSourceFileFn)
179 return builder->addSourceFileFn(builder, f);
189 oldFn=builder->isAcceptableInputFn;
190 builder->isAcceptableInputFn=fn;
200 oldFn=builder->addBuildCmdFn;
201 builder->addBuildCmdFn=fn;
211 oldFn=builder->addSourceFileFn;
212 builder->addSourceFileFn=fn;
220 GWB_FILE_LIST2_ITERATOR *it;
223 it=GWB_File_List2_First(inFileList);
227 file=GWB_File_List2Iterator_Data(it);
233 file=GWB_File_List2Iterator_Next(it);
235 GWB_File_List2Iterator_free(it);
244 const char *buildDir;
245 const char *initialSourceDir;
278 const char *buildDir;
279 const char *initialSourceDir;
315 const char *initialSourceDir;
349 for(i=0; i<indent; i++)
350 fprintf(stderr,
" ");
351 fprintf(stderr,
"Builder:\n");
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
struct GWB_BUILD_CONTEXT GWB_BUILD_CONTEXT
void GWB_Builder_AddAbsFileNameToBuffer(const GWB_CONTEXT *context, const GWB_FILE *file, GWEN_BUFFER *argBuffer)
int GWB_Builder_AddBuildCmd(GWB_BUILDER *builder, GWB_BUILD_CONTEXT *bctx)
GWB_FILE_LIST2 * GWB_Builder_GetOutputFileList2(const GWB_BUILDER *builder)
GWB_BUILDER_ADDSOURCEFILE_FN GWB_Builder_SetAddSourceFileFn(GWB_BUILDER *builder, GWB_BUILDER_ADDSOURCEFILE_FN fn)
GWENBUILD * GWB_Builder_GetGwenbuild(const GWB_BUILDER *builder)
GWB_CONTEXT * GWB_Builder_GetContext(const GWB_BUILDER *builder)
GWB_BUILDER * GWB_Builder_new(GWENBUILD *gwenbuild, GWB_CONTEXT *context, const char *typeName)
int GWB_Builder_IsAcceptableInput(GWB_BUILDER *builder, const GWB_FILE *file)
void GWB_Builder_AddInputFile(GWB_BUILDER *builder, GWB_FILE *f)
GWEN_BUILDER_ISACCEPTABLEINPUT_FN GWB_Builder_SetIsAcceptableInputFn(GWB_BUILDER *builder, GWEN_BUILDER_ISACCEPTABLEINPUT_FN fn)
int GWB_Builder_IncNumBlockingInputFiles(GWB_BUILDER *builder)
void GWB_Builder_AddSourceFile(GWB_BUILDER *builder, GWB_FILE *f)
const char * GWB_Builder_GetTypeName(const GWB_BUILDER *builder)
void GWB_Builder_free(GWB_BUILDER *builder)
void GWB_Builder_Dump(const GWB_BUILDER *builder, int indent, int fullDump)
int GWB_Builder_DecNumBlockingInputFiles(GWB_BUILDER *builder)
uint32_t GWB_Builder_GetId(const GWB_BUILDER *builder)
int GWB_Builder_GetNumBlockingInputFiles(const GWB_BUILDER *builder)
GWEN_BUILDER_ADDBUILDCMD_FN GWB_Builder_SetAddBuildCmdFn(GWB_BUILDER *builder, GWEN_BUILDER_ADDBUILDCMD_FN fn)
void GWB_Builder_SetTargetLinkSpec(GWB_BUILDER *builder, const char *s)
GWB_FILE_LIST2 * GWB_Builder_GetInputFileList2(const GWB_BUILDER *builder)
void GWB_Builder_AddFileNamesToBuffer(const GWB_CONTEXT *context, const GWB_FILE_LIST2 *inFileList, GWEN_BUFFER *argBuffer)
void GWB_Builder_AddFileNameToBuffer(const GWB_CONTEXT *context, const GWB_FILE *file, GWEN_BUFFER *argBuffer)
void GWB_Builder_AddOutputFile(GWB_BUILDER *builder, GWB_FILE *f)
const char * GWB_Builder_GetTargetLinkSpec(const GWB_BUILDER *builder)
void GWB_Builder_AddRelativeFolderToBuffer(const GWB_CONTEXT *context, const char *folder, int useBuildDir, GWEN_BUFFER *argBuffer)
struct GWB_BUILDER GWB_BUILDER
void(* GWB_BUILDER_ADDSOURCEFILE_FN)(GWB_BUILDER *builder, GWB_FILE *f)
int(* GWEN_BUILDER_ADDBUILDCMD_FN)(GWB_BUILDER *builder, GWB_BUILD_CONTEXT *bctx)
int(* GWEN_BUILDER_ISACCEPTABLEINPUT_FN)(GWB_BUILDER *builder, const GWB_FILE *file)
void GWB_Context_Dump(const GWB_CONTEXT *ctx, int indent)
const char * GWB_Context_GetInitialSourceDir(const GWB_CONTEXT *ctx)
const char * GWB_Context_GetCurrentBuildDir(const GWB_CONTEXT *ctx)
struct GWB_CONTEXT GWB_CONTEXT
#define DBG_ERROR(dbg_logger, format, args...)
GWENHYWFAR_API int GWEN_Directory_GetAbsoluteFolderPath(const char *folder, GWEN_BUFFER *tbuf)
#define GWEN_ERROR_NOT_IMPLEMENTED
const char * GWB_File_GetFolder(const GWB_FILE *f)
const char * GWB_File_GetName(const GWB_FILE *f)
uint32_t GWB_File_GetFlags(const GWB_FILE *f)
#define GWB_FILE_FLAGS_GENERATED
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
void GWBUILD_Debug_PrintFileList2(const char *sName, const GWB_FILE_LIST2 *fileList2, int indent)
void GWBUILD_Debug_PrintValue(const char *sName, const char *sValue, int indent)
struct GWENBUILD GWENBUILD
#define GWEN_DIR_SEPARATOR_S
#define GWEN_INHERIT_FUNCTIONS(t)
#define GWEN_INHERIT_INIT(t, element)
#define GWEN_INHERIT_FINI(t, element)
#define GWEN_LIST2_FUNCTIONS(t, pr)
#define GWEN_NEW_OBJECT(typ, varname)
int GWEN_Path_GetPathBetween(const char *path1, const char *path2, GWEN_BUFFER *diffBuf)