Kaydet (Commit) 815f157c authored tarafından Vladimir Glazounov's avatar Vladimir Glazounov

CWS-TOOLING: integrate CWS configuretoplevel

2009-01-19 15:47:39 +0100 rene  r266508 : CWS-TOOLING: rebase CWS configuretoplevel to trunk@266428 (milestone: DEV300:m39)
2009-01-18 00:35:31 +0100 rene  r266462 : #i10000# Mac OS X "of course" has other paths...
2009-01-16 13:24:23 +0100 rene  r266415 : make OS2 use STLport...
2009-01-15 22:08:38 +0100 rene  r266393 : STLport for FreeBSD
2009-01-15 01:23:51 +0100 rene  r266333 : #i98048# harmonize STL default; default to *NOT* use STLport
2009-01-09 22:44:43 +0100 rene  r266120 : #i97428# try to find out XLIB via pkg-config
2009-01-09 22:41:18 +0100 rene  r266119 : #i97827# fail when we don't find make
2008-12-27 01:19:34 +0100 rene  r265812 : add make (dis)clean; force /bin/sh as we source *Enc.Set.sh
2008-12-27 01:16:31 +0100 rene  r265811 : fix makefile.rc for config.*/config_office move
2008-12-26 22:37:54 +0100 rene  r265810 : #i91641# in some cases, we also need the -Xbootclasspath at the second javac call
2008-12-26 17:55:11 +0100 rene  r265806 : actually commit Makefile.in
2008-12-25 19:24:24 +0100 rene  r265803 : CWS-TOOLING: rebase CWS configuretoplevel to trunk@265758 (milestone: DEV300:m38)
2008-12-10 22:51:06 +0100 rene  r265232 : #i96912# revert, cws swffixes02 has the right fix
2008-12-08 18:47:10 +0100 rene  r265014 : xulrunner has no /plugin or /nspr
2008-12-08 17:51:28 +0100 rene  r265013 : i96912# fix --with-system-mozilla
2008-12-05 13:05:55 +0100 rene  r264903 : #i95339#
2008-12-04 17:53:53 +0100 rene  r264865 : fix merge error
#i80238# add help for --with-epm
2008-12-04 17:44:28 +0100 rene  r264864 : #i91641# fix build with JDKs already including a version of rhino which conflicts with our ancient one
2008-12-04 17:40:48 +0100 rene  r264863 : i93429# check for sanity for expand.exe
2008-12-04 17:34:20 +0100 rene  r264862 : config_office changes from m33 to m37
2008-12-04 17:28:55 +0100 rene  r264861 : CWS-TOOLING: rebase CWS configuretoplevel to trunk@264807 (milestone: DEV300:m37)
2008-12-04 16:49:03 +0100 rene  r264856 : fix cws. part 5
2008-12-04 16:45:06 +0100 rene  r264855 : fix cws, part 4
2008-12-04 16:01:49 +0100 rene  r264850 : fix cws, part 3
2008-12-04 15:14:12 +0100 rene  r264848 : fix cws, part 2
üst 024e577d
# just dumb wrapper; make install comes later
SHELL=/bin/sh
all:
. ./*Env.Set.sh && \
./bootstrap && \
cd instsetoo_native && ../solenv/bin/build.pl --all
distclean:
. ./*Env.Set.sh && \
dmake distclean
clean:
. ./*Env.Set.sh && \
dmake clean
......@@ -65,11 +65,11 @@ fi
if test "$GUI" = "WNT" -a ! -x "$SOLARENV/$OUTPATH/bin/guw$EXEEXT"; then
echo ""
echo "Calling $GNUMAKE in guw"
cd "$SRC_ROOT/config_office/guw" || exit
cd "$SRC_ROOT/guw" || exit
$GNUMAKE || exit
echo ""
echo "guw has been successfully made"
cp -f "$SRC_ROOT/config_office/guw/guw$EXEEXT" "$SOLARENV/$OUTPATH/bin" || exit
cp -f "$SRC_ROOT/guw/guw$EXEEXT" "$SOLARENV/$OUTPATH/bin" || exit
echo ""
echo "guw copied to $SOLARENV/$OUTPATH/bin/guw$EXEEXT"
fi
......
See <http://tools.openoffice.org/#Build> for build instructions.
@echo off
setlocal
SET MY_ANT_HOME=e:/java150/apache-ant-1.7.0
SET JAVA_HOME=e:\java150
SET PATH=%JAVA_HOME%\bin;%PATH%;%MY_ANT_HOME%\bin;
sh -c "configure --with-system-python --with-system-openssl --with-system-icu --with-system-libxml --with-system-libxslt --disable-werror --with-use-shell=4nt --disable-mozilla --disable-epm --disable-odk --disable-qadevooo --with-x=no --disable-fontconfig --disable-gnome-vfs --disable-gtk --with-java=yes --disable-gcjaot --without-nas --without-fonts --with-ant-home=%MY_ANT_HOME%" | tee configure.log
endlocal
This source diff could not be displayed because it is too large. You can view the blob instead.
@echo off
setlocal
SET ANT_HOME=C:\PROGRAMMI\jsdk142\apache-ant-1.7.0
SET JAVA_HOME=C:\PROGRAMMI\jsdk142
SET PATH=%JAVA_HOME%\bin;%PATH%;%ANT_HOME%\bin;
sh -c "configure --disable-werror --with-use-shell=4nt --disable-mozilla --disable-epm --disable-odk --disable-qadevooo --with-x=no --disable-fontconfig --disable-gnome-vfs --disable-gtk --with-java=yes --disable-gcjaot --without-nas --without-fonts" | tee configure.log
endlocal
......@@ -28,7 +28,7 @@ AC_ARG_WITH(gnu-cp,
AC_ARG_WITH(gpc,
[ --without-gpc Use the internal polygon clipping code instead of
the external GPC polygon clipping library.
],,if test ! -e ../external/gpc/gpc.c && test ! -e ../external/gpc/gpc.h; then without_gpc=yes; fi)
],,if test ! -e ./external/gpc/gpc.c && test ! -e ./external/gpc/gpc.h; then without_gpc=yes; fi)
AC_ARG_ENABLE(ldap,
[ --disable-ldap Disables the use of LDAP backend via Netscape/Mozilla
or OpenLDAP LDAP SDK
......@@ -90,6 +90,12 @@ AC_ARG_ENABLE(epm,
epm, however epm is useless for large scale
package building.
],,enable_epm="yes")
AC_ARG_WITH(epm,
[ --with-epm Decides which epm to use. Default is to use
the one from the system if one is built. When
either this is not there or you say =internal
epm will be built.
],,)
AC_ARG_WITH(package-format,
[ --with-package-format specify package format(s) for OOo installsets.
Default is "normal" one of the OS/Distribution.
......@@ -253,7 +259,7 @@ AC_ARG_ENABLE(kdeab,
],,if test "$enable_kde" = "yes"; then enable_kdeab=yes; fi)
AC_ARG_ENABLE(binfilter,
[ --disable-binfilter Disable legacy binary file formats filters
],,if ! test -d ../binfilter; then enable_binfilter=no; fi)
],,if ! test -d ./binfilter; then enable_binfilter=no; fi)
AC_ARG_ENABLE(rpath,
[ --disable-rpath Disable the use of relative paths in shared libraries
],,)
......@@ -379,14 +385,14 @@ AC_ARG_WITH(beanshell-jar,
AC_ARG_ENABLE(minimizer,
[ --enable-minimizer enables the build of the Presentation Minimizer extension
],,)
AC_ARG_ENABLE(presenter-screen,
[ --enable-presenter-screen enables the build of the Presenter Screen extension
AC_ARG_ENABLE(presenter-console,
[ --enable-presenter-console enables the build of the Presenter Console extension
],,)
AC_ARG_ENABLE(pdfimport,
[ --disable-pdfimport disables the build of the PDF Import extension and xpdf
[ --enable-pdfimport enables the build of the PDF Import extension and xpdf
],,)
AC_ARG_ENABLE(mediawiki,
[ --disable-mediawiki disables the build of the MediaWiki Editor extension
AC_ARG_ENABLE(wiki-publisher,
[ --enable-wiki-publisher enables the build of the Wiki Publisher extension
],,)
AC_ARG_WITH(commons-codec-jar,
[ --with-commons-codec-jar=JARFILE Specify path to jarfile manually ],
......@@ -411,12 +417,9 @@ AC_ARG_WITH(servlet-api-jar,
AC_ARG_ENABLE(ogltrans,
[ --enable-ogltrans enables the build of the OGLTrans extension
],,)
AC_ARG_ENABLE(reportdesign,
[ --disable-reportdesign disables the build of the Report Builder extension
AC_ARG_ENABLE(report-builder,
[ --enable-report-builder disables the build of the Report Builder extension
],,)
AC_ARG_ENABLE(minimizer,
[ --disable-minimizer disables the build of the Presentation Minimizer extension
],,enable_minimizer=yes)
AC_ARG_WITH(system-jfreereport,
[ --with-system-jfreereport Use JFreeReport already on system
],,)
......@@ -448,6 +451,10 @@ AC_ARG_WITH(libloader-jar,
[ --with-libloader-jar=JARFILE Specify path to jarfile manually ],
[ LIBLOADER_JAR="$withval"
])
AC_ARG_WITH(libloader-jar,
[ --with-libloader-jar=JARFILE Specify path to jarfile manually ],
[ LIBLOADER_JAR="$withval"
])
AC_ARG_WITH(libformula-jar,
[ --with-libformula-jar=JARFILE Specify path to jarfile manually ],
[ LIBFORMULA_JAR="$withval"
......@@ -456,7 +463,7 @@ AC_ARG_WITH(librepository-jar,
[ --with-librepository-jar=JARFILE Specify path to jarfile manually ],
[ LIBREPOSITORY_JAR="$withval"
])
AC_ARG_WITH(libfonts-java-jar,
AC_ARG_WITH(libfonts-jar,
[ --with-libfonts-jar=JARFILE Specify path to jarfile manually ],
[ LIBFONTS_JAR="$withval"
])
......@@ -641,13 +648,13 @@ AC_ARG_WITH(directx-home,
Usage: --with-directx-home=<absolute path to Microsoft DirectX SDK>
],,)
AC_ARG_WITH(local-solenv,
[ --with-local-solenv If you have solenv in a location other than ../solenv,
[ --with-local-solenv If you have solenv in a location other than ./solenv,
please supply the path here.
Usage: --with-local-solenv=<absolute path to solenv>
],,)
AC_ARG_WITH(local-solver,
[ --with-local-solver if you have solver in a location other than ../solver,
[ --with-local-solver if you have solver in a location other than ./solver,
please supply the path here.
Usage: --with-local-solver=<absolute path to solver>
......@@ -827,16 +834,17 @@ fi
AC_SUBST(LOCAL_SOLENV)
if test "$LOCAL_SOLENV" = "DEFAULT"; then
_solenv="../solenv"
_solenv="./solenv"
else
_solenv="$LOCAL_SOLENV"
fi
AC_SUBST(_solenv)
if test -e $_solenv/inc/minor.mk; then
# Get UPD number from ../solenv/inc/minor.mk
UPD="`grep RSCVERSION= ../solenv/inc/minor.mk | $AWK -F"=" '{ print $2 }'`"
# Get UPD number from ./solenv/inc/minor.mk
UPD="`grep RSCVERSION= $_solenv/inc/minor.mk | $AWK -F"=" '{ print $2 }'`"
AC_SUBST(UPD)
SOURCEVERSION="`grep SOURCEVERSION= ../solenv/inc/minor.mk | $AWK -F"=" '{ print $2 }'`"
SOURCEVERSION="`grep SOURCEVERSION= $_solenv/inc/minor.mk | $AWK -F"=" '{ print $2 }'`"
AC_SUBST(SOURCEVERSION)
else
AC_MSG_ERROR([$_solenv/inc/minor.mk missing but needed for architecture/os detecion and proper environment script generation...])
......@@ -845,7 +853,6 @@ fi
dnl ===================================================================
dnl Checks for the operating system and processor.
dnl ===================================================================
AC_CONFIG_AUX_DIRS([$_solenv/bin])
AC_CANONICAL_SYSTEM
if test "$build" != "$host" -o "$build" != "$target" \
-o "$host" != "$target"; then
......@@ -1288,6 +1295,13 @@ dnl The following sets the with_use_shell variable.
dnl ===================================================================
AC_MSG_CHECKING([which shell to use])
if test $_os = "WINNT"; then
dnl Sanity check! expand.exe in cygwin could cause build error.
dnl ===================================================================
if test -x "/usr/bin/expand.exe" ; then
AC_MSG_ERROR([cygwin has expand.exe!
The expand.exe in cygwin could cause build error. Please remove or rename it.])
fi
dnl ===================================================================
if test "$with_use_shell" != "tcsh" -a "$with_use_shell" != "bash" -a "$with_use_shell" != "4nt"; then
AC_MSG_ERROR([only "tcsh","bash" or "4nt" are supported options])
fi
......@@ -1480,18 +1494,16 @@ for a in "$MAKE" $GNUMAKE make gmake gnumake; do
fi
done
AC_MSG_RESULT($GNUMAKE)
if test -z "$GNUMAKE"; then
AC_MSG_ERROR([not found. install GNU make.])
fi
AC_MSG_CHECKING([the GNU make version])
dnl Change empty GNUMAKE from warning to error, pending testing.
if test -z "$GNUMAKE"; then
AC_MSG_WARN([not found build may fail])
echo "GNU make not found build may fail" >> warn
else
_make_version=`$GNUMAKE --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`;
_make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
if test "$_make_longver" -ge "037901" ; then
_make_version=`$GNUMAKE --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`;
_make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
if test "$_make_longver" -ge "037901" ; then
AC_MSG_RESULT([$GNUMAKE $_make_version])
else
else
if test "$_os" = "Darwin"; then
if test "$_make_longver" -ge "037900" ; then
AC_MSG_RESULT([$GNUMAKE $_make_version])
......@@ -1501,7 +1513,6 @@ else
else
AC_MSG_ERROR([failed ($GNUMAKE $_make_version need 3.79.1+)])
fi
fi
fi
AC_SUBST(GNUMAKE)
......@@ -1647,7 +1658,7 @@ if test "$_os" = "WINNT"; then
AC_MSG_CHECKING([for friendly registry keys])
# VS.Net 2003, VS.Net 2005
if test -z "$with_cl_home"; then
vctest=`./oowintool --msvc-productdir`;
vctest=`./solenv/bin/oowintool --msvc-productdir`;
if test -x "$vctest/bin/cl.exe"; then
with_cl_home=$vctest;
fi
......@@ -1773,13 +1784,13 @@ if test "$COMEX" -ge "10"; then
MIDL_PATH="$with_cl_home/../Common7/Tools/Bin"
fi
if test -z "$MIDL_PATH" ; then
vstest=`./oowintool --msvs-productdir`;
vstest=`./solenv/bin/oowintool --msvs-productdir`;
if test -x "$vstest/Common7/Tools/Bin/midl.exe" ; then
MIDL_PATH="$vstest/Common7/Tools/Bin"
fi
fi
if test -z "$MIDL_PATH" ; then
psdktest=`./oowintool --psdk-home`
psdktest=`./solenv/bin/oowintool --psdk-home`
if test -x "$psdktest/Bin/midl.exe" ; then
MIDL_PATH="$psdktest/Bin"
fi
......@@ -1802,7 +1813,7 @@ if test "$COMEX" -ge "10"; then
if test -x "$with_csc_path/csc.exe"; then
CSC_PATH="$with_csc_path"
else
csctest=`./oowintool --csc-compilerdir`;
csctest=`./solenv/bin/oowintool --csc-compilerdir`;
if test -x "$csctest/csc.exe"; then
CSC_PATH="$csctest"
fi
......@@ -1827,11 +1838,11 @@ if test "$COMEX" -ge "10"; then
FRAME_HOME="$with_cl_home/../SDK/v1.1"
fi
if test -z "$FRAME_HOME" ; then
frametest=`./oowintool --dotnetsdk-dir`
frametest=`./solenv/bin/oowintool --dotnetsdk-dir`
if test -f "$frametest/lib/mscoree.lib"; then
FRAME_HOME="$frametest"
else
frametest=`./oowintool --psdk-home`
frametest=`./solenv/bin/oowintool --psdk-home`
if test -f "$frametest/lib/mscoree.lib"; then
FRAME_HOME="$frametest"
fi
......@@ -2292,25 +2303,29 @@ dnl ===================================================================
dnl Checks for what the default STL should be
dnl ===================================================================
AC_MSG_CHECKING([what the default STL should be])
DEFAULT_TO_STLPORT="yes"
DEFAULT_TO_STLPORT="no"
if test "$_os" = "Linux"; then
case "$build_cpu" in
i?86|powerpc|sparc)
i?86)
DEFAULT_TO_STLPORT="yes"
;;
*)
DEFAULT_TO_STLPORT="no"
;;
esac
elif test "$_os" = "Darwin"; then
DEFAULT_TO_STLPORT="no"
elif test "$_os" = "SunOS"; then
DEFAULT_TO_STLPORT="yes"
elif test "$_os" = "WINNT" -a "$WITH_MINGWIN" = "yes"; then
DEFAULT_TO_STLPORT="no"
elif test "$_os" = "WINNT" -o "$_os" = "OS2"; then
DEFAULT_TO_STLPORT="yes"
elif test "$_os" = "FreeBSD"; then
DEFAULT_TO_STLPORT="yes"
fi
if test "$DEFAULT_TO_STLPORT" = "yes"; then
AC_MSG_RESULT([stlport])
else
AC_MSG_RESULT([gcc])
AC_MSG_RESULT([system])
fi
if test "$WITH_STLPORT" = "auto"; then
WITH_STLPORT=$DEFAULT_TO_STLPORT
......@@ -2494,6 +2509,7 @@ _ACEOF
gccvisbroken=yes;
fi
fi
rm -f visibility.s
AC_MSG_RESULT([$gccvisbroken])
if test "$gccvisbroken" = "yes"; then
......@@ -2569,7 +2585,7 @@ fi
if test "$_os" = "WINNT"; then
if test -z "$with_jdk_home"; then
_jdk_home=`./oowintool --jdk-home`
_jdk_home=`./solenv/bin/oowintool --jdk-home`
if test -d "$_jdk_home"; then
with_jdk_home="$_jdk_home"
fi
......@@ -2661,25 +2677,24 @@ if test "$SOLAR_JAVA" != ""; then
# JAVA_HOME=$with_jdk_home
#
elif test `$JAVAINTERPRETER -version 2>&1 | awk '{ print }' | grep -c "IBM"` -gt 0; then
AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.in])
# JDK=ibm
#
# dnl IBM JDK specific tests
# _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED s/[[-A-Za-z]]*//`
# _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
#
# if test "$_jdk_ver" -lt 10301; then
# AC_MSG_ERROR([IBM JDK is too old, you need at least 1.3.1])
# fi
#
# AC_MSG_RESULT([checked (IBM JDK $_jdk)])
#
# if test "$with_jdk_home" = ""; then
# AC_MSG_ERROR([In order to successfully build OpenOffice.org using the IBM JDK,
#you must use the "--with-jdk-home" configure option explicitly])
# fi
#
# JAVA_HOME=$with_jdk_home
JDK=ibm
dnl IBM JDK specific tests
_jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED s/[[-A-Za-z]]*//`
_jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
if test "$_jdk_ver" -lt 10600; then
AC_MSG_ERROR([IBM JDK is too old, you need at least 1.6])
fi
AC_MSG_RESULT([checked (IBM JDK $_jdk)])
if test "$with_jdk_home" = ""; then
AC_MSG_ERROR([In order to successfully build OpenOffice.org using the IBM JDK,
you must use the "--with-jdk-home" configure option explicitly])
fi
JAVA_HOME=$with_jdk_home
else
JDK=sun
......@@ -3264,7 +3279,7 @@ if test "z$enable_odk" = "z" -o "$enable_odk" != "no"; then
AC_MSG_RESULT([yes])
if test "$WITH_JAVA" != "no"; then
AC_MSG_CHECKING([for external/unowinreg/unowinreg.dll])
if ! test -f "../external/unowinreg/unowinreg.dll"; then
if ! test -f "./external/unowinreg/unowinreg.dll"; then
HAVE_UNOWINREG_DLL=no
else
HAVE_UNOWINREG_DLL=yes
......@@ -4091,11 +4106,11 @@ else
enable_build_mozilla=1
AC_MSG_RESULT([$MOZILLA_TOOLKIT])
fi
if test "$_os" = "Darwin" && test "$MOZILLA_TOOLKIT" != "gtk2"; then
#only gtk2 toolkit supported - xlib or cocoa nees glib1 and libIDL1 - the latter is not
#available using fink, mac (carbon) doesn't work because xcode installs conflicting headers
AC_MSG_ERROR([Only gtk2 toolkit supported on Mac, sorry.])
fi
#if test "$_os" = "Darwin" && test "$MOZILLA_TOOLKIT" != "gtk2"; then
# #only gtk2 toolkit supported - xlib or cocoa nees glib1 and libIDL1 - the latter is not
# #available using fink, mac (carbon) doesn't work because xcode installs conflicting headers
# AC_MSG_ERROR([Only gtk2 toolkit supported on Mac, sorry.])
#fi
AC_SUBST(MOZILLA_TOOLKIT)
......@@ -4126,7 +4141,7 @@ if test "$BUILD_MOZAB" = "TRUE"; then
fi
for e in gz bz2; do
AC_MSG_CHECKING([for $MOZILLA_SOURCE_VERSION.tar.$e])
if test ! -e "../moz/download/$MOZILLA_SOURCE_VERSION.tar.$e" && test "$HAVE_MOZILLA_TARBALL" != "y"; then
if test ! -e "./moz/download/$MOZILLA_SOURCE_VERSION.tar.$e" && test "$HAVE_MOZILLA_TARBALL" != "y"; then
AC_MSG_RESULT([not found])
HAVE_MOZILLA_TARBALL=n
else
......@@ -4142,9 +4157,9 @@ http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla$MOZILLA_VERSION/
fi
if test "$_os" = "WINNT"; then
AC_MSG_CHECKING([for glib and libIDL binaries])
if test ! -e "../moz/download/vc71-glib-1.2.10-bin.zip" \
-o ! -e "../moz/download/vc71-libIDL-0.6.8-bin.zip" \
-o ! -e "../moz/download/wintools.zip" ; then
if test ! -e "./moz/download/vc71-glib-1.2.10-bin.zip" \
-o ! -e "./moz/download/vc71-libIDL-0.6.8-bin.zip" \
-o ! -e "./moz/download/wintools.zip" ; then
AC_MSG_ERROR([One or more of the following archives is missing in moz/download/
vc71-glib-1.2.10-bin.zip
vc71-libIDL-0.6.8-bin.zip
......@@ -4155,9 +4170,15 @@ AC_MSG_ERROR([One or more of the following archives is missing in moz/download/
AC_MSG_RESULT([ok])
fi
elif test "$_os" = "Darwin"; then
# only gtk2 supported - see above
if test "$MOZILLA_TOOLKIT" = "gtk2"; then
AC_MSG_NOTICE([checking whether mozilla can be built...])
PKG_CHECK_MODULES(MOZGTK2, gtk+-2.0 >= 2.4 libIDL-2.0 >= 0.8, AC_MSG_NOTICE([OK - can build mozilla]), AC_MSG_ERROR([Prerequisites to build mozilla not met. Either use the precompiled mozilla binaries or install the missing packages]))
else
PKG_CHECK_MODULES(MOZLIBREQ, libIDL >= 0.6.3 libIDL <= 0.6.8, MOZIDL="TRUE", MOZIDL="")
if test -z "$MOZIDL"; then
AC_MSG_ERROR([libIDL 0.6.3 - 0.6.8 is needed when not using GTK2 to build mozilla.])
fi
fi
else
# Generic Unix/Linux section
if test "$MOZILLA_TOOLKIT" = "gtk2"; then
......@@ -4312,6 +4333,8 @@ elif test "$_os" != "WINNT" ; then
else
AC_MSG_RESULT([yes])
AC_CHECK_HEADERS(X11/Xaw/Label.h,[],[AC_MSG_ERROR([Xaw include headers not found])])
AC_CHECK_LIB(Xaw, main, [],
[AC_MSG_ERROR(Xaw library not found or functional)], [])
fi
dnl ===================================================================
......@@ -4350,7 +4373,10 @@ else
fi
AC_SUBST(XINC)
if test "$x_libraries" = "default_x_libraries"; then
XLIB=`$PKG_CONFIG --variable=libdir x11`
if test "x$XLIB" = x; then
XLIB="/usr/lib"
fi
else
XLIB="$x_libraries"
fi
......@@ -4692,7 +4718,7 @@ if test \( "$_os" = "WINNT" \) ; then
AC_MSG_CHECKING([for PSDK files])
if test -z "$with_psdk_home"; then
# This first line will detect a February 2003 Microsoft Platform SDK
PSDK_HOME=`./oowintool --psdk-home`
PSDK_HOME=`./solenv/bin/oowintool --psdk-home`
# But there might be also an April 2005 PSDK, unfortunately MS changed
# the registry entry. (we prefer the old version!?)
if test -z "$PSDK_HOME"; then
......@@ -4820,7 +4846,7 @@ if test "$_os" = "WINNT" ; then
if test -e "$with_nsis_path/nsis.exe"; then
NSIS_PATH="$with_nsis_path"
fi
nsistest=`./oowintool --nsis-dir`;
nsistest=`./solenv/bin/oowintool --nsis-dir`;
if test -x "$nsistest/nsis.exe"; then
NSIS_PATH="$nsistest"
fi
......@@ -5016,7 +5042,7 @@ dnl Windows builds need unicows.dll in external/unicows/
dnl ===================================================================
if test "$_os" = "WINNT"; then
AC_MSG_CHECKING([for unicows.dll])
if test -x ../external/unicows/unicows.dll; then
if test -x ./external/unicows/unicows.dll; then
AC_MSG_RESULT([found])
else
AC_MSG_ERROR([The Microsoft Layer for Unicode (unicows.dll) is missing in external/unicows/.
......@@ -5032,7 +5058,7 @@ dnl Windows builds need dbghelp.dll in external/dbghelp/
dnl ===================================================================
if test "$_os" = "WINNT"; then
AC_MSG_CHECKING([for dbghelp.dll])
if test -x ../external/dbghelp/dbghelp.dll; then
if test -x ./external/dbghelp/dbghelp.dll; then
AC_MSG_RESULT([found])
else
AC_MSG_ERROR([dbghelp.dll is missing in external/dbghelp/.
......@@ -5044,13 +5070,13 @@ may have to search Microsoft's website.) Last time it was seen at:
fi
dnl ===================================================================
dnl Windows builds - use oowintool to copy CRT dlls and manifest
dnl Windows builds - use solenv/bin/oowintool to copy CRT dlls and manifest
dnl ===================================================================
if test "$_os" = "WINNT"; then
if ./oowintool --msvc-copy-dlls ../external/msvcp ; then
if ./solenv/bin/oowintool --msvc-copy-dlls ./external/msvcp ; then
:
else
AC_MSG_ERROR([oowintool failed to copy CRT])
AC_MSG_ERROR([solenv/bin/oowintool failed to copy CRT])
fi
fi
......@@ -5059,7 +5085,7 @@ dnl Windows builds need gdiplus.dll in external/gdiplus/
dnl ===================================================================
if test "$_os" = "WINNT"; then
AC_MSG_CHECKING([for gdiplus.dll])
if test -x ../external/gdiplus/gdiplus.dll; then
if test -x ./external/gdiplus/gdiplus.dll; then
AC_MSG_RESULT([found])
else
AC_MSG_ERROR([gdiplus.dll is missing in external/gdiplus/.
......@@ -5073,7 +5099,7 @@ dnl ===================================================================
dnl Windows builds - attempt to auto-copy required instmsiX.exe into external/
dnl ===================================================================
if test "$_os" = "WINNT"; then
./oowintool --msvc-copy-instmsi ../external/msi
./solenv/bin/oowintool --msvc-copy-instmsi ./external/msi
fi
dnl ===================================================================
......@@ -5082,14 +5108,14 @@ dnl ===================================================================
if test "$_os" = "WINNT"; then
if test "$COMEX" -ge "10"; then
AC_MSG_CHECKING([for instmsia.exe/instmsiw.exe])
if test -x ../external/msi/instmsia.exe -a -x ../external/msi/instmsiw.exe; then
if test -x ./external/msi/instmsia.exe -a -x ./external/msi/instmsiw.exe; then
AC_MSG_RESULT([found])
else
MSIAPATH=`/bin/find "$COMPATH/../.." -iname instmsia.exe | head -n 1`
MSIWPATH=`/bin/find "$COMPATH/../.." -iname instmsiw.exe | head -n 1`
if test -n "$MSIAPATH" -a -n "$MSIWPATH"; then
cp "$MSIAPATH" ../external/msi/ && chmod +x ../external/msi/instmsia.exe && MSIACOPY="OK"
cp "$MSIWPATH" ../external/msi/ && chmod +x ../external/msi/instmsiw.exe && MSIWCOPY="OK"
cp "$MSIAPATH" ./external/msi/ && chmod +x ./external/msi/instmsia.exe && MSIACOPY="OK"
cp "$MSIWPATH" ./external/msi/ && chmod +x ./external/msi/instmsiw.exe && MSIWCOPY="OK"
fi
if test -z "$MSIACOPY" -o -z "$MSIWCOPY"; then
AC_MSG_ERROR([instmsia.exe and/or instmsiw.exe are/is missing in the default location.
......@@ -5115,12 +5141,12 @@ if test "$with_gpc" != "no" && test "$without_gpc" != "yes"; then
AC_MSG_RESULT([GPC])
AC_MSG_CHECKING([for GPC files])
if test -f ../external/gpc/gpc.h; then
if test -f ./external/gpc/gpc.h; then
HAVE_GPC_H="yes"
else
HAVE_GPC_H="no"
fi
if test -f ../external/gpc/gpc.c; then
if test -f ./external/gpc/gpc.c; then
HAVE_GPC_C="yes"
else
HAVE_GPC_C="no"
......@@ -5334,7 +5360,7 @@ fi
AC_SUBST(ENABLE_MINIMIZER)
AC_MSG_CHECKING([whether to build the Presenter Screen extension])
if test -n "$enable_presenter_screen" -a "$enable_presenter_screen" != "no"; then
if test -n "$enable_presenter_console" -a "$enable_presenter_screen" != "no"; then
AC_MSG_RESULT([yes])
ENABLE_PRESENTER_SCREEN=YES
else
......@@ -5343,10 +5369,6 @@ else
fi
AC_SUBST(ENABLE_PRESENTER_SCREEN)
if test "$ENABLE_PRESENTER_SCREEN" = "YES" -o "$ENABLE_MINIMIZER" = "YES"; then
BUILD_TYPE="$BUILD_TYPE SDEXT"
fi
AC_MSG_CHECKING([whether to build the PDF Import extension])
if test -n "$enable_pdfimport" -a "$enable_pdfimport" != "no"; then
AC_MSG_RESULT([yes])
......@@ -5365,8 +5387,13 @@ if test -n "$enable_pdfimport" -a "$enable_pdfimport" != "no"; then
AC_MSG_RESULT([internal])
SYSTEM_POPPLER=NO
BUILD_TYPE="$BUILD_TYPE XPDF"
AC_MSG_CHECKING([for xpdf module])
if test -d ./xpdf; then
AC_MSG_RESULT([OK])
else
AC_MSG_ERROR([not existing. get it (did you get the -extensions tarball?)])
fi
fi
else
AC_MSG_RESULT([no])
ENABLE_PDFIMPORT=NO
......@@ -5376,9 +5403,25 @@ AC_SUBST(SYSTEM_POPPLER)
AC_SUBST(POPPLER_CFLAGS)
AC_SUBST(POPPLER_LIBS)
AC_MSG_CHECKING([whether to build the MediaWiki Editor extension])
if test -n "$enable_mediawiki" -a "$enable_mediawiki" != "no" && test "$WITH_JAVA" != "no"; then
if test "$ENABLE_PRESENTER_SCREEN" = "YES" -o "$ENABLE_MINIMIZER" = "YES" -o "$ENABLE_PDFIMPORT" = "YES"; then
AC_MSG_CHECKING([for sdext module])
if test -d ./sdext; then
AC_MSG_RESULT([OK])
else
AC_MSG_ERROR([not existing. get it (did you get the -extensions tarball?)])
fi
BUILD_TYPE="$BUILD_TYPE SDEXT"
fi
AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
if test -n "$enable_wiki_publisher" -a "$enable_wiki_publisher" != "no" && test "$WITH_JAVA" != "no"; then
AC_MSG_RESULT([yes])
AC_MSG_CHECKING([for swext module])
if test -d ./swext; then
AC_MSG_RESULT([OK])
else
AC_MSG_ERROR([not existing. get it (did you get the -extensions tarball?)])
fi
ENABLE_MEDIAWIKI=YES
AC_MSG_CHECKING([which Apache commons-* libs to use])
if test "$with_system_apache_commons" == "yes"; then
......@@ -5451,9 +5494,9 @@ AC_SUBST(SYSTEM_SERVLETAPI)
AC_SUBST(SERVLETAPI_JAR)
AC_MSG_CHECKING([whether to build the Report Builder extension])
if test -n "$enable_reportdesign" -a "$enable_reportdesign" != "no" && test "$WITH_JAVA" != "no"; then
if test -n "$enable_report_builder" -a "$enable_report_builder" != "no" && test "$WITH_JAVA" != "no"; then
AC_MSG_RESULT([yes])
ENABLE_REPORTDESIGN=YES
ENABLE_REPORTBUILDER=YES
AC_MSG_CHECKING([which jfreereport libs to use])
if test "$with_system_jfreereport" == "yes"; then
SYSTEM_JFREEREPORT=YES
......@@ -5616,16 +5659,22 @@ if test -n "$enable_reportdesign" -a "$enable_reportdesign" != "no" && test "$WI
else
AC_MSG_RESULT([internal])
AC_MSG_CHECKING([for jfreereport module])
if test -d ./jfreereport; then
AC_MSG_RESULT([OK])
else
AC_MSG_ERROR([not existing. get it (did you get the -extensions tarball?)])
fi
SYSTEM_JFREEREPORT=NO
BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
fi
BUILD_TYPE="$BUILD_TYPE REPORTDESIGN"
else
AC_MSG_RESULT([no])
ENABLE_REPORTDESIGN=NO
ENABLE_REPORTBUILDER=NO
SYSTEM_JFREEREPORT=NO
fi
AC_SUBST(ENABLE_REPORTDESIGN)
AC_SUBST(ENABLE_REPORTBUILDER)
AC_SUBST(SYSTEM_JFREEREPORT)
AC_SUBST(JCOMMON_JAR)
AC_SUBST(SAC_JAR)
......@@ -6322,9 +6371,9 @@ AC_SUBST(LOCAL_SOLVER)
AC_SUBST(BUILD_TYPE)
# make sure config.guess is +x; we execute config.guess, so it has to be so;
chmod +x $_solenv/bin/config.guess
chmod +x ./config.guess
AC_OUTPUT([set_soenv])
AC_OUTPUT([set_soenv Makefile])
dnl Executing the set_soenv script to setup the environment variables.
chmod a+x set_soenv
......
......@@ -587,6 +587,1384 @@ match2s(const string argument, const char *pattern, string &sub1, string &sub2)
}
// Replace path entry with myCygpath() version
void rep_subn_cyg(string &argument)
{
// accept ["']<entry>["']:["']<entry>["']:... to make the
// $(WRAPCMD) echo 1 ICON $(EMQ)"$(APP1ICON)$(EMQ)"
// work in ?tg_app.mk.
// FIXME: Better would be to use a DOSified $(APP1ICON) there and remove
// the special " treatment here.
const char *pattern = "(^|[;,])[\'\"]?([[:alnum:]_~. +-]*(/[[:alnum:]_~. +-]+)+/?)[\'\"]?([;,]|$)";
const int subexp = 2;
int status, pos=0;
regex_t re;
string repstr;
string::size_type oLen, nLen;
const int maxsub = subexp+1; // One more than the maximal subexpression
regmatch_t match[maxsub];
if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
Fatal("regcomp had a problem."); /* report error */
}
status = regexec (&re, argument.c_str() + pos, maxsub, match, 0);
while (status == 0) { /* While matches found. */
// Classical assert()
if (match[subexp].rm_eo == -1) {
Fatal("Nonexisting subexpression specified!");
}
oLen = match[subexp].rm_eo - match[subexp].rm_so;
repstr.assign(argument.c_str() + pos + match[subexp].rm_so, oLen);
// Do not replace with shortpaths
myCygpath(repstr, 0);
nLen = repstr.length();
// replace
argument.replace( pos + match[subexp].rm_so, oLen, repstr );
/* Substring found between match[0].rm_so and match[0].rm_eo. */
/* This call to regexec() finds the next match. */
pos += match[0].rm_eo + nLen - oLen ;
// Either the last match did end in ';' or we are at the end of para.
// REG_NOTBOL is not used because we skip over the ';' by using pos.
status = regexec (&re, argument.c_str() + pos, maxsub, match, 0);
}
if (status != REG_NOMATCH) {
Fatal("regexec had a problem.");
}
regfree(&re);
}
// Replace all occurences of subexpression number "subexp" with "repl"
void rep_subn( string &argument, const char *pattern, int subexp, const char repl)
{
int status, pos=0;
regex_t re;
const int maxsub = subexp+1; // One more than the maximal subexpression
regmatch_t match[maxsub];
if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
Fatal("regcomp had a problem."); /* report error */
}
status = regexec (&re, argument.c_str() + pos, maxsub, match, 0);
while (status == 0) { /* While matches found. */
// Classical assert()
if (match[subexp].rm_eo == -1) {
Fatal("Nonexisting subexpression specified!");
}
argument[pos + match[subexp].rm_so] = repl;
/* Substring found between match[0].rm_so and match[0].rm_eo. */
/* This call to regexec() finds the next match. */
pos += match[0].rm_eo;
status = regexec (&re, argument.c_str() + pos, maxsub, match, REG_NOTBOL);
}
if (status != REG_NOMATCH) {
Fatal("regexec had a problem.");
}
regfree(&re);
}
// Replace all char1 with char2
void rep_char( string &argument, const char from, const char to)
{
string::size_type loc = 0;
while ( (loc = argument.find( from, loc )) != string::npos ) {
argument[loc] = to;
}
}
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: guw.cc,v $
* $Revision: 1.7 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
// guw - A wrapper program to execute windows programs with parameters that
// contain cygwin (POSIX) style pathnames.
// Todo: Add a -? switch to guw to issue a help page.
#include <string>
#include <list>
#include <vector>
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstddef>
#include <cerrno>
#include <sys/cygwin.h>
#include <windows.h>
#include <regex.h>
using std::string;
using std::list;
using std::vector;
using std::cout;
using std::cerr;
using std::endl;
using std::size_t;
void init_ignorepara(string command);
bool is_ignorepara(const string &para);
int winFormat(string &para);
void do_atcommand(string &para);
void myCygpath(string &path, int shortname = 1 );
void replace_cyg_env( void );
void Fatal( const string text );
int match2s(const string argument, const char *pattern, string &sub1, string &sub2);
void rep_subn_cyg(string &argument);
void rep_subn( string &argument, const char *pattern, int subexp, const char repl);
void rep_char( string &argument, const char from, const char to);
bool debug = false;
bool debug_light = false;
// The commands are treated case insensitive, the parameters
// are case sensitive.
const string ignorepara[] = { "echo /TEST",
"cl -clr: -Z",
"climaker StarOffice/OpenOffice",
"csc -target:",
"g++ -DLOCAL_RULE_LANGS -DUPD -DMINOR"
" -DBUILD_ID -DSC_INFO_OSVERSION",
"gcc -DUDATA_SO_SUFFIX -DSTATIC_O"
" -DPACKAGE -DU_MAKE",
"lib /OUT: -out: -def: -machine:",
"link /BASE: /COMMENT: /DEBUG: /DLL /ENTRY:"
" /MACHINE: /MAP /NODEFAULTLIB /OPT: /RELEASE"
" /STACK: /SUBSYSTEM: -NODEFAULTLIB:"
" -def: delayload: -implib: -map: -out:",
"rc -D",
"regcomp -env: vnd.sun.star.expand:"
" vnd.openoffice.pymodule: file:",
"regmerge /UCR",
"rsc -DOOO_" };
vector<string> ignorepara_vec;
// environment variables that are "winformatted" when -env is given
const string transformvars[] = { "SOLAR_VERSION",
"SOLARVERSION",
"SOLARVER",
"SRC_ROOT",
"LOCALINI",
"GLOBALINI",
"SOLARENV",
"STAR_INSTPATH",
"STAR_SOLARPATH",
"STAR_PACKMISC",
"STAR_SOLARENVPATH",
"STAR_INITROOT",
"STAR_STANDLST",
"CLASSPATH",
"JAVA_HOME" };
int main(int argc, char **argv) {
// initialize arglist with arguments
list<string> arglist(argv, argv + argc);
// Drop the first (filename) argument
arglist.pop_front();
// iterarot over cmdline elements
list<string>::iterator ele = arglist.begin();
// Allowed switch values
bool conv_cyg_arg = false;
// Look for switches to guw
// Supported: -env
// -dbg
// -ldbg
while ( !arglist.empty()
&& ele!=arglist.end()
&& (ele->find("-", 0) == 0) ) {
if (ele->find("-env", 0) == 0) {
if ( conv_cyg_arg )
Fatal("-env used twice!");
conv_cyg_arg = true;
ele = arglist.erase(ele);
continue;
}
else if (ele->find("-dbg", 0) == 0) {
debug = true;
ele = arglist.erase(ele);
continue;
}
else if (ele->find("-ldbg", 0) == 0) {
debug_light = true;
ele = arglist.erase(ele);
continue;
}
else {
// Ignore this switch
++ele;
}
}
// The next entry must be the program
string command;
if ( !arglist.empty() ) {
command.assign(*arglist.begin());
arglist.pop_front();
}
else
Fatal("guw needs at least one parameter.");
if ( debug )
cerr << "Command: " << command << "\n" << endl;
// Initialize parameter exception list (for this command)
init_ignorepara(command);
// Do something if -env was found
if ( conv_cyg_arg )
replace_cyg_env();
// loop and and DOSify the parameters
if ( debug )
cerr << "Transform the parameter\n" << endl;
ele=arglist.begin();
while ( ele != arglist.end() ) {
if ((*ele)[0] == '@')
do_atcommand(*ele);
else if (!is_ignorepara(*ele)) {
if ( debug ) {
cerr << "----------------" << endl;
cerr << "Process parameter: " << *ele << endl;
}
winFormat(*ele);
if ( debug )
cerr << "Transformed to: " << *ele << "\n" << endl;
}
++ele;
}
// create the argv[] for execvp(argv[0], argv);
ele=arglist.begin();
// const char *nargv[arglist.size()+2]; // or ..
char *nargv[arglist.size()+2];
// nargv[0] = command.c_str(); // or ..
nargv[0] = new char[command.length()+1];
// strcpy(nargv[0], command.c_str());
command.copy(nargv[0], command.length());
nargv[0][command.length()] = 0;
if ( debug )
cerr << "----------------\n" << endl;
if ( debug || debug_light )
cerr << "Execute: " << nargv[0];
int count = 1, sLen;
while ( ele != arglist.end() ) {
// nargv[count] = ele->c_str(); // or ..
sLen = ele->length();
nargv[count] = new char[sLen+1];
// strcpy(nargv[count], ele->c_str());
ele->copy(nargv[count], sLen);
nargv[count][sLen] = 0;
if ( debug || debug_light )
cerr << " " << nargv[count];
++count;
++ele;
}
// last nargv[] must be NULL
nargv[count] = NULL;
if ( debug || debug_light )
cerr << endl;
// Unfortunately the prototype of execvp does not like const char*,
// actually not const char* nargv[] coming from .c_str(). So either
// we copy everything into newly allocated variables or we force it
// with a cast. const_cast<char * const *>()
// execvp(nargv[0], const_cast<char * const *>(nargv) );
if ( execvp(nargv[0], nargv ) < 0 ) {
perror("Execvp error. Aborting.");
exit(1);
}
// Omit the deleting of the dynamically allocated nargv[] elements
// here as this part will never be reached.
return 0;
}
// Initialize exception list from global var ignorepara[]
void init_ignorepara(string fullcommand) {
const size_t kplen = sizeof(ignorepara)/sizeof(string *);
string shortcommand, cmd, para, sub2;
// First lowercase everything
for(size_t i=0;i<fullcommand.length();i++)
fullcommand[i] = tolower(fullcommand[i]);
// Remove a potential .exe
size_t slen = fullcommand.length();
// for slen == 3 this would yield string::npos otherwise
if ( slen > 4 && fullcommand.rfind(".exe") == slen - 4 )
fullcommand.erase(slen-4);
// get the program name - Only one subexpression
if (!match2s(fullcommand, "([[:alnum:]_~. +-]+)$",
shortcommand, sub2)) {
Fatal("No basename found in: " + fullcommand);
}
for (size_t i=0; i != kplen; ++i) {
std::istringstream line(ignorepara[i]);
line >> cmd;
if (shortcommand == cmd)
while (line >> para) {
ignorepara_vec.push_back(para);
}
}
return ;
}
// Check if command/parameter is in exception list.
bool is_ignorepara(const string &para) {
for( vector<string>::iterator it = ignorepara_vec.begin();
it != ignorepara_vec.end(); it++ ) {
if ( para.find(*it) != string::npos ) {
if ( debug )
cerr << "Found execption para: " << para << endl;
return true;
}
}
return false;
}
// Reformat para to DOSish format
int winFormat(string &para) {
string su1, su2;
// Instead of ([/[:alnum:]_~. +-]+) use ((/?[[:alnum:]_~. +-]+)+)
// find [-][-]X<something>=<path>, sometimes with quotes or "/" at the end
if (match2s(para, "^(-?-?[[:alpha:]][[:alnum:]_.-]*=)[\'\"]?((/?[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - ([-][-]<something>=<path>)\n"
<< " " << para << endl;
}
// find -X<something>:<path>, sometimes with quotes or "/" at the end
else if (match2s(para, "^(-[[:alpha:]][[:alnum:]_.]*:)[\'\"]?((/?[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (-<something>:<path>)\n"
<< " " << para << endl;
}
// find -X<something>:<NO-path>, and prevents translating of these.
else if (match2s(para, "^(-[[:alpha:]][[:alnum:]_]*:)(.*)$",
su1, su2)) {
// myCygpath(su2);
// para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (-<something>:<NO-path>)\n"
<< " " << para << endl;
}
// See iz35982 for the reason for the special treatment of this switch.
// This regex evaluates <something>:///<path>, sometimes with
// quotes or "/" at the end
else if (match2s(para, "^([[:alpha:]][[:alnum:]_]*:)[\'\"]?///((/?[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + "///" + su2);
// Replace \ to /
rep_char( para, '\\', '/');
if ( debug )
cerr << " WinFormat - (<something>:///<path>)\n"
<< " " << para << endl;
}
// find -X<absolute path>, sometimes with quotes or "/" at the end
else if (match2s(para, "^(-[[:alpha:]])[\'\"]?((/[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (-X<absolute path>)\n"
<< " " << para << endl;
}
// find -FX<path> (MSVC switches for output naming), sometimes with quotes
// or "/" at the end
else if (match2s(para, "^(-F[ARdemopr])[\'\"]?(/[/[:alnum:]_~. +-]+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (compiler naming (-FX<absolute path>) path)\n"
<< " " << para << endl;
}
else{
// No parameter found, assume a path
// replace the colon in drives with 0x1F"
// (Unused ascii US - unit separator)
rep_subn( para, "(^|[;,])[[:alpha:]](:)", 2, 0x1F);
// Replace remaining : to ;
rep_char( para, ':', ';');
// Replace back US to ':';
rep_char( para, 0x1F, ':');
/* Search for posix path ;entry; (The regex accepts valid paths with at
* least one /) and replace with DOS path, accept quotes.
* since iz28717 we also accept ',' as path seperator. */
rep_subn_cyg(para);
if ( debug )
cerr << " WinFormat - full path\n"
<< " " << para << endl;
}
// Sanity check for -X<abspath>
if (match2s(para, "^(-[[:alpha:]])[\'\"]?((/[[:alnum:]_~. +-]+)+)",
su1, su2)) {
Fatal("Not converted -X/... type switch in :" + para);
}
// Sanity check for [-]X<something>(:|=)<abspath> case
if (match2s(para, "^(-?[[:alpha:]][[:alnum:]_.]+[=:])[\'\"]?((/[[:alnum:]_~. +-]+)+)",
su1, su2)) {
Fatal("Not processed [-]X<something>(=|:)/... in :" + para);
}
return 1;
}
// Reformat para to DOSish format
void do_atcommand(string &para) {
string at, filename, token;
// Workaround, iz28717, keep number of @'s.
match2s(para, "^(@+)(.*)",at ,filename);
if ( debug ) {
cerr << "----------------" << endl;
cerr << "Process @-file" << endl;
cerr << " :" << at << ": before filename :" << filename << ":" << endl;
}
// Read at file into memory
std::ifstream atin(filename.c_str());
list<string> newtoken;
while (atin >> token) {
// Read / transform tokens
if ( debug )
cerr << "@ token :" << token << ":" << endl;
if (!is_ignorepara(token))
winFormat(token);
newtoken.push_back(token);
}
atin.close();
// Write token tokens bak to file
if ( debug || debug_light )
cerr << "New @-file parameter:" << endl;
// for debugging ..
// filename += ".bak";
std::ofstream atout(filename.c_str());
list<string>::iterator tok = newtoken.begin();
while ( tok != newtoken.end() ) {
if ( debug || debug_light )
cerr << ( tok != newtoken.begin() ? " " : "" ) << *tok ;
atout << ( tok != newtoken.begin() ? " " : "" ) << *tok ;
++tok;
}
// We want a dos file
atout << '\r' << endl;
atout.close();
// Transform the filename
winFormat(filename);
para = at + filename;
if ( debug || debug_light ) {
cerr << "\nNew @-file name: " << para << "\n" << endl;
}
}
void myCygpath(string &path, int shortname /* =1 */ )
{
static char convpath[MAX_PATH];
static char buf[MAX_PATH];
int err;
// Only use cygwin_conv_to_win32_path() on absolute paths as it errors
// out if its path doen't exist. Unfortunatelt there are a lot of not
// existing relative pathes used as parameters during an OOo build.
if( path.find("/", 0) == 0) {
err = cygwin_conv_to_win32_path( path.c_str(), convpath );
}
else {
rep_char( path, '/', '\\');
// see below, we copy convpath back to path, that's stupid
path.copy( convpath, path.length());
convpath[path.length()] = 0;
err = 0;
}
if (err)
Fatal("converting: " + path + " - " + strerror(errno) );
// Only convert to short dos names when space is present
if (shortname && (path.find(" ", 0) != string::npos) ) {
DWORD len = GetShortPathName (convpath, buf, MAX_PATH);
if (!len) {
Fatal("cannot create short name of " + string(convpath) );
}
path.assign(buf);
}
else
path.assign(convpath);
}
void replace_cyg_env( void ) {
// Transform certain environment variables
if ( debug )
cerr << "Transforming some environment variables" << endl;
const size_t nvars = sizeof(transformvars)/sizeof(string *);
char *currvar;
string newvar;
for (size_t i=0; i != nvars; ++i) {
if ( currvar = getenv(transformvars[i].c_str() ) ) {
// Only transform existent vars
if ( debug )
cerr << "Transform variable: " << transformvars[i] << "="
<< currvar << endl;
newvar.assign(currvar);
winFormat(newvar);
if( setenv(transformvars[i].c_str(), newvar.c_str(), 1) )
Fatal("setenv failed on " + transformvars[i] + "=" + newvar +
" with error: " + strerror(errno));
if ( debug )
cerr << "To: " << transformvars[i] << "="
<< newvar << "\n" << endl;
}
}
}
void Fatal( const string text ) {
// End with error
cerr << "Error: " << text << endl;
exit(1);
}
int
match2s(const string argument, const char *pattern, string &sub1, string &sub2)
{
int status;
regex_t re;
const int maxsub = 3; // Only 3 needed, 4 is for debug
regmatch_t match[maxsub];
if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
Fatal("regcomp had a problem."); /* report error */
}
status = regexec(&re, argument.c_str(), maxsub, match, 0);
regfree(&re);
if (status == REG_NOMATCH) {
return(0); /* no match */
} else if (status == 0) {
string tstr(argument.c_str() + match[0].rm_so,
match[0].rm_eo - match[0].rm_so);
// cout << "Match: " << tstr << endl;
sub1.assign(argument.c_str() + match[1].rm_so, match[1].rm_eo - match[1].rm_so);
// cout << "Match1: " << sub1 << endl;
sub2.assign(argument.c_str() + match[2].rm_so, match[2].rm_eo - match[2].rm_so);
// cout << "Match2: " << sub2 << endl;
return(1); /* match found */
} else {
Fatal("regexec had a problem.");
}
// Not reached.
return(1);
}
// Replace path entry with myCygpath() version
void rep_subn_cyg(string &argument)
{
// accept ["']<entry>["']:["']<entry>["']:... to make the
// $(WRAPCMD) echo 1 ICON $(EMQ)"$(APP1ICON)$(EMQ)"
// work in ?tg_app.mk.
// FIXME: Better would be to use a DOSified $(APP1ICON) there and remove
// the special " treatment here.
const char *pattern = "(^|[;,])[\'\"]?([[:alnum:]_~. +-]*(/[[:alnum:]_~. +-]+)+/?)[\'\"]?([;,]|$)";
const int subexp = 2;
int status, pos=0;
regex_t re;
string repstr;
string::size_type oLen, nLen;
const int maxsub = subexp+1; // One more than the maximal subexpression
regmatch_t match[maxsub];
if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
Fatal("regcomp had a problem."); /* report error */
}
status = regexec (&re, argument.c_str() + pos, maxsub, match, 0);
while (status == 0) { /* While matches found. */
// Classical assert()
if (match[subexp].rm_eo == -1) {
Fatal("Nonexisting subexpression specified!");
}
oLen = match[subexp].rm_eo - match[subexp].rm_so;
repstr.assign(argument.c_str() + pos + match[subexp].rm_so, oLen);
// Do not replace with shortpaths
myCygpath(repstr, 0);
nLen = repstr.length();
// replace
argument.replace( pos + match[subexp].rm_so, oLen, repstr );
/* Substring found between match[0].rm_so and match[0].rm_eo. */
/* This call to regexec() finds the next match. */
pos += match[0].rm_eo + nLen - oLen ;
// Either the last match did end in ';' or we are at the end of para.
// REG_NOTBOL is not used because we skip over the ';' by using pos.
status = regexec (&re, argument.c_str() + pos, maxsub, match, 0);
}
if (status != REG_NOMATCH) {
Fatal("regexec had a problem.");
}
regfree(&re);
}
// Replace all occurences of subexpression number "subexp" with "repl"
void rep_subn( string &argument, const char *pattern, int subexp, const char repl)
{
int status, pos=0;
regex_t re;
const int maxsub = subexp+1; // One more than the maximal subexpression
regmatch_t match[maxsub];
if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
Fatal("regcomp had a problem."); /* report error */
}
status = regexec (&re, argument.c_str() + pos, maxsub, match, 0);
while (status == 0) { /* While matches found. */
// Classical assert()
if (match[subexp].rm_eo == -1) {
Fatal("Nonexisting subexpression specified!");
}
argument[pos + match[subexp].rm_so] = repl;
/* Substring found between match[0].rm_so and match[0].rm_eo. */
/* This call to regexec() finds the next match. */
pos += match[0].rm_eo;
status = regexec (&re, argument.c_str() + pos, maxsub, match, REG_NOTBOL);
}
if (status != REG_NOMATCH) {
Fatal("regexec had a problem.");
}
regfree(&re);
}
// Replace all char1 with char2
void rep_char( string &argument, const char from, const char to)
{
string::size_type loc = 0;
while ( (loc = argument.find( from, loc )) != string::npos ) {
argument[loc] = to;
}
}
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: guw.cc,v $
* $Revision: 1.7 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
// guw - A wrapper program to execute windows programs with parameters that
// contain cygwin (POSIX) style pathnames.
// Todo: Add a -? switch to guw to issue a help page.
#include <string>
#include <list>
#include <vector>
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstddef>
#include <cerrno>
#include <sys/cygwin.h>
#include <windows.h>
#include <regex.h>
using std::string;
using std::list;
using std::vector;
using std::cout;
using std::cerr;
using std::endl;
using std::size_t;
void init_ignorepara(string command);
bool is_ignorepara(const string &para);
int winFormat(string &para);
void do_atcommand(string &para);
void myCygpath(string &path, int shortname = 1 );
void replace_cyg_env( void );
void Fatal( const string text );
int match2s(const string argument, const char *pattern, string &sub1, string &sub2);
void rep_subn_cyg(string &argument);
void rep_subn( string &argument, const char *pattern, int subexp, const char repl);
void rep_char( string &argument, const char from, const char to);
bool debug = false;
bool debug_light = false;
// The commands are treated case insensitive, the parameters
// are case sensitive.
const string ignorepara[] = { "echo /TEST",
"cl -clr: -Z",
"climaker StarOffice/OpenOffice",
"csc -target:",
"g++ -DLOCAL_RULE_LANGS -DUPD -DMINOR"
" -DBUILD_ID -DSC_INFO_OSVERSION",
"gcc -DUDATA_SO_SUFFIX -DSTATIC_O"
" -DPACKAGE -DU_MAKE",
"lib /OUT: -out: -def: -machine:",
"link /BASE: /COMMENT: /DEBUG: /DLL /ENTRY:"
" /MACHINE: /MAP /NODEFAULTLIB /OPT: /RELEASE"
" /STACK: /SUBSYSTEM: -NODEFAULTLIB:"
" -def: delayload: -implib: -map: -out:",
"rc -D",
"regcomp -env: vnd.sun.star.expand:"
" vnd.openoffice.pymodule: file:",
"regmerge /UCR",
"rsc -DOOO_" };
vector<string> ignorepara_vec;
// environment variables that are "winformatted" when -env is given
const string transformvars[] = { "SOLAR_VERSION",
"SOLARVERSION",
"SOLARVER",
"SRC_ROOT",
"LOCALINI",
"GLOBALINI",
"SOLARENV",
"STAR_INSTPATH",
"STAR_SOLARPATH",
"STAR_PACKMISC",
"STAR_SOLARENVPATH",
"STAR_INITROOT",
"STAR_STANDLST",
"CLASSPATH",
"JAVA_HOME" };
int main(int argc, char **argv) {
// initialize arglist with arguments
list<string> arglist(argv, argv + argc);
// Drop the first (filename) argument
arglist.pop_front();
// iterarot over cmdline elements
list<string>::iterator ele = arglist.begin();
// Allowed switch values
bool conv_cyg_arg = false;
// Look for switches to guw
// Supported: -env
// -dbg
// -ldbg
while ( !arglist.empty()
&& ele!=arglist.end()
&& (ele->find("-", 0) == 0) ) {
if (ele->find("-env", 0) == 0) {
if ( conv_cyg_arg )
Fatal("-env used twice!");
conv_cyg_arg = true;
ele = arglist.erase(ele);
continue;
}
else if (ele->find("-dbg", 0) == 0) {
debug = true;
ele = arglist.erase(ele);
continue;
}
else if (ele->find("-ldbg", 0) == 0) {
debug_light = true;
ele = arglist.erase(ele);
continue;
}
else {
// Ignore this switch
++ele;
}
}
// The next entry must be the program
string command;
if ( !arglist.empty() ) {
command.assign(*arglist.begin());
arglist.pop_front();
}
else
Fatal("guw needs at least one parameter.");
if ( debug )
cerr << "Command: " << command << "\n" << endl;
// Initialize parameter exception list (for this command)
init_ignorepara(command);
// Do something if -env was found
if ( conv_cyg_arg )
replace_cyg_env();
// loop and and DOSify the parameters
if ( debug )
cerr << "Transform the parameter\n" << endl;
ele=arglist.begin();
while ( ele != arglist.end() ) {
if ((*ele)[0] == '@')
do_atcommand(*ele);
else if (!is_ignorepara(*ele)) {
if ( debug ) {
cerr << "----------------" << endl;
cerr << "Process parameter: " << *ele << endl;
}
winFormat(*ele);
if ( debug )
cerr << "Transformed to: " << *ele << "\n" << endl;
}
++ele;
}
// create the argv[] for execvp(argv[0], argv);
ele=arglist.begin();
// const char *nargv[arglist.size()+2]; // or ..
char *nargv[arglist.size()+2];
// nargv[0] = command.c_str(); // or ..
nargv[0] = new char[command.length()+1];
// strcpy(nargv[0], command.c_str());
command.copy(nargv[0], command.length());
nargv[0][command.length()] = 0;
if ( debug )
cerr << "----------------\n" << endl;
if ( debug || debug_light )
cerr << "Execute: " << nargv[0];
int count = 1, sLen;
while ( ele != arglist.end() ) {
// nargv[count] = ele->c_str(); // or ..
sLen = ele->length();
nargv[count] = new char[sLen+1];
// strcpy(nargv[count], ele->c_str());
ele->copy(nargv[count], sLen);
nargv[count][sLen] = 0;
if ( debug || debug_light )
cerr << " " << nargv[count];
++count;
++ele;
}
// last nargv[] must be NULL
nargv[count] = NULL;
if ( debug || debug_light )
cerr << endl;
// Unfortunately the prototype of execvp does not like const char*,
// actually not const char* nargv[] coming from .c_str(). So either
// we copy everything into newly allocated variables or we force it
// with a cast. const_cast<char * const *>()
// execvp(nargv[0], const_cast<char * const *>(nargv) );
if ( execvp(nargv[0], nargv ) < 0 ) {
perror("Execvp error. Aborting.");
exit(1);
}
// Omit the deleting of the dynamically allocated nargv[] elements
// here as this part will never be reached.
return 0;
}
// Initialize exception list from global var ignorepara[]
void init_ignorepara(string fullcommand) {
const size_t kplen = sizeof(ignorepara)/sizeof(string *);
string shortcommand, cmd, para, sub2;
// First lowercase everything
for(size_t i=0;i<fullcommand.length();i++)
fullcommand[i] = tolower(fullcommand[i]);
// Remove a potential .exe
size_t slen = fullcommand.length();
// for slen == 3 this would yield string::npos otherwise
if ( slen > 4 && fullcommand.rfind(".exe") == slen - 4 )
fullcommand.erase(slen-4);
// get the program name - Only one subexpression
if (!match2s(fullcommand, "([[:alnum:]_~. +-]+)$",
shortcommand, sub2)) {
Fatal("No basename found in: " + fullcommand);
}
for (size_t i=0; i != kplen; ++i) {
std::istringstream line(ignorepara[i]);
line >> cmd;
if (shortcommand == cmd)
while (line >> para) {
ignorepara_vec.push_back(para);
}
}
return ;
}
// Check if command/parameter is in exception list.
bool is_ignorepara(const string &para) {
for( vector<string>::iterator it = ignorepara_vec.begin();
it != ignorepara_vec.end(); it++ ) {
if ( para.find(*it) != string::npos ) {
if ( debug )
cerr << "Found execption para: " << para << endl;
return true;
}
}
return false;
}
// Reformat para to DOSish format
int winFormat(string &para) {
string su1, su2;
// Instead of ([/[:alnum:]_~. +-]+) use ((/?[[:alnum:]_~. +-]+)+)
// find [-][-]X<something>=<path>, sometimes with quotes or "/" at the end
if (match2s(para, "^(-?-?[[:alpha:]][[:alnum:]_.-]*=)[\'\"]?((/?[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - ([-][-]<something>=<path>)\n"
<< " " << para << endl;
}
// find -X<something>:<path>, sometimes with quotes or "/" at the end
else if (match2s(para, "^(-[[:alpha:]][[:alnum:]_.]*:)[\'\"]?((/?[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (-<something>:<path>)\n"
<< " " << para << endl;
}
// find -X<something>:<NO-path>, and prevents translating of these.
else if (match2s(para, "^(-[[:alpha:]][[:alnum:]_]*:)(.*)$",
su1, su2)) {
// myCygpath(su2);
// para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (-<something>:<NO-path>)\n"
<< " " << para << endl;
}
// See iz35982 for the reason for the special treatment of this switch.
// This regex evaluates <something>:///<path>, sometimes with
// quotes or "/" at the end
else if (match2s(para, "^([[:alpha:]][[:alnum:]_]*:)[\'\"]?///((/?[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + "///" + su2);
// Replace \ to /
rep_char( para, '\\', '/');
if ( debug )
cerr << " WinFormat - (<something>:///<path>)\n"
<< " " << para << endl;
}
// find -X<absolute path>, sometimes with quotes or "/" at the end
else if (match2s(para, "^(-[[:alpha:]])[\'\"]?((/[[:alnum:]_~. +-]+)+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (-X<absolute path>)\n"
<< " " << para << endl;
}
// find -FX<path> (MSVC switches for output naming), sometimes with quotes
// or "/" at the end
else if (match2s(para, "^(-F[ARdemopr])[\'\"]?(/[/[:alnum:]_~. +-]+)[\'\"]?$",
su1, su2)) {
myCygpath(su2);
para.assign(su1 + su2);
if ( debug )
cerr << " WinFormat - (compiler naming (-FX<absolute path>) path)\n"
<< " " << para << endl;
}
else{
// No parameter found, assume a path
// replace the colon in drives with 0x1F"
// (Unused ascii US - unit separator)
rep_subn( para, "(^|[;,])[[:alpha:]](:)", 2, 0x1F);
// Replace remaining : to ;
rep_char( para, ':', ';');
// Replace back US to ':';
rep_char( para, 0x1F, ':');
/* Search for posix path ;entry; (The regex accepts valid paths with at
* least one /) and replace with DOS path, accept quotes.
* since iz28717 we also accept ',' as path seperator. */
rep_subn_cyg(para);
if ( debug )
cerr << " WinFormat - full path\n"
<< " " << para << endl;
}
// Sanity check for -X<abspath>
if (match2s(para, "^(-[[:alpha:]])[\'\"]?((/[[:alnum:]_~. +-]+)+)",
su1, su2)) {
Fatal("Not converted -X/... type switch in :" + para);
}
// Sanity check for [-]X<something>(:|=)<abspath> case
if (match2s(para, "^(-?[[:alpha:]][[:alnum:]_.]+[=:])[\'\"]?((/[[:alnum:]_~. +-]+)+)",
su1, su2)) {
Fatal("Not processed [-]X<something>(=|:)/... in :" + para);
}
return 1;
}
// Reformat para to DOSish format
void do_atcommand(string &para) {
string at, filename, token;
// Workaround, iz28717, keep number of @'s.
match2s(para, "^(@+)(.*)",at ,filename);
if ( debug ) {
cerr << "----------------" << endl;
cerr << "Process @-file" << endl;
cerr << " :" << at << ": before filename :" << filename << ":" << endl;
}
// Read at file into memory
std::ifstream atin(filename.c_str());
list<string> newtoken;
while (atin >> token) {
// Read / transform tokens
if ( debug )
cerr << "@ token :" << token << ":" << endl;
if (!is_ignorepara(token))
winFormat(token);
newtoken.push_back(token);
}
atin.close();
// Write token tokens bak to file
if ( debug || debug_light )
cerr << "New @-file parameter:" << endl;
// for debugging ..
// filename += ".bak";
std::ofstream atout(filename.c_str());
list<string>::iterator tok = newtoken.begin();
while ( tok != newtoken.end() ) {
if ( debug || debug_light )
cerr << ( tok != newtoken.begin() ? " " : "" ) << *tok ;
atout << ( tok != newtoken.begin() ? " " : "" ) << *tok ;
++tok;
}
// We want a dos file
atout << '\r' << endl;
atout.close();
// Transform the filename
winFormat(filename);
para = at + filename;
if ( debug || debug_light ) {
cerr << "\nNew @-file name: " << para << "\n" << endl;
}
}
void myCygpath(string &path, int shortname /* =1 */ )
{
static char convpath[MAX_PATH];
static char buf[MAX_PATH];
int err;
// Only use cygwin_conv_to_win32_path() on absolute paths as it errors
// out if its path doen't exist. Unfortunatelt there are a lot of not
// existing relative pathes used as parameters during an OOo build.
if( path.find("/", 0) == 0) {
err = cygwin_conv_to_win32_path( path.c_str(), convpath );
}
else {
rep_char( path, '/', '\\');
// see below, we copy convpath back to path, that's stupid
path.copy( convpath, path.length());
convpath[path.length()] = 0;
err = 0;
}
if (err)
Fatal("converting: " + path + " - " + strerror(errno) );
// Only convert to short dos names when space is present
if (shortname && (path.find(" ", 0) != string::npos) ) {
DWORD len = GetShortPathName (convpath, buf, MAX_PATH);
if (!len) {
Fatal("cannot create short name of " + string(convpath) );
}
path.assign(buf);
}
else
path.assign(convpath);
}
void replace_cyg_env( void ) {
// Transform certain environment variables
if ( debug )
cerr << "Transforming some environment variables" << endl;
const size_t nvars = sizeof(transformvars)/sizeof(string *);
char *currvar;
string newvar;
for (size_t i=0; i != nvars; ++i) {
if ( currvar = getenv(transformvars[i].c_str() ) ) {
// Only transform existent vars
if ( debug )
cerr << "Transform variable: " << transformvars[i] << "="
<< currvar << endl;
newvar.assign(currvar);
winFormat(newvar);
if( setenv(transformvars[i].c_str(), newvar.c_str(), 1) )
Fatal("setenv failed on " + transformvars[i] + "=" + newvar +
" with error: " + strerror(errno));
if ( debug )
cerr << "To: " << transformvars[i] << "="
<< newvar << "\n" << endl;
}
}
}
void Fatal( const string text ) {
// End with error
cerr << "Error: " << text << endl;
exit(1);
}
int
match2s(const string argument, const char *pattern, string &sub1, string &sub2)
{
int status;
regex_t re;
const int maxsub = 3; // Only 3 needed, 4 is for debug
regmatch_t match[maxsub];
if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
Fatal("regcomp had a problem."); /* report error */
}
status = regexec(&re, argument.c_str(), maxsub, match, 0);
regfree(&re);
if (status == REG_NOMATCH) {
return(0); /* no match */
} else if (status == 0) {
string tstr(argument.c_str() + match[0].rm_so,
match[0].rm_eo - match[0].rm_so);
// cout << "Match: " << tstr << endl;
sub1.assign(argument.c_str() + match[1].rm_so, match[1].rm_eo - match[1].rm_so);
// cout << "Match1: " << sub1 << endl;
sub2.assign(argument.c_str() + match[2].rm_so, match[2].rm_eo - match[2].rm_so);
// cout << "Match2: " << sub2 << endl;
return(1); /* match found */
} else {
Fatal("regexec had a problem.");
}
// Not reached.
return(1);
}
// Replace path entry with myCygpath() version
void rep_subn_cyg(string &argument)
{
......
sources = guw.cc
guw : $(sources)
g++ -Wall -o guw $(sources)
sources = guw.cc
guw : $(sources)
g++ -Wall -o guw $(sources)
sources = guw.cc
guw : $(sources)
g++ -Wall -o guw $(sources)
......@@ -60,8 +60,8 @@ bootstrap .PHONY :
distclean .PHONY: clean
-rm config_office/config.cache
-rm config_office/config.log
-rm config.cache
-rm config.log
.IF "$(BUILD_DMAKE)"!="NO"
-$(GNUMAKE) -C dmake distclean
.ENDIF
......@@ -79,7 +79,7 @@ clean .PHONY:
# configure target
#
configure .PHONY SETDIR=config_office :
configure .PHONY SETDIR=. :
@configure
......
......@@ -62,7 +62,7 @@ STD_RES_FILE( gid_File_Res_Cnr, cnr)
STD_RES_FILE( gid_File_Res_Sdbcl, sdbcl)
STD_RES_FILE( gid_File_Res_Sdberr, sdberr)
#ifdef ENABLE_REPORTDESIGN
#ifdef ENABLE_REPORTBUILDER
STD_UNO_LIB_FILE_PATCH( gid_File_Lib_Rpt, rpt )
STD_RES_FILE( gid_File_Res_Rpt, rpt)
......
......@@ -41,8 +41,8 @@ TARGETTYPE=CUI
.INCLUDE : settings.mk
.IF "$(ENABLE_REPORTDESIGN)" == "YES"
SCPDEFS += -DENABLE_REPORTDESIGN
.IF "$(ENABLE_REPORTBUILDER)" == "YES"
SCPDEFS += -DENABLE_REPORTBUILDER
.ENDIF
SCP_PRODUCT_TYPE=osl
......
......@@ -105,12 +105,7 @@ my ( $dmake, $build, $build_client, $nmake, $mkout, $deliver, $zipdep );
#
# $platform is needed for PathFormat()
#
if ('@LOCAL_SOLENV@' eq "DEFAULT")
{ $platform = `../solenv/bin/config.guess`;
}
else
{ $platform = `@LOCAL_SOLENV@/bin/config.guess`;
}
$platform = `./config.guess`;
chomp( $platform );
$UPD = '@UPD@'; # the project's UPD
......@@ -399,6 +394,7 @@ elsif ( $platform =~ m/linux/ )
else {
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."xawt";
# has both server and client
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."client";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."native_threads";
}
......@@ -420,6 +416,7 @@ elsif ( $platform =~ m/linux/ )
$OUTPATH = "unxlngx6";
# Blackdown.org JDK porting project uses `amd64' and `server' in JDK 1.4.2 RC1
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64";
# has both server and client
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."server";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."native_threads";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."xawt";
......@@ -444,7 +441,7 @@ elsif ( $platform =~ m/linux/ )
$CPUNAME = "SPARC";
$OUTPATH = "unxlngs";
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."client";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."server";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."native_threads";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."xawt";
}
......@@ -473,17 +470,17 @@ elsif ( $platform =~ m/linux/ )
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."client";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."native_threads"; }
elsif ($JDK =~ m/^[Ii][Bb][Mm]/)
{ $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."bin";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."bin".$ds."classic";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."bin";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."bin".$ds."xawt";
{ $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."classic";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."xawt";
}
else {
# OpenJDK (aka JDK=sun)
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."powerpc";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."powerpc".$ds."client";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."powerpc".$ds."native_threads";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."powerpc".$ds."xawt";
# OpenJDK
elsif ($JDK =~ m/sun/) {
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."client";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."native_threads";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."xawt";
}
}
......@@ -507,7 +504,7 @@ elsif ( $platform =~ m/linux/ )
$OUTPATH = "unxlngs390";
}
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds.$ARCH;
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds.$ARCH.$ds."client";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds.$ARCH.$ds."server";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds.$ARCH.$ds."native_threads";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds.$ARCH.$ds."xawt";
$CPU = "3";
......@@ -531,7 +528,7 @@ elsif ( $platform =~ m/linux/ )
$CPUNAME = "ALPHA_";
$OUTPATH = "unxlnga";
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha".$ds."client";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha".$ds."server";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha".$ds."native_threads";
}
elsif ($platform =~ m/^arm.*?l-/)
......@@ -541,8 +538,9 @@ elsif ( $platform =~ m/linux/ )
$CPUNAME = "ARM";
$OUTPATH = "unxlngr";
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."arm";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."arm".$ds."client";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."arm".$ds."server";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."arm".$ds."native_threads";
$JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."arm".$ds."xawt";
$EPM_FLAGS = "-a arm";
}
elsif ($platform =~ m/^mips/)
......@@ -1728,7 +1726,7 @@ ToFile( "ENABLE_OPENGL", "@ENABLE_OPENGL@", "e" );
ToFile( "ENABLE_PDFIMPORT", "@ENABLE_PDFIMPORT@", "e" );
ToFile( "ENABLE_MINIMIZER", "@ENABLE_MINIMIZER@","e" );
ToFile( "ENABLE_PRESENTER_SCREEN","@ENABLE_PRESENTER_SCREEN@","e" );
ToFile( "ENABLE_REPORTDESIGN","@ENABLE_REPORTDESIGN@","e" );
ToFile( "ENABLE_REPORTBUILDER","@ENABLE_REPORTBUILDER@","e" );
ToFile( "SYSTEM_JFREEREPORT","@SYSTEM_JFREEREPORT@","e" );
ToFile( "JCOMMON_JAR", "@JCOMMON_JAR@", "e" );
ToFile( "SAC_JAR", "@SAC_JAR@", "e" );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment