From 2ddee4d2807ad7736f968844c46285b563175b23 Mon Sep 17 00:00:00 2001 From: Benjamin Smedberg Date: Tue, 22 Sep 2009 09:05:48 -0400 Subject: [PATCH] Bug 485409 - Handle a Windows-style path as $srcdir in configure, by modifying the default autoconf M4 macros so that they recognize Z:/ as an absolute path. r=ted --- aclocal.m4 | 1 + browser/installer/Makefile.in | 2 +- build/autoconf/acwinpaths.m4 | 65 +++++++++++++++++++++++++++++ build/msys-perl-wrapper | 16 +++++++ config/rules.mk | 2 +- configure.in | 1 + js/src/aclocal.m4 | 1 + js/src/build/autoconf/acwinpaths.m4 | 65 +++++++++++++++++++++++++++++ js/src/build/msys-perl-wrapper | 16 +++++++ js/src/config/rules.mk | 2 +- 10 files changed, 168 insertions(+), 3 deletions(-) create mode 100644 build/autoconf/acwinpaths.m4 create mode 100644 build/msys-perl-wrapper create mode 100644 js/src/build/autoconf/acwinpaths.m4 create mode 100644 js/src/build/msys-perl-wrapper diff --git a/aclocal.m4 b/aclocal.m4 index 19237cb8386b..1c068b2ee361 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -12,6 +12,7 @@ builtin(include, build/autoconf/freetype2.m4)dnl builtin(include, build/autoconf/codeset.m4)dnl builtin(include, build/autoconf/altoptions.m4)dnl builtin(include, build/autoconf/mozprog.m4)dnl +builtin(include, build/autoconf/acwinpaths.m4)dnl MOZ_PROG_CHECKMSYS() diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in index ab23370bcd0c..14af4a485d0a 100644 --- a/browser/installer/Makefile.in +++ b/browser/installer/Makefile.in @@ -98,7 +98,7 @@ ifdef MOZ_PKG_MANIFEST_P MOZ_PKG_MANIFEST = package-manifest $(MOZ_PKG_MANIFEST): $(MOZ_PKG_MANIFEST_P) - $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $< > $@ + $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $< > $@ GARBAGE += $(MOZ_PKG_MANIFEST) endif diff --git a/build/autoconf/acwinpaths.m4 b/build/autoconf/acwinpaths.m4 new file mode 100644 index 000000000000..5f6810e7e3ef --- /dev/null +++ b/build/autoconf/acwinpaths.m4 @@ -0,0 +1,65 @@ +dnl ***** BEGIN LICENSE BLOCK ***** +dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1 +dnl +dnl The contents of this file are subject to the Mozilla Public License Version +dnl 1.1 (the "License"); you may not use this file except in compliance with +dnl the License. You may obtain a copy of the License at +dnl http://www.mozilla.org/MPL/ +dnl +dnl Software distributed under the License is distributed on an "AS IS" basis, +dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +dnl for the specific language governing rights and limitations under the +dnl License. +dnl +dnl The Original Code is mozilla.org code. +dnl +dnl The Initial Developer of the Original Code is the +dnl Mozilla Foundation +dnl +dnl Portions created by the Initial Developer are Copyright (C) 2009 +dnl the Initial Developer. All Rights Reserved. +dnl +dnl Contributor(s): +dnl Benjamin Smedberg +dnl +dnl Alternatively, the contents of this file may be used under the terms of +dnl either of the GNU General Public License Version 2 or later (the "GPL"), +dnl or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +dnl in which case the provisions of the GPL or the LGPL are applicable instead +dnl of those above. If you wish to allow use of your version of this file only +dnl under the terms of either the GPL or the LGPL, and not to allow others to +dnl use your version of this file under the terms of the MPL, indicate your +dnl decision by deleting the provisions above and replace them with the notice +dnl and other provisions required by the GPL or the LGPL. If you do not delete +dnl the provisions above, a recipient may use your version of this file under +dnl the terms of any one of the MPL, the GPL or the LGPL. +dnl +dnl ***** END LICENSE BLOCK ***** + +define(GENERATE_SUB_ABS, [ +define([AC_OUTPUT_FILES_SUB1], [ +patsubst($@, [/\*)], [/* | ?:/*)]) +]) +]) +GENERATE_SUB_ABS(defn([AC_OUTPUT_FILES])) + +define(GENERATE_SUB_NOSPLIT, [ +define([AC_OUTPUT_FILES], [ +patsubst($@, [-e "s%:% \$ac_given_srcdir/%g"], []) +]) +]) +GENERATE_SUB_NOSPLIT(defn([AC_OUTPUT_FILES_SUB1])) + +define(GENERATE_HEADER_NOSPLIT, [ +define([AC_OUTPUT_HEADER], [ +patsubst($@, [-e "s%:% \$ac_given_srcdir/%g"], []) +]) +]) +GENERATE_HEADER_NOSPLIT(defn([AC_OUTPUT_HEADER])) + +define(GENERATE_SUBDIRS_ABS, [ +define([AC_OUTPUT_SUBDIRS], [ +patsubst($@, [/\*)], [/* | ?:/*)]) +]) +]) +GENERATE_SUBDIRS_ABS(defn([AC_OUTPUT_SUBDIRS])) diff --git a/build/msys-perl-wrapper b/build/msys-perl-wrapper new file mode 100644 index 000000000000..0f81e1a1dd87 --- /dev/null +++ b/build/msys-perl-wrapper @@ -0,0 +1,16 @@ +#!/bin/sh + +args="" + +for i in "${@}" +do + case "$i" in + -I?:/*) + i="$(echo "${i}" | sed -e 's|^-I\(.\):/|-I/\1/|')" + ;; + esac + + args="${args} '${i}'" +done + +eval "exec perl $args" diff --git a/config/rules.mk b/config/rules.mk index 22fbf8820091..b1428632afd8 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -89,7 +89,7 @@ endif endif ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) -_VPATH_SRCS = $(if $(filter /%,$<),$<,$(CURDIR)/$<) +_VPATH_SRCS = $(abspath $<) else _VPATH_SRCS = $< endif diff --git a/configure.in b/configure.in index 874189dfc800..ebc55468ef6d 100644 --- a/configure.in +++ b/configure.in @@ -1623,6 +1623,7 @@ case "$host" in case "$host" in *mingw*) dnl MinGW/MSYS does not need CYGWIN_WRAPPER + PERL="/bin/sh ${srcdir}/build/msys-perl-wrapper" ;; *) CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper" diff --git a/js/src/aclocal.m4 b/js/src/aclocal.m4 index 54aab4d5ecff..3745619e7297 100644 --- a/js/src/aclocal.m4 +++ b/js/src/aclocal.m4 @@ -8,5 +8,6 @@ builtin(include, build/autoconf/nspr.m4)dnl builtin(include, build/autoconf/altoptions.m4)dnl builtin(include, build/autoconf/moznbytetype.m4)dnl builtin(include, build/autoconf/mozprog.m4)dnl +builtin(include, build/autoconf/acwinpaths.m4)dnl MOZ_PROG_CHECKMSYS() diff --git a/js/src/build/autoconf/acwinpaths.m4 b/js/src/build/autoconf/acwinpaths.m4 new file mode 100644 index 000000000000..5f6810e7e3ef --- /dev/null +++ b/js/src/build/autoconf/acwinpaths.m4 @@ -0,0 +1,65 @@ +dnl ***** BEGIN LICENSE BLOCK ***** +dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1 +dnl +dnl The contents of this file are subject to the Mozilla Public License Version +dnl 1.1 (the "License"); you may not use this file except in compliance with +dnl the License. You may obtain a copy of the License at +dnl http://www.mozilla.org/MPL/ +dnl +dnl Software distributed under the License is distributed on an "AS IS" basis, +dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +dnl for the specific language governing rights and limitations under the +dnl License. +dnl +dnl The Original Code is mozilla.org code. +dnl +dnl The Initial Developer of the Original Code is the +dnl Mozilla Foundation +dnl +dnl Portions created by the Initial Developer are Copyright (C) 2009 +dnl the Initial Developer. All Rights Reserved. +dnl +dnl Contributor(s): +dnl Benjamin Smedberg +dnl +dnl Alternatively, the contents of this file may be used under the terms of +dnl either of the GNU General Public License Version 2 or later (the "GPL"), +dnl or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +dnl in which case the provisions of the GPL or the LGPL are applicable instead +dnl of those above. If you wish to allow use of your version of this file only +dnl under the terms of either the GPL or the LGPL, and not to allow others to +dnl use your version of this file under the terms of the MPL, indicate your +dnl decision by deleting the provisions above and replace them with the notice +dnl and other provisions required by the GPL or the LGPL. If you do not delete +dnl the provisions above, a recipient may use your version of this file under +dnl the terms of any one of the MPL, the GPL or the LGPL. +dnl +dnl ***** END LICENSE BLOCK ***** + +define(GENERATE_SUB_ABS, [ +define([AC_OUTPUT_FILES_SUB1], [ +patsubst($@, [/\*)], [/* | ?:/*)]) +]) +]) +GENERATE_SUB_ABS(defn([AC_OUTPUT_FILES])) + +define(GENERATE_SUB_NOSPLIT, [ +define([AC_OUTPUT_FILES], [ +patsubst($@, [-e "s%:% \$ac_given_srcdir/%g"], []) +]) +]) +GENERATE_SUB_NOSPLIT(defn([AC_OUTPUT_FILES_SUB1])) + +define(GENERATE_HEADER_NOSPLIT, [ +define([AC_OUTPUT_HEADER], [ +patsubst($@, [-e "s%:% \$ac_given_srcdir/%g"], []) +]) +]) +GENERATE_HEADER_NOSPLIT(defn([AC_OUTPUT_HEADER])) + +define(GENERATE_SUBDIRS_ABS, [ +define([AC_OUTPUT_SUBDIRS], [ +patsubst($@, [/\*)], [/* | ?:/*)]) +]) +]) +GENERATE_SUBDIRS_ABS(defn([AC_OUTPUT_SUBDIRS])) diff --git a/js/src/build/msys-perl-wrapper b/js/src/build/msys-perl-wrapper new file mode 100644 index 000000000000..0f81e1a1dd87 --- /dev/null +++ b/js/src/build/msys-perl-wrapper @@ -0,0 +1,16 @@ +#!/bin/sh + +args="" + +for i in "${@}" +do + case "$i" in + -I?:/*) + i="$(echo "${i}" | sed -e 's|^-I\(.\):/|-I/\1/|')" + ;; + esac + + args="${args} '${i}'" +done + +eval "exec perl $args" diff --git a/js/src/config/rules.mk b/js/src/config/rules.mk index 22fbf8820091..b1428632afd8 100644 --- a/js/src/config/rules.mk +++ b/js/src/config/rules.mk @@ -89,7 +89,7 @@ endif endif ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) -_VPATH_SRCS = $(if $(filter /%,$<),$<,$(CURDIR)/$<) +_VPATH_SRCS = $(abspath $<) else _VPATH_SRCS = $< endif