def editDepend(infile, outfile, extraDependencies=''): file = open(infile, 'r') lines = file.readlines() file.close() # Extract target from first line groups = lines[0].split(":") target = groups[0] lines[0] = groups[1] # Replace target by absolute path # (The gcc -M option yields only the target base name) dirname = os.path.dirname(infile) if (dirname != '.' and dirname != ''): dirname = os.path.abspath(dirname) else: dirname = os.getcwd() target = os.path.normpath(os.path.join(dirname, target)) # Replace dependencies by absolute paths text = TextWrapper('\\\n', 8) for i in range(len(lines)): line = lines[i] if line[-1] == '\n': line = line[:-1] if line[-1] == '\\': line = line[:-1] lines[i] = line if i == 0: text.append(target + ': ') deps = line.split() for dep in deps: path = os.path.abspath(dep) text.append(path) # Process extraDependencies (if any) if extraDependencies: deps = extraDependencies.split() for dep in deps: path = os.path.abspath(dep) text.append(path) file = open(outfile, 'w') file.write(str(text)) file.close()
def editDependLocal(pfile, dfile, blddir, srcroot, extraDependencies): file = open(pfile, 'r') lines = file.readlines() file.close() # Extract target from first line groups = lines[0].split(":") target = groups[0] lines[0] = groups[1] # Replace target by file in build directory base = os.path.basename(target) target = os.path.normpath(os.path.join(blddir, base)) # Replace local dependencies by absolute paths text = TextWrapper('\\\n', 8) for i in range(len(lines)): line = lines[i] if line[-1] == '\n': line = line[:-1] if line[-1] == '\\': line = line[:-1] lines[i] = line if i == 0: text.append(target + ': ') deps = line.split() for dep in deps: pair = [srcroot, dep] if (os.path.commonprefix(pair) == srcroot): path = os.path.abspath(dep) text.append(path) # Process extraDependencies (if any) if extraDependencies: deps = extraDependencies.split() for dep in deps: path = os.path.abspath(dep) text.append(path) file = open(dfile, 'w') file.write(str(text)) file.close()
def editDepend(pfile, dfile, blddir, extraDependencies): file = open(pfile, "r") lines = file.readlines() file.close() # Extract target from first line groups = lines[0].split(":") target = groups[0] lines[0] = groups[1] # Replace target by file in build directory base = os.path.basename(target) target = os.path.normpath(os.path.join(blddir, base)) # Replace dependencies by absolute paths text = TextWrapper("\\\n", 8) for i in range(len(lines)): line = lines[i] if line[-1] == "\n": line = line[:-1] if line[-1] == "\\": line = line[:-1] lines[i] = line if i == 0: text.append(target + ": ") deps = line.split() for dep in deps: path = os.path.abspath(dep) text.append(path) # Process extraDependencies (if any) if extraDependencies: deps = extraDependencies.split() for dep in deps: path = os.path.abspath(dep) text.append(path) file = open(dfile, "w") file.write(str(text)) file.close()
def make(self): # Find all the source and header files in this directory self.find() # Recursively descend into subdirectories for dir in self.dirs: dir.make() # --------------------------------------------------------------------- # Open and write sources.mk file file = open_w(self.makePath('sources.mk')) # Include subdirectory sources.mk files if len(self.dirs) > 0: for dir in self.dirs: basename = os.path.basename(dir.path) if basename != 'tests': varpath = basename + os.sep + 'sources.mk' file.write(self.makeInclude(varpath)) file.write('\n') # Construct prefix for aggregate names if self.dirname == 'SRC': prefix = '' else: prefix = self.dirname + '_' wrapper = TextWrapper('\\\n', 4) # Write aggregate definition for SRCS wrapper.clear() wrapper.append(prefix + 'SRCS=') for dir in self.dirs: basename = os.path.basename(dir.path) if basename != 'tests': wrapper.append('$(' + dir.dirname + '_SRCS) ') for base in self.srcs: name = '$(SRC_DIR)' + os.sep + self.makePathFromSrc(base) name += '.' + self.srcSuffix() + ' ' wrapper.append(name) file.write(str(wrapper)) file.write('\n\n') # Write aggregate definition for OBJS file.write(prefix + 'OBJS=$(') file.write(prefix + 'SRCS:.' + self.srcSuffix() + '=.o)') file.write('\n\n') #file.write(prefix + 'DEPS=$(') #file.write(prefix + 'SRCS:.' + self.srcSuffix() + '=.d)') #file.write('\n\n') # Add library target, if any if self.hasLib: file.write(self.libName + ': ' + self.libObjs + '\n') file.write('\t$(AR) rcs ' + self.libName + ' ' + self.libObjs + '\n') file.write('\n') file.close() # -------------------------------------------------------------------- # Write makefile file = open(self.makePath('makefile'), 'w') file.write('SRC_DIR_REL =' + self.pathToSrc + '\n\n') file.write(self.globalInclude) if self.isTest: file.write('include $(SRC_DIR_REL)/test/sources.mk\n') file.write('include sources.mk\n') file.write('\n') if self.dirname == 'SRC': objs = 'OBJS' else: objs = self.dirname + '_OBJS' targets = '$(' + objs + ')' deps = '$(' + objs + ':.o=.d)' if self.isTest: for base in self.srcs: targets += ' ' + base file.write('all: ' + targets) if self.hasLib: file.write(' ' + self.libName) file.write('\n\n') file.write('clean:\n\trm -f ' + targets + ' ' + deps) if self.hasLib: file.write(' ' + self.libName) file.write('\n\n') file.write('clean-deps:\n\trm -f ' + deps) file.write('\n\n') if self.isTest: for base in self.srcs: file.write(base + ': ' + base + '.o ' + self.linkObjs + '\n') file.write('\t$(CXX) $(LDFLAGS) $(INCLUDES) $(DEFINES)') file.write(' -o ' + base + ' ' + base + '.o \\\n') file.write('\t ' + self.linkObjs + '\n\n') #file.write('-include $(' + objs + ':.o=.d)\n\n') file.write('-include ' + deps + '\n\n') file.close()