coup de grace for Env.Host.sh and associated files
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -56,11 +56,11 @@
|
||||
/config.status
|
||||
/config.parms
|
||||
/config_host.mk
|
||||
/config_host.mk.last
|
||||
/config_build.mk
|
||||
/configure
|
||||
/desktop/scripts/soffice.sh
|
||||
/makefile.mk
|
||||
/set_soenv
|
||||
/post_download
|
||||
/bin/repo-list
|
||||
/src.downloaded
|
||||
@@ -77,7 +77,6 @@
|
||||
# misc
|
||||
/file-lists
|
||||
/cross-build-toolset.built
|
||||
/set_soenv.last
|
||||
/set_soenv.stamp
|
||||
/warn
|
||||
/build.log
|
||||
@@ -85,8 +84,6 @@
|
||||
/post_download.log
|
||||
/install
|
||||
/downloaded
|
||||
/Env.Build.sh
|
||||
/Env.Host.sh
|
||||
/ID
|
||||
/tags
|
||||
/docs
|
||||
|
15
bootstrap
15
bootstrap
@@ -9,26 +9,11 @@ if test -z "${SRC_ROOT}"; then
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -z "${SOLARENV}"; then
|
||||
if test -f ./Env.Build.sh ; then
|
||||
. ./Env.Build.sh
|
||||
else
|
||||
if test -f ./Env.Host.sh ; then
|
||||
. ./Env.Host.sh
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -z "${SOLARENV}"; then
|
||||
echo "bootstrap: No environment set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# remove aliases set by Env.Host.sh
|
||||
unalias mkout 2> /dev/null
|
||||
unalias deliver 2> /dev/null
|
||||
unalias build 2> /dev/null
|
||||
unalias zipdep 2> /dev/null
|
||||
|
||||
# executables are *.exe for WNT. This variable is necessary since Cygwin 1.5.x
|
||||
# Use spawn instead of fork when building dmake on cygwin.
|
||||
if test "$GUI_FOR_BUILD" = "WNT"; then
|
||||
|
@@ -17,7 +17,6 @@ export ANCIENT_BISON="@ANCIENT_BISON@"
|
||||
export ANDROID_NDK_HOME="@ANDROID_NDK_HOME@"
|
||||
export ANDROID_SDK_HOME="@ANDROID_SDK_HOME@"
|
||||
export AR="@AR@"
|
||||
export ASM_PATH="@ASM_PATH@"
|
||||
export ATL_INCLUDE="@ATL_INCLUDE@"
|
||||
export ATL_LIB="@ATL_LIB@"
|
||||
export AWTLIB='@AWTLIB@'
|
||||
@@ -58,7 +57,6 @@ export CPUNAME="@CPUNAME@"
|
||||
export CPUNAME_FOR_BUILD="@CPUNAME_FOR_BUILD@"
|
||||
export CPU_FOR_BUILD="@CPU_FOR_BUILD@"
|
||||
export CROSS_COMPILING="@CROSS_COMPILING@"
|
||||
export CSC_PATH="@CSC_PATH@"
|
||||
export CT2N_EXTENSION_PACK="@CT2N_EXTENSION_PACK@"
|
||||
export CURL_CFLAGS="@CURL_CFLAGS@"
|
||||
export CURL_LIBS="@CURL_LIBS@"
|
||||
@@ -87,7 +85,6 @@ export DISABLE_STRIP="@DISABLE_STRIP@"
|
||||
export DLLTOOL="@DLLTOOL@"
|
||||
export DMAKEROOT="@SRC_ROOT@/solenv/inc/startup"
|
||||
export DOCDIR="@DOCDIR@"
|
||||
export DOTNET_FRAMEWORK_HOME="@DOTNET_FRAMEWORK_HOME@"
|
||||
export DOXYGEN="@DOXYGEN@"
|
||||
export DO_FETCH_TARBALLS="@DO_FETCH_TARBALLS@"
|
||||
export DPKG="@DPKG@"
|
||||
@@ -270,7 +267,6 @@ export MDDS_CPPFLAGS="@MDDS_CPPFLAGS@"
|
||||
export MERGELIBS="@MERGELIBS@"
|
||||
export MFC_INCLUDE="@MFC_INCLUDE@"
|
||||
export MFC_LIB="@MFC_LIB@"
|
||||
export MIDL_PATH="@MIDL_PATH@"
|
||||
export MINGWCXX="@MINGWCXX@"
|
||||
export MINGWSTRIP="@MINGWSTRIP@"
|
||||
export MINGW_CLIB_DIR="@MINGW_CLIB_DIR@"
|
||||
@@ -292,7 +288,6 @@ export MOZ_INC="@MOZ_INC@"
|
||||
export MOZ_LDAP_CFLAGS="@MOZ_LDAP_CFLAGS@"
|
||||
export MOZ_LIB="@MOZ_LIB@"
|
||||
export MOZ_LIB_XPCOM="@MOZ_LIB_XPCOM@"
|
||||
export MSPDB_PATH="@MSPDB_PATH@"
|
||||
export MYSQL_DEFINES="@MYSQL_DEFINES@"
|
||||
export MYSQL_INC="@MYSQL_INC@"
|
||||
export MYSQL_LIB="@MYSQL_LIB@"
|
||||
@@ -326,6 +321,8 @@ export OUTDIR_FOR_BUILD="@OUTDIR_FOR_BUILD@"
|
||||
export OUTPATH="@OUTPATH@"
|
||||
export OUTPATH_FOR_BUILD="@OUTPATH_FOR_BUILD@"
|
||||
export OXYGENOFFICE_PACK="@OXYGENOFFICE_PACK@"
|
||||
export PATH="@LO_PATH@"
|
||||
export PATH_FOR_BUILD="@LO_PATH_FOR_BUILD@"
|
||||
export PATH_SEPERATOR="@P_SEP@"
|
||||
export PERL="@PERL@"
|
||||
export PKGFORMAT="@PKGFORMAT@"
|
||||
@@ -369,14 +366,15 @@ export SIZEOF_LONG="@SIZEOF_LONG@"
|
||||
export SIZEOF_LONGLONG="@SIZEOF_LONGLONG@"
|
||||
export SIZEOF_POINTER="@SIZEOF_POINTER@"
|
||||
export SIZEOF_SHORT="@SIZEOF_SHORT@"
|
||||
export SOLARENV="@SRC_ROOT@/solenv"
|
||||
export SOLAREXTRALIB="@SOLAREXTRALIB@"
|
||||
export SOLARINC="@SOLARINC@"
|
||||
export SOLARINC_FOR_BUILD="@SOLARINC_FOR_BUILD@"
|
||||
export SOLARLIB="@SOLARLIB@"
|
||||
export SOLARLIB_FOR_BUILD="@SOLARLIB_FOR_BUILD@"
|
||||
export SOLAR_JAVA="@SOLAR_JAVA@"
|
||||
export SOLARVER="@SRC_ROOT@/solver"
|
||||
export SOLARVERSION="@SRC_ROOT@/solver"
|
||||
export SOLAR_JAVA="@SOLAR_JAVA@"
|
||||
export SPLIT_APP_MODULES="@SPLIT_APP_MODULES@"
|
||||
export SPLIT_OPT_FEATURES="@SPLIT_OPT_FEATURES@"
|
||||
export SRCDIR="@SRC_ROOT@"
|
||||
|
173
configure.in
173
configure.in
@@ -12,6 +12,7 @@ BUILD_TYPE="LibO"
|
||||
SCPDEFS=""
|
||||
GIT_REPO_NAMES=""
|
||||
MINGW_EXTERNAL_DLLS=""
|
||||
LO_PATH= # used by path_munge to construct a PATH variable
|
||||
|
||||
PathFormat()
|
||||
{
|
||||
@@ -48,10 +49,6 @@ WinPath()
|
||||
fi
|
||||
}
|
||||
|
||||
if test -n "$SOLARENV" ; then
|
||||
AC_MSG_ERROR([You have sourced Env.Host.sh in this shell. This may lead to trouble, please run in a fresh (login) shell.])
|
||||
fi
|
||||
|
||||
echo "********************************************************************"
|
||||
echo "*"
|
||||
echo "* Running ${PACKAGE_NAME} build configuration."
|
||||
@@ -1941,11 +1938,19 @@ AC_PROG_EGREP
|
||||
|
||||
pathmunge ()
|
||||
{
|
||||
if ! echo HOST_PATH | $EGREP -q "(^|:)$1($|:)" ; then
|
||||
if test "$2" = "after" ; then
|
||||
HOST_PATH="$HOST_PATH:$1"
|
||||
if test -n "$1" ; then
|
||||
if test "$build_os" = "cygwin" ; then
|
||||
WinPath "$1"
|
||||
new_path=`cygpath -u "$formatted_path"`
|
||||
else
|
||||
HOST_PATH="$1:$HOST_PATH"
|
||||
new_path="$1"
|
||||
fi
|
||||
if ! echo LO_PATH | $EGREP -q "(^|:)$1($|:)" ; then
|
||||
if test "$2" = "after" ; then
|
||||
LO_PATH="$LO_PATH:$1"
|
||||
else
|
||||
LO_PATH="$1:$LO_PATH"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -2651,7 +2656,6 @@ fi
|
||||
AC_SUBST(COMEX)
|
||||
PathFormat "$MSPDB_PATH"
|
||||
MSPDB_PATH="$formatted_path"
|
||||
AC_SUBST(MSPDB_PATH)
|
||||
AC_SUBST(SHOWINCLUDES_PREFIX)
|
||||
|
||||
#
|
||||
@@ -3081,7 +3085,7 @@ m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
|
||||
if test "$cross_compiling" = "yes"; then
|
||||
AC_MSG_CHECKING([for BUILD platform configuration])
|
||||
echo
|
||||
rm -rf CONF-FOR-BUILD Env.Build.sh
|
||||
rm -rf CONF-FOR-BUILD config_build.mk
|
||||
mkdir CONF-FOR-BUILD
|
||||
tar cf - \
|
||||
bin/repo-list.in \
|
||||
@@ -3120,13 +3124,10 @@ if test "$cross_compiling" = "yes"; then
|
||||
--without-doxygen \
|
||||
$sub_conf_opts \
|
||||
2>&1 | sed -e 's/^/ /'
|
||||
test -f ./Env.Host.sh 2>/dev/null || exit
|
||||
test -f ./config_host.mk 2>/dev/null || exit
|
||||
cp config_host.mk ../config_build.mk
|
||||
sed -e 's/config_host.mk/config_build.mk/' <Env.Host.sh >../Env.Build.sh
|
||||
cp config.log ../config.Build.log
|
||||
. ./config_host.mk
|
||||
. ./Env.Host.sh
|
||||
for V in COM GUI GUIBASE OS CPU CPUNAME CC CXX GXX_INCLUDE_PATH MACOSX_DEPLOYMENT_TARGET INPATH OUTPATH \
|
||||
SYSTEM_LIBXSLT; do
|
||||
VV='$'$V
|
||||
@@ -3137,7 +3138,7 @@ if test "$cross_compiling" = "yes"; then
|
||||
fi
|
||||
done
|
||||
|
||||
for V in OUTDIR PATH SOLARINC SOLARLIB WORKDIR; do
|
||||
for V in OUTDIR LO_PATH SOLARINC SOLARLIB WORKDIR; do
|
||||
VV='$'$V
|
||||
VV=`eval "echo $VV"`
|
||||
VV=`echo $VV | sed -e 's,/CONF-FOR-BUILD,,g'`
|
||||
@@ -3149,8 +3150,6 @@ if test "$cross_compiling" = "yes"; then
|
||||
)
|
||||
test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
|
||||
test -f config_build.mk || AC_MSG_ERROR([A file called config_build.mk was supposed to have been copied here, but it isn't found])
|
||||
test -f Env.Build.sh || AC_MSG_ERROR([A file called Env.Build.sh was supposed to have been copied here, but it isn't found])
|
||||
perl -pi -e 's,/CONF-FOR-BUILD,,g' Env.Build.sh
|
||||
perl -pi -e 's,/CONF-FOR-BUILD,,g' config_build.mk
|
||||
eval `cat CONF-FOR-BUILD/build-config`
|
||||
AC_MSG_RESULT([checking for BUILD platform configuration... done])
|
||||
@@ -3498,7 +3497,6 @@ make_warning=
|
||||
if test "z$_make_ver_check" = "z"; then
|
||||
STALE_MAKE=TRUE
|
||||
fi
|
||||
AC_SUBST(STALE_MAKE)
|
||||
|
||||
HAVE_LD_HASH_STYLE=FALSE
|
||||
WITH_LINKER_HASH_STYLE=
|
||||
@@ -3734,9 +3732,6 @@ if test "$build_os" = "cygwin"; then
|
||||
PathFormat "$CSC_PATH"
|
||||
CSC_PATH="$formatted_path"
|
||||
|
||||
AC_SUBST(MIDL_PATH)
|
||||
AC_SUBST(CSC_PATH)
|
||||
AC_SUBST(DOTNET_FRAMEWORK_HOME)
|
||||
fi
|
||||
|
||||
dnl ===================================================================
|
||||
@@ -7349,8 +7344,8 @@ fi
|
||||
if test "$XLIB" != "no_x_libraries" -a "$XLIB" != "/usr/lib" -a "$XLIB" != "/usr/lib64" ; then
|
||||
SOLARLIB="$SOLARLIB -L$XLIB"
|
||||
fi
|
||||
if test "$XiNC" != "no_x_include" -a "$XINC" != "/usr/include" ; then
|
||||
SOLARLIB="$SOLARLIB -I$XINC"
|
||||
if test "$XINC" != "no_x_includes" -a "$XINC" != "/usr/include" ; then
|
||||
SOLARINC="$SOLARINC -I$XINC"
|
||||
fi
|
||||
AC_SUBST(XLIB)
|
||||
|
||||
@@ -7746,7 +7741,9 @@ the Windows SDK are installed.])
|
||||
fi
|
||||
PathFormat "$WINDOWS_SDK_HOME"
|
||||
WINDOWS_SDK_HOME="$formatted_path"
|
||||
SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/include"
|
||||
if test "$build_os" = "cygwin"; then
|
||||
SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/include"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(WINDOWS_SDK_HOME)
|
||||
|
||||
@@ -7945,13 +7942,12 @@ if test "$_os" = "WINNT" -a "$WITH_MINGW" != "yes"; then
|
||||
ML_EXE="$assembler"
|
||||
fi
|
||||
fi
|
||||
FormatPath "$with_asm_home"
|
||||
ASM_HOME="$formatted_path"
|
||||
else
|
||||
with_asm_home="NO_ASM_HOME"
|
||||
ASM_HOME=""
|
||||
fi
|
||||
|
||||
FormatPath "$with_asm_home"
|
||||
ASM_HOME="$formatted_path"
|
||||
AC_SUBST(ASM_HOME)
|
||||
AC_SUBST(ML_EXE)
|
||||
|
||||
dnl ===================================================================
|
||||
@@ -10803,6 +10799,61 @@ else
|
||||
TEMP_DIRECTORY="/tmp"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(TEMP_DIRECTORY)
|
||||
AC_SUBST(TMP_DIRECTORY)
|
||||
|
||||
# setup the PATH for the environment
|
||||
LO_PATH="$PATH"
|
||||
|
||||
case "$host_os" in
|
||||
|
||||
aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
|
||||
if test "$SOLAR_JAVA" != "" -a "$JDK"!="gcj"; then
|
||||
pathmunge "$JAVA_HOME/bin" "after"
|
||||
fi
|
||||
;;
|
||||
|
||||
cygwin*)
|
||||
if test "$SOLAR_JAVA" != "" -a "$JDK"!="gcj"; then
|
||||
pathmunge "$DOTNET_FRAMEWORK_HOME" "before"
|
||||
pathmunge "$ASM_HOME" "before"
|
||||
pathmunge "$WINDOWS_SDK_HOME" "before"
|
||||
pathmunge "$CSC_PATH" "before"
|
||||
pathmunge "$MIDL_PATH" "before"
|
||||
pathmunge "$MSPDB_PATH" "before"
|
||||
if test "$CL_X64"="TRUE" ; then
|
||||
pathmunge "$COMPATH/bin/amd64" "before"
|
||||
else
|
||||
pathmunge "$COMPATH/bin" "before"
|
||||
fi
|
||||
if test -d "$JAVA_HOME/jre/bin/client" ; then
|
||||
pathmunge "$JAVA_HOME/jre/bin/client" "before"
|
||||
fi
|
||||
if test -d "$JAVA_HOME/jre/bin/hotspot" ; then
|
||||
pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
|
||||
fi
|
||||
pathmunge "$JAVA_HOME/bin" "before"
|
||||
|
||||
fi
|
||||
;;
|
||||
|
||||
solaris*)
|
||||
pathmunge "/usr/css/bin" "before"
|
||||
if test "$SOLAR_JAVA" != "" -a "$JDK"!="gcj"; then
|
||||
pathmunge "$JAVA_HOME/bin" "after"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
pathmunge "$SRC_ROOT/solenv/$OUTPATH/bin" "before"
|
||||
pathmunge "$SRC_ROOT/solenv/bin" "before"
|
||||
pathmunge "." "before"
|
||||
|
||||
AC_SUBST(LO_PATH)
|
||||
if test -z "$LO_PATH_FOR_BUILD" ; then
|
||||
LO_PATH_FOR_BUILD="$SOLARLIB"
|
||||
fi
|
||||
AC_SUBST(LO_PATH_FOR_BUILD)
|
||||
|
||||
# make sure config.guess is +x; we execute config.guess, so it has to be so;
|
||||
chmod +x ./config.guess
|
||||
@@ -10816,28 +10867,78 @@ autoconf post_download.in > post_download
|
||||
chmod +x post_download
|
||||
|
||||
# Generate a configuration timestamp we can use for deps
|
||||
if test -f set_soenv; then
|
||||
mv -f set_soenv set_soenv.last
|
||||
if test -f config_host.mk; then
|
||||
mv -f config_host.mk config_host.mk.last
|
||||
else
|
||||
echo > set_soenv.last
|
||||
echo > config_host.mk.last
|
||||
fi
|
||||
|
||||
AC_CONFIG_FILES([config_host.mk ooo.lst set_soenv bin/repo-list build_env android/qa/sc/local.properties android/qa/desktop/local.properties])
|
||||
AC_CONFIG_FILES([config_host.mk ooo.lst bin/repo-list build_env android/qa/sc/local.properties android/qa/desktop/local.properties])
|
||||
AC_OUTPUT
|
||||
|
||||
# touch the config timestamp file set_soenv.stamp
|
||||
if test ! -f set_soenv.stamp; then
|
||||
echo > set_soenv.stamp
|
||||
elif diff set_soenv set_soenv.last >/dev/null 2>&1; then
|
||||
elif diff config_host.mk config_host.mk.last >/dev/null 2>&1; then
|
||||
echo "Configuration unchanged - avoiding scp2 stamp update"
|
||||
else
|
||||
echo > set_soenv.stamp
|
||||
fi
|
||||
|
||||
dnl Run the set_soenv script to setup the Env.Host.sh script that sets
|
||||
dnl environment variables for the build.
|
||||
chmod +x set_soenv
|
||||
|
||||
. ./config_host.mk && ./set_soenv
|
||||
if test "STALE_MAKE"="TRUE" -a "$build_os"="cygwin" ; then
|
||||
cat << _EOS
|
||||
****************************************************************************
|
||||
WARNING:
|
||||
Your make version is known to be horribly slow, and hard to debug
|
||||
problems with. To get a reasonably functional make please do:
|
||||
|
||||
to install a pre-compiled binary make for cygwin
|
||||
|
||||
mkdir -p /opt/lo/bin
|
||||
cd /opt/lo/bin
|
||||
wget http://dev-www.libreoffice.org/bin/cygwin/make
|
||||
chmod +x make
|
||||
|
||||
to install from source:
|
||||
place yourself in a working directory of you choice.
|
||||
|
||||
git clone git://anongit.freedesktop.org/libreoffice/contrib/dev-tools
|
||||
cd dev-tools/make-3.82-gbuild
|
||||
./configure --prefix=/opt/lo
|
||||
make
|
||||
sudo make install
|
||||
|
||||
Then re-run autogen.sh
|
||||
|
||||
Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
|
||||
Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
|
||||
|
||||
_EOS
|
||||
fi
|
||||
|
||||
cat << _EOF
|
||||
****************************************************************************
|
||||
To build, issue:
|
||||
$GNUMAKE
|
||||
|
||||
To install when the build is finished, issue:
|
||||
$GNUMAKE install
|
||||
|
||||
If you want to develop LibreOffice, you might prefer:
|
||||
$GNUMAKE dev-install
|
||||
|
||||
If you want to run the smoketest, issue:
|
||||
$GNUMAKE check
|
||||
|
||||
ATTENTION: Env.Host.sh and Env.Build.sh are no more.
|
||||
The environment is now in config_host.mk and config_build.mk (for cross-compile)
|
||||
You do not need to source them, even for partial build.
|
||||
In order to have 'build' and 'deliver' alias, source build_env instead.
|
||||
(you need to do that only once in a session. this is not impacted by
|
||||
autogen, clean etc...)
|
||||
|
||||
_EOF
|
||||
|
||||
|
||||
dnl vim:set shiftwidth=4 softtabstop=4 expandtab:
|
||||
|
2
download
2
download
@@ -28,7 +28,7 @@
|
||||
|
||||
# environment setup yet?
|
||||
if [ -z "$TARFILE_LOCATION" ]; then
|
||||
. ./config_host.mk && . ./Env.Host.sh
|
||||
. ./config_host.mk
|
||||
fi
|
||||
|
||||
# we want to clone if we are in the bootstrap git repo and clone does not exist yet
|
||||
|
779
set_soenv.in
779
set_soenv.in
@@ -1,779 +0,0 @@
|
||||
#!@PERL@ -w # -*- Mode: perl; tab-width: 4; indent-tabs-mode: nil; -*-
|
||||
#
|
||||
# Program: set_soenv.in
|
||||
# Author: Willem van Dorp, Ross Nicholson, Oisin Boydell - Sun Microsystems, Ireland.
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------
|
||||
# Description:
|
||||
# set_soenv generates a file that contains all necessary
|
||||
# environment variables for the build proces of OpenOffice
|
||||
# on Linux, NetBSD, Solaris, Windows, Mac OS X and iOS.
|
||||
#
|
||||
# Program steps.
|
||||
#
|
||||
# I. Checking the command-line arguments.
|
||||
# IIa. Declaring variables for the system commands, etc.
|
||||
# IIb. Declaring the environment variables.
|
||||
# III. Initialising the variables for the system commands, etc.
|
||||
# IV. Print out some important messages etc.
|
||||
# V. Initialising the environment variables.
|
||||
# VI. Open the output file.
|
||||
# VII. Writing the data to the output file.
|
||||
# VIII. Closing output file.
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
use strict; # pragma
|
||||
use File::Basename;
|
||||
|
||||
|
||||
#
|
||||
#--------------------------------------------------------
|
||||
# IIa. Declaring variables for the system commands, etc.
|
||||
#--------------------------------------------------------
|
||||
#
|
||||
my ( $outfile, $newline, $comment,
|
||||
$ds, $ps,
|
||||
$wps, $cur_dir, $par_dir, $tmp,
|
||||
$platform,
|
||||
$empty,
|
||||
$warnfile, $Warning, $result, $unsetvars, $exportvars);
|
||||
#
|
||||
#-------------------------------------------------
|
||||
# IIb. Declaring environment values (constants).
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Platform independent constant values.
|
||||
my ( $CC );
|
||||
#
|
||||
# Platform dependent constant values.
|
||||
my (
|
||||
$OUTPATH,
|
||||
);
|
||||
#
|
||||
#-------------------------------------------
|
||||
# IIc. Declaring the environment variables.
|
||||
#-------------------------------------------
|
||||
#
|
||||
# Help variables.
|
||||
my ( $BIN, $LIB,
|
||||
$ASM_PATH, $PERL_PATH, $CL_X64 );
|
||||
|
||||
# Environment variables.
|
||||
my ( $oldPATH, $SRC_ROOT, $JAVA_HOME, $JDK,
|
||||
$UPD,
|
||||
$SOLARENV,
|
||||
$COMPATH,
|
||||
$PATH,
|
||||
$PERL,
|
||||
$WINDOWS_SDK_HOME, $DOTNET_FRAMEWORK_HOME,
|
||||
$GNUMAKE,
|
||||
);
|
||||
#
|
||||
#-------------------------------------------
|
||||
# IId. Declaring the aliases.
|
||||
#-------------------------------------------
|
||||
#
|
||||
my ( $dmake, $build, $mkout, $deliver, $zipdep );
|
||||
#
|
||||
|
||||
$OUTPATH="@OUTPATH@";
|
||||
$COMPATH="@COMPATH@";
|
||||
#-------------------------------------------------------------
|
||||
# IIIa. Initialising constants.
|
||||
#-------------------------------------------------------------
|
||||
#
|
||||
$platform = '@host@';
|
||||
|
||||
$UPD = '@UPD@'; # the project's UPD
|
||||
$newline = "\n"; # Perl newline character
|
||||
$ds = "/"; # directory separator
|
||||
$ps = ":"; # path separator
|
||||
$wps = ":"; # path separator, will be set to ';' for windows later.
|
||||
$cur_dir = "."; # current directory
|
||||
$par_dir = ".."; # parrent directory
|
||||
$empty = ""; # used as argument
|
||||
$warnfile = "warn"; # logfile configure warnings.
|
||||
$Warning = ""; # container for warning messages
|
||||
$JDK = '@JDK@';
|
||||
$CC = '@CC@'; # C compiler
|
||||
$CL_X64 = '@CL_X64@';
|
||||
$GNUMAKE = "@GNUMAKE@";
|
||||
|
||||
# JAVA_HOME as argument from autoconf.
|
||||
$JAVA_HOME = "@JAVA_HOME@" ;
|
||||
|
||||
if ( $platform =~ m/cygwin/ ) {
|
||||
$JAVA_HOME =~ s/[\s\/]+$//; # remove trailing \n or \/ if there is any.
|
||||
}
|
||||
#
|
||||
#--------------------------------------------------------------------
|
||||
# IV. Initialise the warning container and print a note to the user.
|
||||
#--------------------------------------------------------------------
|
||||
#
|
||||
# Add the configure (pre-requisite) warnings to the warning container
|
||||
# , $Warning.
|
||||
AddWarning( "configure", "" );
|
||||
#
|
||||
print ("Setting up the environment for building LibreOffice $newline");
|
||||
#
|
||||
#--------------------------------------------------
|
||||
# V. Setting the environment variables/values.
|
||||
#--------------------------------------------------
|
||||
#
|
||||
|
||||
#
|
||||
# B. Gathering information from the system.
|
||||
#
|
||||
# 1. Path
|
||||
$oldPATH = $ENV{"PATH"};
|
||||
chomp( $oldPATH ); # cut off new line
|
||||
#
|
||||
# C. Setting the constant values.
|
||||
#
|
||||
# Setting platform independent constant values.
|
||||
$comment = "#"; # UNIX script comment character
|
||||
|
||||
# Setting platform dependent constant values.
|
||||
if ( $platform =~ m/cygwin|mingw32/ )
|
||||
{
|
||||
$wps = ';' if '@build_os@' eq 'cygwin'; # Windows style path seperator
|
||||
}
|
||||
|
||||
|
||||
print "done\n";
|
||||
|
||||
#
|
||||
# D. Gathering directory information from the user.
|
||||
#
|
||||
# If the directory does not exist something is strange.
|
||||
# 1. LibreOffice build home directory.
|
||||
# SRC_ROOT should already be in the env due to config_host.mk
|
||||
$SRC_ROOT = $ENV{"SRC_ROOT"};
|
||||
CheckPathExist( $SRC_ROOT );
|
||||
|
||||
|
||||
#
|
||||
# E. Determining the envionment values based on the information
|
||||
# that was gathered earlier on.
|
||||
|
||||
$BIN = $ds."bin";
|
||||
$LIB = $ds."lib";
|
||||
|
||||
$PERL = '@PERL@';
|
||||
$PERL_PATH = dirname('@PERL@'); # Perl Path
|
||||
|
||||
#
|
||||
$SOLARENV = "$SRC_ROOT/solenv";
|
||||
|
||||
|
||||
# The general environment path.
|
||||
if ($platform =~ m/linux|netbsd|freebsd|aix|solaris|openbsd|dragonfly/)
|
||||
{ $PATH = $cur_dir.
|
||||
$ps.'$SOLARENV'.$ds.'$OUTPATH'.$BIN.
|
||||
$ps.'$SOLARENV'.$BIN;
|
||||
|
||||
if ($platform =~ m/solaris/) {
|
||||
$PATH .= $ps."/usr/ccs/bin";
|
||||
}
|
||||
|
||||
$PATH .= $ps.$oldPATH;
|
||||
|
||||
my @javaBits;
|
||||
if ( $JAVA_HOME ne "" && $JAVA_HOME ne "NO_JAVA_HOME" && $JDK ne "gcj" ) {
|
||||
@javaBits = ( $JAVA_HOME.$BIN, 'javac' );
|
||||
} else {
|
||||
@javaBits = ();
|
||||
}
|
||||
$PATH = GetCorrectPath ($PATH,
|
||||
$COMPATH, $CC,
|
||||
$PERL_PATH, 'perl',
|
||||
@javaBits);
|
||||
}
|
||||
|
||||
elsif ($platform =~ m/cygwin/)
|
||||
{ # The PATH variable is completely created from scratch. Elements
|
||||
# from oldPATH that are not yet included are appended to PATH at
|
||||
# the end.
|
||||
|
||||
my ( $tmppath );
|
||||
|
||||
$PATH = $cur_dir.
|
||||
$ps.CygFormat($SOLARENV).$ds."bin".
|
||||
$ps.CygFormat($SOLARENV).$ds.$OUTPATH.$BIN;
|
||||
|
||||
if ( $JAVA_HOME ne "" && $JAVA_HOME ne "NO_JAVA_HOME" )
|
||||
{
|
||||
# hack either "hotspot" or "client" should be used, depending on the jdk version:
|
||||
# 1.2.x - no such directory, unsupported
|
||||
# 1.3.x - hotspot, client missing
|
||||
# 1.4.x - client, hotspot missing
|
||||
|
||||
$PATH .= $ps.CygFormat($JAVA_HOME).$BIN;
|
||||
if ( -d $JAVA_HOME.$ds."jre".$ds."bin".$ds."hotspot" ) {
|
||||
$PATH .= $ps.CygFormat($JAVA_HOME).$ds."jre".$ds."bin".$ds."hotspot";
|
||||
}
|
||||
if ( -d $JAVA_HOME.$ds."jre".$ds."bin".$ds."client" ) {
|
||||
$PATH .= $ps.CygFormat($JAVA_HOME).$ds."jre".$ds."bin".$ds."client";
|
||||
}
|
||||
}
|
||||
|
||||
# Add path to compiler
|
||||
$tmppath = CygFormat($COMPATH).$BIN;
|
||||
$tmppath .= $ds."amd64" if $CL_X64;
|
||||
$tmppath =~ s/^\/\//\//;
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath)(?:[:]|\Z)/ ) {
|
||||
$PATH .= $ps.$tmppath;
|
||||
}
|
||||
|
||||
$tmppath = CygFormat("@MSPDB_PATH@");
|
||||
# for MSVC to find mspdb*.dll
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath)(?:[:]|\Z)/ ) {
|
||||
$PATH .= $ps.$tmppath;
|
||||
}
|
||||
# need midl.exe
|
||||
$tmppath = CygFormat("@MIDL_PATH@");
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath)(?:[:]|\Z)/ ) {
|
||||
$PATH .= $ps.$tmppath;
|
||||
}
|
||||
# needs csc.exe
|
||||
$tmppath = CygFormat("@CSC_PATH@");
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath)(?:[:]|\Z)/ ) {
|
||||
$PATH .= $ps.$tmppath;
|
||||
}
|
||||
# Installer needs some files if the Windows Installer SDK
|
||||
$tmppath = CygFormat("@WINDOWS_SDK_HOME@");
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath\/bin)(?:[:]|\Z)/i ) {
|
||||
$PATH .= $ps.$tmppath.$BIN;
|
||||
}
|
||||
|
||||
if ( "@ASM_HOME@" ne "ASM_IN_PATH" )
|
||||
{ $PATH .= $ps.CygFormat("@ASM_HOME@");
|
||||
}
|
||||
|
||||
# Possible cygwin paths must follow behind the OOo and MS paths.
|
||||
# What the above comment means I have no idea.
|
||||
|
||||
# Check if $PERL_PATH is already set in PATH
|
||||
$tmppath = CygFormat($PERL_PATH);
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath)(?:[:]|\Z)/ ) {
|
||||
$PATH .= $ps.$tmppath;
|
||||
}
|
||||
# path to sn.exe (signing) for Windows users.
|
||||
my $sn_path = "@DOTNET_FRAMEWORK_HOME@/bin";
|
||||
$tmppath = CygFormat($sn_path);
|
||||
if ( "$PATH:$oldPATH" !~ /(?:[:]|\A)(?:$tmppath)(?:[:]|\Z)/ ) {
|
||||
$PATH .= $ps.$tmppath;
|
||||
}
|
||||
|
||||
# Add the rest of the original path if it is still missing.
|
||||
my $expandedPATH = $PATH;
|
||||
$expandedPATH =~ s/(\$\w+)/$1/eeg;
|
||||
|
||||
# fix situations where PATH may look like /bin:"C:\blah\bleh":/ugh
|
||||
my $fixedPATH = $oldPATH;
|
||||
if ( $oldPATH =~ /"/ ) {
|
||||
$fixedPATH = "";
|
||||
foreach my $pathentry ( split( '"',$oldPATH ) ) {
|
||||
if ( ( $pathentry =~ /^$ps/ ) || ( $pathentry =~ /$ps$/ ) ) {
|
||||
$fixedPATH .= $pathentry;
|
||||
} else {
|
||||
chomp( $pathentry = qx{cygpath -d "$pathentry"} ) ;
|
||||
chomp( $pathentry = qx{cygpath -u "$pathentry"} ) ;
|
||||
$fixedPATH .= $pathentry;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $pathentry (split($ps,$fixedPATH)) {
|
||||
if ( ! ( $expandedPATH =~ /(?:$ps|\A)(?:$pathentry)(?:$ps|\Z)/ ) ) {
|
||||
$PATH .= $ps.$pathentry;
|
||||
$expandedPATH .= $ps.$pathentry;
|
||||
}
|
||||
}
|
||||
|
||||
# The path now is in cygwin posix format
|
||||
|
||||
}
|
||||
elsif ($platform =~ m/mingw32/)
|
||||
{
|
||||
my ( $tmppath );
|
||||
|
||||
$PATH = $cur_dir.
|
||||
$ps.CygFormat($SOLARENV).$ds."bin".
|
||||
$ps.CygFormat($SOLARENV).$ds.$OUTPATH.$BIN;
|
||||
|
||||
$PATH .= $ps.$oldPATH;
|
||||
}
|
||||
elsif ($platform =~ m/darwin/)
|
||||
{ $PATH = $cur_dir.
|
||||
$ps.'$SOLARENV'.$ds.'$OUTPATH'.$BIN.
|
||||
$ps.'$SOLARENV'.$BIN;
|
||||
|
||||
# Append old PATH
|
||||
$PATH .= $ps.$oldPATH;
|
||||
}
|
||||
else
|
||||
{ AddWarning( "set_soenv", "$platform not configured for general environment paths" );
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# F. Setting the different aliases.
|
||||
#
|
||||
# 1. alias for a full product make.
|
||||
$mkout = '"perl $SOLARENV/bin/mkout.pl"';
|
||||
$deliver = '"perl $SOLARENV/bin/deliver.pl"';
|
||||
$build = '"perl $SOLARENV/bin/build.pl"';
|
||||
$zipdep = '"perl $SOLARENV/bin/zipdep.pl"';
|
||||
|
||||
#
|
||||
#--------------------------
|
||||
# VI. Open the output file.
|
||||
#--------------------------
|
||||
#
|
||||
$outfile = 'Env.Host.sh';
|
||||
|
||||
open( OUT, ">$SRC_ROOT/$outfile" ) ||
|
||||
die "Cannot open $SRC_ROOT/$outfile: $!\n";
|
||||
|
||||
#
|
||||
#------------------------------------------
|
||||
# VII. Writing the data to the output file.
|
||||
#------------------------------------------
|
||||
#
|
||||
# Write file header.
|
||||
CreateFileHeader( *OUT, $UPD, $platform, "sh/bash/ksh", "#" );
|
||||
|
||||
|
||||
ToFile( "SOLARENV", $SOLARENV, "e" );
|
||||
|
||||
if ( '@CROSS_COMPILING@' eq 'YES' )
|
||||
{
|
||||
# Obviously we shouldn't set PATH to contain host binaries
|
||||
ToFile( "PATH", "@PATH_FOR_BUILD@", "e" );
|
||||
}
|
||||
else
|
||||
{
|
||||
ToFile( "PATH", $PATH, "e" );
|
||||
ToFile( "PATH_FOR_BUILD", $PATH, "e" );
|
||||
}
|
||||
|
||||
#
|
||||
# Writing the aliases to file.
|
||||
ToFile( "Aliases.", $empty, "c" );
|
||||
ToFile( "Don't set aliases when bootstrapping", $empty, "c" );
|
||||
|
||||
ToFile( "alias mkout", $mkout, "a" );
|
||||
ToFile( "alias deliver", $deliver, "a" );
|
||||
ToFile( "alias build", $build, "a" );
|
||||
ToFile( "alias zipdep", $zipdep, "a" );
|
||||
|
||||
#
|
||||
# Writing unset variables you might not need to file.
|
||||
#
|
||||
print OUT "export $exportvars$newline";
|
||||
print OUT "unset $unsetvars$newline";
|
||||
# unset may return a non-zero value and make the initial
|
||||
# make(1) processes terminate with an error
|
||||
print OUT "true $newline";
|
||||
|
||||
#
|
||||
#---------------------------
|
||||
# VIII. Closing output file.
|
||||
#---------------------------
|
||||
#
|
||||
close( OUT ) || print "Can't close $SRC_ROOT/$outfile: $!";
|
||||
|
||||
#--------------------------------------------------------
|
||||
# XII. Message at the end.
|
||||
#--------------------------------------------------------
|
||||
#
|
||||
#
|
||||
print "$newline";
|
||||
print "*********************************************************".
|
||||
"*******************$newline*$newline";
|
||||
print "* LibreOffice configuration finished. $newline*$newline";
|
||||
|
||||
if ( $Warning ne "" )
|
||||
{ print "$Warning*$newline";
|
||||
}
|
||||
|
||||
print "*********************************************************".
|
||||
"******************* $newline";
|
||||
|
||||
print "To build, issue:\n$GNUMAKE\n\n";
|
||||
print "To install when the build is finished, issue:\n$GNUMAKE install\n\n";
|
||||
print "If you want to develop LibreOffice, you might prefer:\n$GNUMAKE dev-install\n\n";
|
||||
print "If you want to run the smoketest, issue:\n$GNUMAKE check\n\n";
|
||||
|
||||
if ("@STALE_MAKE@" eq "TRUE" && $platform =~ m/cygwin/ ) {
|
||||
print << 'EOS'
|
||||
WARNING:
|
||||
Your make version is known to be horribly slow, and hard to debug
|
||||
problems with. To get a reasonably functional make please do:
|
||||
|
||||
to install a pre-compiled binary make for cygwin
|
||||
|
||||
mkdir -p /opt/lo/bin
|
||||
cd /opt/lo/bin
|
||||
wget http://dev-www.libreoffice.org/bin/cygwin/make
|
||||
chmod +x make
|
||||
|
||||
to install from source:
|
||||
place yourself in a working directory of you choice.
|
||||
|
||||
git clone git://anongit.freedesktop.org/libreoffice/contrib/dev-tools
|
||||
cd dev-tools/make-3.82-gbuild
|
||||
./configure --prefix=/opt/lo
|
||||
make
|
||||
sudo make install
|
||||
|
||||
Then re-run autogen.sh
|
||||
|
||||
Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
|
||||
Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
|
||||
|
||||
EOS
|
||||
}
|
||||
|
||||
if ( $Warning ne "" ) {
|
||||
print "***** WARNINGS ISSUED *****\n";
|
||||
}
|
||||
|
||||
#
|
||||
#-----------------
|
||||
# XII. Functions.
|
||||
#-----------------
|
||||
#
|
||||
#-------------------------------------------------------------
|
||||
# Function name: CheckPathName
|
||||
# Description: chops off the '/' character if it's the last
|
||||
# character in a pathname. also adds the '/'
|
||||
# character if it's not the first character
|
||||
# in a path.
|
||||
# Arguments: 1. Path (string)
|
||||
# Return value: Path (string)
|
||||
#-------------------------------------------------------------
|
||||
sub CheckPathName
|
||||
{ my $retrn = $_[ 0 ];
|
||||
if ($platform =~ m/cygwin/)
|
||||
{ # Check if the first character is not a '/'.
|
||||
if ( !( $_[ 0 ] =~ /^\// ) )
|
||||
{ $retrn = $ds.$_[ 0 ];
|
||||
}
|
||||
}
|
||||
# kill the last '/','\','\n' if they exists.
|
||||
$retrn =~ s![\s/\\]+$!!;
|
||||
# Done!
|
||||
return( $retrn );
|
||||
}
|
||||
#-------------------------------------------------------------
|
||||
# Function name: CheckPathExist
|
||||
# Description: Checks whether the directory that is given
|
||||
# as an argument exists. If not abort.
|
||||
# Arguments: 1. Path (string)
|
||||
# Return value: void
|
||||
#-------------------------------------------------------------
|
||||
sub CheckPathExist
|
||||
{ my $dir = $_[ 0 ];
|
||||
if ( !( -d $dir ) )
|
||||
{ print ( "The directory $_[ 0 ] does not exist. Please create first.\n" );
|
||||
exit 1;
|
||||
}
|
||||
else
|
||||
{ # Don't check under ActiveState Perl (Windows). The path is possibly
|
||||
# posix and it cannot handle it.
|
||||
# Hmm, but the above test also checks for existance, so presumably
|
||||
# the mention of ActiveState in the above comment is just a red
|
||||
# herring.
|
||||
return "true";
|
||||
}
|
||||
}
|
||||
#------------------------------------------------------------
|
||||
# Function name: CreateFileHeader
|
||||
# Description: Creates a header for the outfile.
|
||||
# Arguments: 1. File to write to
|
||||
# 2. UPD (string)
|
||||
# 3. Platform (string)
|
||||
# 4. name of shell for this file
|
||||
# 5. comment to use for this file
|
||||
# Return value: void
|
||||
#------------------------------------------------------------
|
||||
sub CreateFileHeader
|
||||
{ my $timestamp = `date`;
|
||||
chomp( $timestamp );
|
||||
my $filehandle = $_[0];
|
||||
my $comment = $_[4];
|
||||
print { $filehandle } "$comment #################################################################";
|
||||
print { $filehandle } $newline;
|
||||
print { $filehandle } "$comment LibreOffice $_[ 1 ] build environment file for: $_[ 2 ]. $newline";
|
||||
print { $filehandle } "$comment Generated on: $timestamp $newline";
|
||||
print { $filehandle } "$comment Source this file to set up the build environment. $newline";
|
||||
print { $filehandle } "$comment 1. exec $_[3] $newline";
|
||||
print { $filehandle } "$comment 2. source $outfile $newline";
|
||||
print { $filehandle } "$comment #################################################################";
|
||||
print { $filehandle } $newline;
|
||||
print { $filehandle } 'if test -z "$SRC_ROOT" ; then';
|
||||
print { $filehandle } $newline;
|
||||
print { $filehandle } " . $SRC_ROOT/config_host.mk $newline";
|
||||
print { $filehandle } "fi $newline";
|
||||
print { $filehandle } $newline;
|
||||
}
|
||||
#---------------------------------------------------------
|
||||
# Function name: ToFile
|
||||
# Description: Writes the environment variable in the
|
||||
# output file.
|
||||
# Arguments: 1. Name of environment variable (string)
|
||||
# 2. Value of environment variable (string)
|
||||
# 3. e - env. var
|
||||
# a - alias
|
||||
# c - comment
|
||||
# n - newline
|
||||
# z - raw, write as is to OUT
|
||||
# Return value: void
|
||||
#---------------------------------------------------------
|
||||
sub ToFile {
|
||||
if ( $_[ 2 ] eq "e" ) {
|
||||
# Write an environment variable to file.
|
||||
if (defined $_[ 1 ] && $_[ 1 ] ne "" ) {
|
||||
my $envvar = $_[ 1 ];
|
||||
|
||||
# Tcsh/bash needs backslashes quoted
|
||||
$envvar =~ s/\\/\\\\/g;
|
||||
|
||||
printf("%-12s %-17s %-10s %s\n", "The variable", $_[ 0 ], "is set to:", $envvar) if ( '@VERBOSE@' eq 'TRUE' );
|
||||
print OUT "$_[ 0 ]=\"$envvar\"$newline"; # to sh file
|
||||
$exportvars .= " $_[ 0 ]"; # add to export list for sh file
|
||||
|
||||
} else {
|
||||
printf("%-12s %-17s %-10s %s\n", "The variable", $_[ 0 ], "is set to:", "unset") if ( '@VERBOSE@' eq 'TRUE' );
|
||||
$unsetvars .= " $_[ 0 ]"; # for sh file
|
||||
}
|
||||
}
|
||||
elsif ( $_[ 2 ] eq "a" )
|
||||
{ # Write an alias to file.
|
||||
print "The $_[ 0 ] is set to: $_[ 1 ]\n" if ( '@VERBOSE@' eq 'TRUE' ); # to stdout
|
||||
print OUT "$_[ 0 ]=$_[ 1 ]$newline"; # to sh file
|
||||
}
|
||||
elsif ( $_[ 2 ] eq "c" )
|
||||
{ # Write a comment to file.
|
||||
if ( '@VERBOSE@' eq 'TRUE' )
|
||||
{
|
||||
print "$newline";
|
||||
print "$comment$newline";
|
||||
print "$comment $_[ 0 ]$newline";
|
||||
print "$comment$newline";
|
||||
}
|
||||
print OUT "$newline";
|
||||
print OUT "$comment$newline";
|
||||
print OUT "$comment $_[ 0 ]$newline";
|
||||
print OUT "$comment$newline";
|
||||
}
|
||||
elsif ( $_[ 2 ] eq "n" )
|
||||
{ #Write a newline to a file
|
||||
print OUT "$newline";
|
||||
}
|
||||
elsif ( $_[ 2 ] eq "z" )
|
||||
{
|
||||
#Write first argument as is, and nothing else
|
||||
print OUT "$_[ 0 ]$newline";
|
||||
}
|
||||
else
|
||||
{ print "Unknown type!$newline";
|
||||
}
|
||||
}
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Function name: CygFormat
|
||||
# Description: Format variables to cygwin posix style path
|
||||
# unless .
|
||||
# Arguments: 1. Variable (string)
|
||||
# Return value: Reformatted String
|
||||
#----------------------------------------------------------
|
||||
sub CygFormat
|
||||
{ my ( $variable, $d1, $d2 );
|
||||
$variable = $_[ 0 ];
|
||||
# ToDo: Do the replacement only if Windows and var contains "\" and ":"
|
||||
if ( $platform =~ m/cygwin/ )
|
||||
{
|
||||
# Complain if PosixPath is used on a PATH-like string
|
||||
if ( $variable =~ m/;/ ) {
|
||||
die( "Do not use on PATH lists (i.e., 'c:\\foo;d:\\bar')");
|
||||
}
|
||||
|
||||
# Replace DOS paths with posix paths
|
||||
if ( ( $variable =~ m/\\/ ) or ( $variable =~ m/:/ ) ) {
|
||||
chomp( $variable = qx{cygpath -u "$variable"} );
|
||||
}
|
||||
}
|
||||
return $variable;
|
||||
}
|
||||
#----------------------------------------------------------
|
||||
# Function name: WinPath
|
||||
# Description: Reformat a $sep seperated path using DOS paths.
|
||||
# Arguments: 1. Variable (string)
|
||||
# 2. Separaror (string)
|
||||
# Return value: Reformatted String
|
||||
#----------------------------------------------------------
|
||||
sub WinPath
|
||||
{
|
||||
my ( $variable, $d1, $sep, @split_var );
|
||||
|
||||
if ( $platform =~ m/cygwin/ ) {
|
||||
$variable = $_[ 0 ];
|
||||
$sep = $_[ 1 ];
|
||||
$variable =~ s/^\s+//g ; #remove leading spaces
|
||||
$variable =~ s/\s+$//g ; #remove trailing spaces
|
||||
$variable =~ s/(\$\{?\w+\}?)/$1/eeg ; # expand the variables
|
||||
$variable =~ s/(\$\{?\w+\}?)/$1/eeg ; # expand the variables twice!
|
||||
|
||||
@split_var = split(/$sep/,$variable);
|
||||
foreach $d1 ( @split_var ) {
|
||||
if ( $d1 =~ /(?:^\/[\w\.~ ]+)+/ ) {
|
||||
if ( $d1 =~ / / ) {
|
||||
# Use DOS 8.3 style to avoid quoting
|
||||
chomp( $d1 = qx{cygpath -d "$d1"} );
|
||||
} else {
|
||||
# Use "normal" filenames
|
||||
chomp( $d1 = qx{cygpath -w "$d1"} );
|
||||
}
|
||||
}
|
||||
}
|
||||
$variable = join(';',@split_var);
|
||||
|
||||
$variable =~ s/\//\\/g; # Remaining \ come from e.g.: ../foo/baa
|
||||
}
|
||||
|
||||
return $variable;
|
||||
}
|
||||
|
||||
#--------------------------------------------------------
|
||||
# Function name: GetCorrectPath
|
||||
# Description: Creates the build environment.
|
||||
# Arguments: 1. existing / original path
|
||||
# 2... pairs of <path, executable>
|
||||
# Return value: String - Correct Path
|
||||
#--------------------------------------------------------
|
||||
sub GetCorrectPath
|
||||
{
|
||||
sub PathLookup
|
||||
{
|
||||
my $cmd = shift;
|
||||
while (@_) {
|
||||
my $elem = shift;
|
||||
|
||||
-x "$elem/$cmd" && return $elem;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
sub SaneGrep
|
||||
{
|
||||
# Perl grep is unbelievably strange.
|
||||
my $needle = shift;
|
||||
while (@_) {
|
||||
my $haystack = shift;
|
||||
if ($needle eq $haystack) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub CleanupPath
|
||||
{
|
||||
my @elements = @_;
|
||||
my @cleanName = ();
|
||||
|
||||
while (@elements) {
|
||||
my $elem = shift @elements;
|
||||
if (!SaneGrep ($elem, @cleanName)) {
|
||||
push @cleanName, $elem;
|
||||
}
|
||||
}
|
||||
|
||||
return @cleanName;
|
||||
}
|
||||
|
||||
my $oldPath = shift;
|
||||
my @originalPairs = @_;
|
||||
my @pairs = @originalPairs;
|
||||
my @Path = split /$ps/, $oldPath;
|
||||
|
||||
while (@pairs) {
|
||||
my $path = shift @pairs;
|
||||
my $cmd = shift @pairs;
|
||||
my $to_append = 1;
|
||||
my $elem;
|
||||
|
||||
if (! -x "$path/$cmd") {
|
||||
AddWarning ("Missing executable $path/$cmd\n");
|
||||
}
|
||||
|
||||
for $elem (@Path) {
|
||||
if ($elem eq $path) {
|
||||
# print "Hit duplicate path in path; break\n";
|
||||
$to_append = 0;
|
||||
last;
|
||||
}
|
||||
if (-f "$elem/$cmd") {
|
||||
# print "Element already in path ...\n";
|
||||
unshift @Path, $path;
|
||||
$to_append = 0;
|
||||
last;
|
||||
} else {
|
||||
# print "No file $elem/$cmd\n";
|
||||
}
|
||||
}
|
||||
if ($to_append) {
|
||||
push @Path, $path;
|
||||
}
|
||||
}
|
||||
|
||||
@pairs = @originalPairs;
|
||||
while (@pairs) {
|
||||
my $path = shift @pairs;
|
||||
my $cmd = shift @pairs;
|
||||
my $realpath;
|
||||
|
||||
$realpath = PathLookup ($cmd, @Path);
|
||||
if (!($realpath eq $path)) {
|
||||
AddWarning ("Path conflict for executables " .
|
||||
"$path/$cmd against $realpath");
|
||||
}
|
||||
}
|
||||
|
||||
return join $ps, CleanupPath (@Path);
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
# Function name: AddWarning
|
||||
# Description: Adds any kind of warning for the user.
|
||||
# The warning will be shown at the end
|
||||
# of this script.
|
||||
# Arguments: 1. Add the configure warnings or the set_soenv
|
||||
# warning (string).
|
||||
# 2. Warning (string).
|
||||
# Return value: void
|
||||
#------------------------------------------------------------
|
||||
sub AddWarning
|
||||
{ if ( $_[ 0 ] eq "configure" )
|
||||
{ open( IN, $warnfile );
|
||||
while ( <IN> )
|
||||
{ $Warning = $Warning."* - ".$_;
|
||||
}
|
||||
close( IN );
|
||||
# Remove the temporary warning file.
|
||||
# unlink ( $warnfile );
|
||||
}
|
||||
elsif ( $_[ 0 ] eq "set_soenv" )
|
||||
{ my ( $arg1 );
|
||||
$arg1 = $_[ 1 ];
|
||||
chomp( $arg1 ); # cut off new line
|
||||
$Warning = $Warning."* - set_soenv: warning: $arg1 $newline"; # add the warning
|
||||
}
|
||||
}
|
||||
|
||||
# vim:set shiftwidth=4 softtabstop=4 expandtab: #
|
@@ -1510,7 +1510,6 @@ sub cancel_build {
|
||||
}
|
||||
print STDERR "-----------------------------------------------------------------------\n";
|
||||
print STDERR "\n";
|
||||
print STDERR "" . $ENV{'OOO_SHELL'} . "\n";
|
||||
print STDERR "cd " . $ENV{'SRC_ROOT'} . "\n";
|
||||
print STDERR "source ./build_env\n";
|
||||
print STDERR "cd $module\n";
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
# create ID file for the whole LibO tree. run it in toplevel dir
|
||||
|
||||
. ./config_host.mk && . ./Env.Host.sh
|
||||
. ./config_host.mk
|
||||
|
||||
# --with-outpath includes projects/$INPATH/inc (also solver/$INPATH/inc)
|
||||
if [ "$1" = "--with-outpath" ]; then
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
. ./config_host.mk && . ./Env.Host.sh
|
||||
. ./config_host.mk
|
||||
|
||||
omnicppoptions="--c++-kinds=+p --fields=+iaS --extra=+q"
|
||||
ctags -h "+.hdl.hrc" --langmap=c:+.hdl.hrc.src $omnicppoptions \
|
||||
|
@@ -61,8 +61,8 @@ fetch:
|
||||
@true
|
||||
|
||||
# fixme: can we prevent these exports in the first place?
|
||||
$(SRCDIR)/Env.Host.sh: autogen.lastrun configure.in ooo.lst.in set_soenv.in
|
||||
$(if $(filter reconfigure,$(gb_SourceEnvAndRecurse_STAGE)),$(SRCDIR)/autogen.sh,@echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
|
||||
$(SRCDIR)/config_host.mk: autogen.lastrun configure.in ooo.lst.in config_host.mk.in
|
||||
$(if $(filter reconfigure,$(gb_SourceEnvAndRecurse_STAGE)),$(SRCDIR)/autogen.sh,@echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/config.host.mk && exit 2)
|
||||
|
||||
|
||||
ifeq ($(strip $(gb_PARTIALBUILD)),)
|
||||
@@ -110,7 +110,7 @@ docs:
|
||||
distro-pack-install:
|
||||
@true
|
||||
|
||||
$(SRCDIR)/Env.Host.sh:
|
||||
$(SRCDIR)/config_host.mk:
|
||||
@true
|
||||
|
||||
clean-host:
|
||||
|
@@ -1,24 +1,24 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
#
|
||||
# Version: MPL 1.1 / GPLv3+ / LGPLv3+
|
||||
#
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License Version
|
||||
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
# the License or as specified alternatively below. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
# for the specific language governing rights and limitations under the
|
||||
# License.
|
||||
#
|
||||
#
|
||||
# Major Contributor(s):
|
||||
# [ Copyright (C) 2011 Bjoern Michaelsen <bjoern.michaelsen@canonical.com> (initial developer) ]
|
||||
#
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
#
|
||||
# For minor contributions see the git repository.
|
||||
#
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the terms of
|
||||
# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
|
||||
# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
|
||||
@@ -117,7 +117,7 @@ build: $(WORKDIR)/bootstrap $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(I
|
||||
$(call gb_BuildplTarget_command,instsetoo_native,--all)
|
||||
|
||||
cross_toolset: $(WORKDIR)/bootstrap $(SRCDIR)/src.downloaded
|
||||
source $(SRCDIR)/config_build.mk && source $(SRCDIR)/Env.Build.sh && $(call gb_BuildplTarget_command,$@,--all)
|
||||
source $(SRCDIR)/config_build.mk && $(call gb_BuildplTarget_command,$@,--all)
|
||||
|
||||
# experimental callcatcher target
|
||||
# http://www.skynet.ie/~caolan/Packages/callcatcher.html
|
||||
@@ -125,16 +125,13 @@ findunusedcode:
|
||||
@which callcatcher > /dev/null 2>&1 || \
|
||||
(echo "callcatcher not installed" && false)
|
||||
@sed -e s,$(INPATH),callcatcher,g $(SRCDIR)/config_host.mk > $(SRCDIR)/config_host_callcatcher.mk
|
||||
@sed -e s,config_host,config_host_callcatcher,g $(SRCDIR)/Env.Host.sh > $(SRCDIR)/Env.callcatcher.sh
|
||||
@mkdir -p $(SRCDIR)/solenv/callcatcher/bin && \
|
||||
ln -sf $(SRCDIR)/solenv/$(INPATH)/bin/dmake \
|
||||
$(SRCDIR)/solenv/callcatcher/bin/dmake && \
|
||||
source $(SRCDIR)/config_host_callcatcher.mk && \
|
||||
source $(SRCDIR)/Env.callcatcher.sh && \
|
||||
source $(SRCDIR)/solenv/bin/callcatchEnv.Set.sh && \
|
||||
$(call gb_BuildplTarget_command,instsetoo_native,--all)
|
||||
@source $(SRCDIR)/config_host_callcatcher.mk && \
|
||||
source $(SRCDIR)/Env.callcatcher.sh && \
|
||||
callanalyse \
|
||||
$$WORKDIR/LinkTarget/*/* \
|
||||
*/$$OUTPATH/bin/* \
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
# Version: MPL 1.1 / GPLv3+ / LGPLv3+
|
||||
#
|
||||
@@ -29,14 +29,14 @@
|
||||
# speed up if no target need to parse all modules
|
||||
gb_SpeedUpTargets_WRAPPEDBUILD:=
|
||||
ifneq ($(strip $(MAKECMDGOALS)),)
|
||||
ifeq ($(filter-out id tags docs distro-pack-install fetch help debugrun $(SRCDIR)/Env.Host.sh,$(MAKECMDGOALS)),)
|
||||
ifeq ($(filter-out id tags docs distro-pack-install fetch help debugrun $(SRCDIR)/config_host.mk,$(MAKECMDGOALS)),)
|
||||
gb_SpeedUpTargets_WRAPPEDBUILD:=T
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(gb_PARTIALBUILD)),)
|
||||
ifneq ($(strip $(MAKECMDGOALS)),)
|
||||
ifeq ($(filter-out clean distclean id tags docs distro-pack-install fetch help debugrun $(SRCDIR)/Env.Host.sh,$(MAKECMDGOALS)),)
|
||||
ifeq ($(filter-out clean distclean id tags docs distro-pack-install fetch help debugrun $(SRCDIR)/config_host.mk,$(MAKECMDGOALS)),)
|
||||
gb_SpeedUpTargets_WRAPPEDBUILD:=T
|
||||
endif
|
||||
endif
|
||||
|
@@ -14,7 +14,7 @@ gb_SourceEnvAndRecurse_buildpl=true
|
||||
else
|
||||
|
||||
SRCDIR:=$(realpath $(gb_MAKEFILEDIR))
|
||||
gb_SourceEnvAndRecurse_reconfigure=$(call gb_SourceEnvAndRecurse_recurse,$(SRCDIR)/Env.Host.sh,reconfigure)
|
||||
gb_SourceEnvAndRecurse_reconfigure=$(call gb_SourceEnvAndRecurse_recurse,$(SRCDIR)/config_host.mk,reconfigure)
|
||||
gb_SourceEnvAndRecurse_buildpl=$(call gb_SourceEnvAndRecurse_recurse,$(MAKECMDGOALS),buildpl)
|
||||
|
||||
endif
|
||||
@@ -22,14 +22,13 @@ endif
|
||||
source-env-and-recurse:
|
||||
@$(gb_SourceEnvAndRecurse_reconfigure) && \
|
||||
if test -f $(SRCDIR)/config_host.mk ; then . $(SRCDIR)/config_host.mk; fi && \
|
||||
if test -f $(SRCDIR)/Env.Host.sh; then . $(SRCDIR)/Env.Host.sh; fi && \
|
||||
if test -z "$${SOLARENV}"; then echo "no configuration found and could not create one" && exit 1; fi && \
|
||||
$(gb_SourceEnvAndRecurse_buildpl) && \
|
||||
$(call gb_SourceEnvAndRecurse_recurse,$(MAKECMDGOALS),gbuild) \
|
||||
|
||||
|
||||
ifneq ($(strip $(MAKECMDGOALS)),)
|
||||
ifneq ($(MAKECMDGOALS),$(SRCDIR)/Env.Host.sh)
|
||||
ifneq ($(MAKECMDGOALS),$(SRCDIR)/config_host.mk)
|
||||
$(eval $(MAKECMDGOALS) : source-env-and-recurse)
|
||||
endif
|
||||
endif
|
||||
|
Reference in New Issue
Block a user