Author: lluis Date: 2008-01-21 06:57:10 -0500 (Mon, 21 Jan 2008) New Revision: 93380
Added: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4 Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template Log: * MonoDevelop.Autotools.addin.xml, MonoDevelop.Autotools.mdp, SimpleProjectMakefileHandler.cs, Handler.cs, SolutionDeployer.cs, templates/expansions.m4, templates/configure.template, templates/configure.ac.template, Makefile.am: Properly implement support for libdir, bindir and datadir in both autotools and simple makefiles. Fixes bug #354128. Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog 2008-01-21 11:57:10 UTC (rev 93380) @@ -1,3 +1,12 @@ +2008-01-21 Lluis Sanchez Gual <[EMAIL PROTECTED]> + + * MonoDevelop.Autotools.addin.xml, MonoDevelop.Autotools.mdp, + SimpleProjectMakefileHandler.cs, Handler.cs, SolutionDeployer.cs, + templates/expansions.m4, templates/configure.template, + templates/configure.ac.template, Makefile.am: Properly implement support + for libdir, bindir and datadir in both autotools and simple makefiles. + Fixes bug #354128. + 2008-01-20 Ankit Jain <[EMAIL PROTECTED]> * Change Console.WriteLines to LoggingService calls. Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs 2008-01-21 11:57:10 UTC (rev 93380) @@ -153,19 +153,19 @@ string package_var = generateAutotools ? "@PACKAGE@" : "$(PACKAGE)";*/ //FIXME: Temp till we find a proper solution string prefix_var = "@prefix@"; - string package_var = "@PACKAGE@"; + string package_var = "@PACKAGE@"; switch (folderId) { case TargetDirectory.ProgramFilesRoot: - return prefix_var + "/lib"; + return "@expanded_libdir@"; case TargetDirectory.ProgramFiles: - return prefix_var + "/lib/" + package_var; + return "@expanded_libdir@/" + package_var; case TargetDirectory.Binaries: - return prefix_var + "/bin"; + return "@expanded_bindir@"; case TargetDirectory.CommonApplicationDataRoot: - return prefix_var + "/share"; + return "@expanded_datadir@"; case TargetDirectory.CommonApplicationData: - return prefix_var + "/share/" + package_var; + return "@expanded_datadir@/" + package_var; case TargetDirectory.IncludeRoot: return prefix_var + "/include"; case TargetDirectory.Include: Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am 2008-01-21 11:57:10 UTC (rev 93380) @@ -3,6 +3,7 @@ ASSEMBLY = $(ADDIN_BUILD)/MonoDevelop.Autotools.dll REFS = \ + $(GLIB_SHARP_LIBS) \ $(GNOME_SHARP_LIBS) \ $(GTK_SHARP_LIBS) \ $(MONO_ADDINS_LIBS) \ @@ -63,6 +64,7 @@ templates/configure.ac.template \ templates/configure.template \ templates/exe.wrapper.in.template \ + templates/expansions.m4 \ templates/make-dist.targets \ templates/Makefile.am.project.template \ templates/Makefile.include \ Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml 2008-01-21 11:57:10 UTC (rev 93380) @@ -9,11 +9,12 @@ <Runtime> <Import assembly="MonoDevelop.Autotools.dll" /> - <Import file="autogen.sh.template"/> - <Import file="Makefile.am.project.template"/> - <Import file="Makefile.include"/> - <Import file="configure.ac.template"/> - <Import file="exe.wrapper.in.template"/> + <Import file="autogen.sh.template"/> + <Import file="Makefile.am.project.template"/> + <Import file="Makefile.include"/> + <Import file="configure.ac.template"/> + <Import file="exe.wrapper.in.template"/> + <Import file="expansions.m4"/> </Runtime> <Dependencies> Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp 2008-01-21 11:57:10 UTC (rev 93380) @@ -64,6 +64,7 @@ <File name="GenerateMakefilesDialog.cs" subtype="Code" buildaction="Compile" /> <File name="gtk-gui/MonoDevelop.Autotools.GenerateMakefilesDialog.cs" subtype="Code" buildaction="Compile" /> <File name="templates/make-dist.targets" subtype="Code" buildaction="FileCopy" /> + <File name="templates/expansions.m4" subtype="Code" buildaction="FileCopy" /> </Contents> <References> <ProjectReference type="Project" localcopy="False" refto="MonoDevelop.Core.Gui" /> @@ -75,15 +76,16 @@ <ProjectReference type="Gac" localcopy="False" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" /> <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <ProjectReference type="Project" localcopy="False" refto="MonoDevelop.DesignerSupport" /> + <ProjectReference type="Gac" localcopy="True" refto="Mono.Addins, Version=0.3.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" /> + <ProjectReference type="Project" localcopy="False" refto="MonoDevelop.Deployment" /> <ProjectReference type="Gac" localcopy="True" refto="gnome-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> - <ProjectReference type="Gac" localcopy="True" refto="Mono.Addins, Version=0.3.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" /> - <ProjectReference type="Project" localcopy="False" refto="MonoDevelop.Deployment" /> + <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> </References> - <GtkDesignInfo isWidgetLibrary="True"> + <GtkDesignInfo isWidgetLibrary="True" gtkVersion="2.8.3"> <ExportedWidgets> <Widget>MonoDevelop.Autotools.MakefileIntegrationFeatureWidget</Widget> </ExportedWidgets> Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs 2008-01-21 11:57:10 UTC (rev 93380) @@ -195,8 +195,7 @@ string programFilesDir = ctx.DeployContext.GetDirectory (TargetDirectory.ProgramFiles); //FIXME:temp - programFilesDir = programFilesDir.Replace ("@prefix@", "$(prefix)"); - programFilesDir = programFilesDir.Replace ("@PACKAGE@", "$(PACKAGE)"); + programFilesDir = TranslateDir (programFilesDir); installDirs.Add (programFilesDir); installTarget.Append ("\tmake pre-install-local-hook prefix=$(prefix)\n"); installTarget.AppendFormat ("\tmkdir -p $(DESTDIR){0}\n", programFilesDir); @@ -618,8 +617,7 @@ if (!generateAutotools) { string installDir = Path.GetDirectoryName (ctx.DeployContext.GetResolvedPath (dfile.TargetDirectoryID, dfile.RelativeTargetPath)); //FIXME: temp - installDir = installDir.Replace ("@prefix@", "$(prefix)"); - installDir = installDir.Replace ("@PACKAGE@", "$(PACKAGE)"); + installDir = TranslateDir (installDir); if (!installDirs.Contains (installDir)) { installTarget.AppendFormat ("\tmkdir -p $(DESTDIR){0}\n", installDir); @@ -632,6 +630,16 @@ uninstallTarget.AppendFormat ("\ttest -z '$({1})' || rm -f $(DESTDIR){0}/$(notdir $({1}))\n", installDir, targetDeployVar); } } + + string TranslateDir (string dir) + { + dir = dir.Replace ("@prefix@", "$(prefix)"); + dir = dir.Replace ("@PACKAGE@", "$(PACKAGE)"); + dir = dir.Replace ("@expanded_libdir@", "$(libdir)"); + dir = dir.Replace ("@expanded_bindir@", "$(bindir)"); + dir = dir.Replace ("@expanded_datadir@", "$(datadir)"); + return dir; + } void EmitCustomCommandTargets (CustomCommandCollection commands, Project project, StringBuilder builder, string configName, CustomCommandType[] types, IProgressMonitor monitor) { Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs 2008-01-21 11:57:10 UTC (rev 93380) @@ -100,6 +100,7 @@ context.AddAutoconfFile (path); CreateAutoGenDotSH (context, monitor); CreateConfigureDotAC (combine, defaultConf, monitor, context); + CreateMacros (); } else { CreateConfigureScript (combine, defaultConf, context, monitor); @@ -220,6 +221,8 @@ StringBuilder sb = new StringBuilder (); if (!generateAutotools) sb.Append ("rules.make configure Makefile.include"); + else + sb.Append ("expansions.m4"); foreach ( string file in context.GetGlobalReferencedFiles() ) sb.Append (' ').Append (file); @@ -411,6 +414,13 @@ if (PlatformID.Unix == Environment.OSVersion.Platform) Syscall.chmod ( filename , FilePermissions.S_IXOTH | FilePermissions.S_IROTH | FilePermissions.S_IRWXU | FilePermissions.S_IRWXG ); } + + void CreateMacros () + { + string file = Mono.Addins.AddinManager.CurrentAddin.GetFilePath ("expansions.m4"); + string dest = Path.Combine (solution_dir, "expansions.m4"); + File.Copy (file, dest, true); + } // Given a Set<SystemPackage> returns a string of the form // pkg1;pkg1-version pkg2;pkg2-version @@ -445,6 +455,9 @@ string resolved = context.DeployContext.GetDirectory (dir); if (resolved == null) throw new InvalidOperationException ("Unknown directory: " + e.Key); + + // Don't use expanded dir vars in the makefile + resolved = resolved.Replace ("@expanded_", "@"); if (i != -1) resolved += ((string)e.Key).Substring (i); @@ -464,7 +477,12 @@ else templateEngine.Variables["WRAPPER_SED"] = "\n$2: $2.in $(top_srcdir)/config.make\n" + - "\tsed -e \"s,@prefix@,$(prefix),\" -e \"s,@PACKAGE@,$(PACKAGE),\" < $2.in > $2"; + "\tsed -e \"s,@prefix@,$(prefix),\"" + + " -e \"s,@PACKAGE@,$(PACKAGE),\"" + + " -e \"s,@expanded_libdir@,$(libdir),\"" + + " -e \"s,@expanded_bindir@,$(bindir),\"" + + " -e \"s,@expanded_datadir@,$(datadir),\"" + + " < $2.in > $2"; string fileName = Path.Combine (solution_dir, "Makefile.include"); Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template 2008-01-21 11:57:10 UTC (rev 93380) @@ -10,6 +10,10 @@ AC_MSG_ERROR([You need to install pkg-config]) fi +SHAMROCK_EXPAND_LIBDIR +SHAMROCK_EXPAND_BINDIR +SHAMROCK_EXPAND_DATADIR + AC_PROG_INSTALL %%COMPILER_CHECKS%% Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template 2008-01-21 11:57:10 UTC (rev 93380) @@ -9,8 +9,15 @@ usage () { - echo "Usage : configure [--prefix=PREFIX] [--config=CONFIG]" + echo "Usage : configure [OPTION]... [--config=CONFIG]" echo + echo "Options:" + echo " --prefix=PREFIX install architecture-independent files in PREFIX" + echo " [/usr/local]" + echo " --bindir=DIR user executables [PREFIX/bin]" + echo " --datadir=DIR read-only architecture-independent data [PREFIX/share]" + echo " --libdir=DIR object code libraries [PREFIX/lib]" + echo echo "Configurations available :" for c in $configurations; do if [ "$c" = "$config" ]; then @@ -68,6 +75,27 @@ shift prefix=$1 ;; + --libdir=*) + libdir=`echo $1 | sed 's/--libdir=//'` + ;; + --libdir) + shift + libdir=$1 + ;; + --bindir=*) + bindir=`echo $1 | sed 's/--bindir=//'` + ;; + --bindir) + shift + bindir=$1 + ;; + --datadir=*) + datadir=`echo $1 | sed 's/--datadir=//'` + ;; + --datadir) + shift + datadir=$1 + ;; --config=*) conf=`echo $1 | sed 's/--config=//'` validate_config "$conf" @@ -95,7 +123,20 @@ check_required_packages [ $? -eq 1 ] && exit 1 +if [ -z "$libdir" ]; then + libdir=$prefix/lib +fi +if [ -z "$bindir" ]; then + bindir=$prefix/bin +fi +if [ -z "$datadir" ]; then + datadir=$prefix/share +fi + echo "prefix=$prefix" > config.make +echo "libdir=$libdir" >> config.make +echo "bindir=$bindir" >> config.make +echo "datadir=$datadir" >> config.make echo "RUNTIME=mono" >> config.make echo "ASSEMBLY_VERSION=$VERSION.0.0" >> config.make echo "VERSION=$VERSION" >> config.make @@ -105,6 +146,15 @@ echo echo "$PACKAGE has been configured with " echo " prefix = $prefix" +if [ "$libdir" != "$prefix/lib" ]; then + echo " libdir = $libdir" +fi +if [ "$bindir" != "$prefix/bin" ]; then + echo " bindir = $bindir" +fi +if [ "$datadir" != "$prefix/share" ]; then + echo " datadir = $datadir" +fi echo " config = $config" echo Added: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4 =================================================================== --- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4 2008-01-21 11:40:21 UTC (rev 93379) +++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4 2008-01-21 11:57:10 UTC (rev 93380) @@ -0,0 +1,50 @@ +AC_DEFUN([SHAMROCK_EXPAND_LIBDIR], +[ + expanded_libdir=`( + case $prefix in + NONE) prefix=$ac_default_prefix ;; + *) ;; + esac + case $exec_prefix in + NONE) exec_prefix=$prefix ;; + *) ;; + esac + eval echo $libdir + )` + AC_SUBST(expanded_libdir) +]) + +AC_DEFUN([SHAMROCK_EXPAND_BINDIR], +[ + expanded_bindir=`( + case $prefix in + NONE) prefix=$ac_default_prefix ;; + *) ;; + esac + case $exec_prefix in + NONE) exec_prefix=$prefix ;; + *) ;; + esac + eval echo $bindir + )` + AC_SUBST(expanded_bindir) +]) + +AC_DEFUN([SHAMROCK_EXPAND_DATADIR], +[ + case $prefix in + NONE) prefix=$ac_default_prefix ;; + *) ;; + esac + + case $exec_prefix in + NONE) exec_prefix=$prefix ;; + *) ;; + esac + + expanded_datadir=`(eval echo $datadir)` + expanded_datadir=`(eval echo $expanded_datadir)` + + AC_SUBST(expanded_datadir) +]) + _______________________________________________ Mono-patches maillist - Mono-patches@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-patches