📄 gen_make.py
字号:
for file in files:
# cd to dirname before install to work around libtool 1.4.2 bug.
dirname, fname = build_path_splitfile(file)
base, ext = os.path.splitext(fname)
name = string.replace(base, 'mod_', '')
self.ofile.write('\tcd %s ; '
'$(MKDIR) "$(APACHE_LIBEXECDIR)" ; '
'$(INSTALL_MOD_SHARED) -n %s %s\n'
% (dirname, name, fname))
if ext == '.la':
la_tweaked[file + '-a'] = None
for apmod in inst_targets:
for source in self.graph.get_sources(gen_base.DT_LINK, apmod.name,
gen_base.Target):
bt = source.filename
if bt[-3:] == '.la':
la_tweaked[bt + '-a'] = None
la_tweaked = la_tweaked.keys()
la_tweaked.sort()
# Construct a .libs directory within the Apache area and populate it
# with the appropriate files. Also drop the .la file in the target dir.
self.ofile.write('\ninstall-mods-static: %s\n'
'\t$(MKDIR) $(DESTDIR)%s\n'
% (string.join(la_tweaked + self.apache_files),
build_path_join('$(APACHE_TARGET)', '.libs')))
for file in la_tweaked:
dirname, fname = build_path_splitfile(file)
base = os.path.splitext(fname)[0]
self.ofile.write('\t$(INSTALL_MOD_STATIC) %s $(DESTDIR)%s\n'
'\t$(INSTALL_MOD_STATIC) %s $(DESTDIR)%s\n'
% (build_path_join(dirname, '.libs', base + '.a'),
build_path_join('$(APACHE_TARGET)', '.libs',
base + '.a'),
file,
build_path_join('$(APACHE_TARGET)', base + '.la')))
# copy the other files to the target dir
for file in self.apache_files:
self.ofile.write('\t$(INSTALL_MOD_STATIC) %s $(DESTDIR)%s\n'
% (file, build_path_join('$(APACHE_TARGET)',
build_path_basename(file))))
self.ofile.write('\n')
elif area != 'test' and area != 'bdb-test':
area_var = string.replace(area, '-', '_')
upper_var = string.upper(area_var)
self.ofile.write('install-%s: %s\n'
'\t$(MKDIR) $(DESTDIR)$(%sdir)\n'
% (area, string.join(files + install_deps), area_var))
for file in files:
# cd to dirname before install to work around libtool 1.4.2 bug.
dirname, fname = build_path_splitfile(file)
if area == 'locale':
lang, objext = os.path.splitext(fname)
self.ofile.write('\tcd %s ; $(INSTALL_%s) %s '
'$(DESTDIR)%s/%s/LC_MESSAGES/$(PACKAGE_NAME)%s\n'
% (dirname, upper_var, fname,
build_path_join('$(%sdir)' % area_var), lang,
objext))
else:
self.ofile.write('\tcd %s ; $(INSTALL_%s) %s $(DESTDIR)%s\n'
% (dirname, upper_var, fname,
build_path_join('$(%sdir)' % area_var, fname)))
### we should turn AREA into an object, then test it instead of this
if area[:5] == 'swig-' and area[-4:] != '-lib' or \
area[:7] == 'javahl-':
self.ofile.write('\t$(INSTALL_EXTRA_%s)\n' % upper_var)
self.ofile.write('\n')
includedir = build_path_join('$(includedir)',
'subversion-%s' % self.cfg.version)
self.ofile.write('install-include: %s\n'
'\t$(MKDIR) $(DESTDIR)%s\n'
% (string.join(self.includes), includedir))
for file in self.includes:
self.ofile.write('\t$(INSTALL_INCLUDE) %s $(DESTDIR)%s\n'
% (build_path_join('$(abs_srcdir)', file),
build_path_join(includedir,
build_path_basename(file))))
self.ofile.write('\n# handy shortcut targets\n')
for target in install_sources:
if not isinstance(target, gen_base.TargetScript) and \
not isinstance(target, gen_base.TargetJava) and \
not isinstance(target, gen_base.TargetI18N):
self.ofile.write('%s: %s\n' % (target.name, target.filename))
self.ofile.write('\n')
# get target directories
target_dirs = self.graph.get_sources(gen_base.DT_LIST,
gen_base.LT_TARGET_DIRS)
# get all the test scripts' directories
script_dirs = map(build_path_dirname, self.scripts + self.bdb_scripts)
# remove duplicate directories between targets and tests
build_dirs = gen_base.unique(target_dirs + script_dirs + self.swig_dirs)
self.ofile.write('BUILD_DIRS = %s\n\n' % string.join(build_dirs))
# pull lists of test files from dependency graph
test_progs = self.graph.get_sources(gen_base.DT_LIST,
gen_base.LT_TEST_PROGS)
test_deps = self.graph.get_sources(gen_base.DT_LIST,
gen_base.LT_TEST_DEPS)
bdb_test_progs = self.graph.get_sources(gen_base.DT_LIST,
gen_base.LT_BDB_TEST_PROGS)
bdb_test_deps = self.graph.get_sources(gen_base.DT_LIST,
gen_base.LT_BDB_TEST_DEPS)
self.ofile.write('BDB_TEST_DEPS = %s\n\n' %
string.join(bdb_test_deps + self.bdb_scripts))
self.ofile.write('BDB_TEST_PROGRAMS = %s\n\n' %
string.join(bdb_test_progs + self.bdb_scripts))
self.ofile.write('TEST_DEPS = %s\n\n' %
string.join(test_deps + self.scripts))
self.ofile.write('TEST_PROGRAMS = %s\n\n' %
string.join(test_progs + self.scripts))
manpages = self.graph.get_sources(gen_base.DT_LIST, gen_base.LT_MANPAGES)
self.ofile.write('MANPAGES = %s\n\n' % string.join(manpages))
swig_c_deps = self.graph.get_deps(gen_base.DT_SWIG_C)
swig_c_deps.sort(lambda (t1, s1), (t2, s2): cmp(t1.filename, t2.filename))
for objname, sources in swig_c_deps:
deps = string.join(map(str, sources))
source = build_path_join('$(abs_srcdir)', str(sources[0]))
self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s) %s\n'
% (objname, deps, string.upper(objname.lang_abbrev),
source))
obj_deps = self.graph.get_deps(gen_base.DT_OBJECT)
obj_deps.sort(lambda (t1, s1), (t2, s2): cmp(t1.filename, t2.filename))
for objname, sources in obj_deps:
deps = string.join(map(str, sources))
self.ofile.write('%s: %s\n' % (objname, deps))
cmd = objname.compile_cmd
if cmd:
if not getattr(objname, 'source_generated', 0):
self.ofile.write('\t%s %s\n'
% (cmd, build_path_join('$(abs_srcdir)',
str(sources[0]))))
else:
self.ofile.write('\t%s %s\n' % (cmd, sources[0]))
def write_symbols(self, install_sources):
wrappers = { }
for lang in self.cfg.swig_lang:
wrappers[lang] = [ ]
for target in install_sources:
if isinstance(target, gen_base.TargetRaModule) or \
isinstance(target, gen_base.TargetFsModule):
# name of the module: strip 'libsvn_' and upper-case it
name = string.upper(target.name[7:])
# construct a list of the other .la libs to link against
retreat = build_path_retreat(target.path)
deps = [ target.filename ]
link = [ build_path_join(retreat, target.filename) ]
for source in self.graph.get_sources(gen_base.DT_LINK, target.name):
if not isinstance(source, gen_base.TargetLib) or source.external_lib:
continue
deps.append(source.filename)
link.append(build_path_join(retreat, source.filename))
self.ofile.write('%s_DEPS = %s\n'
'%s_LINK = %s\n\n' % (name, string.join(deps, ' '),
name, string.join(link, ' ')))
elif isinstance(target, gen_base.TargetSWIG):
wrappers[target.lang].append(target)
### not yet
return
for lang in self.cfg.swig_lang:
libs = wrappers[lang]
if libs:
libs.sort()
self.ofile.write('SWIG_%s_LIBS = %s\n\n'
% (string.upper(gen_base.lang_abbrev[lang]),
string.join(map(str, libs), ' ')))
class UnknownDependency(Exception):
"We don't know how to deal with the dependent to link it in."
pass
### End of file.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -