diff --git a/PCAppProj/GNUmakefile b/PCAppProj/GNUmakefile index 114a831..245b6f3 100644 --- a/PCAppProj/GNUmakefile +++ b/PCAppProj/GNUmakefile @@ -48,7 +48,6 @@ PC.proj # PCAppProj_HEADERS= \ -PCAppMakefileFactory.h \ PCAppProj.h \ PCAppProject.h @@ -58,7 +57,6 @@ PCAppProject.h # PCAppProj_OBJC_FILES= \ -PCAppMakefileFactory.m \ PCAppProj.m \ PCAppProject.m diff --git a/PCAppProj/PCAppMakefileFactory.h b/PCAppProj/PCAppMakefileFactory.h deleted file mode 100644 index ddb500e..0000000 --- a/PCAppProj/PCAppMakefileFactory.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - GNUstep ProjectCenter - http://www.gnustep.org - - Copyright (C) 2001 Free Software Foundation - - Author: Philippe C.D. Robert - - This file is part of GNUstep. - - This application is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This application is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - - $Id$ -*/ - -#import -#import - -@interface PCAppMakefileFactory : NSObject -{ -} - -+ (PCAppMakefileFactory *)sharedFactory; - -- (NSData *)makefileForProject:(PCProject *)aProject; - -@end diff --git a/PCAppProj/PCAppMakefileFactory.m b/PCAppProj/PCAppMakefileFactory.m deleted file mode 100644 index f79735a..0000000 --- a/PCAppProj/PCAppMakefileFactory.m +++ /dev/null @@ -1,161 +0,0 @@ -/* - GNUstep ProjectCenter - http://www.gnustep.org - - Copyright (C) 2001 Free Software Foundation - - Author: Philippe C.D. Robert - - This file is part of GNUstep. - - This application is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This application is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - - $Id$ -*/ - -#import "PCAppMakefileFactory.h" - -@implementation PCAppMakefileFactory - -static PCAppMakefileFactory *_factory = nil; - -+ (PCAppMakefileFactory *)sharedFactory -{ - if (!_factory) { - _factory = [[[self class] alloc] init]; - } - return _factory; -} - -- (NSData *)makefileForProject:(PCProject *)aProject; -{ - NSMutableString *string = [NSMutableString string]; - NSString *prName = [aProject projectName]; - NSDictionary *prDict = [aProject projectDict]; - NSString *tmp; - NSEnumerator *enumerator; - int i; - - // Header information - [string appendString:@"#\n"]; - [string appendString:@"# GNUmakefile - Generated by ProjectCenter\n"]; - [string appendString:@"# Written by Philippe C.D. Robert \n"]; - [string appendString:@"#\n"]; - [string appendString:@"# NOTE: Do NOT change this file -- ProjectCenter maintains it!\n"]; - [string appendString:@"#\n"]; - [string appendString:@"# Put all of your customisations in GNUmakefile.preamble and\n"]; - [string appendString:@"# GNUmakefile.postamble\n"]; - [string appendString:@"#\n\n"]; - - // The 'real' thing - [string appendString:@"include $(GNUSTEP_MAKEFILES)/common.make\n"]; - - [string appendString:@"#\n\n"]; - [string appendString:@"# Subprojects\n"]; - [string appendString:@"#\n\n"]; - - if ([[aProject subprojects] count]) { - enumerator = [[prDict objectForKey:PCSubprojects] objectEnumerator]; - while (tmp = [enumerator nextObject]) { - [string appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; - } - } - - [string appendString:@"#\n"]; - [string appendString:@"# Main application\n"]; - [string appendString:@"#\n\n"]; - - [string appendString:[NSString stringWithFormat:@"PACKAGE_NAME=%@\n",prName]]; - [string appendString:[NSString stringWithFormat:@"APP_NAME=%@\n",prName]]; - [string appendString:[NSString stringWithFormat:@"GNUSTEP_INSTALLATION_DIR=%@\n",[prDict objectForKey:PCInstallDir]]]; - //[string appendString:[NSString stringWithFormat:@"%@_MAIN_MODEL_FILE=%@\n",prName,[prDict objectForKey:PCMainGModelFile]]]; - [string appendString:[NSString stringWithFormat:@"%@_APPLICATION_ICON=%@\n",prName, [prDict objectForKey:PCAppIcon]]]; - - [string appendString:@"#\n\n"]; - [string appendString:@"# Additional libraries\n"]; - [string appendString:@"#\n\n"]; - - [string appendString:[NSString stringWithFormat:@"ADDITIONAL_GUI_LIBS += "]]; - //[string appendString:[NSString stringWithFormat:@"%@_LDFLAGS = ",prName]]; - - if ([[prDict objectForKey:PCLibraries] count]) { - enumerator = [[prDict objectForKey:PCLibraries] objectEnumerator]; - while (tmp = [enumerator nextObject]) { - if (![tmp isEqualToString:@"gnustep-base"] && - ![tmp isEqualToString:@"gnustep-gui"]) { - [string appendString:[NSString stringWithFormat:@"-l%@ ",tmp]]; - } - } - } - - [string appendString:@"\n\n#\n\n"]; - [string appendString:@"# Resource files\n"]; - [string appendString:@"#\n\n"]; - - [string appendString:[NSString stringWithFormat:@"%@_RESOURCE_FILES= ",prName]]; - - for (i=0;i<[[aProject resourceFileKeys] count];i++) { - NSString *k = [[aProject resourceFileKeys] objectAtIndex:i]; - - enumerator = [[prDict objectForKey:k] objectEnumerator]; - while (tmp = [enumerator nextObject]) { - [string appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; - } - } - - [string appendString:@"\n\n#\n\n"]; - [string appendString:@"# Header files\n"]; - [string appendString:@"#\n\n"]; - - [string appendString:[NSString stringWithFormat:@"%@_HEADERS= ",prName]]; - - enumerator = [[prDict objectForKey:PCHeaders] objectEnumerator]; - while (tmp = [enumerator nextObject]) { - [string appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; - } - - [string appendString:@"\n\n#\n\n"]; - [string appendString:@"# Class files\n"]; - [string appendString:@"#\n\n"]; - - [string appendString:[NSString stringWithFormat:@"%@_OBJC_FILES= ",prName]]; - - enumerator = [[prDict objectForKey:PCClasses] objectEnumerator]; - while (tmp = [enumerator nextObject]) { - [string appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; - } - - [string appendString:@"\n\n#\n\n"]; - [string appendString:@"# C files\n"]; - [string appendString:@"#\n\n"]; - - [string appendString:[NSString stringWithFormat:@"%@_C_FILES= ",prName]]; - - enumerator = [[prDict objectForKey:PCOtherSources] objectEnumerator]; - while (tmp = [enumerator nextObject]) { - [string appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; - } - - [string appendString:@"\n\n"]; - - [string appendString:@"-include GNUmakefile.preamble\n"]; - [string appendString:@"-include GNUmakefile.local\n"]; - [string appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; - [string appendString:@"include $(GNUSTEP_MAKEFILES)/application.make\n"]; - [string appendString:@"-include GNUmakefile.postamble\n"]; - - return [string dataUsingEncoding:[NSString defaultCStringEncoding]]; -} - -@end diff --git a/PCAppProj/PCAppProj.pcproj b/PCAppProj/PCAppProj.pcproj index 20a937b..c2e3182 100644 --- a/PCAppProj/PCAppProj.pcproj +++ b/PCAppProj/PCAppProj.pcproj @@ -4,7 +4,6 @@ APPLICATIONICON = ""; BUILDTOOL = "/usr/bin/make"; CLASS_FILES = ( - PCAppMakefileFactory.m, PCAppProj.m, PCAppProject.m ); @@ -16,7 +15,6 @@ FRAMEWORKS = ( ); HEADER_FILES = ( - PCAppMakefileFactory.h, PCAppProj.h, PCAppProject.h ); diff --git a/PCAppProj/PCAppProject.m b/PCAppProj/PCAppProject.m index 7527fa0..1a901b1 100644 --- a/PCAppProj/PCAppProject.m +++ b/PCAppProj/PCAppProject.m @@ -166,15 +166,45 @@ - (BOOL)writeMakefile { - NSFileManager *fm = [NSFileManager defaultManager]; NSData *mfd; - NSString *mf = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; + NSString *mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; + int i; + PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; + NSDictionary *dict = [self projectDict]; // Save the project file [super writeMakefile]; - if (mfd = [[PCAppMakefileFactory sharedFactory] makefileForProject:self]) { - if ([mfd writeToFile:mf atomically:YES]) { + // Create the new file + [mf createMakefileForProject:[self projectName]]; + + [mf appendString:@"include $(GNUSTEP_MAKEFILES)/common.make\n"]; + + [mf appendSubprojects:[dict objectForKey:PCSubprojects]]; + + [mf appendApplication]; + [mf appendInstallDir:[dict objectForKey:PCInstallDir]]; + [mf appendAppIcon:[dict objectForKey:PCAppIcon]]; + [mf appendGuiLibraries:[dict objectForKey:PCLibraries]]; + + [mf appendResources]; + for (i=0;i<[[self resourceFileKeys] count];i++) + { + NSString *k = [[self resourceFileKeys] objectAtIndex:i]; + [mf appendResourceItems:[dict objectForKey:k]]; + } + + [mf appendHeaders:[dict objectForKey:PCHeaders]]; + [mf appendClasses:[dict objectForKey:PCClasses]]; + [mf appendCFiles:[dict objectForKey:PCOtherSources]]; + + [mf appendTailForApp]; + + // Write the new file to disc! + if (mfd = [mf encodedMakefile]) + { + if ([mfd writeToFile:mfl atomically:YES]) + { return YES; } }