diff options
author | Tor Lillqvist <tml@iki.fi> | 2011-05-07 00:25:55 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@iki.fi> | 2011-05-13 20:24:40 +0300 |
commit | eaf8e0939a3d8b724dec7ff48d4ada48bbfe3ebc (patch) | |
tree | b6c3cac34c1c8e4a88065a42362b8aa7e10a4513 | |
parent | 3a44b0d21d8d37943643330d8f9aa4152e613c8f (diff) |
Some initial baby steps towards cross-compilation
And some baby steps for cross-compiling for iOS in particular.
-rw-r--r-- | bootstrap.1 | 8 | ||||
-rwxr-xr-x | conf-for-build.in | 9 | ||||
-rwxr-xr-x | configure.in | 416 | ||||
-rwxr-xr-x | download | 2 | ||||
-rwxr-xr-x | post_download.in | 2 | ||||
-rwxr-xr-x | set_soenv.in | 47 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/platform/ios.mk | 466 | ||||
-rw-r--r-- | solenv/inc/settings.mk | 8 | ||||
-rw-r--r-- | solenv/inc/unx.mk | 4 | ||||
-rw-r--r-- | solenv/inc/unxiosr.mk | 75 | ||||
-rw-r--r-- | soltools/cpp/_unix.c | 35 |
12 files changed, 824 insertions, 250 deletions
diff --git a/bootstrap.1 b/bootstrap.1 index 3daa1e25321c..cae59ce82f8e 100644 --- a/bootstrap.1 +++ b/bootstrap.1 @@ -17,6 +17,14 @@ if test "$BUILD_DMAKE" != "NO"; then if test ! -x "$SRC_ROOT/dmake/dmake$EXEEXT"; then cd "$SRC_ROOT/dmake" || exit + # If cross-compiling then don't use the cross compilers to build dmake. + if test "$CROSS_COMPILING" = "yes"; then + CC="" + CXX="" + export CC + export CXX + fi + # Special case! The w32/tcsh build needs CC pointing to the MSVC++ compiler # but we need a cygwin/gcc build dmake to understand the posix paths if test "$GUI" = "WNT"; then diff --git a/conf-for-build.in b/conf-for-build.in new file mode 100755 index 000000000000..196b2f12bc32 --- /dev/null +++ b/conf-for-build.in @@ -0,0 +1,9 @@ +AC_INIT([LibreOffice], [3.3],,, [http://documentfoundation.org/]) +AC_PREREQ(2.50) +AC_CANONICAL_SYSTEM +AC_PROG_CC +AC_PROG_CXX + + +echo CC_FOR_BUILD='${CC_FOR_BUILD:-'$CC'}' >&3 +echo CXX_FOR_BUILD='${CXX_FOR_BUILD:-'$CXX'}' >&3 diff --git a/configure.in b/configure.in index cad162fd8385..f7a485320c19 100755 --- a/configure.in +++ b/configure.in @@ -1303,6 +1303,14 @@ echo "********************************************************************" echo "" dnl =================================================================== +dnl checks build and host OSes +dnl =================================================================== +AC_CANONICAL_SYSTEM + +CROSS_COMPILING=$cross_compiling +AC_SUBST(CROSS_COMPILING) + +dnl =================================================================== dnl check for required programs (grep, awk, sed, bash) dnl =================================================================== cat /dev/null > warn @@ -1347,42 +1355,6 @@ fi AC_SUBST(GNUTAR) dnl =================================================================== -dnl Checks for --with-local-solenv invocation -dnl TODO: Is this still required? -dnl =================================================================== -AC_MSG_CHECKING([for solenv environment]) -if test -z "$with_local_solenv"; then - LOCAL_SOLENV="DEFAULT" - AC_MSG_RESULT([default]) -else - LOCAL_SOLENV=$with_local_solenv - AC_MSG_RESULT([$with_local_solenv]) -fi -AC_SUBST(LOCAL_SOLENV) - -if test "$LOCAL_SOLENV" = "DEFAULT"; then - _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 }'`" - AC_SUBST(UPD) - 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...]) -fi - -dnl =================================================================== -dnl Checks for the operating system and processor. -dnl =================================================================== -AC_CANONICAL_HOST - -dnl =================================================================== dnl The following is a list of supported systems. dnl Sequential to keep the logic very simple dnl These values may be checked and reset later. @@ -1449,14 +1421,16 @@ case "$host_os" in test_fontconfig=no _os=WINNT ;; - darwin*) # Mac OS X + darwin*) # Mac OS X or iOS test_gtk=yes test_randr=no test_freetype=no test_fontconfig=no test_cairo=no _os=Darwin - if test "$enable_systray" = "yes" && test "$enable_gtk" != "no"; then + if test "$host_cpu" = "arm"; then + : + elif test "$enable_systray" = "yes" && test "$enable_gtk" != "no"; then AC_MSG_WARN([Disabling gtk-quickstarter - not supported on Mac. Use --disable-systray]) echo "Disabling gtk-quickstarter - not supported on Mac. Use --disable-systray" >>warn enable_systray=no @@ -1533,6 +1507,198 @@ AC_SUBST(OSVERSION) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_LIBS) +if test $_os = "WINNT"; then + AC_MSG_CHECKING([Windows build environment sanity]) + dnl =================================================================== + dnl Sanity check! Native windows programs cannot use cygwin symlinks! + dnl =================================================================== + dnl As long as awk instead of $AWK is used somewhere in the sources, + dnl check for $AWK and awk. $AWK is pointing to gawk in cygwin. + if test -L $AWK -o -L `which awk` -o -L `which tar` -o -L `which gunzip` ; then + AC_MSG_ERROR([$AWK, awk, tar or gunzip is a Cygwin symlink! +Native Windows programs cannot use Cygwin symlinks. Remove the symbolic +link, and copy the program to the name of the link.]) + fi + dnl =================================================================== + dnl If $CC is set to a MinGW compiler, e.g. "gcc -mno-cygwin" enable + dnl $WITH_MINGW + dnl =================================================================== + if test -n "$CC";then + if test "`$CC -dumpmachine 2>/dev/null | $SED -e 's/^.*-//'`" = "mingw32"; then + WITH_MINGW="yes" + fi + fi + dnl =================================================================== + if test "$WITH_MINGW" = "yes" ; then + if test -z "$CC"; then + CC="gcc -mno-cygwin" + CXX="g++ -mno-cygwin" + fi + fi + AC_MSG_RESULT([ok]) +fi +AC_SUBST(WITH_MINGW) + +dnl =================================================================== +dnl Extra check for Windows. cygwin builds need gcc to build dmake +dnl and g++ to build guw.exe although MS cl (or MinGW) is used to +dnl build LibO. +dnl =================================================================== +if test "_os" = "WINNT" ; then + AC_MSG_CHECKING([for Cygwin gcc/g++]) + if which gcc > /dev/null && which g++ > /dev/null ; then + AC_MSG_RESULT([found]) + else + AC_MSG_ERROR([Cygwin gcc and g++ are needed, please install them.]) + fi +fi + +dnl =================================================================== +dnl Checks for C compiler, +dnl The check for the C++ compiler is later on. +dnl =================================================================== +GCC_HOME_SET="true" +AC_MSG_CHECKING([gcc home]) +if test -z "$with_gcc_home"; then + if test -n "$enable_icecream" && test "$enable_icecream" != "no" ; then + GCC_HOME="/opt/icecream" + else + GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,` + GCC_HOME_SET="false" + fi +else + GCC_HOME="$with_gcc_home" +fi +AC_MSG_RESULT($GCC_HOME) +AC_SUBST(GCC_HOME) + +if test "$GCC_HOME_SET" = "true" ; then + if test -z "$CC"; then + CC="$GCC_HOME/bin/gcc" + fi + if test -z "$CXX"; then + CXX="$GCC_HOME/bin/g++" + fi +fi + +dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32) +if test "$_os" != "WINNT" -o "$WITH_MINGW" = "yes"; then + AC_PROG_CC +fi + +COMPATH=`dirname "$CC"` +if test "$COMPATH" = "." ; then + AC_PATH_PROGS(COMPATH, $CC) + dnl double square bracket to get single because of M4 quote... + COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`; +fi +COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`; + +dnl =================================================================== +dnl Test the gcc version, 3 is OK +dnl =================================================================== +if test \( "$_os" != "WINNT" -o "$WITH_MINGW" = "yes" \) -a "$GCC" = "yes"; then + AC_MSG_CHECKING([the GNU C compiler version]) + _gcc_version=`$CC -dumpversion` + _gcc_major=`echo $_gcc_version | $AWK -F. '{ print \$1 }'` + GCCVER=`echo $_gcc_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` + + if test "$_os" = "Darwin" -a "$host_cpu" != "arm" -a "$GCCVER" -ge "040100" ; then + if test -z "$save_CC" -a -x "$GCC_HOME/bin/gcc-4.0" ; then + export CC=$GCC_HOME/bin/gcc-4.0 + dnl export CC to have it available in set_soenv -> config.guess + GCCVER2=`"$CC" -dumpversion | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` + if test "$GCCVER2" -ge "040000" -a "$GCCVER2" -lt "040100" ; then + GCCVER=$GCCVER2 + fi + fi + if test "$GCCVER" -ge "040100" ; then + AC_MSG_ERROR([You need to use the gcc-4.0 compiler (gcc $_gcc_version won't work with the MacOSX10.4u.sdk) - set CC accordingly]) + else + AC_MSG_RESULT([implicitly using CC=$CC]) + fi + else + AC_MSG_RESULT([checked (gcc $_gcc_version)]) + fi + if test "$_os" = "SunOS"; then + AC_MSG_CHECKING([gcc linker]) + if $CC -Wl,--version 2>&1 |head -n 1| grep -v GNU > /dev/null;then + AC_MSG_ERROR([failed (not GNU ld). Use GNU ld instead of Sun ld on Solaris]) + fi + AC_MSG_RESULT([ok (GNU ld)]) + fi +fi + +HAVE_LD_BSYMBOLIC_FUNCTIONS= +if test "$GCC" = "yes"; then + AC_MSG_CHECKING( for -Bsymbolic-functions linker support ) + bsymbolic_functions_ldflags_save=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo" + AC_LINK_IFELSE([AC_LANG_PROGRAM([ + #include <stdio.h> + ],[ + printf ("hello world\n"); + ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, []) + if test "z$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "zTRUE"; then + AC_MSG_RESULT( found ) + else + AC_MSG_RESULT( not found ) + fi + LDFLAGS=$bsymbolic_functions_ldflags_save +fi +AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS) + +dnl =================================================================== +dnl Set up a different compiler to produce tools to run on the build +dnl machine when doing cross-compilation +dnl =================================================================== + +if test "$cross_compiling" = "yes"; then + export tmpdir=`mktemp -d conf.XXXXXX` + eval `(unset CC CXX CFLAGS + autoconf conf-for-build.in >$tmpdir/conf-for-build + cd $tmpdir + sh ./conf-for-build 3>&1 >/dev/null)` + rm -rf $tmpdir + unset tmpdir +else + CC_FOR_BUILD="$CC" + CXX_FOR_BUILD="$CXX" +fi +AC_SUBST(CC_FOR_BUILD) +AC_SUBST(CXX_FOR_BUILD) + +dnl =================================================================== +dnl Checks for --with-local-solenv invocation +dnl TODO: Is this still required? +dnl =================================================================== +AC_MSG_CHECKING([for solenv environment]) +if test -z "$with_local_solenv"; then + LOCAL_SOLENV="DEFAULT" + AC_MSG_RESULT([default]) +else + LOCAL_SOLENV=$with_local_solenv + AC_MSG_RESULT([$with_local_solenv]) +fi +AC_SUBST(LOCAL_SOLENV) + +if test "$LOCAL_SOLENV" = "DEFAULT"; then + _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 }'`" + AC_SUBST(UPD) + 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...]) +fi + dnl =================================================================== dnl Set the ENABLE_CRASHDUMP variable. dnl =================================================================== @@ -1807,155 +1973,6 @@ AC_SUBST(DICT_SYSTEM_DIR) AC_SUBST(HYPH_SYSTEM_DIR) AC_SUBST(THES_SYSTEM_DIR) -if test $_os = "WINNT"; then - AC_MSG_CHECKING([Windows build environment sanity]) - dnl =================================================================== - dnl Sanity check! Native windows programs cannot use cygwin symlinks! - dnl =================================================================== - dnl As long as awk instead of $AWK is used somewhere in the sources, - dnl check for $AWK and awk. $AWK is pointing to gawk in cygwin. - if test -L $AWK -o -L `which awk` -o -L `which tar` -o -L `which gunzip` ; then - AC_MSG_ERROR([$AWK, awk, tar or gunzip is a cygwin symlink! -Native windows programs cannot use cygwin symlinks. Remove the symbolic -link, and copy the program to the name of the link.]) - fi - dnl =================================================================== - dnl Another sanity check! More a band-aid. winenv.* adds guw.exe to - dnl CC and CXX but the configure checks here assume that guw.exe - dnl (if needed at all) is not yet present. - dnl =================================================================== - CC=`echo $CC | $SED "s/^guw.exe //"` - CXX=`echo $CXX | $SED "s/^guw.exe //"` - dnl =================================================================== - dnl If $CC is set to a MinGW compiler, e.g. "gcc -mno-cygwin" enable - dnl $WITH_MINGW - dnl =================================================================== - if test -n "$CC";then - if test "`$CC -dumpmachine 2>/dev/null | $SED -e 's/^.*-//'`" = "mingw32"; then - WITH_MINGW="yes" - fi - fi - dnl =================================================================== - if test "$WITH_MINGW" = "yes" ; then - if test -z "$CC"; then - CC="gcc -mno-cygwin" - CXX="g++ -mno-cygwin" - fi - fi - AC_MSG_RESULT([ok]) -fi -AC_SUBST(WITH_MINGW) - -dnl =================================================================== -dnl Extra check for Windows. cygwin builds need gcc to build dmake -dnl and g++ to build guw.exe although MS cl (or MinGW) is used to -dnl build LibO. -dnl =================================================================== -if test "$_os" = "WINNT" ; then - AC_MSG_CHECKING([for cygwin gcc/g++]) - if which gcc > /dev/null && which g++ > /dev/null ; then - AC_MSG_RESULT([found]) - else - AC_MSG_ERROR([cygwin gcc and g++ are needed, please install them.]) - fi -fi - - -dnl =================================================================== -dnl Checks for c compiler, -dnl The check for the c++ compiler is later on. -dnl =================================================================== -GCC_HOME_SET="true" -AC_MSG_CHECKING([gcc home]) -if test -z "$with_gcc_home"; then - if test -n "$enable_icecream" && test "$enable_icecream" != "no" ; then - GCC_HOME="/opt/icecream" - else - GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,` - GCC_HOME_SET="false" - fi -else - GCC_HOME="$with_gcc_home" -fi -AC_MSG_RESULT($GCC_HOME) -AC_SUBST(GCC_HOME) - -if test "$GCC_HOME_SET" = "true" ; then - if test -z "$CC"; then - CC="$GCC_HOME/bin/gcc" - fi - if test -z "$CXX"; then - CXX="$GCC_HOME/bin/g++" - fi -fi - -dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32) -if test "$_os" != "WINNT" -o "$WITH_MINGW" = "yes"; then - AC_PROG_CC -fi - -COMPATH=`dirname "$CC"` -if test "$COMPATH" = "." ; then - AC_PATH_PROGS(COMPATH, $CC) - dnl double square bracket to get single because of M4 quote... - COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`; -fi -COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`; - -dnl =================================================================== -dnl Test the gcc version, 3 is OK -dnl =================================================================== -if test \( "$_os" != "WINNT" -o "$WITH_MINGW" = "yes" \) -a "$GCC" = "yes"; then - AC_MSG_CHECKING([the GNU gcc compiler version]) - _gcc_version=`$CC -dumpversion` - _gcc_major=`echo $_gcc_version | $AWK -F. '{ print \$1 }'` - GCCVER=`echo $_gcc_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` - - if test "$_os" = "Darwin" -a "$GCCVER" -ge "040100" ; then - if test -z "$save_CC" -a -x "$GCC_HOME/bin/gcc-4.0" ; then - export CC=$GCC_HOME/bin/gcc-4.0 - dnl export CC to have it available in set_soenv -> config.guess - GCCVER2=`"$CC" -dumpversion | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` - if test "$GCCVER2" -ge "040000" -a "$GCCVER2" -lt "040100" ; then - GCCVER=$GCCVER2 - fi - fi - if test "$GCCVER" -ge "040100" ; then - AC_MSG_ERROR([You need to use the gcc-4.0 compiler (gcc $_gcc_version won't work with the MacOSX10.4u.sdk) - set CC accordingly]) - else - AC_MSG_RESULT([implicitly using CC=$CC]) - fi - else - AC_MSG_RESULT([checked (gcc $_gcc_version)]) - fi - if test "$_os" = "SunOS"; then - AC_MSG_CHECKING([gcc linker]) - if $CC -Wl,--version 2>&1 |head -n 1| grep -v GNU > /dev/null;then - AC_MSG_ERROR([failed (not GNU ld). Use GNU ld instead of Sun ld on Solaris]) - fi - AC_MSG_RESULT([ok (GNU ld)]) - fi -fi - -HAVE_LD_BSYMBOLIC_FUNCTIONS= -if test "$GCC" = "yes"; then - AC_MSG_CHECKING( for -Bsymbolic-functions linker support ) - bsymbolic_functions_ldflags_save=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo" - AC_LINK_IFELSE([AC_LANG_PROGRAM([ - #include <stdio.h> - ],[ - printf ("hello world\n"); - ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, []) - if test "z$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "zTRUE"; then - AC_MSG_RESULT( found ) - else - AC_MSG_RESULT( not found ) - fi - LDFLAGS=$bsymbolic_functions_ldflags_save -fi -AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS) - dnl =================================================================== dnl Set the ENABLE_PCH variable. (Activate --enable-pch) dnl =================================================================== @@ -2041,21 +2058,22 @@ if test "$GCC" = "yes" ; then else hash_styles="$with_linker_hash_style" fi - + for hash_style in $hash_styles ; do test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue hash_style_ldflags_save=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style" - AC_TRY_RUN([ -#include <stdio.h> - -int main(char argc, char** argv) { - printf (""); - return 0; -} - ], HAVE_LD_HASH_STYLE=TRUE; WITH_LINKER_HASH_STYLE=$hash_style, HAVE_LD_HASH_STYLE=FALSE) - + AC_LINK_IFELSE([AC_LANG_PROGRAM([ + #include <stdio.h> + ],[ + printf (""); + ])], + [ if ./conftest$EXEEXT; then + HAVE_LD_HASH_STYLE=TRUE + WITH_LINKER_HASH_STYLE=$hash_style + fi], + [HAVE_LD_HASH_STYLE=FALSE]) LDFLAGS=$hash_style_ldflags_save done @@ -2462,7 +2480,7 @@ fi AC_SUBST([VALGRIND_CFLAGS]) dnl =================================================================== -dnl Testing for c++ compiler and version... +dnl Testing for C++ compiler and version... dnl =================================================================== if test "$_os" = "WINNT" -a "$WITH_MINGW" != "yes"; then if test -e "$CC"; then @@ -2482,7 +2500,7 @@ if test "$GXX" = "yes"; then _gpp_version=`$CXX -dumpversion` _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'` - if test "$_os" = "Darwin" -a "$_gpp_majmin" -ge "401" ; then + if test "$_os" = "Darwin" -a "$host_cpu" != "arm" -a "$_gpp_majmin" -ge "401" ; then if test -z "$save_CXX" -a -x "$GCC_HOME/bin/g++-4.0" ; then CXX=$GCC_HOME/bin/g++-4.0 _gpp_majmin_2=`"$CXX" -dumpversion | $AWK -F. '{ print \$1*100+\$2 }'` @@ -272,5 +272,5 @@ done [ -x "post_download" ] || { echo "'post_download' script not found, run ./autogen.sh." ; exit 1 ; } -./post_download || exit 1 +./post_download --build=$BUILD_ALIAS --host=$HOST_ALIAS || exit 1 # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/post_download.in b/post_download.in index ce09523a782c..14e9737e8baf 100755 --- a/post_download.in +++ b/post_download.in @@ -24,7 +24,7 @@ case "$build_os" in cygwin*) # Windows _os=WINNT ;; - darwin*) # Mac OS X + darwin*) # Mac OS X or iOS _os=Darwin ;; freebsd*) diff --git a/set_soenv.in b/set_soenv.in index 45414afaa5c8..408bf4be1d76 100755 --- a/set_soenv.in +++ b/set_soenv.in @@ -8,7 +8,7 @@ # Description: # set_soenv generates a file that contains all necessary # environment variables for the build proces of OpenOffice -# on Linux, NetBSD, Solaris, Windows NT and Mac OS X/Darwin. +# on Linux, NetBSD, Solaris, Windows, Mac OS X and iOS. # # Program steps. # @@ -102,8 +102,7 @@ my ( $dmake, $build, $build_client, $nmake, $mkout, $deliver, $zipdep ); # # $platform is needed for PathFormat() # -$platform = `./config.guess`; -chomp( $platform ); +$platform = '@host_alias@'; $UPD = '@UPD@'; # the project's UPD $newline = "\n"; # Perl newline character @@ -706,17 +705,29 @@ elsif ( $platform =~ m/cygwin/ ) } } elsif ( $platform =~ m/darwin/ ) -{ print "Setting Mac OS X/Darwin specific values... "; - $BIG_SVX = "TRUE"; +{ $BIG_SVX = "TRUE"; $COM = "GCC"; $COMPATH = '@COMPATH@'; - if ($platform =~ m/^powerpc/) + if ($platform =~ m/^arm/) + { + print "Setting values for iOS... "; + $outfile = "iOSEnv.Set.sh"; + $CPU = "R"; + $CPUNAME = "ARM"; + $OUTPATH = "unxiosr"; + $GUI = "UNX"; + $OS = "IOS"; + $GUIBASE = "cocoatouch"; + } + elsif ($platform =~ m/^powerpc/) { print "Setting values for Mac OS X/Darwin on PowerPC... "; $outfile = "MacOSXPPCEnv.Set.sh"; $CPU = "P"; $CPUNAME = "POWERPC"; $OUTPATH = "unxmacxp"; + $OS = "MACOSX"; + $GUI = "UNX"; } else { @@ -725,13 +736,13 @@ elsif ( $platform =~ m/darwin/ ) $CPU = "I"; $CPUNAME = "INTEL"; $OUTPATH = "unxmacxi"; + $OS = "MACOSX"; + $GUI = "UNX"; } - $GUI = "UNX"; $GVER = "VCL"; $INPATH = $OUTPATH.$PROEXT; - $OS = "MACOSX"; $PATH_SEPERATOR = $ps; - # GUIBASE is set below; may be "aqua" or "unx". + # GUIBASE is set below for Mac OS X; may be "aqua" or "unx". } elsif ( $platform =~ m/dragonfly/ ) { @@ -933,7 +944,7 @@ $XINC = PathFormat('@XINC@'); # X11 includes # Mac OS X/Darwin only variables. -if ( $platform =~ m/darwin/ ) +if ( $platform =~ m/darwin/ && $platform !~ m/^arm/) { $FRAMEWORKSHOME = $ds."Developer".$ds."SDKs".$ds."MacOSX10.4u.sdk".$ds."System".$ds."Library".$ds."Frameworks"; if ( $XLIB eq "no_x_libraries" ) { $GUIBASE = "aqua"; @@ -1032,11 +1043,11 @@ elsif ($platform =~ m/linux|netbsd|freebsd|aix|openbsd|dragonfly/) { $SOLAREXTRALIB = $L.$par_dir.$LIB64; } -elsif ($platform =~ m/darwin/) +elsif ($platform =~ m/darwin/ && $platform !~ m/^arm/) { $SOLAREXTRALIB = $L.$LIB. $L.$USR.$LIB; } -elsif ($platform !~ m/cygwin/ ) +elsif ($platform !~ m/cygwin/ && $platform !~ m/^arm-apple/) { AddWarning( "set_soenv", "$platform not configured for linkage create libraries" ); } @@ -1424,7 +1435,7 @@ elsif ($platform =~ m/cygwin/) $SOLARINC .= $I.PathFormat('@DIRECTXSDK_HOME@').$INCLUDE; } } -elsif ($platform =~ m/darwin/) +elsif ($platform =~ m/darwin/ && $platform !~ m/^arm/) { $SOLARINC .= $I.$FRAMEWORKSHOME.$ds."JavaVM.framework".$ds."Versions".$ds."Current".$ds."Headers". $I.$FRAMEWORKSHOME.$ds."JavaVM.framework".$ds."Headers"; # [ed] 6/15/02 Add in X11 headers as appropriate for the build @@ -1433,6 +1444,9 @@ elsif ($platform =~ m/darwin/) $I.$XINC.$ds."freetype2"; } } +elsif ($platform =~ m/^arm-apple/) +{ +} else { AddWarning( "set_soenv", "$platform not configured for system dependant include dir" ); } @@ -1631,7 +1645,7 @@ ToFile( "DYNAMIC_CRT", $DYNAMIC_CRT, "e" ); ToFile( "SET_EXCEPTIONS", $SET_EXCEPTIONS, "e" ); ToFile( "use_shl_versions", $use_shl_versions, "e" ); ToFile( "FLIPCMD", $FLIPCMD, "e" ); -if ( $platform =~ m/darwin/ ) +if ( $platform =~ m/darwin/ && $platform !~ m/^arm/) { # MAXOSX_DEPLOYMENT_TARGET : The minimum version required to run the build, # build can assume functions/libraries of that version to be available @@ -1741,6 +1755,11 @@ ToFile( "SOLARINC", $SOLARINC, "e" ); ToFile( "COMP_ENV", $COMP_ENV, "e" ); ToFile( "JAVAHOME", $JAVAHOME, "e" ); ToFile( "CC", $CC, "e" ); +ToFile( "CROSS_COMPILING", "@CROSS_COMPILING@","e" ); +ToFile( "BUILD_ALIAS", "@build_alias@", "e" ); +ToFile( "HOST_ALIAS", "@host_alias@", "e" ); +ToFile( "CC_FOR_BUILD", "@CC_FOR_BUILD@", "e" ); +ToFile( "CXX_FOR_BUILD", "@CXX_FOR_BUILD@", "e" ); ToFile( "HAVE_GCC_VISIBILITY_FEATURE", "@HAVE_GCC_VISIBILITY_FEATURE@", "e" ); ToFile( "HAVE_GCC_VISIBILITY_BROKEN", diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index b173717364bb..72e41e5b90ba 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -163,6 +163,8 @@ else ifeq ($(OS),DRAGONFLY) include $(GBUILDDIR)/platform/dragonfly.mk else ifeq ($(OS),SOLARIS) include $(GBUILDDIR)/platform/solaris.mk +else ifeq ($(OS),IOS) +include $(GBUILDDIR)/platform/ios.mk else $(eval $(call gb_Output_error,Unsupported OS: $(OS))) endif diff --git a/solenv/gbuild/platform/ios.mk b/solenv/gbuild/platform/ios.mk new file mode 100644 index 000000000000..6bb7b3740351 --- /dev/null +++ b/solenv/gbuild/platform/ios.mk @@ -0,0 +1,466 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2011 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# 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. +# +#************************************************************************* + +GUI := UNX +COM := GCC + +# Darwin mktemp -t expects a prefix, not a pattern +gb_MKTEMP := /usr/bin/mktemp -t gbuild. + +gb_CC := "gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" +gb_CXX := "g++-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" +gb_GCCP := "gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" +gb_AR := ar +gb_AWK := awk +gb_CLASSPATHSEP := : + +# use CC/CXX if they are nondefaults +ifneq ($(origin CC),default) +gb_CC := $(CC) +gb_GCCP := $(CC) +endif +ifneq ($(origin CXX),default) +gb_CXX := $(CXX) +endif + +gb_OSDEFS := \ + -D$(OS) \ + -D_PTHREADS \ + -DUNIX \ + -DUNX \ + -D_REENTRANT \ + -DNO_PTHREAD_PRIORITY \ + $(EXTRA_CDEFS) \ + +gb_COMPILERDEFS := \ + -D$(COM) \ + -DCPPU_ENV=gcc3 \ + -DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \ + +gb_CPUDEFS := -DARM32 + +gb_SDKDIR := /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk + + +gb_CFLAGS := \ + -isysroot $(gb_SDKDIR) \ + -Wall \ + -Wendif-labels \ + -Wextra \ + -Wshadow \ + -fPIC \ + -fmessage-length=0 \ + -fno-common \ + -fno-strict-aliasing \ + -pipe \ + +gb_CXXFLAGS := \ + -isysroot $(gb_SDKDIR) \ + -Wall \ + -Wendif-labels \ + -Wextra \ + -Wno-ctor-dtor-privacy \ + -Wno-non-virtual-dtor \ + -fmessage-length=0 \ + -fno-common \ + -fno-strict-aliasing \ + -fsigned-char \ + -malign-natural \ + -pipe \ + #-Wshadow \ break in compiler headers already + #-fsigned-char \ might be removed? + #-malign-natural \ might be removed? + +# these are to get g++ to switch to Objective-C++ mode +# (see toolkit module for a case where it is necessary to do it this way) +gb_OBJCXXFLAGS := -x objective-c++ -fobjc-exceptions + +gb_OBJCFLAGS := -x objective-c + +ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE) +gb_CFLAGS_WERROR := -Werror +gb_CXXFLAGS_WERROR := -Werror +endif + +gb_LinkTarget_EXCEPTIONFLAGS := \ + -DEXCEPTIONS_ON \ + -fexceptions \ + -fno-enforce-eh-specs \ + +gb_LinkTarget_NOEXCEPTIONFLAGS := \ + -DEXCEPTIONS_OFF \ + -fno-exceptions \ + +gb_LinkTarget_LDFLAGS := \ + -Wl,-syslibroot,$(gb_SDKDIR) \ + $(subst -L../lib , ,$(SOLARLIB)) \ +#man ld says: obsolete -Wl,-multiply_defined,suppress \ + +ifneq ($(gb_DEBUGLEVEL),0) +gb_COMPILEROPTFLAGS := -O0 +else +gb_COMPILEROPTFLAGS := -O2 +endif + +gb_COMPILERNOOPTFLAGS := -O0 + +# Helper class + +gb_Helper_abbreviate_dirs_native = $(gb_Helper_abbreviate_dirs) + +gb_Helper_set_ld_path := DYLD_LIBRARY_PATH=$(OUTDIR)/lib + +# convert parametters filesystem root to native notation +# does some real work only on windows, make sure not to +# break the dummy implementations on unx* +define gb_Helper_convert_native +$(1) +endef + + +# CObject class + +define gb_CObject__command +$(call gb_Output_announce,$(2),$(true),C ,3) +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + mkdir -p $(dir $(call gb_CObject_get_dep_target,$(2))) && \ + $(gb_CC) \ + $(DEFS) $(CFLAGS) \ + -c $(3) \ + -o $(1) \ + -MMD -MT $(call gb_CObject_get_target,$(2)) \ + -MF $(call gb_CObject_get_dep_target,$(2)) \ + -I$(dir $(3)) \ + $(INCLUDE)) +endef + + +# CxxObject class + +# N.B: $(CXXFLAGS) may contain -x objective-c++, which must come before -c +define gb_CxxObject__command +$(call gb_Output_announce,$(2),$(true),CXX,3) +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + mkdir -p $(dir $(call gb_CxxObject_get_dep_target,$(2))) && \ + $(gb_CXX) \ + $(DEFS) $(CXXFLAGS) \ + -c $(3) \ + -o $(1) \ + -MMD -MT $(call gb_CxxObject_get_target,$(2)) \ + -MF $(call gb_CxxObject_get_dep_target,$(2)) \ + -I$(dir $(3)) \ + $(INCLUDE_STL) $(INCLUDE)) +endef + + +# ObjCxxObject class + +define gb_ObjCxxObject__command +$(call gb_Output_announce,$(2),$(true),OCX,3) +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + mkdir -p $(dir $(call gb_ObjCxxObject_get_dep_target,$(2))) && \ + $(gb_CXX) \ + $(DEFS) $(OBJCXXFLAGS) \ + -c $(3) \ + -o $(1) \ + -MMD -MT $(call gb_ObjCxxObject_get_target,$(2)) \ + -MF $(call gb_ObjCxxObject_get_dep_target,$(2)) \ + -I$(dir $(3)) \ + $(INCLUDE_STL) $(INCLUDE)) +endef + +# ObjCObject class + +define gb_ObjCObject__command +$(call gb_Output_announce,$(2),$(true),OCC,3) +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + mkdir -p $(dir $(call gb_ObjCObject_get_dep_target,$(2))) && \ + $(gb_CC) \ + $(DEFS) $(OBJCFLAGS) \ + -c $(3) \ + -o $(1) \ + -MMD -MT $(call gb_ObjCObject_get_target,$(2)) \ + -MF $(call gb_ObjCObject_get_dep_target,$(2)) \ + -I$(dir $(3)) \ + $(INCLUDE_STL) $(INCLUDE)) +endef + + +# LinkTarget class + +define gb_LinkTarget__get_rpath_for_layer +$(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS))) +endef + +gb_LinkTarget__RPATHS := \ + URELIB:@__________________________________________________URELIB/ \ + UREBIN: \ + OOO:@__________________________________________________OOO/ \ + BRAND: \ + SDKBIN: \ + NONEBIN: \ + +define gb_LinkTarget__get_installname +$(if $(2),-install_name '$(2)$(1)',) +endef + +gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS) +gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR) +gb_LinkTarget_OBJCXXFLAGS := $(gb_CXXFLAGS) $(gb_OBJCXXFLAGS) $(gb_COMPILEROPTFLAGS) +gb_LinkTarget_OBJCFLAGS := $(gb_CFLAGS) $(gb_OBJCFLAGS) $(gb_COMPILEROPTFLAGS) + +ifeq ($(gb_SYMBOL),$(true)) +gb_LinkTarget_CFLAGS += -g +gb_LinkTarget_CXXFLAGS += -g +gb_LinkTarget_OBJCXXFLAGS += -g +gb_LinkTarget_OBJCFLAGS += -g +endif + +gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) +gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC))) + +# FIXME framework handling very hackish +define gb_LinkTarget__get_liblinkflags +$(patsubst lib%.dylib,-l%,$(foreach lib,$(filter-out $(gb_Library__FRAMEWORKS),$(1)),$(call gb_Library_get_filename,$(lib)))) \ +$(addprefix -framework ,$(filter $(gb_Library__FRAMEWORKS),$(1))) +endef + +define gb_LinkTarget__get_layer +$(if $(filter Executable,$(1)),\ + $$(call gb_Executable_get_layer,$(2)),\ + $$(call gb_Library_get_layer,$(2))) +endef + +# FIXME the DYLIB_FILE mess is only necessary because +# solver layout is different from installation layout +define gb_LinkTarget__command_dynamiclink +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + DYLIB_FILE=`$(gb_MKTEMP)` && \ + $(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \ + $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ + $(subst \d,$$,$(RPATH)) $(LDFLAGS) \ + $(patsubst lib%.dylib,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) > $${DYLIB_FILE} && \ + $(gb_CXX) \ + $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \ + $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ + $(subst \d,$$,$(RPATH)) $(LDFLAGS) \ + $(call gb_LinkTarget__get_liblinkflags,$(LINKED_LIBS)) \ + $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ + $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ + $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \ + $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \ + $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ + $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \ + $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ + -o $(1) \ + `cat $${DYLIB_FILE}` && \ + $(if $(filter Library CppunitTest,$(TARGETTYPE)),\ + $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Library $(LAYER) $(1) && \ + ln -sf $(1) $(patsubst %.dylib,%.jnilib,$(1)) &&) \ + rm -f $${DYLIB_FILE}) +endef + +# parameters: 1-linktarget 2-cobjects 3-cxxobjects +define gb_LinkTarget__command_staticlink +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + $(gb_AR) -rsu $(1) \ + $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ + $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ + $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \ + $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \ + $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ + $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),@$(extraobjectlist)) \ + 2> /dev/null) +endef + +define gb_LinkTarget__command +$(call gb_Output_announce,$(2),$(true),LNK,4) +$(if $(filter Library CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1),$(2))) +$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1))) +endef + + +# Library class + +gb_Library_DEFS := +gb_Library_TARGETTYPEFLAGS := -dynamiclib -single_module +gb_Library_SYSPRE := lib +gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_ +gb_Library_PLAINEXT := .dylib +gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT) + +ifeq ($(CPUNAME),INTEL) +gb_Library_OOOEXT := mxi$(gb_Library_PLAINEXT) +gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT) +else # ifeq ($(CPUNAME),POWERPC) +gb_Library_OOOEXT := mxp$(gb_Library_PLAINEXT) +gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT) +endif + +gb_Library__FRAMEWORKS := \ + +gb_Library_PLAINLIBS_NONE += \ + jpeg \ + m \ + pthread \ + z \ + +gb_Library_FILENAMES := \ + $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \ + $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \ + $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \ + $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \ + $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \ + $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \ + $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \ + $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \ + $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \ + + +gb_Library_LAYER := \ + $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \ + $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \ + $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \ + $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \ + $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \ + $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \ + $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \ + $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \ + +define gb_Library_get_rpath +$(call gb_LinkTarget__get_installname,$(call gb_Library_get_filename,$(1)),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1)))) +endef + +define gb_Library_Library_platform +$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1)) +$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Library_get_layer,$(1)) + +endef + + +# StaticLibrary class + +gb_StaticLibrary_DEFS := +gb_StaticLibrary_SYSPRE := lib +gb_StaticLibrary_PLAINEXT := .a +gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT) + +gb_StaticLibrary_FILENAMES := \ + $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \ + $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \ + +gb_StaticLibrary_StaticLibrary_platform = + + +# Executable class + +gb_Executable_EXT := +gb_Executable_TARGETTYPEFLAGS := -bind_at_load + +gb_Executable_LAYER := \ + $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \ + $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \ + $(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \ + $(foreach exe,$(gb_Executable_BRAND),$(exe):BRAND) \ + $(foreach exe,$(gb_Executable_NONE),$(exe):NONEBIN) \ + + +define gb_Executable_get_rpath +$(call gb_LinkTarget__get_installname,$(1),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))) +endef + +define gb_Executable_Executable_platform +$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1)) +$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Executable_get_layer,$(1)) + +endef + + +# CppunitTest class + +gb_CppunitTest_CPPTESTPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib +gb_CppunitTest_SYSPRE := libtest_ +gb_CppunitTest_EXT := .dylib +gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT) +gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename) + +define gb_CppunitTest_CppunitTest_platform +$(call gb_LinkTarget_get_target,$(2)) : RPATH := +$(call gb_LinkTarget_get_target,$(2)) : LAYER := NONE + +endef + +# JunitTest class + +define gb_JunitTest_JunitTest_platform +$(call gb_JunitTest_get_target,$(1)) : DEFS := \ + -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(OUTDIR)/installation/opt/OpenOffice.org.app/Contents/MacOS/soffice}" \ + -Dorg.openoffice.test.arg.env=DYLD_LIBRARY_PATH \ + -Dorg.openoffice.test.arg.user=file://$(call gb_JunitTest_get_userdir,$(1)) \ + +endef + +# SdiTarget class + +gb_SdiTarget_SVIDLPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib + +# SrsPartMergeTarget + +gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib + +# SrsPartTarget class + +gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc +gb_SrsPartTarget_RSCCOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET) + +define gb_SrsPartTarget__command_dep +$(call gb_Helper_abbreviate_dirs,\ + $(gb_GCCP) \ + -MM -MT $(call gb_SrsPartTarget_get_target,$(1)) \ + $(INCLUDE) \ + $(DEFS) \ + -c -x c++-header $(2) \ + -o $(call gb_SrsPartTarget_get_dep_target,$(1))) +endef + + +# ComponentTarget + +gb_XSLTPROCPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib +gb_Library_COMPONENTPREFIXES := \ + OOO:vnd.sun.star.expand:\dOOO_BASE_DIR/program/ \ + URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \ + + +# vim: set noet sw=4: diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk index c8f168c1cf3d..9add3f4f1bf4 100644 --- a/solenv/inc/settings.mk +++ b/solenv/inc/settings.mk @@ -527,6 +527,10 @@ RSC_LANG_ISO+:=$(completelangiso) TARGETTYPE=CUI .ENDIF +.IF "$(TARGETPLAFORM)"=="" +TARGETPLATFORM=HOST +.ENDIF + # --- Pfade setzen ------------------------------------------------- # Output-Pfad @@ -884,7 +888,11 @@ CDEFS+=-DTIMELOG CDEFSCXX= CDEFSOBJ= +.IF "$(OS)"=="IOS" +CDEFSSLO= +.ELSE CDEFSSLO=-DSHAREDLIB -D_DLL_ +.ENDIF CDEFSGUI=-DGUI CDEFSCUI=-DCUI #CDEFSMT=-DMULTITHREAD diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk index 25b2fa0abd49..58a9e2bf2a7e 100644 --- a/solenv/inc/unx.mk +++ b/solenv/inc/unx.mk @@ -151,6 +151,10 @@ .INCLUDE : unxmacxi.mk .ENDIF +.IF "$(COM)$(OS)$(CPU)" == "GCCIOSR" +.INCLUDE : unxiosr.mk +.ENDIF + .IF "$(COM)$(OS)$(CPU)" == "GCCLINUXM" .INCLUDE : unxlngmips.mk .ENDIF diff --git a/solenv/inc/unxiosr.mk b/solenv/inc/unxiosr.mk new file mode 100644 index 000000000000..07877b86fb8f --- /dev/null +++ b/solenv/inc/unxiosr.mk @@ -0,0 +1,75 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# 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. +# +#************************************************************************* + +# --- Unix Environment for iOS cross-compilation ------------- + +.IF "$(TARGETPLATFORM)"=="BUILD" +CC:=$(CC_FOR_BUILD) +CXX:=$(CXX_FOR_BUILD) +.ENDIF + +CFLAGS=-c $(EXTRA_CFLAGS) + +LINKC*=$(CC) +LINK*=$(CXX) + +LIBMGR*=ar +LIBFLAGS=-r + +PROCESSOR_DEFINES=-DARM32 + +DLLPOST= +DLLPOSTFIX= + +# flags to enable build with symbols +CFLAGSENABLESYMBOLS=-g + +# Flag for including debugging information in object files +CFLAGSDEBUG=-g +CFLAGSDBGUTIL= + +# Flag to specify output file to compiler/linker +CFLAGSOUTOBJ=-o + +# # Include generic Mac OS X makefile +# .INCLUDE : unxmacx.mk + +# --- general *ix settings --- +HC=hc +HCFLAGS= +PATH_SEPERATOR*=: +CDEFS+=-D__DMAKE + +CDEFS+=-DUNIX + +YACC*=yacc +YACCFLAGS*=-d -t + +EXECPOST= +SCPPOST=.ins +DLLDEST=$(LB) +SOLARSHAREDBIN=$(SOLARLIBDIR) diff --git a/soltools/cpp/_unix.c b/soltools/cpp/_unix.c index 05eb375e2e7a..5175e48e4ebf 100644 --- a/soltools/cpp/_unix.c +++ b/soltools/cpp/_unix.c @@ -198,39 +198,4 @@ void } -/* memmove is defined here because some vendors don't provide it at - all and others do a terrible job (like calling malloc) */ - -#if !defined(__IBMC__) && !defined(_WIN32) && !defined(__GLIBC__) - -void * - memmove(void *dp, const void *sp, size_t n) -{ - unsigned char *cdp, *csp; - - if (n <= 0) - return 0; - cdp = dp; - csp = (unsigned char *) sp; - if (cdp < csp) - { - do - { - *cdp++ = *csp++; - } while (--n); - } - else - { - cdp += n; - csp += n; - do - { - *--cdp = *--csp; - } while (--n); - } - return 0; -} - -#endif - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |