diff options
author | Andrea Canciani <ranma42@gmail.com> | 2014-05-27 14:45:14 +0400 |
---|---|---|
committer | Andrea Canciani <ranma42@gmail.com> | 2014-07-01 16:25:21 +0400 |
commit | 39108b009f9fa0a2c9dfe99d0c4a1cb936f3f1e8 (patch) | |
tree | c0a794640a0df695e1dd8988926a335ac8c22003 | |
parent | 3408b8e5f194774e529e223173d68a1a8f880ea5 (diff) |
Improve libgdiplus path handling
Since libgdiplus is not installed together with Mono, it should not be
assumed to be in the same prefix.
The new policy for the --with-libgdiplus configure option is the
following:
- --with-libgdiplus=/absolute/path/to/libgdiplus.{so,dylib}
both during build/check and after installation Mono will try to use
the specified libgdiplus library; the rationale is that when an
absolute path is given, it can be assumed to be the full path to
the library that is already installed (possibly in a non-default
path).
- default, --with-libgdiplus=no, --with-libgdiplus=installed
both during build/check and after installation Mono will try to use
a system-wide libgdiplus library, that is assumed to reside in the
paths that are automatically searched by the dynamic linker; the
library is supposed to be already installed in the default path and
to be useable both during the build and afterwards.
- --with-libgdiplus=sibling, --with-libgdiplus=yes
during build/check Mono will try to use the libgdiplus library that
is assumed to be in the sibling folder (../libgdiplus), but after
the installation it will try to use a system-wide libgdiplus
library, that should be in the paths that are automatically
searched by the dynamic linker; the assumption is that the library
is not yet installed, but it will go to the default prefix after
installing it.
- --with-libgdiplus=../some/relative/path/to/libgdiplus.{so,dylib,la}
during build/check Mono will try to use the specified libgdiplus
library, but after the installation it will try to use a
system-wide libgdiplus library, that should be in the paths that
are automatically searched by the dynamic linker; the assumption is
that the library is not yet installed, but it will go to the
default prefix after installing it.
-rw-r--r-- | configure.ac | 39 | ||||
-rw-r--r-- | data/config.in | 8 | ||||
-rw-r--r-- | runtime/Makefile.am | 2 |
3 files changed, 32 insertions, 17 deletions
diff --git a/configure.ac b/configure.ac index c2d36bc8822..16b9301d511 100644 --- a/configure.ac +++ b/configure.ac @@ -649,18 +649,6 @@ if test "x$USE_NLS" = "xyes"; then fi fi -AC_ARG_WITH([libgdiplus], - [ --with-libgdiplus=installed|sibling|<path> Override the libgdiplus used for System.Drawing tests (defaults to installed)], - [], [with_libgdiplus=installed]) - -case $with_libgdiplus in -no|installed) libgdiplus_loc= ;; -yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;; -/*) libgdiplus_loc=$with_libgdiplus ;; -*) libgdiplus_loc=`pwd`/$with_libgdiplus ;; -esac -AC_SUBST([libgdiplus_loc]) - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) pkg_config_path= @@ -3006,6 +2994,33 @@ esac AC_SUBST(libsuffix) +AC_ARG_WITH([libgdiplus], + [ --with-libgdiplus=installed|sibling|<path> Override the libgdiplus used for System.Drawing tests (defaults to installed)], + [], [with_libgdiplus=installed]) + +# default install location +libgdiplus_install_loc=libgdiplus${libsuffix} +case $with_libgdiplus in + no|installed) + libgdiplus_loc= + ;; + + yes|sibling) + libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la + ;; + + /*) # absolute path, assume it is an install location + libgdiplus_loc=$with_libgdiplus + libgdiplus_install_loc=$with_libgdiplus + ;; + + *) + libgdiplus_loc=`pwd`/$with_libgdiplus + ;; +esac +AC_SUBST([libgdiplus_loc]) +AC_SUBST([libgdiplus_install_loc]) + AC_ARG_ENABLE(icall-symbol-map,[ --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no) if test "x$icall_symbol_map" = "xyes"; then AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled]) diff --git a/data/config.in b/data/config.in index fc764c7a029..51cac3f0b43 100644 --- a/data/config.in +++ b/data/config.in @@ -29,8 +29,8 @@ <dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/> <dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/> </dllmap> - <dllmap dll="gdiplus" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/> - <dllmap dll="gdiplus.dll" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/> - <dllmap dll="gdi32" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/> - <dllmap dll="gdi32.dll" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/> + <dllmap dll="gdiplus" target="@libgdiplus_install_loc@" os="!windows"/> + <dllmap dll="gdiplus.dll" target="@libgdiplus_install_loc@" os="!windows"/> + <dllmap dll="gdi32" target="@libgdiplus_install_loc@" os="!windows"/> + <dllmap dll="gdi32.dll" target="@libgdiplus_install_loc@" os="!windows"/> </configuration> diff --git a/runtime/Makefile.am b/runtime/Makefile.am index 7c9b6006673..2d9c2886dbc 100644 --- a/runtime/Makefile.am +++ b/runtime/Makefile.am @@ -170,7 +170,7 @@ etc/mono/config: ../data/config Makefile $(symlinks) d=`cd ../support && pwd`; \ sed 's,target="$(prefix)/lib/libMonoPosixHelper$(libsuffix)",target="'$$d'/libMonoPosixHelper.la",' ../data/config > $@t if test -z "$(libgdiplus_loc)"; then :; else \ - sed 's,target="[^"]*libgdiplus[^"]*",target="$(libgdiplus_loc)",' $@t > $@tt; \ + sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@t > $@tt; \ mv -f $@tt $@t; fi mv -f $@t $@ |