extern size_t strlen(const char * );
+extern char * strcpy(char * , const char * );
+
extern char * PassArg(char * output, const char * input);
extern void SetBuildingEcereCom(unsigned int b);
extern void SetOutputLineNumbers(unsigned int value);
-extern char * strcpy(char * , const char * );
-
extern char * __ecereNameSpace__ecere__sys__PathCat(char * string, char * addedPath);
extern char * __ecereNameSpace__ecere__sys__ChangeExtension(char * string, char * ext, char * output);
cppOptionsLen = newLen;
targetBits = !strcmp(arg + 1, "m32") ? 32 : 64;
}
+else if(!strcmp(arg + 1, "t32") || !strcmp(arg + 1, "t64"))
+{
+targetBits = !strcmp(arg + 1, "t32") ? 32 : 64;
+}
else if(arg[1] == 'D' || arg[1] == 'I')
{
char * buf;
else
valid = 0x0;
}
+else if(!strcmp(arg + 1, "fno-diagnostics-show-caret"))
+{
+char * buf;
+int size = cppOptionsLen + 1 + strlen(arg) * 2 + 1;
+
+cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (size));
+buf = cppOptions + cppOptionsLen;
+*buf++ = ' ';
+PassArg(buf, arg);
+cppOptionsLen = cppOptionsLen + 1 + strlen(buf);
+}
else if(!strcmp(arg + 1, "symbols"))
{
if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("byte"), __ecereInstance1->type = ProcessTypeString("unsigned char", 0x0), __ecereInstance1;
}));
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
-struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
-
-__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("_Bool"), __ecereInstance1->type = ProcessTypeString("bool", 0x0), __ecereInstance1;
-}));
if(buildingBootStrap)
{
__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
enum yytokentype
{
-IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366
+IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371
};
typedef union YYSTYPE
cppOptionsLen = newLen;
targetBits = !strcmp(arg + 1, "m32") ? 32 : 64;
}
+else if(!strcmp(arg + 1, "t32") || !strcmp(arg + 1, "t64"))
+{
+targetBits = !strcmp(arg + 1, "t32") ? 32 : 64;
+}
else if(arg[1] == 'D' || arg[1] == 'I')
{
char * buf;
else
valid = 0x0;
}
+else if(!strcmp(arg + 1, "fno-diagnostics-show-caret"))
+{
+char * buf;
+int size = cppOptionsLen + 1 + strlen(arg) * 2 + 1;
+
+cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (size));
+buf = cppOptions + cppOptionsLen;
+*buf++ = ' ';
+PassArg(buf, arg);
+cppOptionsLen = cppOptionsLen + 1 + strlen(buf);
+}
else if(!strcmp(arg + 1, "symbols"))
{
if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("size_t"), __ecereInstance1->type = ProcessTypeString("uintsize", 0x0), __ecereInstance1;
}));
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
-struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
-
-__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("_Bool"), __ecereInstance1->type = ProcessTypeString("bool", 0x0), __ecereInstance1;
-}));
{
char * outputFilePath = GetOutputFile();
struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
} __attribute__ ((gcc_struct));
+extern int __ecereNameSpace__ecere__sys__Tokenize(char * string, int maxTokens, char * tokens[], unsigned int esc);
+
extern int strcasecmp(const char * , const char * );
extern unsigned int LoadSymbols(char * fileName, int importType, unsigned int loadDllOnly);
{
targetBits = !strcmp(arg + 1, "m32") ? 32 : 64;
}
+else if(!strcmp(arg + 1, "t32") || !strcmp(arg + 1, "t64"))
+{
+targetBits = !strcmp(arg + 1, "t32") ? 32 : 64;
+}
else if(!strcmp(arg + 1, "o"))
{
if(!output && c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
{
char * file = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c];
+struct __ecereNameSpace__ecere__com__Instance * f = (((void *)0));
+char line[16384];
+int count = 0;
+char * tokens[512];
if(file[0] == '-')
{
if(!strcmp(file, "-c"))
c++;
}
+else if(file[0] == '@')
+f = __ecereNameSpace__ecere__sys__FileOpen(&file[1], 1);
else
{
+count = 1;
+tokens[0] = file;
+}
+while(count || f)
+{
+int c;
+
+if(f)
+{
+while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof tokens / sizeof tokens[0], tokens, 0x2);
+if(!count)
+(__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
+}
+for(c = 0; c < count; c++)
+{
char ext[17];
+file = tokens[c];
__ecereNameSpace__ecere__sys__GetExtension(file, ext);
if(!strcmp(ext, "imp"))
LoadImports(file);
}
+count = 0;
+}
}
for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
{
for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
{
char * file = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c];
+struct __ecereNameSpace__ecere__com__Instance * f = (((void *)0));
+char line[16384];
+int count = 0;
+char * tokens[512];
if(file[0] == '-')
{
if(!strcmp(file, "-c"))
c++;
}
+else if(file[0] == '@')
+f = __ecereNameSpace__ecere__sys__FileOpen(&file[1], 1);
else
{
+count = 1;
+tokens[0] = file;
+}
+while(count || f)
+{
+int c;
+
+if(f)
+{
+while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof tokens / sizeof tokens[0], tokens, 0x2);
+if(!count)
+(__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
+}
+for(c = 0; c < count; c++)
+{
char ext[17];
char moduleName[797];
+file = tokens[c];
__ecereNameSpace__ecere__sys__GetExtension(file, ext);
__ecereNameSpace__ecere__sys__GetLastDirectory(file, moduleName);
__ecereNameSpace__ecere__sys__StripExtension(moduleName);
}
}
}
+count = 0;
+}
}
ComputeModuleClasses(privateModule);
if(!isDynamicLibrary)
for(c = 1; c<argc; c++)
{
char * file = argv[c];
+ File f = null;
+ char line[16384];
+ int count = 0;
+ char * tokens[512];
if(file[0] == '-')
{
if(!strcmp(file, "-c"))
c++;
}
+ else if(file[0] == '@')
+ f = FileOpen(&file[1], read);
else
{
- char ext[MAX_EXTENSION];
- GetExtension(file,ext);
- if(!strcmp(ext, "imp"))
- LoadImports(file);
+ count = 1;
+ tokens[0] = file;
+ }
+ while(count || f)
+ {
+ int c;
+ if(f)
+ {
+ while(!count && f.GetLine(line, sizeof(line)))
+ count = Tokenize(line, sizeof(tokens)/sizeof(tokens[0]), tokens, forArgsPassing);
+ if(!count)
+ delete f;
+ }
+ for(c = 0; c < count; c++)
+ {
+ char ext[MAX_EXTENSION];
+ file = tokens[c];
+ GetExtension(file, ext);
+ if(!strcmp(ext, "imp"))
+ LoadImports(file);
+ }
+ count = 0;
}
}
for(c = 1; c<argc; c++)
{
char * file = argv[c];
+ File f = null;
+ char line[16384];
+ int count = 0;
+ char * tokens[512];
if(file[0] == '-')
{
// Don't even know what it does here?
if(!strcmp(file, "-c"))
c++;
}
+ else if(file[0] == '@')
+ f = FileOpen(&file[1], read);
else
{
- char ext[MAX_EXTENSION];
- char moduleName[MAX_LOCATION];
-
- GetExtension(file,ext);
-
- GetLastDirectory(file, moduleName);
- StripExtension(moduleName);
- strcat(moduleName, ".ec");
+ count = 1;
+ tokens[0] = file;
+ }
- if(fstrcmp(moduleName, symbolModule) && (!strcmp(ext, "sym") || !strcmp(ext, "ec")))
+ while(count || f)
+ {
+ int c;
+ if(f)
+ {
+ while(!count && f.GetLine(line, sizeof(line)))
+ count = Tokenize(line, sizeof(tokens)/sizeof(tokens[0]), tokens, forArgsPassing);
+ if(!count)
+ delete f;
+ }
+ for(c = 0; c < count; c++)
{
- ImportedModule importedModule;
- ModuleInfo module { };
- char fileName[MAX_FILENAME];
- ::modules.Add(module);
+ char ext[MAX_EXTENSION];
+ char moduleName[MAX_LOCATION];
- GetLastDirectory(file, fileName);
+ file = tokens[c];
- module.name = CopyString(fileName);
+ GetExtension(file, ext);
- StripExtension(module.name);
+ GetLastDirectory(file, moduleName);
+ StripExtension(moduleName);
+ strcat(moduleName, ".ec");
- for(importedModule = ::_defines.first; importedModule; importedModule = importedModule.next)
+ if(fstrcmp(moduleName, symbolModule) && (!strcmp(ext, "sym") || !strcmp(ext, "ec")))
{
- if(importedModule.type == moduleDefinition && !strcmpi(importedModule.name, module.name) && !(importedModule.importType == remoteImport))
- break;
- }
+ ImportedModule importedModule;
+ ModuleInfo module { };
+ char fileName[MAX_FILENAME];
+ ::modules.Add(module);
- if(importedModule)
- module.globalInstance = importedModule.globalInstance;
- else
- {
- importedModule = ImportedModule
+ GetLastDirectory(file, fileName);
+
+ module.name = CopyString(fileName);
+
+ StripExtension(module.name);
+
+ for(importedModule = ::_defines.first; importedModule; importedModule = importedModule.next)
{
- name = CopyString(module.name),
- type = moduleDefinition,
- importType = normalImport
- };
- ::_defines.AddName(importedModule);
+ if(importedModule.type == moduleDefinition && !strcmpi(importedModule.name, module.name) && !(importedModule.importType == remoteImport))
+ break;
+ }
- module.globalInstance = LoadSymbols(file, normalImport, false);
- CheckDataRedefinitions();
- }
+ if(importedModule)
+ module.globalInstance = importedModule.globalInstance;
+ else
+ {
+ importedModule = ImportedModule
+ {
+ name = CopyString(module.name),
+ type = moduleDefinition,
+ importType = normalImport
+ };
+ ::_defines.AddName(importedModule);
+
+ module.globalInstance = LoadSymbols(file, normalImport, false);
+ CheckDataRedefinitions();
+ }
- // I18n code
- {
- File f;
- ChangeExtension(file, "bowl", fileName);
- f = FileOpen(fileName, read);
- if(f)
+ // I18n code
{
- static char line[65536];
- List<String> comments { };
- String msgid = null, msgstr = null, msgctxt = null;
- while(!f.Eof())
+ File f;
+ ChangeExtension(file, "bowl", fileName);
+ f = FileOpen(fileName, read);
+ if(f)
{
- if(f.GetLine(line, sizeof(line)))
+ static char line[65536];
+ List<String> comments { };
+ String msgid = null, msgstr = null, msgctxt = null;
+ while(!f.Eof())
{
- int len;
- TrimLSpaces(line, line);
- if(line[0] == '#')
- {
- comments.Add(CopyString(line));
- }
- else if(strstr(line, "msgid \"") == line)
- {
- delete msgid;
- msgid = CopyString(line + 7);
- len = strlen(msgid);
- if(len) msgid[len-1] = 0;
- }
- else if(strstr(line, "msgctxt \"") == line)
+ if(f.GetLine(line, sizeof(line)))
{
- delete msgctxt;
- msgctxt = CopyString(line + 9);
- len = strlen(msgctxt);
- if(len) msgctxt[len-1] = 0;
- }
- else if(strstr(line, "msgstr \"") == line)
- {
- delete msgstr;
- msgstr = CopyString(line + 8);
- len = strlen(msgstr);
- if(len) msgstr[len-1] = 0;
- }
-
- if(msgid && msgstr)
- {
- ContextStringPair pair { msgid, msgctxt };
- i18n = true;
- if(!it.Index(pair, false))
+ int len;
+ TrimLSpaces(line, line);
+ if(line[0] == '#')
{
- msgid = null; msgctxt = null;
- intlStrings[pair] = comments;
- comments = { };
+ comments.Add(CopyString(line));
}
- else
+ else if(strstr(line, "msgid \"") == line)
{
- for(s : comments)
- it.data.Add(s);
- comments.RemoveAll();
+ delete msgid;
+ msgid = CopyString(line + 7);
+ len = strlen(msgid);
+ if(len) msgid[len-1] = 0;
+ }
+ else if(strstr(line, "msgctxt \"") == line)
+ {
+ delete msgctxt;
+ msgctxt = CopyString(line + 9);
+ len = strlen(msgctxt);
+ if(len) msgctxt[len-1] = 0;
+ }
+ else if(strstr(line, "msgstr \"") == line)
+ {
+ delete msgstr;
+ msgstr = CopyString(line + 8);
+ len = strlen(msgstr);
+ if(len) msgstr[len-1] = 0;
}
- delete msgid;
- delete msgctxt;
- delete msgstr;
+ if(msgid && msgstr)
+ {
+ ContextStringPair pair { msgid, msgctxt };
+ i18n = true;
+ if(!it.Index(pair, false))
+ {
+ msgid = null; msgctxt = null;
+ intlStrings[pair] = comments;
+ comments = { };
+ }
+ else
+ {
+ for(s : comments)
+ it.data.Add(s);
+ comments.RemoveAll();
+ }
+
+ delete msgid;
+ delete msgctxt;
+ delete msgstr;
+ }
}
}
+ comments.Free();
+ delete comments;
+ delete f;
}
- comments.Free();
- delete comments;
- delete f;
}
}
}
+ count = 0;
}
}
$(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
$(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
- $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(OBJ)$(MODULE).main.ec
+ @$(call rmq,$(OBJ)symbols.lst)
+ @$(call touch,$(OBJ)symbols.lst)
+ @$(call echo,$(SYMBOLS1)) >> $(OBJ)symbols.lst
+ @$(call echo,$(SYMBOLS2)) >> $(OBJ)symbols.lst
+ @$(call echo,$(SYMBOLS3)) >> $(OBJ)symbols.lst
+ @$(call echo,$(IMPORTS1)) >> $(OBJ)symbols.lst
+ @$(call echo,$(IMPORTS2)) >> $(OBJ)symbols.lst
+ @$(call echo,$(IMPORTS3)) >> $(OBJ)symbols.lst
+ $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(OBJ)$(MODULE).main.ec
$(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
$(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
endif
$(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
+ @$(call rmq,$(OBJ)objects.lst)
+ @$(call touch,$(OBJ)objects.lst)
+ @$(call echo,$(_OBJECTS)) >> $(OBJ)objects.lst
+ @$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)objects.lst
+ @$(call echo,$(ECOBJECTS1)) >> $(OBJ)objects.lst
+ @$(call echo,$(ECOBJECTS2)) >> $(OBJ)objects.lst
+ @$(call echo,$(ECOBJECTS3)) >> $(OBJ)objects.lst
ifndef STATIC_LIBRARY_TARGET
- $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(SONAME) $(INSTALLNAME)
+ $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(SONAME) $(INSTALLNAME)
ifndef NOSTRIP
$(STRIP) $(STRIPOPT) $(TARGET)
endif
$(EAR) aw$(EARFLAGS) $(TARGET) locale/pt_BR/LC_MESSAGES/ecere.mo "locale/pt_BR/LC_MESSAGES"
$(EAR) aw$(EARFLAGS) $(TARGET) locale/ru_RU/LC_MESSAGES/ecere.mo "locale/ru_RU/LC_MESSAGES"
else
- $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
+ $(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)
endif
$(call mkdirq,../$(SODESTDIR))
$(call cpq,$(TARGET),../$(SODESTDIR))
$(call rmq,$(TARGET))
cleantarget: objdir
+ $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
+ $(call rmq,$(OBJ)symbols.lst)
+ $(call rmq,$(OBJ)objects.lst)
$(call rmq,$(TARGET))
ifdef SHARED_LIBRARY_TARGET
ifdef LINUX_TARGET
clean: cleantarget
$(call rmq,$(_OBJECTS))
- $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
$(call rmq,$(ECOBJECTS1))
$(call rmq,$(ECOBJECTS2))
$(call rmq,$(ECOBJECTS3))
return numOfBreaks;
}
-void OutputLinkObjectActions(File f, char * name, int parts)
+void OutputFileListActions(File f, char * name, int parts, char * fileName)
{
if(parts > 1)
{
int c;
for(c=0; c<parts; c++)
- f.Printf("\t@$(call echo,$(%s%d)) >> $(OBJ)linkobjects.lst\n", name, c+1);
+ f.Printf("\t@$(call echo,$(%s%d)) >> %s\n", name, c+1, fileName);
} else if(parts) {
- f.Printf("\t@$(call echo,$(%s)) >> $(OBJ)linkobjects.lst\n", name);
+ f.Printf("\t@$(call echo,$(%s)) >> %s\n", name, fileName);
}
}
{
if(justPrint)
ide.outputView.buildBox.Logf("%s\n", line);
- if(!error && !found && strstr(line, "echo ") == line)
+ if(!error && !found && strstr(line, "echo ") == line && strstr(line, "ECERE_SDK_SRC"))
{
strcpy(command, line+5);
error = true;
{
// Main Module (Linking) for ECERE C modules
f.Puts("$(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)\n");
+ f.Printf("\t@$(call rmq,$(OBJ)symbols.lst)\n");
+ f.Printf("\t@$(call touch,$(OBJ)symbols.lst)\n");
+ OutputFileListActions(f, "SYMBOLS", eCsourcesParts, "$(OBJ)symbols.lst");
+ OutputFileListActions(f, "IMPORTS", eCsourcesParts, "$(OBJ)symbols.lst");
// use of objDirExpNoSpaces used instead of $(OBJ) to prevent problematic joining of arguments in ecs
- f.Printf("\t$(ECS)%s $(ARCH_FLAGS) $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols %s -o $(call quote_path,$@)\n",
+ f.Printf("\t$(ECS)%s $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols %s -o $(call quote_path,$@)\n",
GetConsole(config) ? " -console" : "", objDirExpNoSpaces);
f.Puts("\n");
// Main Module (Linking) for ECERE C modules
f.Printf("$(TARGET): $(SOURCES)%s $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir%s\n",
rcSourcesParts ? " $(RCSOURCES)" : "", sameOrRelObjTargetDirs ? "" : " targetdir");
- f.Printf("\t@$(call rmq,$(OBJ)linkobjects.lst)\n");
- f.Printf("\t@$(call touch,$(OBJ)linkobjects.lst)\n");
- OutputLinkObjectActions(f, "_OBJECTS", objectsParts);
+ f.Printf("\t@$(call rmq,$(OBJ)objects.lst)\n");
+ f.Printf("\t@$(call touch,$(OBJ)objects.lst)\n");
+ OutputFileListActions(f, "_OBJECTS", objectsParts, "$(OBJ)objects.lst");
if(rcSourcesParts)
{
f.Puts("ifdef WINDOWS_TARGET\n");
- OutputLinkObjectActions(f, "RCOBJECTS", rcSourcesParts);
+ OutputFileListActions(f, "RCOBJECTS", rcSourcesParts, "$(OBJ)objects.lst");
f.Puts("endif\n");
}
if(numCObjects)
{
- f.Printf("\t@$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)linkobjects.lst\n");
- OutputLinkObjectActions(f, "ECOBJECTS", eCsourcesParts);
+ f.Printf("\t@$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)objects.lst\n");
+ OutputFileListActions(f, "ECOBJECTS", eCsourcesParts, "$(OBJ)objects.lst");
}
f.Puts("ifndef STATIC_LIBRARY_TARGET\n");
- f.Printf("\t$(%s) $(OFLAGS) @$(OBJ)linkobjects.lst $(LIBS) %s-o $(TARGET) $(INSTALLNAME)\n", containsCXX ? "CXX" : "CC", containsCXX ? "-lstdc++ " : "");
+ f.Printf("\t$(%s) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) %s-o $(TARGET) $(INSTALLNAME)\n", containsCXX ? "CXX" : "CC", containsCXX ? "-lstdc++ " : "");
if(!GetDebug(config))
{
f.Puts("ifndef NOSTRIP\n");
if(resNode.files && resNode.files.count && !noResources)
resNode.GenMakefileAddResources(f, resNode.path, config);
f.Puts("else\n");
- f.Puts("\t$(AR) rcs $(TARGET) @$(OBJ)linkobjects.lst $(LIBS)\n");
+ f.Puts("\t$(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)\n");
f.Puts("endif\n");
f.Puts("ifdef SHARED_LIBRARY_TARGET\n");
f.Puts("ifdef LINUX_TARGET\n");
GenMakefilePrintMainObjectRule(f, config);
f.Printf("cleantarget: objdir%s\n", sameOrRelObjTargetDirs ? "" : " targetdir");
- f.Puts("\t$(call rmq,$(TARGET))\n");
if(numCObjects)
+ {
f.Printf("\t$(call rmq,%s)\n", "$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S)");
+ f.Printf("\t$(call rmq,$(OBJ)symbols.lst)\n");
+ }
+ f.Printf("\t$(call rmq,$(OBJ)objects.lst)\n");
+ f.Puts("\t$(call rmq,$(TARGET))\n");
f.Puts("ifdef SHARED_LIBRARY_TARGET\n");
f.Puts("ifdef LINUX_TARGET\n");
f.Puts("ifdef LINUX_HOST\n");
f.Puts("\n");
f.Puts("clean: cleantarget\n");
- f.Printf("\t$(call rmq,$(OBJ)linkobjects.lst)\n");
OutputCleanActions(f, "OBJECTS", objectsParts);
if(rcSourcesParts)
{