]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/relocate.cc (framework_relocation): New function,
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 30 Dec 2005 08:58:34 +0000 (08:58 +0000)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 30 Dec 2005 08:58:34 +0000 (08:58 +0000)
factored from set_relocation ().
(prefix_relocation): Rename from set_relocation ().
(setup_paths): Use it.

ChangeLog
config.hh.in
config.make.in
configure.in
lily/relocate.cc

index a3859217cd4832f2a8909134a03ffa331d1e8668..4f05fcde60f70ccdc019539d1a5c5191577ae9c3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-29  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/relocate.cc (framework_relocation): New function,
+       factored from set_relocation ().
+       (prefix_relocation): Rename from set_relocation ().
+       (setup_paths): Use it.
+
 2005-12-30  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * scm/*.scm: use LEFT/RIGHT/UP/DOWN etc. iso. magical numbers.
index 2d972e65af431de177e62d40a5337e8b47503ec9..19ba1403d6fb6cad7cee6b6c240e2319fd9399e9 100644 (file)
@@ -10,6 +10,9 @@
 /* dynamic relocation? */
 #define ARGV0_RELOCATION 0
 
+/* framework prefix, usually ".." */
+#define FRAMEWORKDIR "@FRAMEWORKDIR@"
+
 /* default lilypond locale dir */
 #define LOCALEDIR "@LOCALEDIR@"
 
index 9ff945e856c0fa12eef594e4dd65b3e114f2251b..3d4295fbc763ca349e2f5d237c90ba7090266e3c 100644 (file)
@@ -118,7 +118,6 @@ PERL = @PERL@
 PLATFORM_WINDOWS = @PLATFORM_WINDOWS@
 PYTHON = @PYTHON@
 RANLIB = @RANLIB@
-RANLIB = @RANLIB@
 ROOTSEP = @ROOTSEP@
 SHELL = @SHELL@
 SPLITTING_MAKEINFO = @SPLITTING_MAKEINFO@
index 0c4041fdfaa774838bc8cfc9ce0a357e27dd0cb0..46b6feeb9079016d94eec25d8f8af971c2b275ab 100644 (file)
@@ -38,6 +38,19 @@ AC_ARG_ENABLE(relocation,
     [  --enable-relocation     compile with dynamic relocation.  Default: off],
     [reloc_b=$enableval])
 
+FRAMEWORKDIR=".."
+AC_ARG_WITH(framework-dir,
+    [  --with-framework-dir=DIR
+       relative the optional framework directory],[
+       if test "$withval" = "yes" -o "$withval" = "no"; then
+           AC_MSG_WARN(Usage: --with-framework-dir=../lib/FRAMEWORK/DIR)
+       else
+           FRAMEWORKDIR="${withval}"
+           LDFLAGS="$LDFLAGS -Wl,--rpath,'\$\${ORIGIN}/$FRAMEWORKDIR/lib'"
+       fi
+       ])
+AC_DEFINE_UNQUOTED(FRAMEWORKDIR, ["${FRAMEWORKDIR}"])
+
 LINK_GXX_STATICALLY=no
 AC_ARG_ENABLE(static-gxx,
     [  --enable-static-gxx     link libstdc++.a statically. Default: off],
index 0ca4762eadba58a710afc0b8bfe6efccda495e09..753557dc0b848ebc9d573e23cd0f136ae3bfbad7 100644 (file)
@@ -83,6 +83,9 @@ dir_name (String const file_name)
 {
   String s = file_name;
   s.substitute ('\\', '/');
+  int n = s.length ();
+  if (n && s[n - 1] == '/')
+    s[n - 1] = 0;
   s = s.left_string (s.index_last ('/'));
   return s;
 }
@@ -92,17 +95,16 @@ dir_name (String const file_name)
 #endif
 
 void
-set_relocation (String bindir, String prefix)
+prefix_relocation (String prefix)
 {
   if (be_verbose_global)
     warning (_f ("Relocation: compile prefix=%s, new prefix=%s",
                 prefix_directory,
                 prefix.to_str0 ()));
   
+  String bindir = prefix + "/bin";
   String datadir = prefix + "/share";
-  String libdir = prefix + "/lib";
   String localedir = datadir + "/locale";
-  String sysconfdir = prefix + "/etc";
   String lilypond_datadir = datadir + "/lilypond/" TOPLEVEL_VERSION;
 
   if (is_dir (lilypond_datadir))
@@ -113,8 +115,26 @@ set_relocation (String bindir, String prefix)
     bindtextdomain ("lilypond", localedir.to_str0 ());
 #endif
 
+  prepend_env_path ("PATH", bindir);
+}
+
+void
+framework_relocation (String prefix)
+{
+  if (be_verbose_global)
+    warning (_f ("Relocation: framework_prefix=%s", prefix));
+
+  String bindir = prefix + "/bin";
+  String datadir = prefix + "/share";
+  String libdir = prefix + "/lib";
+  String sysconfdir = prefix + "/etc";
+
+  /* need otherwise dynamic .so's aren't found.   */
+  prepend_env_path ("DYLD_LIBRARY_PATH", libdir);
   
   set_env_file ("FONTCONFIG_FILE", sysconfdir + "/fonts/fonts.conf");
+  set_env_dir ("FONTCONFIG_PATH", sysconfdir + "/fonts");
+
 #ifdef __MINGW32__
   char font_dir[PATH_MAX];
   ExpandEnvironmentStrings ("%windir%/fonts", font_dir, sizeof (font_dir));
@@ -130,17 +150,13 @@ set_relocation (String bindir, String prefix)
   prepend_env_path ("GS_LIB", datadir + "/gs/Resource");
   prepend_env_path ("GS_LIB", datadir + "/gs/lib");
 
-  /* need otherwise dynamic .so's aren't found.   */
-  prepend_env_path ("DYLD_LIBRARY_PATH", libdir);
-  
   prepend_env_path ("GUILE_LOAD_PATH", datadir
                    + to_string ("/guile/%d.%d",
                                 SCM_MAJOR_VERSION, SCM_MINOR_VERSION));
-  set_env_file ("PANGO_RC_FILE", sysconfdir + "/pango/pangorc");
 
+  set_env_file ("PANGO_RC_FILE", sysconfdir + "/pango/pangorc");
   set_env_dir ("PANGO_PREFIX", prefix);
-  set_env_dir ("FONTCONFIG_PATH", sysconfdir + "/fonts");
-  
+
   prepend_env_path ("PATH", bindir);
 }
 
@@ -163,10 +179,13 @@ setup_paths (char const *argv0_ptr)
       && getenv ("LILYPOND_RELOCATE_PREFIX"))
     {
       String prefix = getenv ("LILYPOND_RELOCATE_PREFIX");
-      /*
-       fixme: need different sep for mingw? 
-      */
-      set_relocation (prefix + "/" + "bin", prefix);
+#ifdef __MINGW32__
+      /* Normalize file name.  */
+      prefix = File_name (prefix).to_string ().get_copy_str0 ();
+#endif /* __MINGW32__ */
+      prefix_relocation (prefix);
+      String bindir = prefix + "/bin";
+      framework_relocation (bindir + "/" FRAMEWORKDIR);
     }
   else if (relocate_binary)
     {
@@ -192,11 +211,14 @@ setup_paths (char const *argv0_ptr)
          if (argv0_abs.is_empty ())
            programming_error ("can't find absolute argv0.");
        }
-      
+
       String bindir = dir_name (argv0_abs);
       String argv0_prefix = dir_name (bindir);
-      if (argv0_prefix != dir_name (dir_name (dir_name (prefix_directory))))
-       set_relocation (bindir, argv0_prefix);
+      String compile_prefix = dir_name (dir_name (dir_name (prefix_directory)));
+      if (argv0_prefix != compile_prefix)
+       prefix_relocation (argv0_prefix);
+      if (argv0_prefix != compile_prefix || String (FRAMEWORKDIR) != "..")
+       framework_relocation (bindir + "/" FRAMEWORKDIR);
     }
 
   /* FIXME: use LILYPOND_DATADIR.  */