Index: Makefile.in =================================================================== --- Makefile.in (revision 11008) +++ Makefile.in (working copy) @@ -23,9 +23,11 @@ VPATH = @top_srcdir@ SVN_RA_LIB_DEPS = @SVN_RA_LIB_DEPS@ +SVN_RA_LIB_INSTALL_DEPS = @SVN_RA_LIB_INSTALL_DEPS@ SVN_RA_LIB_LINK = @SVN_RA_LIB_LINK@ SVN_FS_LIB_DEPS = @SVN_FS_LIB_DEPS@ +SVN_FS_LIB_INSTALL_DEPS = @SVN_FS_LIB_INSTALL_DEPS@ SVN_FS_LIB_LINK = @SVN_FS_LIB_LINK@ DESIGN_DIR = doc/programmer/design @@ -319,7 +321,7 @@ # JavaHL target aliases javahl: javahl-java javahl-javah javahl-lib @JAVAHL_TESTS_TARGET@ install-javahl: install-javahl-java install-javahl-javah install-javahl-lib -check-javahl: +check-javahl: javahl javahl-tests $(JAVA) -Djava.library.path=$(libdir) -classpath subversion/bindings/java/javahl/classes:$(javahl_tests_CLASSPATH) org.tigris.subversion.javahl.tests.BasicTests # Different versions of SWIG generate the Java source files in @@ -335,7 +337,7 @@ # "make check CLEANUP=true" will clean up directories for successful tests. # "make check TESTS=subversion/tests/clients/cmdline/basic_tests.py" # will perform only basic tests (likewise for other tests). -check: $(TEST_DEPS) @BDB_TEST_DEPS@ +check: all $(TEST_DEPS) @BDB_TEST_DEPS@ @if test "$(PYTHON)" != "none"; then \ $(PYTHON) $(top_srcdir)/build/pycheck.py; \ flags="--verbose"; \ Index: build.conf =================================================================== --- build.conf (revision 11008) +++ build.conf (working copy) @@ -146,6 +146,7 @@ libs = libsvn_subr fs-libs apr # conditionally add more dependencies add-deps = $(SVN_FS_LIB_DEPS) +add-install-deps = $(SVN_FS_LIB_INSTALL_DEPS) msvc-static = yes [libsvn_fs_base] @@ -171,6 +172,7 @@ libs = libsvn_subr ra-libs aprutil apriconv apr # conditionally add more dependencies add-deps = $(SVN_RA_LIB_DEPS) +add-install-deps = $(SVN_RA_LIB_INSTALL_DEPS) install = lib msvc-static = yes @@ -282,7 +284,6 @@ sources = svn_client.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_client libsvn_subr apr nonlibs = swig_core -add-deps = mkdir-init description = Subversion client library bindings [swig_delta] @@ -291,7 +292,6 @@ sources = svn_delta.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_delta libsvn_subr nonlibs = swig_core -add-deps = mkdir-init description = Subversion delta library bindings [swig_fs] @@ -300,7 +300,6 @@ sources = svn_fs.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_fs libsvn_subr nonlibs = swig_core -add-deps = mkdir-init description = Subversion FS library bindings [swig_ra] @@ -309,7 +308,6 @@ sources = svn_ra.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_ra libsvn_subr nonlibs = swig_core -add-deps = mkdir-init description = Subversion RA library bindings [swig_repos] @@ -318,7 +316,6 @@ sources = svn_repos.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_repos libsvn_subr nonlibs = swig_core -add-deps = mkdir-init description = Subversion repository library bindings [swig_wc] @@ -327,7 +324,6 @@ sources = svn_wc.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_wc libsvn_subr nonlibs = swig_core -add-deps = mkdir-init description = Subversion WC library bindings [swig_core] @@ -336,7 +332,6 @@ sources = core.i libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl libsvn_delta libsvn_diff libsvn_subr apr -add-deps = mkdir-init description = Subversion core library bindings include-runtime = yes @@ -371,7 +366,8 @@ type = java path = subversion/bindings/java/org/tigris/subversion sources = *.java opt/*.java auth/*.java client/*.java wc/*.java -#install = For now, API code is installed by swig-java-java. +# For now, API code is installed by swig-java-java. +install = swig-java-java link-cmd = $(COMPILE_SWIG_JAVA_JAVAC) ### Decouple API targets from SWIG-specific targets #classes = subversion/bindings/java/build @@ -397,7 +393,8 @@ type = java path = subversion/bindings/swig/java/org/tigris/subversion sources = test/*.java -#install = test code isn't installed +# test code isn't installed +install = swig-java-tests link-cmd = $(COMPILE_SWIG_JAVA_JAVAC) classes = subversion/bindings/swig/java/build package-roots = org @@ -462,6 +459,7 @@ aprutil apriconv apr neon sources = *.cpp *.c install = javahl-lib +add-deps = $(javahl_javah_HEADERS) # need special build rule to include -I$(JDK)/include/jni.h compile-cmd = $(COMPILE_JAVAHL_CXX) link-cmd = $(LINK_JAVAHL_CXX) Index: configure.in =================================================================== --- configure.in (revision 11008) +++ configure.in (working copy) @@ -592,42 +592,51 @@ AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1, [Defined if libsvn_client should link against libsvn_ra_local]) svn_ra_lib_deps="\$(RA_LOCAL_DEPS)" + svn_ra_lib_install_deps="\$(RA_LOCAL_INSTALL_DEPS)" svn_ra_lib_link="\$(RA_LOCAL_LINK)" AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1, [Defined if libsvn_client should link against libsvn_ra_svn]) svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)" + svn_ra_lib_install_deps="$svn_ra_lib_install_deps \$(RA_SVN_INSTALL_DEPS)" svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)" if test "$svn_lib_neon" = "yes"; then AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_DAV, 1, [Defined if libsvn_client should link against libsvn_ra_dav]) svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_DAV_DEPS)" + svn_ra_lib_install_deps="$svn_ra_lib_install_deps \$(RA_DAV_INSTALL_DEPS)" svn_ra_lib_link="$svn_ra_lib_link \$(RA_DAV_LINK)" fi SVN_RA_LIB_DEPS=$svn_ra_lib_deps + SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps SVN_RA_LIB_LINK=$svn_ra_lib_link AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1, [Defined if libsvn_fs should link against libsvn_fs_fs]) svn_fs_lib_deps="\$(FS_FS_DEPS)" + svn_fs_lib_install_deps="\$(FS_FS_INSTALL_DEPS)" svn_fs_lib_link="\$(FS_FS_LINK)" if test "$svn_lib_berkeley_db" = "yes"; then AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1, [Defined if libsvn_fs should link against libsvn_fs_base]) svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)" + svn_fs_lib_install_deps="$svn_fs_lib_install_deps \$(FS_BASE_INSTALL_DEPS)" svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)" fi SVN_FS_LIB_DEPS=$svn_fs_lib_deps + SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps SVN_FS_LIB_LINK=$svn_fs_lib_link fi AC_SUBST(SVN_RA_LIB_DEPS) +AC_SUBST(SVN_RA_LIB_INSTALL_DEPS) AC_SUBST(SVN_RA_LIB_LINK) AC_SUBST(SVN_FS_LIB_DEPS) +AC_SUBST(SVN_FS_LIB_INSTALL_DEPS) AC_SUBST(SVN_FS_LIB_LINK) @@ -725,14 +734,9 @@ AC_OUTPUT - dnl Create all of the build directories +make mkdir-init -if test "$abs_srcdir" != "$abs_builddir"; then - make mkdir-init -fi - - dnl Print warning messages about what we did and didn't configure at the dnl end, where people will actually see them. case "$svn_lib_berkeley_db" in Index: build/generator/gen_base.py =================================================================== --- build/generator/gen_base.py (revision 11008) +++ build/generator/gen_base.py (working copy) @@ -294,12 +294,37 @@ self.desc = options.get('description') self.path = options.get('path', '') self.add_deps = options.get('add-deps', '') + self.add_install_deps = options.get('add-install-deps', '') self.msvc_name = options.get('msvc-name') # override project name def add_dependencies(self): # subclasses should override to provide behavior, as appropriate raise NotImplementedError + # Produce a 'make' rule suitable for inclusion in a Makefile + def get_make_rule(self, targ_varname, **deps): + objnames = string.join(build_path_strip(self.path, deps['objects'])) + return ( + '%s_DEPS = %s %s\n' + '%s_INSTALL_DEPS = %s %s\n' + '%s_OBJECTS = %s\n' + '%s: $(%s_DEPS)\n' + '\tcd %s && %s -o %s %s $(%s_OBJECTS) %s $(LIBS)\n\n' + % (targ_varname, self.add_deps, + string.join(deps['objects'] + deps['targets']), + + targ_varname, self.add_install_deps, string.join(deps['install']), + + targ_varname, objnames, + + self.filename, targ_varname, + + self.path, self.link_cmd, + build_path_basename(self.filename), + (isinstance(self, TargetLib) and not + self.undefined_lib_symbols) and '$(LT_NO_UNDEFINED)' or "", + targ_varname, string.join(unique(deps['libs'])))) + class Section: """Represents an individual section of build.conf @@ -490,6 +515,16 @@ # Add us to the list of target dirs, so we're created in mkdir-init. self.gen_obj.graph.add(DT_LIST, LT_TARGET_DIRS, self.path) + + # Produce a 'make' rule suitable for inclusion in a Makefile + def get_make_rule(self, targ_varname, **deps): + return ( + '%s_DEPS = %s %s\n' + '%s: $(%s_DEPS)\n\n' + % (targ_varname, self.add_deps, + string.join(deps['objects'] + deps['targets']), + + self.name, targ_varname)) class TargetSWIG(TargetLib): def __init__(self, name, options, gen_obj, lang): @@ -608,6 +643,26 @@ self.deps = [ ] del self.filename + # Produce a 'make' rule suitable for inclusion in a Makefile + def get_make_rule(self, targ_varname, **deps): + # Add 'headers' and 'objects' as prerequisites + return ( + '%s_HEADERS = %s\n' + '%s_OBJECTS = %s\n' + '%s_DEPS = $(%s_HEADERS) $(%s_OBJECTS) %s %s\n' + '%s: $(%s_DEPS)\n' + 'install-%s: %s $(%s_DEPS)\n' + % (targ_varname, string.join(deps['headers']), + + targ_varname, string.join(deps['objects']), + + targ_varname, targ_varname, targ_varname, self.add_deps, + string.join(deps['targets']), + + self.name, targ_varname, + + self.install, string.join(deps['install']), targ_varname)) + class TargetJavaHeaders(TargetJava): def __init__(self, name, options, gen_obj): TargetJava.__init__(self, name, options, gen_obj) @@ -660,8 +715,28 @@ self.gen_obj.graph.add(DT_LIST, LT_TARGET_DIRS, build_path_join(self.path, dirname)) - self.gen_obj.graph.add(DT_INSTALL, self.name, self) + self.gen_obj.graph.add(DT_INSTALL, self.install, self) + # Produce a 'make' rule suitable for inclusion in a Makefile + def get_make_rule(self, targ_varname, **deps): + # Build the headers from the header_classes with one 'javah' call + return ( + '%s' + '%s_CLASS_FILENAMES = %s\n' + '%s_CLASSES = %s\n' + '$(%s_HEADERS): $(%s_CLASS_FILENAMES) %s\n' + '\t%s -d %s -classpath %s:$(%s_CLASSPATH) $(%s_CLASSES)\n' + % (TargetJava.get_make_rule(self, targ_varname, **deps), + + targ_varname, string.join(deps['header_class_filenames']), + + targ_varname, string.join(deps['header_classes']), + + targ_varname, targ_varname, self.add_deps, + + self.link_cmd, self.output_dir, self.classes, + targ_varname, targ_varname)) + class TargetJavaClasses(TargetJava): def __init__(self, name, options, gen_obj): TargetJava.__init__(self, name, options, gen_obj) @@ -700,7 +775,7 @@ # object depends upon source self.gen_obj.graph.add(DT_OBJECT, ofile, sfile) - self.deps.append(sfile) + self.deps.append(ofile) # target (a linked item) depends upon object self.gen_obj.graph.add(DT_LINK, self.name, ofile) @@ -716,8 +791,33 @@ self.gen_obj.graph.add(DT_LIST, LT_TARGET_DIRS, build_path_join(self.path, dirname)) - self.gen_obj.graph.add(DT_INSTALL, self.name, self) + self.gen_obj.graph.add(DT_INSTALL, self.install, self) + + # Produce a 'make' rule suitable for inclusion in a Makefile + def get_make_rule(self, targ_varname, **deps): + # Build the objects from the object_srcs with one 'javac' call + rule = ( + '%s' + '%s_SRC = %s\n' + '$(%s_OBJECTS): $(%s_SRC) %s\n' + '\t%s -d %s -classpath %s:$(%s_CLASSPATH) $(%s_SRC)\n' + % (TargetJava.get_make_rule(self, targ_varname, **deps), + + targ_varname, string.join(deps['object_srcs']), + + targ_varname, targ_varname, self.add_deps, + + self.link_cmd, self.output_dir, self.classes, + targ_varname, targ_varname)) + # Once the bytecodes have been compiled up, we produce the + # JAR. + if self.jar: + rule += ('\n\t$(JAR) cf %s -C %s %s' + % (build_path_join(self.classes, self.jar), + self.classes, string.join(self.packages, ' '))) + + return rule _build_types = { 'exe' : TargetExe, Index: build/generator/gen_make.py =================================================================== --- build/generator/gen_make.py (revision 11008) +++ build/generator/gen_make.py (working copy) @@ -23,6 +23,27 @@ def default_output(self, conf_path): return os.path.splitext(os.path.basename(conf_path))[0] + '-outputs.mk' + # Get the installed location of each file as a dictionary + def get_install_map(self, install_deps): + install_map = { } + + # Build a map that details where to install each file + for area, inst_targets in install_deps: + area_var = string.replace(area, '-', '_') + + # Store the installed location of each file in 'install_map' + for file in gen_base._sorted_files(self.graph, area): + dirname, fname = build_path_splitfile(file) + if area == 'locale': + lang, objext = os.path.splitext(fname) + install_map[file] = build_path_join("$(DESTDIR)%s" % area_var, + lang, 'LC_MESSAGES', '$(PACKAGE_NAME)%s' % objext) + else: + install_map[file] = \ + build_path_join("$(DESTDIR)$(%sdir)" % area_var, fname) + + return install_map + def write(self, oname): install_deps = self.graph.get_deps(gen_base.DT_INSTALL) install_sources = self.graph.get_all_sources(gen_base.DT_INSTALL) @@ -30,13 +51,16 @@ # ensure consistency between runs install_deps.sort() install_sources.sort(lambda s1, s2: cmp(s1.name, s2.name)) - + + # Get the installed location of each file as a dictionary + install_map = self.get_install_map(install_deps) + self.ofile = open(oname, 'w') self.ofile.write('# DO NOT EDIT -- AUTOMATICALLY GENERATED\n\n') # write various symbols at the top of the file so they will be # defined before their use in dependency lines. - self.write_symbols(install_sources) + self.write_symbols(install_sources, install_map) # write rules to build each installable item for target_ob in install_sources: @@ -59,89 +83,58 @@ retreat = build_path_retreat(path) # get the source items (.o and .la) for the link unit - objects = [ ] - deps = [ ] - libs = [ ] + deps = { } + deps['objects'] = [ ] + deps['object_srcs'] = [ ] + deps['headers'] = [ ] + deps['header_classes'] = [ ] + deps['header_class_filenames'] = [ ] + deps['targets'] = [ ] + deps['libs'] = [ ] + deps['install'] = [ ] for source in sources: if isinstance(source, gen_base.TargetJava): - deps.append(source.name) + deps['targets'].append(source.name) elif isinstance(source, gen_base.TargetLinked): if source.external_lib: - libs.append(source.external_lib) + deps['libs'].append(source.external_lib) else: # append the output of the target to our stated dependencies - deps.append(source.filename) + deps['targets'].append(source.filename) # link against the library - libs.append(build_path_join(retreat, source.filename)) + deps['libs'].append(build_path_join(retreat, source.filename)) elif isinstance(source, gen_base.ObjectFile): # link in the object file - objects.append(source.filename) + deps['objects'].append(source.filename) + for dep in self.graph.get_sources(gen_base.DT_OBJECT, source, gen_base.SourceFile): + deps['object_srcs'].append( + build_path_join('$(abs_srcdir)', dep.filename)) elif isinstance(source, gen_base.HeaderFile): - # skip the header files. - pass + # link in the header file + deps['headers'].append(source.filename_win) + deps['header_classes'].append(source.classname) + for dep in self.graph.get_sources(gen_base.DT_OBJECT, source, gen_base.ObjectFile): + deps['header_class_filenames'].append(dep.filename) else: ### we don't know what this is, so we don't know what to do with it raise UnknownDependency targ_varname = string.replace(target, '-', '_') - objnames = string.join(build_path_strip(path, objects)) - if isinstance(target_ob, gen_base.TargetJava): - self.ofile.write( - '%s_DEPS = %s %s\n' - '%s: $(%s_DEPS)\n' - '\t%s -d %s -classpath %s:$(%s_CLASSPATH) ' - % (targ_varname, target_ob.add_deps, string.join(objects + deps), - - target_ob.name, targ_varname, - target_ob.link_cmd, target_ob.output_dir, target_ob.classes, - targ_varname)) - for dep in target_ob.deps: - if isinstance(dep, gen_base.SourceFile): - self.ofile.write('%s ' % build_path_join('$(abs_srcdir)', - dep.filename)) - elif isinstance(dep, gen_base.HeaderFile): - self.ofile.write('%s ' % dep.classname) - else: - print type(dep) - raise UnknownDependency - - # Once the bytecodes have been compiled up, we produce the - # JAR. - if target_ob.jar: - self.ofile.write('\n\t$(JAR) cf %s -C %s %s' % - (build_path_join(target_ob.classes, target_ob.jar), - target_ob.classes, - string.join(target_ob.packages, ' '))) - - self.ofile.write('\n\n') - elif isinstance(target_ob, gen_base.TargetI18N): - self.ofile.write( - '%s_DEPS = %s %s\n' - '%s: $(%s_DEPS)\n\n' - % (targ_varname, target_ob.add_deps, string.join(objects + deps), - target_ob.name, targ_varname)) - else: - self.ofile.write( - '%s_DEPS = %s %s\n' - '%s_OBJECTS = %s\n' - '%s: $(%s_DEPS)\n' - '\tcd %s && %s -o %s %s $(%s_OBJECTS) %s $(LIBS)\n\n' - % (targ_varname, target_ob.add_deps, string.join(objects + deps), - - targ_varname, objnames, - - target_ob.filename, targ_varname, - - path, target_ob.link_cmd, - build_path_basename(target_ob.filename), - (isinstance(target_ob, gen_base.TargetLib) and not - target_ob.undefined_lib_symbols) and '$(LT_NO_UNDEFINED)' or "", - targ_varname, string.join(gen_base.unique(libs))) - ) - + # Build installation dependencies + for file in deps['targets']: + if install_map.has_key(file): + deps['install'].append(install_map[file]) + + rule = target_ob.get_make_rule(targ_varname, **deps) + self.ofile.write(rule) + if hasattr(target_ob,'filename'): + self.ofile.write('%s: $(%s_DEPS) $(%s_INSTALL_DEPS)\n' + % (install_map[target_ob.filename], targ_varname, targ_varname)) + self.ofile.write('\n\n') + # for each install group, write a rule to build its outputs for itype, i_targets in install_deps: @@ -155,7 +148,7 @@ if hasattr(t, 'filename'): outputs.append(t.filename) self.ofile.write('%s: %s\n\n' % (itype, string.join(outputs))) - + # write a list of files to remove during "make clean" cfiles = [ ] for target in install_sources: @@ -188,7 +181,8 @@ for target_dep in self.graph.get_sources(gen_base.DT_LINK, target.name, gen_base.TargetLib): if target_dep.install and target_dep.install != area: - inst_area_deps['install-%s' % target_dep.install] = None + for file in gen_base._sorted_files(self.graph, target_dep.install): + inst_area_deps[install_map[file]] = None inst_area_deps = inst_area_deps.keys() if area == 'apache-mod': @@ -242,24 +236,35 @@ 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 + inst_area_deps), - area_var)) + + install_dir = build_path_join('$(DESTDIR)$(%sdir)' % 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)) + self.ofile.write( + '%s: %s\n' + '\t$(MKDIR) %s\n' + '\tcd %s ; $(INSTALL_%s) %s %s\n' + % (install_map[file], string.join(files + inst_area_deps), + install_dir, + dirname, upper_var, fname, install_map[file])) else: - self.ofile.write('\tcd %s ; $(INSTALL_%s) %s $(DESTDIR)%s\n' - % (dirname, upper_var, fname, - build_path_join('$(%sdir)' % area_var, fname))) + self.ofile.write( + '%s: %s %s\n' + '\t$(MKDIR) %s\n' + '\tcd %s ; $(INSTALL_%s) %s %s\n' + % (install_map[file], file, string.join(files + inst_area_deps), + + install_dir, + + dirname, upper_var, fname, install_map[file])) + + self.ofile.write('install-%s: %s\n' + % (area, string.join([ install_map[file] for file in files]))) # certain areas require hooks for extra install rules defined # in Makefile.in ### we should turn AREA into an object, then test it instead of this @@ -271,14 +276,23 @@ # write the install-include rule includedir = build_path_join('$(includedir)', 'subversion-%s' % self.version) - self.ofile.write('install-include: %s\n' - '\t$(MKDIR) $(DESTDIR)%s\n' - % (string.join(self.includes), includedir)) + + install_paths = [] 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)))) + install_path = build_path_join(includedir,build_path_basename(file)) + install_paths.append(install_path) + source_path = build_path_join('$(abs_srcdir)', file) + self.ofile.write( + '%s:\n' + '$(DESTDIR)%s: %s\n' + '\t$(MKDIR) $(DESTDIR)%s\n' + '\t$(INSTALL_INCLUDE) %s $(DESTDIR)%s\n' + % (source_path, + install_path, source_path, + includedir, + source_path, install_path)) + + self.ofile.write('install-include: %s\n' % string.join(install_paths)) # write shortcut targets for manually building specific items self.ofile.write('\n# handy shortcut targets\n') @@ -360,7 +374,7 @@ else: self.ofile.write('\n') - def write_symbols(self, install_sources): + def write_symbols(self, install_sources, install_map): wrappers = { } for lang in self.swig_lang: wrappers[lang] = [ ] @@ -382,8 +396,11 @@ 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, ' '))) + '%s_INSTALL_DEPS = %s\n' + '%s_LINK = %s\n\n' + % (name, string.join(deps, ' '), + name, string.join([ install_map[file] for file in deps]), + name, string.join(link, ' '))) elif isinstance(target, gen_base.TargetSWIG): wrappers[target.lang].append(target)