[m-rev.] for review: improve handling of deployment target setting on Mac OS X
Ian MacLarty
imaclarty at opturion.com
Tue Jan 21 15:35:30 AEDT 2014
Looks fine.
On Wed, Jan 15, 2014 at 1:27 PM, Julien Fischer <jfischer at opturion.com> wrote:
>
> Branches: 14.01, master
>
> Improve handling of the deployment target setting on Mac OS X.
>
> Due to matching against hardcoded versions of Darwin in the configure script
> the deployment target for recent versions (10.7 and later) of Mac OS X was
> being
> incorrectly set to 10.3. This diff makes several changes to the handling of
> the
> deployment target setting on Mac OS X:
>
> - The default deployment target is now set to the same version as the host
> system. (This is more consistent with the default XCode behaviour.)
>
> - Matching against hardcoded versions of Darwin in the configure script
> for this purpose has been removed.
>
> - There is a new option for the configure script,
> `--with-macosx-deployment-target', that allows the user to control
> what the deployment target for use with Mercury is.
>
> configure.ac:
> Don't determine the deployment target by matching against hardcoded
> versions of Darwin -- we had failed to update this for several
> versions.
>
> By default set the deployment target to be the same version as
> the host system.
>
> Add a new option for overriding the default setting of the
> deployment target.
>
> s/doesn't/does not/ in a spot in order to prevent syntax
> highlighting in vim from going stupid.
>
> README.MacOS:
> Add a paragraph describing how the deployment target is set
> for Mercury and pointing the user towards Apple's documentation
> if they require further information.
>
> NEWS:
> Announce the change to the default value of the deployment
> target setting.
>
> Julien.
>
> diff --git a/NEWS b/NEWS
> index 348805a..c0b402a 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -36,6 +36,14 @@ Changes to the Mercury standard library:
> * We have added the following predicates to the int module: fold_up3/9 and
> fold_down3/9.
>
> +Changes to the Mercury compiler:
> +
> +* On Mac OS X systems the compiler is now configured use the version of the
> + host system as the default value for the deployment target.
> +
> + A new configuration option, `--with-macosx-deployment-target', allows
> + an alternative value to be selected at configuration time.
> +
> Changes to the extras distribution:
>
> * We've added a library that provides support for accessing the function
> diff --git a/README.MacOS b/README.MacOS
> index ca3b70e..13cbd5f 100644
> --- a/README.MacOS
> +++ b/README.MacOS
> @@ -121,6 +121,22 @@ the `--traditional-cpp' option. The Mercury configure
> script should enable
> this option automatically if it is needed.
>
>
> +--------------------------
> +Deployment Target Settings
> +--------------------------
> +
> +By default, the Mercury compiler is configured so that the Mac OS X
> deployment
> +target (i.e. the value of the MACOSX_DEPLOYMENT_TARGET environment
> variable)
> +for code generated by the Mercury compiler is set to the same version as
> that
> +of the host system.
> +
> +You can specify a different deployment target at configuration time using
> +the configure script's `--with-macosx-deployment-target' option.
> +
> +(See the ``SDK Compatibility Guide'' in the Apple developer documentation
> +for further information about the deployment target setting.)
> +
> +
> ------------------------
> PowerPC Linking Problems
> ------------------------
> diff --git a/configure.ac b/configure.ac
> index cf5ba88..fdf2039 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -4097,7 +4097,7 @@ int main() {
> #if __GNUC__ >= 3
> /* gcc 3.1 seems to have problems with structure assignment
> and global registers, but which this simple test case
> - doesn't trigger. So just force the test to fail for gcc 3.x. */
> + does not trigger. So just force the test to fail for gcc 3.x. */
> exit(1);
> #else
> exit(0);
> @@ -4114,6 +4114,55 @@ fi
>
>
> #-----------------------------------------------------------------------------#
>
> +# Allow the user to override the default value of MACOSX_DEPLOYMENT_TARGET.
> +# We use the version of the host system for the default value.
> +# XXX if we ever support Mac OS X as a cross-compiling target we should
> +# force the user to set a value using --with-macosx-deployment-target.
> +
> +AC_ARG_WITH([macosx-deployment-target],
> + AC_HELP_STRING([--with-macosx-deployment-target=<target>],
> + [Specify the deployment target on Mac OS X.]),
> + [mercury_cv_macosx_deployment_target="$withval"],
> + [mercury_cv_macosx_deployment_target="auto"]
> +)
> +
> +case "$mercury_cv_macosx_deployment_target" in
> + yes)
> + AC_MSG_ERROR([missing argument to
> --with-macosx-deployment-target=... option])
> + exit 1
> + ;;
> + no)
> + AC_MSG_ERROR([invalid option --without-macosx-deployment-target])
> + exit 1
> + ;;
> +esac
> +
> +DEPLOYMENT_TARGET="no"
> +
> +case "$host" in
> + *apple*darwin*)
> + case "$mercury_cv_macosx_deployment_target" in
> + # NOTE: the sw_vers utility tells us which version of Mac OS X
> we are
> + # using as opposed to which version of Darwin we are using.
> uname
> + # only reports the latter.
> + auto)
> + DEPLOYMENT_TARGET=`sw_vers -productVersion | cut -d \. -f 1
> -f 2`
> + ;;
> +
> + *)
> + DEPLOYMENT_TARGET="$mercury_cv_macosx_deployment_target"
> + ;;
> + esac
> +
> + if test "$DEPLOYMENT_TARGET" = "no"
> + then
> + AC_MSG_ERROR([cannot determine deployment target for this
> system])
> + fi
> + ;;
> +esac
> +
> +#-----------------------------------------------------------------------------#
> +
> AC_MSG_CHECKING([whether Mercury supports shared libraries on this system])
> # We ought to use $target here rather than $host - but we don't
> # support cross-compilation at the moment anyhow.
> @@ -4413,19 +4462,6 @@ case "$host" in
> ERROR_UNDEFINED="-undefined error"
> # The MACOSX_DEPLOYMENT_TARGET environment variable needs
> to be
> # set so we can use the `-undefined dynamic_lookup' option.
> - #
> - # On 10.6, the deployment target needs to be at least 10.4.
> - # For earlier versions of Mac OS X we use 10.3.
> - case "$host" in
> - *apple*darwin*10*)
> - DEPLOYMENT_TARGET="10.4"
> - ;;
> -
> - *)
> - DEPLOYMENT_TARGET="10.3"
> - ;;
> - esac
> -
> SET_MACOSX_DEPLOYMENT_TARGET="\
> MACOSX_DEPLOYMENT_TARGET=$DEPLOYMENT_TARGET; \
> export MACOSX_DEPLOYMENT_TARGET"
> _______________________________________________
> reviews mailing list
> reviews at lists.mercurylang.org
> http://lists.mercurylang.org/listinfo/reviews
More information about the reviews
mailing list