[Libreoffice-commits] core.git: Branch 'ports/macosx10.5/master' - 464 commits - accessibility/inc accessibility/source android/Bootstrap android/experimental apple_remote/Library_AppleRemote.mk apple_remote/source avmedia/Library_avmediaQuickTime.mk avmedia/Library_avmediavlc.mk avmedia/Module_avmedia.mk avmedia/source basctl/source basctl/uiconfig basegfx/source basic/inc basic/qa basic/source bean/inc bean/Library_officebean.mk bean/native bean/qa binaryurp/source bin/find-german-comments bin/find-unused-defines.awk bin/find-unused-defines.sh bin/gbuild-to-ide bridges/inc bridges/Library_cpp_uno.mk bridges/source bridges/test canvas/source chart2/inc chart2/qa chart2/source chart2/uiconfig comphelper/qa comphelper/source compilerplugins/clang config_host/config_features.h.in config_host.mk.in configure.ac connectivity/com connectivity/JunitTest_complex.mk connectivity/Module_connectivity.mk connectivity/org connectivity/qa connectivity/registry connectivity/source cppcanvas/qa cppcanvas/source cppuhelper/source cppu/source crashrep/CustomTarget_crashrep_res.mk crashrep/Executable_crashrep.mk crashrep/Makefile crashrep/Module_crashrep.mk crashrep/README crashrep/source crashrep/WinResTarget_crashrep.mk cui/source cui/uiconfig dbaccess/inc dbaccess/qa dbaccess/source dbaccess/uiconfig desktop/Executable_crashrep_com.mk desktop/inc desktop/Module_desktop.mk desktop/source desktop/uiconfig desktop/unx desktop/win32 dictionaries distro-configs/OxygenOfficeLinux.conf download.lst drawinglayer/source dtrans/source editeng/inc editeng/source embeddedobj/source embeddedobj/test embedserv/source extensions/Module_extensions.mk extensions/qa extensions/source external/boost external/coinmp external/curl external/harfbuzz external/icu external/jpeg-turbo external/libmwaw external/libodfgen external/libvisio external/libxml2 external/nss external/openssl external/python3 external/redland extras/Module_extras.mk extras/Package_tplofficorr.mk extras/Package_tploffimisc.mk extras/Packag e_tplpersonal.mk extras/Package_tplpresnt.mk extras/source filter/qa filter/source forms/inc forms/qa forms/source formula/source formula/uiconfig fpicker/Library_fps_aqua.mk fpicker/source framework/inc framework/JunitTest_framework_complex.mk framework/qa framework/source helpcompiler/inc helpcompiler/source helpcontent2 hwpfilter/source i18nlangtag/source i18npool/inc i18npool/source icon-themes/galaxy idlc/inc idlc/source idl/inc idl/source include/apple_remote include/avmedia include/basebmp include/basegfx include/basic include/clew include/codemaker include/com include/comphelper include/connectivity include/cppuhelper include/dbaccess include/drawinglayer include/editeng include/filter include/formula include/framework include/LibreOfficeKit include/o3tl include/oox include/opencl include/osl include/postwin.h include/rsc include/rtl include/sal include/sfx2 include/sot include/svl include/svtools include/svx include/toolkit include/tools include/uno include/unotools include /vbahelper include/vcl include/xmloff io/source javaunohelper/com javaunohelper/source javaunohelper/test jurt/source jurt/test jvmfwk/plugins l10ntools/inc l10ntools/source libreofficekit/qa libreofficekit/source lingucomponent/Module_lingucomponent.mk lingucomponent/source linguistic/qa linguistic/source lotuswordpro/source Makefile.in mysqlc/source nlpsolver/Jar_EvolutionarySolver.mk nlpsolver/Jar_nlpsolver.mk nlpsolver/src nlpsolver/ThirdParty odk/docs odk/examples odk/index.html odk/index_online.html odk/source offapi/com officecfg/registry oox/inc oox/source opencl/source package/inc package/source postprocess/Rdb_services.mk pyuno/source qadevOOo/runner qadevOOo/testdocs qadevOOo/tests readlicense_oo/license registry/source reportbuilder/Jar_reportbuilder.mk reportbuilder/java reportdesign/inc reportdesign/qa reportdesign/source reportdesign/uiconfig RepositoryExternal.mk RepositoryFixes.mk Repository.mk RepositoryModule_host.mk rsc/inc rsc/source sal/android sal/Library_sal. mk sal/osl sal/qa sal/rtl sal/textenc sax/source scaddins/source sccomp/source sc/CppunitTest_sc_condformats.mk sc/CppunitTest_sc_opencl_test.mk sc/inc sc/Module_sc.mk scp2/AutoInstall.mk scp2/InstallModule_crashrep.mk scp2/InstallScript_setup_osl.mk scp2/Module_scp2.mk scp2/source sc/qa scripting/source sc/sdi sc/source sc/uiconfig sdext/inc sdext/source sd/inc sd/source sd/uiconfig setup_native/scripts setup_native/source sfx2/inc sfx2/Library_sfx.mk sfx2/source sfx2/uiconfig shell/inc shell/Library_macbe.mk shell/source slideshow/inc slideshow/source solenv/bin solenv/gbuild soltools/mkdepend sot/qa sot/source sot/workben starmath/inc starmath/source stoc/source svgio/inc svgio/qa svgio/source svl/inc svl/qa svl/source svtools/inc svtools/source svx/inc svx/qa svx/source svx/uiconfig svx/workben swext/mediawiki sw/inc sw/qa sw/source sw/uiconfig sysui/desktop test/source testtools/source toolkit/qa toolkit/source toolkit/test tools/inc tools/qa tools/source ucbhelper/source ucb/s ource UnoControls/source unodevtools/source unotest/source unotools/inc unotools/qa unotools/source unoxml/source uui/source vbahelper/inc vbahelper/source vcl/android vcl/Executable_vcldemo.mk vcl/generic vcl/headless vcl/inc vcl/ios vcl/Library_vcl.mk vcl/opengl vcl/osx vcl/qa vcl/quartz vcl/source vcl/unx vcl/win vcl/WinResTarget_vcl.mk vcl/workben wizards/com wizards/Jar_commonwizards.mk wizards/Package_access2base.mk wizards/source writerfilter/inc writerfilter/qa writerfilter/source writerperfect/qa writerperfect/source xmlhelp/source xmloff/inc xmloff/Module_xmloff.mk xmloff/qa xmloff/source xmlscript/inc xmlscript/source xmlsecurity/source xmlsecurity/test_docs

Douglas Mencken dougmencken at gmail.com
Sun Jan 11 08:03:01 PST 2015


Rebased ref, commits from common ancestor:
commit 29b157bddd2ab72f7cfe47dd34f9b99b640d9ba7
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sat Dec 27 06:25:11 2014 -0500

    remove now-unused OUTPATH, fix solenv/bin/modules/installer
    
    (macosx_x86_64 is not "the only one"; use ::globals::os MACOSX)
    
    + add PLATFORM_MACOSX_POWERPC to isValidPlatform @ desktop/source/deployment/misc/dp_platform.cxx
    
    related commit:
        3104fba6051328cb827042272fc6bccf05ccf5fb
    
    Change-Id: Iced611e001ce69860d001b10c84d12a568b40a59

diff --git a/configure.ac b/configure.ac
index b6233f7..8917309 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3956,7 +3956,6 @@ darwin*)
         CPUNAME=POWERPC
         RTL_ARCH=PowerPC
         PLATFORMID=macosx_powerpc
-        OUTPATH=unxmacxp
         ;;
     i*86)
         AC_MSG_ERROR([Can't build 64-bit code in 32-bit OS])
diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx
index 7f217f1..ff5c6a1 100644
--- a/desktop/source/deployment/misc/dp_platform.cxx
+++ b/desktop/source/deployment/misc/dp_platform.cxx
@@ -57,6 +57,7 @@
 #define PLATFORM_FREEBSD_X86_64     "freebsd_x86_64"
 #define PLATFORM_NETBSD_X86         "netbsd_x86"
 #define PLATFORM_NETBSD_X86_64      "netbsd_x86_64"
+#define PLATFORM_MACOSX_POWERPC     "macosx_powerpc"
 #define PLATFORM_MACOSX_X86         "macosx_x86"
 #define PLATFORM_MACOSX_X86_64      "macosx_x86_64"
 #define PLATFORM_OPENBSD_X86        "openbsd_x86"
@@ -169,6 +170,8 @@ namespace
             ret = checkOSandCPU("NetBSD", "x86");
         else if (token == PLATFORM_NETBSD_X86_64)
             ret = checkOSandCPU("NetBSD", "X86_64");
+        else if (token == PLATFORM_MACOSX_POWERPC)
+            ret = checkOSandCPU("MacOSX", "PowerPC");
         else if (token == PLATFORM_MACOSX_X86)
             ret = checkOSandCPU("MacOSX", "x86");
         else if (token == PLATFORM_MACOSX_X86_64)
diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm
index 37a9123..22bed72 100644
--- a/solenv/bin/modules/installer/download.pm
+++ b/solenv/bin/modules/installer/download.pm
@@ -584,7 +584,7 @@ sub resolve_variables_in_downloadname
     elsif ( $installer::globals::issolarissparcbuild ) { $os = "solsparc"; }
     elsif ( $installer::globals::issolarisx86build ) { $os = "solia"; }
     elsif ( $installer::globals::islinuxbuild ) { $os = "linux"; }
-    elsif ( $installer::globals::platformid eq 'macosx_x86_64' ) { $os = "macosxx"; }
+    elsif ( $installer::globals::os eq 'MACOSX' ) { $os = "macosx"; }
     else { $os = ""; }
     $downloadname =~ s/\{os\}/$os/;
 
diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm
index d32df73..f8fa66a 100644
--- a/solenv/bin/modules/installer/parameter.pm
+++ b/solenv/bin/modules/installer/parameter.pm
@@ -275,7 +275,7 @@ sub setglobalvariables
         }
     }
 
-    if ( $installer::globals::platformid eq 'macosx_x86_64')
+    if ( $installer::globals::os eq 'MACOSX')
     {
         $installer::globals::ismacbuild = 1;
 
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index 6d77e41..fa9b96c 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -665,7 +665,7 @@ sub create_simple_package
     my $extensionfolder = get_extensions_dir($subfolderdir);
     installer::systemactions::remove_empty_dirs_in_folder($extensionfolder);
 
-    if ( $installer::globals::platformid eq 'macosx_x86_64' )
+    if ( $installer::globals::os eq 'MACOSX' )
     {
         installer::worker::put_scpactions_into_installset("$installdir/$packagename");
     }
commit effd3b8b97f504d21bd080b0345d529ab9dce506
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Dec 24 10:47:02 2014 -0500

    use -lobjc-gnu and GNUstep libraries when compiler is GCC
    
    (for: vcl, apple_remote, sfx2, avmedia-quicktime, fpicker-aqua, shell-macbe1)
    
    {note: path to GNUstep libraries is currently hard-coded}
    
    Change-Id: Ia28778f3e262e71c87c48e71fbfd9001d5d6ac7a

diff --git a/apple_remote/Library_AppleRemote.mk b/apple_remote/Library_AppleRemote.mk
index cf48553..5d8cbfd 100644
--- a/apple_remote/Library_AppleRemote.mk
+++ b/apple_remote/Library_AppleRemote.mk
@@ -17,6 +17,10 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,AppleRemote,\
     IOKit \
 ))
 
+$(eval $(call gb_Library_add_libs,AppleRemote,\
+    $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \
+))
+
 $(eval $(call gb_Library_add_objcobjects,AppleRemote,\
     apple_remote/source/KeyspanFrontRowControl \
     apple_remote/source/AppleRemote \
diff --git a/avmedia/Library_avmediaQuickTime.mk b/avmedia/Library_avmediaQuickTime.mk
index 20bf9c3..8bc097d 100644
--- a/avmedia/Library_avmediaQuickTime.mk
+++ b/avmedia/Library_avmediaQuickTime.mk
@@ -35,6 +35,10 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,avmediaQuickTime,\
 	QTKit \
 ))
 
+$(eval $(call gb_Library_add_libs,avmediaQuickTime,\
+	$(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \
+))
+
 $(eval $(call gb_Library_add_objcxxobjects,avmediaQuickTime,\
 	avmedia/source/quicktime/framegrabber \
 	avmedia/source/quicktime/manager \
diff --git a/fpicker/Library_fps_aqua.mk b/fpicker/Library_fps_aqua.mk
index e4b7ef5..c8a2dc5 100644
--- a/fpicker/Library_fps_aqua.mk
+++ b/fpicker/Library_fps_aqua.mk
@@ -44,4 +44,8 @@ $(eval $(call gb_Library_add_objcxxobjects,fps_aqua,\
 	fpicker/source/aqua/SalAquaPicker \
 ))
 
+$(eval $(call gb_Library_add_libs,fps_aqua,\
+	$(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \
+))
+
 # vim: set noet sw=4 ts=4:
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index 0a1100e..61a73c6 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -319,7 +319,7 @@ $(eval $(call gb_Library_add_objcxxobjects,sfx,\
     sfx2/source/appl/shutdowniconaqua \
 ))
 $(eval $(call gb_Library_add_libs,sfx,\
-    -lobjc \
+    $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \
 ))
 $(eval $(call gb_Library_use_system_darwin_frameworks,sfx,\
     Cocoa \
diff --git a/shell/Library_macbe.mk b/shell/Library_macbe.mk
index c693e11..5b13704 100644
--- a/shell/Library_macbe.mk
+++ b/shell/Library_macbe.mk
@@ -18,6 +18,10 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,macbe1,\
 	SystemConfiguration \
 ))
 
+$(eval $(call gb_Library_add_libs,macbe1,\
+	$(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \
+))
+
 $(eval $(call gb_Library_use_libraries,macbe1,\
 	cppu \
 	cppuhelper \
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index e8df725..64aacc8 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -89,7 +89,7 @@ $(eval $(call gb_Library_add_libs,vcl,\
     -framework IOKit \
     -F/System/Library/PrivateFrameworks \
     -framework CoreUI \
-    -lobjc \
+    $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \
 ))
 endif
 ifeq ($(OS),MACOSX)
commit d68c78c8c1e5c728085fe0cf0d59ce63456311af
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Dec 26 09:48:06 2014 -0500

    lingucomponent:MacOSXSpell: switch off for OS X 10.5
    
    Change-Id: I8f8eb6717b904aa4c231466ee7a1b873bc0035c1

diff --git a/Repository.mk b/Repository.mk
index d853577..fca5e097 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -482,7 +482,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 			AppleRemote \
 		) \
 		fps_aqua \
-		MacOSXSpell \
+		$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),MacOSXSpell) \
 	) \
 ))
 
diff --git a/lingucomponent/Module_lingucomponent.mk b/lingucomponent/Module_lingucomponent.mk
index 92d582c..68dcb78 100644
--- a/lingucomponent/Module_lingucomponent.mk
+++ b/lingucomponent/Module_lingucomponent.mk
@@ -14,7 +14,9 @@ $(eval $(call gb_Module_add_targets,lingucomponent,\
 	Library_guesslang \
 	Library_hyphen \
 	Library_lnth \
-	$(if $(filter MACOSX,$(OS)),Library_MacOSXSpell) \
+	$(if $(filter MACOSX,$(OS)),\
+		$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Library_MacOSXSpell) \
+	) \
 	Library_spell \
 	StaticLibrary_ulingu \
 ))
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index f23e4bf..db899fd 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -132,7 +132,7 @@ $(eval $(call gb_Rdb_add_components,services,\
 				$(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \
 			) \
 		) \
-		lingucomponent/source/spellcheck/macosxspell/MacOSXSpell \
+		$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),lingucomponent/source/spellcheck/macosxspell/MacOSXSpell) \
 		fpicker/source/aqua/fps_aqua \
 		shell/source/backends/macbe/macbe1 \
 		vcl/vcl.macosx \
commit 818261d31da29a6d3722d59dd19271f894fc92be
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Thu Dec 25 16:19:29 2014 -0500

    Disable OOoSpotlightImporter extension for OS X 10.5
    
    Change-Id: I0d9c48d511094fe3a5464f6abc811c2fb33bab4e

diff --git a/Repository.mk b/Repository.mk
index f385d8e..d853577 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -201,7 +201,7 @@ endif
 ifeq ($(OS),MACOSX)
 
 $(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \
-	OOoSpotlightImporter \
+	$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),OOoSpotlightImporter) \
 ))
 
 endif
diff --git a/extensions/Module_extensions.mk b/extensions/Module_extensions.mk
index fa527f5..c7d478c 100644
--- a/extensions/Module_extensions.mk
+++ b/extensions/Module_extensions.mk
@@ -113,9 +113,9 @@ endif # ENABLE_NPAPI_FROM_BROWSER=TRUE
 
 ifeq ($(OS),MACOSX)
 $(eval $(call gb_Module_add_targets,extensions,\
-	Library_OOoSpotlightImporter \
-	Package_mdibundle \
-	Package_OOoSpotlightImporter \
+	$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Library_OOoSpotlightImporter) \
+	$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Package_mdibundle) \
+	$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Package_OOoSpotlightImporter) \
 ))
 endif # OS=MACOSX
 
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index 5f31ae4..f19e822 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -582,6 +582,7 @@ End
 #endif
 
 #ifdef MACOSX
+#if MACOSX_SDK_VERSION >= 1060
 File gid_File_Spotlight_Bundle
     TXT_FILE_BODY;
     Dir = FILELIST_DIR;
@@ -596,6 +597,7 @@ File gid_File_Spotlight_Bundle_lib
     Styles = (FILELIST,USE_INTERNAL_RIGHTS);
 End
 #endif
+#endif
 
 File gid_File_Images
     TXT_FILE_BODY;
commit 768412f640755d13a6efe473e33ebe045d936edd
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Dec 24 15:03:00 2014 -0500

    avmedia: disable avmediaQuickTime for OS X 10.5
    
    + fix `OBJC_EXPORT is not defined' and `cannot convert to NSError**'
    
    Change-Id: I4842a74feffe9707b031b81c7941eccac0211ce0

diff --git a/Repository.mk b/Repository.mk
index 635c487..f385d8e 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -292,7 +292,9 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 	$(call gb_Helper_optional,AVMEDIA,avmedia) \
 	$(if $(filter MACOSX,$(OS)),\
 		$(if $(filter-out 1050 1060,$(MACOSX_SDK_VERSION)),avmediaMacAVF) \
-		$(if $(ENABLE_MACOSX_SANDBOX),,avmediaQuickTime) \
+		$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)), \
+			$(if $(ENABLE_MACOSX_SANDBOX),,avmediaQuickTime) \
+		) \
 	) \
 	$(call gb_Helper_optional,SCRIPTING, \
 		basctl \
diff --git a/avmedia/Module_avmedia.mk b/avmedia/Module_avmedia.mk
index 27b588d..f2eecc3 100644
--- a/avmedia/Module_avmedia.mk
+++ b/avmedia/Module_avmedia.mk
@@ -36,12 +36,14 @@ $(eval $(call gb_Module_add_targets,avmedia,\
 endif
 
 ifeq ($(OS),MACOSX)
+ifneq (1050,$(MACOSX_SDK_VERSION))
 ifneq ($(ENABLE_MACOSX_SANDBOX),TRUE)
 $(eval $(call gb_Module_add_targets,avmedia,\
 	Library_avmediaQuickTime \
 ))
 endif
 endif
+endif
 
 ifeq ($(OS),MACOSX)
 ifneq (1050,$(MACOSX_SDK_VERSION))
diff --git a/avmedia/source/quicktime/framegrabber.mm b/avmedia/source/quicktime/framegrabber.mm
index 5a92e79..c1e0e1c 100644
--- a/avmedia/source/quicktime/framegrabber.mm
+++ b/avmedia/source/quicktime/framegrabber.mm
@@ -74,7 +74,7 @@ bool FrameGrabber::create( const ::rtl::OUString& rURL )
 
     // create the Movie
 
-        mpMovie = [mpMovie initWithURL:aURL error:nil];
+        mpMovie = [mpMovie initWithURL:aURL error:reinterpret_cast<NSError **>(nil)];
         if(mpMovie)
         {
             [mpMovie retain];
diff --git a/avmedia/source/quicktime/quicktimecommon.hxx b/avmedia/source/quicktime/quicktimecommon.hxx
index 8c1711d..b01a21e 100644
--- a/avmedia/source/quicktime/quicktimecommon.hxx
+++ b/avmedia/source/quicktime/quicktimecommon.hxx
@@ -21,6 +21,9 @@
 #define INCLUDED_AVMEDIA_SOURCE_QUICKTIME_QUICKTIMECOMMON_HXX
 
 #ifdef MACOSX
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <premac.h>
 #import <Cocoa/Cocoa.h>
 #import <QTKit/QTKit.h>
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index adaef73..f23e4bf 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -128,7 +128,9 @@ $(eval $(call gb_Rdb_add_components,services,\
 			$(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \
 		) \
 		$(if $(filter TRUE,$(ENABLE_MACOSX_SANDBOX)),, \
-			$(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \
+			$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)), \
+				$(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \
+			) \
 		) \
 		lingucomponent/source/spellcheck/macosxspell/MacOSXSpell \
 		fpicker/source/aqua/fps_aqua \
commit b18204a545afaf60636a8a0fab9feab070ce0671
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Thu Dec 25 11:01:26 2014 -0500

    disable OpenCL (and glew) on OS X 10.5
    
    Change-Id: I6d3fdcca15b3c5191851feea33434b9b5df7b26f

diff --git a/configure.ac b/configure.ac
index 894ce62..b6233f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10221,11 +10221,15 @@ dnl =================================================
 dnl Check whether to build with OpenCL support.
 dnl =================================================
 
-if test $_os != iOS -a $_os != Android; then
+if test "$_os" = "Darwin" -a "$with_macosx_sdk" = "10.5"; then
+    HAVE_FEATURE_OPENCL=
+else
+  if test $_os != iOS -a $_os != Android; then
     # OPENCL in BUILD_TYPE tells that OpenCL is potentially available on the platform (optional at run-time,
     # used through clew).
     BUILD_TYPE="$BUILD_TYPE OPENCL"
     AC_DEFINE(HAVE_FEATURE_OPENCL)
+  fi
 fi
 
 dnl ===================================================================
commit 3bc67c8fc2d3e648b32c679a20a812f9e6bce0e2
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Dec 26 08:59:41 2014 -0500

    fpicker:aqua - deal with OBJC_EXPORT and objc_msgSend
    
    Change-Id: I414f5dcbfca9697b22a20d2d45f94c91ec4cd691

diff --git a/fpicker/source/aqua/CFStringUtilities.hxx b/fpicker/source/aqua/CFStringUtilities.hxx
index 58d0951..7429acb 100644
--- a/fpicker/source/aqua/CFStringUtilities.hxx
+++ b/fpicker/source/aqua/CFStringUtilities.hxx
@@ -21,6 +21,9 @@
 #define INCLUDED_FPICKER_SOURCE_AQUA_CFSTRINGUTILITIES_HXX
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Carbon/Carbon.h>
 #include <Cocoa/Cocoa.h>
 #include <postmac.h>
diff --git a/fpicker/source/aqua/ControlHelper.hxx b/fpicker/source/aqua/ControlHelper.hxx
index 1e2a774..071955b 100644
--- a/fpicker/source/aqua/ControlHelper.hxx
+++ b/fpicker/source/aqua/ControlHelper.hxx
@@ -27,6 +27,9 @@
 #include <map>
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include <postmac.h>
 #include "SalAquaConstants.h"
diff --git a/fpicker/source/aqua/NSString_OOoAdditions.hxx b/fpicker/source/aqua/NSString_OOoAdditions.hxx
index 08bfbd4..62b824f 100644
--- a/fpicker/source/aqua/NSString_OOoAdditions.hxx
+++ b/fpicker/source/aqua/NSString_OOoAdditions.hxx
@@ -21,6 +21,9 @@
 #define INCLUDED_FPICKER_SOURCE_AQUA_NSSTRING_OOOADDITIONS_HXX
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 #include <postmac.h>
 #include <rtl/ustring.hxx>
diff --git a/fpicker/source/aqua/SalAquaFilePicker.mm b/fpicker/source/aqua/SalAquaFilePicker.mm
index 86d1da3..cf5a818 100644
--- a/fpicker/source/aqua/SalAquaFilePicker.mm
+++ b/fpicker/source/aqua/SalAquaFilePicker.mm
@@ -204,12 +204,13 @@ sal_Int16 SAL_CALL SalAquaFilePicker::execute() throw( uno::RuntimeException )
 
     //Set the delegate to be notified of certain events
 
-    // I don't know why, but with gcc 4.2.1, this line results in the warning:
+#if MACOSX_SDK_VERSION < 1060
+    [m_pDialog setDelegate:m_pDelegate];
+#else
+    // with gcc 4.2.1, [m_pDialog setDelegate:m_pDelegate] results in the warning
     // class 'AquaFilePickerDelegate' does not implement the 'NSOpenSavePanelDelegate' protocol
-    // So instead of:
-    // [m_pDialog setDelegate:m_pDelegate];
-    // do:
     objc_msgSend(m_pDialog, @selector(setDelegate:), m_pDelegate);
+#endif
 
     int nStatus = runandwaitforresult();
 
diff --git a/fpicker/source/aqua/resourceprovider.hxx b/fpicker/source/aqua/resourceprovider.hxx
index fd6647e..e736801 100644
--- a/fpicker/source/aqua/resourceprovider.hxx
+++ b/fpicker/source/aqua/resourceprovider.hxx
@@ -23,6 +23,10 @@
 
 #include <sal/types.h>
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
+
 #include <premac.h>
 #include <Cocoa/Cocoa.h>
 #include <postmac.h>
commit b58c782ae766d311b302bf43b144547a21bfd3d3
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Dec 24 12:59:04 2014 -0500

    sfx2:shutdowniconaqua.mm: deal with OBJC_EXPORT and objc_msgSend
    
    Change-Id: I7ad0ce3067d8f51d968d4233f77d70300d0d913e

diff --git a/sfx2/source/appl/shutdowniconaqua.mm b/sfx2/source/appl/shutdowniconaqua.mm
index d69a207..9cc6921 100644
--- a/sfx2/source/appl/shutdowniconaqua.mm
+++ b/sfx2/source/appl/shutdowniconaqua.mm
@@ -41,6 +41,9 @@
 
 #include "premac.h"
 #include <objc/objc-runtime.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 
@@ -352,15 +355,13 @@ static void appendRecentMenu( NSMenu* i_pMenu, NSMenu* i_pDockMenu, const OUStri
     [pItem setEnabled: YES];
     NSMenu* pRecentMenu = [[NSMenu alloc] initWithTitle: getAutoreleasedString( i_rTitle ) ];
 
+#if MACOSX_SDK_VERSION < 1060
+    [pRecentMenu setDelegate: pRecentDelegate];
+#else
     // When compiling against 10.6 SDK, we get the warning:
     // class 'RecentMenuDelegate' does not implement the 'NSMenuDelegate' protocol
-
-    // No idea if that is a bogus warning, or if the way this is
-    // implemented just is so weird that the compiler gets
-    // confused. Anyway, to avoid warnings, instead of this:
-    // [pRecentMenu setDelegate: pRecentDelegate];
-    // do this:
     objc_msgSend(pRecentMenu, @selector(setDelegate:), pRecentDelegate);
+#endif
 
     [pRecentMenu setAutoenablesItems: NO];
     [pItem setSubmenu: pRecentMenu];
@@ -375,9 +376,11 @@ static void appendRecentMenu( NSMenu* i_pMenu, NSMenu* i_pDockMenu, const OUStri
         [pItem setEnabled: YES];
         pRecentMenu = [[NSMenu alloc] initWithTitle: getAutoreleasedString( i_rTitle ) ];
 
-        // See above
-        // [pRecentMenu setDelegate: pRecentDelegate];
+#if MACOSX_SDK_VERSION < 1060
+        [pRecentMenu setDelegate: pRecentDelegate];
+#else
         objc_msgSend(pRecentMenu, @selector(setDelegate:), pRecentDelegate);
+#endif
 
         [pRecentMenu setAutoenablesItems: NO];
         [pItem setSubmenu: pRecentMenu];
commit b308469e72464f486c4788dd5df2acb8eaec42fd
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sat Oct 25 11:03:56 2014 -0400

    vcl: workarounds for `objc_msgSend setDelegate' on OS X 10.5
    
    (vcl/osx/salframe.cxx, vcl/osx/salmenu.cxx)
    
    plus, move conditional includes in salframe.cxx down a bit
    
    Change-Id: I39886b4590f227ec69042fed0f5240ba0b0fd7f2

diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 2be51bf..44c427a 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -37,11 +37,6 @@
 #include "osx/a11yfactory.h"
 #include "quartz/utils.h"
 
-#if MACOSX_SDK_VERSION < 1060
-#include "vcl/timer.hxx"
-#include "osx/saltimer.h"
-#endif
-
 #include "salwtype.hxx"
 
 #include "premac.h"
@@ -54,6 +49,11 @@
 #include <Carbon/Carbon.h>
 #include "postmac.h"
 
+#if MACOSX_SDK_VERSION < 1060
+#include "vcl/timer.hxx"
+#include "osx/saltimer.h"
+#endif
+
 using namespace std;
 
 AquaSalFrame* AquaSalFrame::s_pCaptureFrame = NULL;
@@ -201,16 +201,16 @@ void AquaSalFrame::initWindowAndView()
         [mpNSWindow setAcceptsMouseMovedEvents: YES];
     [mpNSWindow setHasShadow: YES];
 
-#if MACOSX_SDK_VERSION < 1060
-    objc_msgSend(mpNSWindow, @selector(setDelegate:), mpNSWindow);
-#else
+#if MACOSX_SDK_VERSION >= 1060
+    /* objc_msgSend(mpNSWindow, @selector(setDelegate:), mpNSWindow); */
     [mpNSWindow setDelegate: static_cast<id<NSWindowDelegate> >(mpNSWindow)];
-#endif
 
     if( [mpNSWindow respondsToSelector: @selector(setRestorable:)])
     {
         objc_msgSend(mpNSWindow, @selector(setRestorable:), NO);
     }
+#endif
+
     const NSRect aRect = { NSZeroPoint, NSMakeSize( maGeometry.nWidth, maGeometry.nHeight )};
     mnTrackingRectTag = [mpNSView addTrackingRect: aRect owner: mpNSView userData: nil assumeInside: NO];
 
diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx
index b6c68ee..e6941ba 100644
--- a/vcl/osx/salmenu.cxx
+++ b/vcl/osx/salmenu.cxx
@@ -246,9 +246,8 @@ AquaSalMenu::AquaSalMenu( bool bMenuBar ) :
     if( ! mbMenuBar )
     {
         mpMenu = [[SalNSMenu alloc] initWithMenu: this];
-#if MACOSX_SDK_VERSION < 1060
-        objc_msgSend(mpMenu, @selector(setDelegate:), mpMenu);
-#else
+#if MACOSX_SDK_VERSION >= 1060
+        /* objc_msgSend(mpMenu, @selector(setDelegate:), mpMenu); */
         [mpMenu setDelegate: (id<NSMenuDelegate>)mpMenu];
 #endif
     }
commit 8e341db679fd2ff6ff2f435b99276aa8d8d584f2
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Oct 26 06:38:10 2014 -0400

    vcl: fix some "cannot convert 'objc_object*' to..." issues
    
    Change-Id: I4b0e32c412937da4b2ea4bf350be32ea31362b3c

diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index 27be98d..1f98db1 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -482,7 +482,7 @@ static AquaSalFrame* getMouseContainerFrame()
         mpFrame = pFrame;
         mMarkedRange = NSMakeRange(NSNotFound, 0);
         mSelectedRange = NSMakeRange(NSNotFound, 0);
-        mpReferenceWrapper = nil;
+        mpReferenceWrapper = reinterpret_cast<ReferenceWrapper*>(nil);
         mpMouseEventListener = nil;
         mpLastSuperEvent = nil;
     }
@@ -1788,7 +1788,7 @@ private:
         // some frames never become visible ..
         ::vcl::Window *pWindow = mpFrame -> GetWindow();
         if ( ! pWindow )
-            return nil;
+            return reinterpret_cast<::com::sun::star::accessibility::XAccessibleContext*>(nil);
 
         mpReferenceWrapper = new ReferenceWrapper;
         mpReferenceWrapper -> rAccessibleContext =  pWindow -> /*GetAccessibleChildWindow( 0 ) ->*/ GetAccessible() -> getAccessibleContext();
diff --git a/vcl/osx/salnativewidgets.cxx b/vcl/osx/salnativewidgets.cxx
index 41b749a..08caf0c 100644
--- a/vcl/osx/salnativewidgets.cxx
+++ b/vcl/osx/salnativewidgets.cxx
@@ -558,7 +558,7 @@ bool AquaSalGraphics::drawNativeControl(ControlType nType,
                         [NSNumber numberWithBool:NO], @"kCUIWindowFrameDrawTitleSeparatorKey",
                         [NSNumber numberWithBool:YES], @"is.flipped",
                         nil]),
-                        nil);;
+                        reinterpret_cast<const __CFDictionary**>(nil));;
             }
             else
             {
commit 6738362a4a8a0b0b20ee433329a0dde68193bebe
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Tue Oct 28 13:18:59 2014 -0400

    fix "trying to encode non-integer type as a bitfield"
    
    this problem arises when you compile with GCC
    (GNU objective-C mode)
    
    Change-Id: Ifa4ff252ae5a7b71320d41873a2c412a32dd0333

diff --git a/vcl/inc/osx/salframe.h b/vcl/inc/osx/salframe.h
index fc7bb34..624e67a 100644
--- a/vcl/inc/osx/salframe.h
+++ b/vcl/inc/osx/salframe.h
@@ -62,13 +62,13 @@ public:
     int                             mnMaxWidth;             // max. client width in pixels
     int                             mnMaxHeight;            // max. client height in pixels
     NSRect                          maFullScreenRect;       // old window size when in FullScreen
-    bool                            mbGraphics:1;           // is Graphics used?
-    bool                            mbFullScreen:1;         // is Window in FullScreen?
-    bool                            mbShown:1;
-    bool                            mbInitShow:1;
-    bool                            mbPositioned:1;
-    bool                            mbSized:1;
-    bool                            mbPresentation:1;
+    int                             mbGraphics:1;           // is Graphics used?
+    int                             mbFullScreen:1;         // is Window in FullScreen?
+    int                             mbShown:1;
+    int                             mbInitShow:1;
+    int                             mbPositioned:1;
+    int                             mbSized:1;
+    int                             mbPresentation:1;
 
     sal_uLong                           mnStyle;
     unsigned int                    mnStyleMask;            // our style mask from NSWindow creation
commit 163c6d9225115acaae6dea472ae066b8c004cefa
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Oct 26 03:17:10 2014 -0400

    vcl, apple_remote, toolkit: fix "OBJC_EXPORT is not defined"
    
    ( include <objc/objc-api.h> )
    
    Change-Id: Idcbfff670fb9d83e950e7eac60000ef3e0130f95

diff --git a/apple_remote/source/AppleRemote.h b/apple_remote/source/AppleRemote.h
index f80431b..a5da1b9 100644
--- a/apple_remote/source/AppleRemote.h
+++ b/apple_remote/source/AppleRemote.h
@@ -29,6 +29,9 @@
  *
  *****************************************************************************/
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 
 #import "HIDRemoteControlDevice.h"
diff --git a/apple_remote/source/KeyspanFrontRowControl.h b/apple_remote/source/KeyspanFrontRowControl.h
index c75e86b..fa527bb 100644
--- a/apple_remote/source/KeyspanFrontRowControl.h
+++ b/apple_remote/source/KeyspanFrontRowControl.h
@@ -29,6 +29,9 @@
  *
  *****************************************************************************/
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 
 #import "HIDRemoteControlDevice.h"
diff --git a/include/apple_remote/RemoteControl.h b/include/apple_remote/RemoteControl.h
index 04fab5a..589cfd9 100644
--- a/include/apple_remote/RemoteControl.h
+++ b/include/apple_remote/RemoteControl.h
@@ -31,6 +31,9 @@
 
 #include <sal/config.h>
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 
 #include <sal/types.h>
diff --git a/include/apple_remote/RemoteMainController.h b/include/apple_remote/RemoteMainController.h
index c4ee0ac..158ba6d 100644
--- a/include/apple_remote/RemoteMainController.h
+++ b/include/apple_remote/RemoteMainController.h
@@ -31,6 +31,9 @@
 
 #include <sal/config.h>
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 
 #include <sal/types.h>
diff --git a/toolkit/source/awt/vclxsystemdependentwindow.cxx b/toolkit/source/awt/vclxsystemdependentwindow.cxx
index 1ee5600..7e6d93f 100644
--- a/toolkit/source/awt/vclxsystemdependentwindow.cxx
+++ b/toolkit/source/awt/vclxsystemdependentwindow.cxx
@@ -30,6 +30,9 @@
 
 #ifdef MACOSX
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 #endif
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index 38b55027..12adf3a 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -60,6 +60,9 @@
 
 #ifdef MACOSX
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 #endif
diff --git a/toolkit/source/awt/vclxtopwindow.cxx b/toolkit/source/awt/vclxtopwindow.cxx
index 48b593e..8cf52b1 100644
--- a/toolkit/source/awt/vclxtopwindow.cxx
+++ b/toolkit/source/awt/vclxtopwindow.cxx
@@ -22,6 +22,9 @@
 
 #if defined ( MACOSX )
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 #endif
diff --git a/toolkit/source/awt/vclxwindow1.cxx b/toolkit/source/awt/vclxwindow1.cxx
index 46b2e72..f2cc331 100644
--- a/toolkit/source/awt/vclxwindow1.cxx
+++ b/toolkit/source/awt/vclxwindow1.cxx
@@ -28,6 +28,9 @@
 #include <postwin.h>
 #elif defined ( MACOSX )
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 #endif
diff --git a/vcl/inc/OpenGLWrapper.hxx b/vcl/inc/OpenGLWrapper.hxx
index 0b90b41..d09a611 100644
--- a/vcl/inc/OpenGLWrapper.hxx
+++ b/vcl/inc/OpenGLWrapper.hxx
@@ -7,6 +7,10 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
+
 #include "AppKit/NSOpenGLView.h"
 #include "AppKit/NSOpenGL.h"
 
diff --git a/vcl/inc/osx/a11yfactory.h b/vcl/inc/osx/a11yfactory.h
index c739f3e..4e92126 100644
--- a/vcl/inc/osx/a11yfactory.h
+++ b/vcl/inc/osx/a11yfactory.h
@@ -20,6 +20,10 @@
 #ifndef INCLUDED_VCL_INC_OSX_A11YFACTORY_H
 #define INCLUDED_VCL_INC_OSX_A11YFACTORY_H
 
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
+
 #include "osxvcltypes.h"
 #include "a11ywrapper.h"
 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
diff --git a/vcl/inc/osx/osxvcltypes.h b/vcl/inc/osx/osxvcltypes.h
index f1659c4..96edccc 100644
--- a/vcl/inc/osx/osxvcltypes.h
+++ b/vcl/inc/osx/osxvcltypes.h
@@ -21,6 +21,9 @@
 #define INCLUDED_VCL_INC_OSX_OSXVCLTYPES_H
 
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 #import <AppKit/NSEvent.h>
 #include "postmac.h"
diff --git a/vcl/inc/osx/printview.h b/vcl/inc/osx/printview.h
index e396bd8..b63900b 100644
--- a/vcl/inc/osx/printview.h
+++ b/vcl/inc/osx/printview.h
@@ -21,6 +21,9 @@
 #define INCLUDED_VCL_INC_OSX_PRINTVIEW_H
 
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 
diff --git a/vcl/inc/osx/saldata.hxx b/vcl/inc/osx/saldata.hxx
index babb1b4..4b9b1b3 100644
--- a/vcl/inc/osx/saldata.hxx
+++ b/vcl/inc/osx/saldata.hxx
@@ -23,6 +23,9 @@
 #include <config_features.h>
 
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 
diff --git a/vcl/inc/osx/salinst.h b/vcl/inc/osx/salinst.h
index b37035c..4f6697c 100644
--- a/vcl/inc/osx/salinst.h
+++ b/vcl/inc/osx/salinst.h
@@ -25,6 +25,9 @@
 #include "osl/conditn.h"
 
 #ifdef MACOSX
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include "osx/osxvcltypes.h"
 #endif
 
diff --git a/vcl/inc/osx/saltimer.h b/vcl/inc/osx/saltimer.h
index b751a81..e663c65 100644
--- a/vcl/inc/osx/saltimer.h
+++ b/vcl/inc/osx/saltimer.h
@@ -21,6 +21,9 @@
 #define INCLUDED_VCL_INC_OSX_SALTIMER_H
 
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include "postmac.h"
 
diff --git a/vcl/inc/osx/vclnsapp.h b/vcl/inc/osx/vclnsapp.h
index 541b509..675cacc 100644
--- a/vcl/inc/osx/vclnsapp.h
+++ b/vcl/inc/osx/vclnsapp.h
@@ -23,6 +23,9 @@
 #include <config_features.h>
 
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include "Cocoa/Cocoa.h"
 #include "postmac.h"
 
diff --git a/vcl/inc/quartz/utils.h b/vcl/inc/quartz/utils.h
index e408250..ac264ec 100644
--- a/vcl/inc/quartz/utils.h
+++ b/vcl/inc/quartz/utils.h
@@ -23,6 +23,9 @@
 #include <iostream>
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <CoreFoundation/CoreFoundation.h>
 #include <Foundation/Foundation.h>
 #ifdef MACOSX
diff --git a/vcl/osx/DataFlavorMapping.cxx b/vcl/osx/DataFlavorMapping.cxx
index 26e8885..e921c96 100644
--- a/vcl/osx/DataFlavorMapping.cxx
+++ b/vcl/osx/DataFlavorMapping.cxx
@@ -36,6 +36,9 @@
 #include <string.h>
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Cocoa/Cocoa.h>
 #include <postmac.h>
 
diff --git a/vcl/osx/DataFlavorMapping.hxx b/vcl/osx/DataFlavorMapping.hxx
index 1917aeb..3de9feb 100644
--- a/vcl/osx/DataFlavorMapping.hxx
+++ b/vcl/osx/DataFlavorMapping.hxx
@@ -26,6 +26,9 @@
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 #include <postmac.h>
 
diff --git a/vcl/osx/DragActionConversion.hxx b/vcl/osx/DragActionConversion.hxx
index fbb5ea3..b77047d 100644
--- a/vcl/osx/DragActionConversion.hxx
+++ b/vcl/osx/DragActionConversion.hxx
@@ -23,6 +23,9 @@
 #include <sal/types.h>
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 #include <postmac.h>
 
diff --git a/vcl/osx/DragSource.hxx b/vcl/osx/DragSource.hxx
index 491716d..403ed51 100644
--- a/vcl/osx/DragSource.hxx
+++ b/vcl/osx/DragSource.hxx
@@ -33,6 +33,9 @@
 #include <boost/utility.hpp>
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #import <Cocoa/Cocoa.h>
 #include <postmac.h>
 
diff --git a/vcl/osx/PictToBmpFlt.cxx b/vcl/osx/PictToBmpFlt.cxx
index 77c67a6..097050e 100644
--- a/vcl/osx/PictToBmpFlt.cxx
+++ b/vcl/osx/PictToBmpFlt.cxx
@@ -18,6 +18,9 @@
  */
 
 #include <premac.h>
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Carbon/Carbon.h>
 #include <QuickTime/QuickTime.h>
 #include <postmac.h>
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 31dac7b..2be51bf 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -45,6 +45,9 @@
 #include "salwtype.hxx"
 
 #include "premac.h"
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <objc/objc-runtime.h>
 // needed for theming
 // FIXME: move theming code to salnativewidgets.cxx
commit 81ab4f14a29e936d9ae485720dd13e4fe104ad36
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Oct 8 10:38:28 2014 -0400

    Use GNU objc ABI/runtime instead of NeXT ABI/runtime when compiler is GCC
    
    also,
      + fix "cannot find interface declaration for NXConstantString"
      + sal/osl/unx/system.h: include <objc/objc-api.h> when OBJC_EXPORT
        is not defined
    
    Change-Id: I5f0df322435be8244d372642dee1c21d783306f1

diff --git a/sal/osl/unx/system.hxx b/sal/osl/unx/system.hxx
index 3013e91..56eeb03 100644
--- a/sal/osl/unx/system.hxx
+++ b/sal/osl/unx/system.hxx
@@ -215,6 +215,9 @@
 #ifdef MACOSX
 #define __OPENTRANSPORTPROVIDERS__ // these are already defined
 #define TimeValue CFTimeValue      // Do not conflict with TimeValue in sal/inc/osl/time.h
+#ifndef OBJC_EXPORT
+#include <objc/objc-api.h>
+#endif
 #include <Carbon/Carbon.h>
 #undef TimeValue
 #   ifndef ETIME
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index 53e0a6c..36fab9e 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -58,9 +58,21 @@ gb_CXXFLAGS := \
 
 # 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 -fobjc-exceptions
+gb_OBJCXXFLAGS := \
+	-x objective-c++ \
+	-fobjc-exceptions \
+	$(if $(filter TRUE,$(COM_GCC_IS_CLANG)),,\
+		-fgnu-runtime \
+		-fconstant-string-class=NSConstantString \
+	)
+
+gb_OBJCFLAGS := \
+	-x objective-c \
+	-fobjc-exceptions \
+	$(if $(filter TRUE,$(COM_GCC_IS_CLANG)),,\
+		-fgnu-runtime \
+		-fconstant-string-class=NSConstantString \
+	)
 
 # LinkTarget class
 
commit 6ab29fb6ff84fed60f9c9e9c2856a320a3cd87ef
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Tue Nov 4 12:21:54 2014 -0500

    sd/source/ui/remotecontrol: there're not only OS X >=10.8
    
    related commit: 8bfc9a20ccea2689fec1ffe0654db1f95179bd4f
    
    Change-Id: I9862aecc02a9cfb8f4db97159f1bd4560eff1cef

diff --git a/sd/source/ui/remotecontrol/BluetoothServer.cxx b/sd/source/ui/remotecontrol/BluetoothServer.cxx
index e04392d..a07df2f 100644
--- a/sd/source/ui/remotecontrol/BluetoothServer.cxx
+++ b/sd/source/ui/remotecontrol/BluetoothServer.cxx
@@ -42,7 +42,7 @@
 #ifdef MACOSX
   #include <osl/conditn.hxx>
   #include <premac.h>
-  #if MACOSX_SDK_VERSION == 1080
+  #if MACOSX_SDK_VERSION >= 1070
     #import <IOBluetooth/IOBluetooth.h>
   #else
     #import <CoreFoundation/CoreFoundation.h>
commit 4b00a648469dc082044efb2578d5cef4a01a836e
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Oct 31 13:40:18 2014 -0400

    vlc: use OpenGL "2.1 legacy context" for OS X versions < 10.7
    
    ``With Mac OS X 10.7 Lion OpenGL 3.2 support was added. Till then
    only OpenGL 2.1 was available.''
    
    related commit: 8b384c946cb6725d691123152f5e7c6ac0692185

diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index 3016373..00a4993 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -766,7 +766,13 @@ SalObject* AquaSalInstance::CreateObject( SalFrame* pParent, SystemWindowData* p
     AquaSalObject *pObject = NULL;
 
     if ( pParent )
+    {
+#if defined(MACOSX) && MACOSX_SDK_VERSION < 1070
+        if (pWindowData && pWindowData->bOpenGL)
+            pWindowData->bLegacy = true;
+#endif
         pObject = new AquaSalObject( static_cast<AquaSalFrame*>(pParent), pWindowData );
+    }
 
     return pObject;
 }
diff --git a/vcl/osx/salobj.cxx b/vcl/osx/salobj.cxx
index 58e2c64..4657d52 100644
--- a/vcl/osx/salobj.cxx
+++ b/vcl/osx/salobj.cxx
@@ -66,6 +66,7 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWindowDat
             };
             pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes];
         }
+#if defined(MACOSX) && MACOSX_SDK_VERSION >= 1070
         else
         {
             NSOpenGLPixelFormatAttribute aAttributes[] =
@@ -81,6 +82,7 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWindowDat
             };
             pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes];
         }
+#endif
 
         maSysData.mpNSView = [[NSOpenGLView alloc] initWithFrame: aInitFrame pixelFormat:pixFormat];
     }
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 9d681ff..317c133 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -56,7 +56,11 @@ OpenGLContext::OpenGLContext():
     m_pChildWindow(NULL),
     mbInitialized(false),
     mnRefCount(1),
+#if defined(MACOSX) && MACOSX_SDK_VERSION < 1070
+    mbRequestLegacyContext(true),
+#else
     mbRequestLegacyContext(false),
+#endif
     mbUseDoubleBufferedRendering(true),
     mbRequestVirtualDevice(false),
     mnFramebufferCount(0),
@@ -1021,7 +1025,11 @@ bool OpenGLContext::initWindow()
 {
     if( !m_pChildWindow )
     {
-        SystemWindowData winData = generateWinData(mpWindow, false);
+#if defined(MACOSX) && MACOSX_SDK_VERSION < 1070
+        SystemWindowData winData = generateWinData(mpWindow, /* bLegacy */ true);
+#else
+        SystemWindowData winData = generateWinData(mpWindow, /* bLegacy */ false);
+#endif
         m_pChildWindow = new SystemChildWindow(mpWindow, 0, &winData, false);
         m_pChildWindowGC.reset(m_pChildWindow);
     }
commit 546d7099565a4a9f297cbf656d15372f8da9ea2f
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Dec 24 03:42:47 2014 -0500

    don't add -fvisibility=hidden to gb_VISIBILITY_FLAGS
    
    Change-Id: I4353d36f4ab4941441e384aeac0ca7a3d2c9bdd8

diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index 7acd068..9d78293 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -86,11 +86,8 @@ endif
 
 
 ifeq ($(HAVE_GCC_VISIBILITY_FEATURE),TRUE)
+# note: don't add -fvisibility=hidden to flags
 gb_VISIBILITY_FLAGS := -DHAVE_GCC_VISIBILITY_FEATURE
-# If CC or CXX already include -fvisibility=hidden, don't duplicate it
-ifeq (,$(filter -fvisibility=hidden,$(CC)))
-gb_VISIBILITY_FLAGS += -fvisibility=hidden
-endif
 ifneq ($(HAVE_GCC_VISIBILITY_BROKEN),TRUE)
 gb_CXXFLAGS_COMMON += -fvisibility-inlines-hidden
 endif
commit 32a5fd2c238a1594cdfd93f968171cd4f9eee5cf
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Dec 24 07:19:21 2014 -0500

    add NS_BUILD_32_LIKE_64 definition to build line flags (gb_OSDEFS)
    
    For example, it makes NSRect to be the same as CGRect.
    (see NSGeometry.h)
    
    Change-Id: I182703b3ab5e0791c0a092f51a0151d1dfa8fe6a

diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index 31bc6f8..53e0a6c 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -35,6 +35,7 @@ gb_OSDEFS := \
 	-D_REENTRANT \
 	-DNO_PTHREAD_PRIORITY \
 	-DMACOSX_SDK_VERSION=$(MACOSX_SDK_VERSION) \
+	-DNS_BUILD_32_LIKE_64 \
 	$(EXTRA_CDEFS) \
 
 
commit 89565458bdb09d14b64f325383b6bfe1675e5b72
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sat Oct 25 11:05:30 2014 -0400

    Don't assume that /usr/bin/mktemp is always a BSD mktemp on OSX, add backup for GNU mktemp
    
    Change-Id: Ifb119dd13062593cba5aa3cb1dacc54194339544

diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index 6a981d3..31bc6f8 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -24,8 +24,8 @@ gb_SDKDIR := $(MACOSX_SDK_PATH)
 
 include $(GBUILDDIR)/platform/com_GCC_defs.mk
 
-# Darwin mktemp -t expects a prefix, not a pattern
-gb_MKTEMP ?= /usr/bin/mktemp -t gbuild.
+# Note that BSD mktemp -t expects a prefix, not a pattern; if it fails, assume GNU syntax
+gb_MKTEMP ?= /usr/bin/mktemp -t gbuild. 2>/dev/null || mktemp -t gbuild.XXXXXX
 
 gb_OSDEFS := \
 	-D$(OS) \
commit 3a592762c931026bc72c14ea371b1767e53024e7
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Nov 2 12:39:47 2014 -0500

    provide universal implementation for aligned memory allocation
    
    use posix_memalign only if it's available; if not, try memalign first
    
    don't blindly guess their availability by platform
    (with an exception for Android)
    
    introduce HAVE_MEMALIGN and HAVE_POSIX_MEMALIGN
    
    Note that posix_memalign is not available everywhere
    (as are its replacements like memalign). For example,
    Darwin/OSX < 10.6 has neither posix_memalign or memalign.
    
    Change-Id: I0cb3b14e1f2d94d4aa02b40c36d353c2b7a78dba

diff --git a/config_host.mk.in b/config_host.mk.in
index cae8d37..4deb18e 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -256,6 +256,8 @@ export HAVE_LD_BSYMBOLIC_FUNCTIONS=@HAVE_LD_BSYMBOLIC_FUNCTIONS@
 export HAVE_LD_HASH_STYLE=@HAVE_LD_HASH_STYLE@
 export HAVE_NON_CONST_NPP_GETMIMEDESCRIPTION=@HAVE_NON_CONST_NPP_GETMIMEDESCRIPTION@
 export HAVE_POSIX_FALLOCATE=@HAVE_POSIX_FALLOCATE@
+export HAVE_POSIX_MEMALIGN=@HAVE_POSIX_MEMALIGN@
+export HAVE_MEMALIGN=@HAVE_MEMALIGN@
 export HAVE_THREADSAFE_STATICS=@HAVE_THREADSAFE_STATICS@
 export HELP_COMMON_ONLY=@HELP_COMMON_ONLY@
 export HOST_PLATFORM=@host@
diff --git a/configure.ac b/configure.ac
index 2ba18d9..894ce62 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4511,6 +4511,14 @@ AC_SUBST(SDKDIRNAME_FOR_BUILD)
 AC_SUBST(WORKDIR_FOR_BUILD)
 
 dnl ===================================================================
+dnl Check for availability of posix_memalign and memalign
+dnl ===================================================================
+AC_CHECK_FUNC([posix_memalign], [HAVE_POSIX_MEMALIGN=YES], [HAVE_POSIX_MEMALIGN=NO])
+AC_CHECK_FUNC([memalign], [HAVE_MEMALIGN=YES], [HAVE_MEMALIGN=NO])
+AC_SUBST(HAVE_POSIX_MEMALIGN)
+AC_SUBST(HAVE_MEMALIGN)
+
+dnl ===================================================================
 dnl Check for syslog header
 dnl ===================================================================
 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
diff --git a/sal/Library_sal.mk b/sal/Library_sal.mk
index 833ba6d..175587c 100644
--- a/sal/Library_sal.mk
+++ b/sal/Library_sal.mk
@@ -19,6 +19,13 @@ $(eval $(call gb_Library_set_include,sal,\
 	-I$(SRCDIR)/sal/inc \
 ))
 
+ifeq ($(HAVE_POSIX_MEMALIGN),YES)
+$(eval $(call gb_Library_add_defs,sal,-DHAVE_POSIX_MEMALIGN))
+endif
+ifeq ($(HAVE_MEMALIGN),YES)
+$(eval $(call gb_Library_add_defs,sal,-DHAVE_MEMALIGN))
+endif
+
 $(eval $(call gb_Library_add_defs,sal,\
 	$(if $(filter $(ALLOC),SYS_ALLOC TCMALLOC JEMALLOC)$(filter-out X$(ENABLE_RUNTIME_OPTIMIZATIONS),XTRUE), \
 		-DFORCE_SYSALLOC \
diff --git a/sal/osl/unx/memory.cxx b/sal/osl/unx/memory.cxx
index e9fb9a8..4d60581 100644
--- a/sal/osl/unx/memory.cxx
+++ b/sal/osl/unx/memory.cxx
@@ -10,8 +10,12 @@
 #include <internal/oslmemory.h>
 
 #include <stdlib.h>
+
 #ifdef __ANDROID__
 #include <malloc.h>
+#ifndef HAVE_MEMALIGN
+#define HAVE_MEMALIGN 1 /* for Android, we are really sure about memalign */
+#endif
 #endif
 
 void* osl_aligned_alloc( sal_Size align, sal_Size size )
@@ -22,19 +26,30 @@ void* osl_aligned_alloc( sal_Size align, sal_Size size )
     }
     else
     {
-#if defined __ANDROID__
-        return memalign(align, size);
-#else
+#if defined(HAVE_POSIX_MEMALIGN)
         void* ptr;
         int err = posix_memalign(&ptr, align, size);
         return err ? NULL : ptr;
+#elif defined(HAVE_MEMALIGN)
+        return memalign(align, size);
+#else
+        void* ptr = malloc(size + (align - 1) + sizeof(void*));
+        if (!ptr) return NULL;
+        char* aptr = ((char*)ptr) + sizeof(void*);
+        aptr += (align - ((size_t)aptr & (align - 1))) & (align - 1);
+        ((void**)aptr)[-1] = ptr;
+        return aptr;
 #endif
     }
 }
 
 void osl_aligned_free( void* p )
 {
+#if defined(HAVE_POSIX_MEMALIGN) || defined(HAVE_MEMALIGN)
     free(p);
+#else
+    free(((void**)p)[-1]);
+#endif
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 107b09aa8bf66b7457ea48929e28fb1379109c41
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Oct 5 18:02:00 2014 -0400

    vcl: restore other bits of pre-10.8 conditional code
    
    related commits:
      4fa8282816cb39692678e9da6b6693e821a3039b
      ec147012340219c8bb5eaf8fe3d41be7836bc261
      16996c6b91b53e3c7d316296833bdb8a9cb60c22
    
    Change-Id: Ie8962f8d26f163eed91fdf6b137b0d9830183dd2

diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 5defbeb..31dac7b 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -1246,7 +1246,12 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings )
     getAppleScrollBarVariant(aStyleSettings);
 
     // set scrollbar size
+#if MACOSX_SDK_VERSION >= 1070
     aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidthForControlSize:NSRegularControlSize scrollerStyle:NSScrollerStyleLegacy]) );
+#else
+    aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidth]) );
+#endif
+
     // images in menus false for MacOSX
     aStyleSettings.SetPreferredUseImagesInMenus( false );
     aStyleSettings.SetHideDisabledMenuItems( true );
diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx
index 12451e7..b6c68ee 100644
--- a/vcl/osx/salmenu.cxx
+++ b/vcl/osx/salmenu.cxx
@@ -880,7 +880,12 @@ Rectangle AquaSalMenu::GetMenuBarButtonRectPixel( sal_uInt16 i_nItemId, SalFrame
     if( ! pNSWin )
         return Rectangle();
 
+#if MACOSX_SDK_VERSION >= 1070
     NSRect aRect = [pNSWin convertRectToScreen:[pNSWin frame]];
+#else
+    NSRect aRect = [pNSWin frame];
+    aRect.origin = [pNSWin convertBaseToScreen: NSMakePoint( 0, 0 )];
+#endif
 
     // make coordinates relative to reference frame
     static_cast<AquaSalFrame*>(i_pReferenceFrame)->CocoaToVCL( aRect.origin );
diff --git a/vcl/quartz/CTRunData.hxx b/vcl/quartz/CTRunData.hxx
index 40c2a0a..a0666e5 100644
--- a/vcl/quartz/CTRunData.hxx
+++ b/vcl/quartz/CTRunData.hxx
@@ -10,8 +10,20 @@
 #define CTRunData_Included
 
 #include "premac.h"
+#if defined(MACOSX) && MACOSX_SDK_VERSION < 1080
+#include <ApplicationServices/ApplicationServices.h>
+#if MACOSX_SDK_VERSION < 1060
+// The following symbols are SPI (System Programming Interface) in 10.5
+extern "C" {
+    void CTRunGetAdvances(CTRunRef run, CFRange range, CGSize buffer[]);
+    const CGSize* CTRunGetAdvancesPtr(CTRunRef run);
+    extern const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel;
+}
+#endif
+#else
 #include <CoreGraphics/CoreGraphics.h>
 #include <CoreText/CoreText.h>
+#endif
 #include "postmac.h"
 
 class CTRunData
diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx
index 894a7aa..efa16b7 100644
--- a/vcl/quartz/ctfonts.cxx
+++ b/vcl/quartz/ctfonts.cxx
@@ -246,7 +246,11 @@ int CoreTextFontData::GetFontTable( const char pTagName[5], unsigned char* pResu
     // get the raw table length
     CTFontDescriptorRef pFontDesc = reinterpret_cast<CTFontDescriptorRef>( GetFontId());
     CTFontRef rCTFont = CTFontCreateWithFontDescriptor( pFontDesc, 0.0, NULL);
+#if defined(MACOSX) && MACOSX_SDK_VERSION < 1080
+    const uint32_t opts( kCTFontTableOptionExcludeSynthetic );
+#else
     const uint32_t opts( kCTFontTableOptionNoOptions );
+#endif
     CFDataRef pDataRef = CTFontCopyTable( rCTFont, nTagCode, opts);
     CFRelease( rCTFont);
     if( !pDataRef)
commit 66c2ffcea5792b3faefbf19bd857429e86683ee8
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sat Oct 25 03:58:37 2014 -0400

    resurrect conditional code for OSX SDKs < 10.8 from "mass purge"
    
    plus, use MACOSX_SDK_VERSION instead of "legacy" MAC_OS_X_VERSION_MAX_ALLOWED/MIN_REQUIRED
    
    reverted commits:
      b02e958fa0bf7d062a5b8aff03d22325e3068feb
      fe25090e992eefd0c43ca73b656632a650793b1a
    
    note: sal/osl/unx/memory.c posix_memalign issue will be addressed in another commit
    
    Modified: 23 files (19 from b02e958f + 6 from fe25090e - 1 common - 1 unx/memory.c)
    
    Change-Id: Ib6e63e664dc073a8d751306f613e8be4918c406a

diff --git a/external/curl/ExternalProject_curl.mk b/external/curl/ExternalProject_curl.mk
index 8f94771..d513bfd 100644
--- a/external/curl/ExternalProject_curl.mk
+++ b/external/curl/ExternalProject_curl.mk
@@ -45,7 +45,7 @@ $(call gb_ExternalProject_get_state_target,curl,build):
 			$(if $(filter IOS MACOSX,$(OS)),,--with-nss$(if $(SYSTEM_NSS),,="$(call gb_UnpackedTarball_get_dir,nss)/dist/out")) \
 			$(if $(filter IOS,$(OS)),--with-darwinssl) \
 			$(if $(filter MACOSX,$(OS)),\
-				--with-darwinssl) \
+				$(if $(filter 1050,$(MACOSX_SDK_VERSION)),,--with-darwinssl)) \
 			--without-ssl \
 			--without-libidn --enable-ftp --enable-ipv6 --enable-http --disable-gopher \
 			--disable-file --disable-ldap --disable-telnet --disable-dict --without-libssh2 \
diff --git a/external/nss/ExternalPackage_nss.mk b/external/nss/ExternalPackage_nss.mk
index c6d8953fd..986565e 100644
--- a/external/nss/ExternalPackage_nss.mk
+++ b/external/nss/ExternalPackage_nss.mk
@@ -26,6 +26,7 @@ $(eval $(call gb_ExternalPackage_add_files,nss,$(LIBO_LIB_FOLDER),\
 		dist/out/lib/libsmime3.dylib \
 		dist/out/lib/libsoftokn3.dylib \
 		dist/out/lib/libssl3.dylib \
+		$(if $(filter 1050,$(MACOSX_SDK_VERSION)),dist/out/lib/libsqlite3.dylib) \
 ))
 else ifeq ($(OS),WNT)
 $(eval $(call gb_ExternalPackage_add_files,nss,$(LIBO_LIB_FOLDER),\
diff --git a/external/nss/ExternalProject_nss.mk b/external/nss/ExternalProject_nss.mk
index 17ea6f1..0706a39 100644
--- a/external/nss/ExternalProject_nss.mk
+++ b/external/nss/ExternalProject_nss.mk
@@ -65,7 +65,7 @@ $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject
 			$(if $(filter arm64,$(CC)),USE_64=1)) \
 		$(if $(filter MACOSX,$(OS)),\
 			$(if $(filter-out POWERPC,$(CPUNAME)),MACOS_SDK_DIR=$(MACOSX_SDK_PATH)) \
-			NSS_USE_SYSTEM_SQLITE=1) \
+			$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),NSS_USE_SYSTEM_SQLITE=1)) \
 		$(if $(filter SOLARIS,$(OS)),NS_USE_GCC=1) \
 		$(if $(CROSS_COMPILING),\
 			$(if $(filter MACOSXPOWERPC,$(OS)$(CPUNAME)),CPU_ARCH=ppc) \
diff --git a/external/python3/ExternalProject_python3.mk b/external/python3/ExternalProject_python3.mk
index 045892e..54a9ad1 100644
--- a/external/python3/ExternalProject_python3.mk
+++ b/external/python3/ExternalProject_python3.mk
@@ -69,8 +69,8 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
 		$(if $(filter WNT-GCC,$(OS)-$(COM)),--with-threads ac_cv_printf_zd_format=no) \
 		$(if $(filter MACOSX,$(OS)), \
 			$(if $(filter INTEL,$(CPUNAME)),--enable-universalsdk=$(MACOSX_SDK_PATH) \
-                                --with-universal-archs=intel \
-            ) \
+                                $(if $(filter 1050,$(MACOSX_SDK_VERSION)),--with-universal-archs=32-bit,--with-universal-archs=intel) \
+                        ) \
 			--enable-framework=/@__________________________________________________OOO --with-framework-name=LibreOfficePython, \
 			--enable-shared \
 		) \
diff --git a/fpicker/source/aqua/FilterHelper.mm b/fpicker/source/aqua/FilterHelper.mm
index cef9074..e078fb6 100644
--- a/fpicker/source/aqua/FilterHelper.mm
+++ b/fpicker/source/aqua/FilterHelper.mm
@@ -385,7 +385,11 @@ bool FilterHelper::filenameMatchesFilter(NSString* sFilename)
     }
 
     NSFileManager *manager = [NSFileManager defaultManager];
+#if MACOSX_SDK_VERSION < 1060
+    NSDictionary* pAttribs = [manager fileAttributesAtPath: sFilename traverseLink: NO];
+#else
     NSDictionary* pAttribs = [manager attributesOfItemAtPath: sFilename error: nil];
+#endif
     if( pAttribs )
     {
         NSObject* pType = [pAttribs objectForKey: NSFileType];
diff --git a/fpicker/source/aqua/NSURL_OOoAdditions.mm b/fpicker/source/aqua/NSURL_OOoAdditions.mm
index 1fc59af..83dc0a3 100644
--- a/fpicker/source/aqua/NSURL_OOoAdditions.mm
+++ b/fpicker/source/aqua/NSURL_OOoAdditions.mm
@@ -83,6 +83,25 @@ NSString* resolveAlias( NSString* i_pSystemPath )
                                                    kCFURLPOSIXPathStyle, false);
     if( rUrl != NULL )
     {
+#if MACOSX_SDK_VERSION < 1060
+        FSRef rFS;
+        if( CFURLGetFSRef( rUrl, &rFS ) )
+        {
+            Boolean bIsFolder = false;
+            Boolean bAlias = false;
+            OSErr err = FSResolveAliasFile( &rFS, true, &bIsFolder, &bAlias);
+            if( (err == noErr) && bAlias )
+            {
+                CFURLRef rResolvedUrl = CFURLCreateFromFSRef( kCFAllocatorDefault, &rFS );
+                if( rResolvedUrl != NULL )
+                {
+                    pResolvedPath = (NSString*)CFURLCopyFileSystemPath( rResolvedUrl, kCFURLPOSIXPathStyle );
+                    CFRelease( rResolvedUrl );
+                }
+            }
+        }
+        CFRelease( rUrl );
+#else
         CFErrorRef rError;
         CFDataRef rBookmark = CFURLCreateBookmarkDataFromFile( NULL, rUrl, &rError );
         CFRelease( rUrl );
@@ -102,6 +121,7 @@ NSString* resolveAlias( NSString* i_pSystemPath )
                 CFRelease( rResolvedUrl );
             }
         }
+#endif
     }
     
     return pResolvedPath;
diff --git a/fpicker/source/aqua/SalAquaFilePicker.mm b/fpicker/source/aqua/SalAquaFilePicker.mm
index 11e5ee6..86d1da3 100644
--- a/fpicker/source/aqua/SalAquaFilePicker.mm
+++ b/fpicker/source/aqua/SalAquaFilePicker.mm
@@ -307,7 +307,7 @@ uno::Sequence<rtl::OUString> SAL_CALL SalAquaFilePicker::getFiles() throw( uno::
 
     SolarMutexGuard aGuard;
 
-#if HAVE_FEATURE_MACOSX_SANDBOX
+#if MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX
     static NSUserDefaults *userDefaults;
     static bool triedUserDefaults = false;
 
@@ -341,7 +341,7 @@ uno::Sequence<rtl::OUString> SAL_CALL SalAquaFilePicker::getFiles() throw( uno::
     {
         NSURL *url = [files objectAtIndex:nIndex];
 
-#if HAVE_FEATURE_MACOSX_SANDBOX
+#if MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX
         if (userDefaults != NULL &&
             [url respondsToSelector:@selector(bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:)])
         {
@@ -769,7 +769,11 @@ void SalAquaFilePicker::updateSaveFileNameExtension() {
         rtl::OUString suffix = (*(aStringList.begin())).copy(1);
         NSString *requiredFileType = [NSString stringWithOUString:suffix];
 
+#if MACOSX_SDK_VERSION < 1060
+        [m_pDialog setRequiredFileType:requiredFileType];
+#else
         [m_pDialog setAllowedFileTypes:[NSArray arrayWithObjects:requiredFileType, nil]];
+#endif
 
         OSL_TRACE("disallowing other file types");
         [m_pDialog setAllowsOtherFileTypes:NO];
diff --git a/fpicker/source/aqua/SalAquaPicker.mm b/fpicker/source/aqua/SalAquaPicker.mm
index 6fd4023..a929afc 100644
--- a/fpicker/source/aqua/SalAquaPicker.mm
+++ b/fpicker/source/aqua/SalAquaPicker.mm
@@ -164,6 +164,19 @@ int SalAquaPicker::run()
 
     int retVal = 0;
 
+#if MACOSX_SDK_VERSION < 1060
+    NSString *startDirectory;
+    if (m_sDisplayDirectory.getLength() > 0) {
+        NSString *temp = [NSString stringWithOUString:m_sDisplayDirectory];
+        NSURL *url = [NSURL URLWithString:temp];
+        startDirectory = [url path];
+
+        OSL_TRACE("start dir: %s", [startDirectory UTF8String]);
+    }
+    else {
+        startDirectory = NSHomeDirectory();
+    }
+#else
     NSURL *startDirectory;
     if (m_sDisplayDirectory.getLength() > 0) {
         NSString *temp = [NSString stringWithOUString:m_sDisplayDirectory];
@@ -174,17 +187,26 @@ int SalAquaPicker::run()
     else {
         startDirectory = [NSURL fileURLWithPath:NSHomeDirectory() isDirectory:YES];
     }
+#endif
 
     switch(m_nDialogType) {
         case NAVIGATIONSERVICES_DIRECTORY:
         case NAVIGATIONSERVICES_OPEN:
+#if MACOSX_SDK_VERSION < 1060
+            retVal = [(NSOpenPanel*)m_pDialog runModalForDirectory:startDirectory file:nil types:nil];
+#else
             [m_pDialog setDirectoryURL:startDirectory];
             retVal = [(NSOpenPanel*)m_pDialog runModal];
+#endif
             break;
         case NAVIGATIONSERVICES_SAVE:
+#if MACOSX_SDK_VERSION < 1060
+            retVal = [m_pDialog runModalForDirectory:startDirectory file:[NSString stringWithOUString:((SalAquaFilePicker*)this)->getSaveFileName()]];
+#else
             [m_pDialog setDirectoryURL:startDirectory];
             [m_pDialog setNameFieldStringValue:[NSString stringWithOUString:static_cast<SalAquaFilePicker*>(this)->getSaveFileName()]];
             retVal = [m_pDialog runModal];
+#endif
             break;
         // [m_pDialog beginSheetForDirectory:startDirectory file:[m_pDialog saveFilename] modalForWindow:[NSApp keyWindow] modalDelegate:((SalAquaFilePicker*)this)->getDelegate() didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:) contextInfo:nil];
         default:
@@ -192,10 +214,17 @@ int SalAquaPicker::run()
     }
 
     if (retVal == NSFileHandlingPanelOKButton) {
+#if MACOSX_SDK_VERSION < 1060
+        NSString* pDir = [m_pDialog directory];
+        if (pDir) {
+            implsetDisplayDirectory([[NSURL fileURLWithPath:pDir] OUStringForInfo:FULLPATH]);
+        }
+#else
         NSURL* pDir = [m_pDialog directoryURL];
         if (pDir) {
             implsetDisplayDirectory([pDir OUStringForInfo:FULLPATH]);
         }
+#endif
     }
     DBG_PRINT_EXIT(CLASS_NAME, __func__, retVal);
 
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
index aa06d13..25f8f0d 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
@@ -350,7 +350,11 @@ Reference< XSpellAlternatives >
             aLang = [aLang  stringByAppendingString:aTaggedCountry];
         }
         [macSpell setLanguage:aLang];
+#if MACOSX_SDK_VERSION < 1060
+        NSArray *guesses = [macSpell guessesForWord:aNSStr];
+#else
         NSArray *guesses = [macSpell guessesForWordRange:NSMakeRange(0, [aNSStr length]) inString:aNSStr language:aLang inSpellDocumentWithTag:0];
+#endif
         count = [guesses count];
         if (count)
         {
diff --git a/sal/osl/unx/system.cxx b/sal/osl/unx/system.cxx
index 3d0fb6a..7793c27 100644
--- a/sal/osl/unx/system.cxx
+++ b/sal/osl/unx/system.cxx
@@ -157,10 +157,17 @@ int macxp_resolveAlias(char *path, int buflen)
   (void) buflen;
   return 0;
 #else
+#if MACOSX_SDK_VERSION < 1060
+  FSRef aFSRef;
+  OSStatus nErr;
+  Boolean bFolder;
+  Boolean bAliased;
+#else
   CFStringRef cfpath;
   CFURLRef cfurl;
   CFErrorRef cferror;
   CFDataRef cfbookmark;
+#endif
 
   char *unprocessedPath = path;
 
@@ -174,6 +181,49 @@ int macxp_resolveAlias(char *path, int buflen)
       if ( unprocessedPath )
           *unprocessedPath = '\0';
 
+#if MACOSX_SDK_VERSION < 1060
+      nErr = noErr;
+      bFolder = FALSE;
+      bAliased = FALSE;
+
+      if ( FSPathMakeRef( (const UInt8 *)path, &aFSRef, 0 ) == noErr )
+      {
+          nErr = FSResolveAliasFileWithMountFlags( &aFSRef, TRUE, &bFolder, &bAliased, kResolveAliasFileNoUI );
+          if ( nErr == nsvErr )
+          {
+              errno = ENOENT;
+              nRet = -1;
+          }
+          else if ( nErr == noErr && bAliased )
+          {
+              char tmpPath[ PATH_MAX ];
+              if ( FSRefMakePath( &aFSRef, (UInt8 *)tmpPath, PATH_MAX ) == noErr )
+              {
+                  int nLen = strlen( tmpPath ) + ( unprocessedPath ? strlen( unprocessedPath + 1 ) + 1 : 0 );
+                  if ( nLen < buflen && nLen < PATH_MAX )
+                  {
+                      if ( unprocessedPath )
+                      {
+                          int nTmpPathLen = strlen( tmpPath );
+                          strcat( tmpPath, "/" );
+                          strcat( tmpPath, unprocessedPath + 1 );
+                          strcpy( path, tmpPath);
+                          unprocessedPath = path + nTmpPathLen;
+                      }
+                      else if ( !unprocessedPath )
+                      {
+                          strcpy( path, tmpPath);
+                      }
+                  }
+                  else
+                  {
+                      errno = ENAMETOOLONG;
+                      nRet = -1;
+                  }
+              }
+          }
+      }
+#else
       cfpath = CFStringCreateWithCString( NULL, path, kCFStringEncodingUTF8 );
       cfurl = CFURLCreateWithFileSystemPath( NULL, cfpath, kCFURLPOSIXPathStyle, false );
       CFRelease( cfpath );
@@ -233,6 +283,7 @@ int macxp_resolveAlias(char *path, int buflen)
               }
           }
       }
+#endif
 
       if ( unprocessedPath )
           *unprocessedPath++ = '/';
diff --git a/sal/osl/unx/uunxapi.cxx b/sal/osl/unx/uunxapi.cxx
index a984816..064000d 100644
--- a/sal/osl/unx/uunxapi.cxx
+++ b/sal/osl/unx/uunxapi.cxx
@@ -35,7 +35,7 @@ inline rtl::OString OUStringToOString(const rtl_uString* s)
                                   osl_getThreadTextEncoding());
 }
 
-#if HAVE_FEATURE_MACOSX_SANDBOX
+#if defined(MACOSX) && MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX
 
 #include <Foundation/Foundation.h>
 #include <Security/Security.h>
@@ -289,7 +289,7 @@ int open_c(const char *cpPath, int oflag, int mode)
 
     int result = open(cpPath, oflag, mode);
 
-#if HAVE_FEATURE_MACOSX_SANDBOX
+#if defined(MACOSX) && MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX
     if (isSandboxed && result != -1 && (oflag & O_CREAT) && (oflag & O_EXCL))
     {
         // A new file was created. Check if it is outside the sandbox.
diff --git a/vcl/inc/osx/salframe.h b/vcl/inc/osx/salframe.h
index 8bb0acf..fc7bb34 100644
--- a/vcl/inc/osx/salframe.h
+++ b/vcl/inc/osx/salframe.h
@@ -93,7 +93,11 @@ public:
     sal_uLong                           mnICOptions;
 
     // To prevent display sleep during presentation
+#if MACOSX_SDK_VERSION < 1060
+    boost::shared_ptr< Timer >      mpActivityTimer;
+#else
     IOPMAssertionID                 mnAssertionID;
+#endif
 
 public:
     /** Constructor
diff --git a/vcl/inc/osx/salframeview.h b/vcl/inc/osx/salframeview.h
index 93f8b8f..d125743 100644
--- a/vcl/inc/osx/salframeview.h
+++ b/vcl/inc/osx/salframeview.h
@@ -22,7 +22,11 @@
 
 #include "osx/a11ywrapper.h"
 
+#if MACOSX_SDK_VERSION < 1060
+ at interface SalFrameWindow : NSWindow
+#else
 @interface SalFrameWindow : NSWindow<NSWindowDelegate>
+#endif
 {
     AquaSalFrame*       mpFrame;
     id mDraggingDestinationHandler;
@@ -59,7 +63,11 @@
 -(void)unregisterDraggingDestinationHandler:(id)theHandler;
 @end
 
+#if MACOSX_SDK_VERSION < 1060
+ at interface SalFrameView : AquaA11yWrapper <NSTextInput>
+#else
 @interface SalFrameView : AquaA11yWrapper <NSTextInputClient>
+#endif
 {
     AquaSalFrame*       mpFrame;
 
@@ -113,7 +121,11 @@
 /*
     text action methods
 */
+#if MACOSX_SDK_VERSION < 1060
+-(void)insertText:(id)aString;
+#else
 -(void)insertText:(id)aString replacementRange:(NSRange)replacementRange;
+#endif
 -(void)insertTab: (id)aSender;
 -(void)insertBacktab: (id)aSender;
 -(void)moveLeft: (id)aSender;
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index 87c35c1..cd0289e 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -29,6 +29,15 @@
 #include <ApplicationServices/ApplicationServices.h>
 #include "osx/osxvcltypes.h"
 #include "osx/salframe.h"
+
+#if MACOSX_SDK_VERSION < 1060
+// The following symbols are SPI (System Programming Interface) in 10.5.
+extern "C" {
+    void CTRunGetAdvances(CTRunRef run, CFRange range, CGSize buffer[]);
+    const CGSize* CTRunGetAdvancesPtr(CTRunRef run);
+    extern const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel;
+}
+#endif
 #else
 #include <CoreGraphics/CoreGraphics.h>
 #include <CoreText/CoreText.h>
diff --git a/vcl/osx/DropTarget.cxx b/vcl/osx/DropTarget.cxx
index a6721a6..48dd337 100644
--- a/vcl/osx/DropTarget.cxx
+++ b/vcl/osx/DropTarget.cxx
@@ -264,9 +264,17 @@ NSDragOperation DropTarget::draggingUpdated(id sender)
     }
 
     if (dragOp == NSDragOperationNone)
+#if MACOSX_SDK_VERSION < 1060
+        SetThemeCursor(kThemeNotAllowedCursor);
+#else
         [[NSCursor operationNotAllowedCursor] set];
+#endif
     else if (dragOp == NSDragOperationCopy)
+#if MACOSX_SDK_VERSION < 1060
+        SetThemeCursor(kThemeCopyArrowCursor);
+#else
         [[NSCursor dragCopyCursor] set];
+#endif
     else
         [[NSCursor arrowCursor] set];
 
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 226f539..5defbeb 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -37,6 +37,11 @@
 #include "osx/a11yfactory.h"
 #include "quartz/utils.h"
 
+#if MACOSX_SDK_VERSION < 1060
+#include "vcl/timer.hxx"
+#include "osx/saltimer.h"
+#endif
+
 #include "salwtype.hxx"
 
 #include "premac.h"
@@ -193,7 +198,11 @@ void AquaSalFrame::initWindowAndView()
         [mpNSWindow setAcceptsMouseMovedEvents: YES];
     [mpNSWindow setHasShadow: YES];
 
+#if MACOSX_SDK_VERSION < 1060
+    objc_msgSend(mpNSWindow, @selector(setDelegate:), mpNSWindow);
+#else
     [mpNSWindow setDelegate: static_cast<id<NSWindowDelegate> >(mpNSWindow)];
+#endif
 
     if( [mpNSWindow respondsToSelector: @selector(setRestorable:)])
     {
@@ -750,6 +759,27 @@ void AquaSalFrame::ShowFullScreen( bool bFullScreen, sal_Int32 nDisplay )
         SendPaintEvent();
 }
 
+#if MACOSX_SDK_VERSION < 1060
+class PreventSleepTimer : public AutoTimer
+{
+public:
+    PreventSleepTimer()
+    {
+        SetTimeout( 30000 );
+        Start();
+    }
+
+    virtual ~PreventSleepTimer()
+    {
+    }
+
+    virtual void Timeout() SAL_OVERRIDE
+    {
+        UpdateSystemActivity(OverallAct);
+    }
+};
+#endif
+
 void AquaSalFrame::StartPresentation( bool bStart )
 {
     if ( !mpNSWindow )
@@ -761,10 +791,14 @@ void AquaSalFrame::StartPresentation( bool bStart )
     if( bStart )
     {
         GetSalData()->maPresentationFrames.push_back( this );
+#if MACOSX_SDK_VERSION < 1060
+        mpActivityTimer.reset( new PreventSleepTimer() );
+#else
         IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
                                     kIOPMAssertionLevelOn,
                                     CFSTR("LibreOffice presentation running"),
                                     &mnAssertionID);
+#endif
         [mpNSWindow setLevel: NSPopUpMenuWindowLevel];
         if( mbShown )
             [mpNSWindow makeMainWindow];
@@ -772,7 +806,11 @@ void AquaSalFrame::StartPresentation( bool bStart )
     else
     {
         GetSalData()->maPresentationFrames.remove( this );
+#if MACOSX_SDK_VERSION < 1060
+        mpActivityTimer.reset();
+#else
         IOPMAssertionRelease(mnAssertionID);
+#endif
         [mpNSWindow setLevel: NSNormalWindowLevel];
     }
 }
diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index 248c8eb..27be98d 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -34,6 +34,14 @@
 
 #define WHEEL_EVENT_FACTOR 1.5
 
+// for fullscreen support on OS X < 10.7
+#if MACOSX_SDK_VERSION < 1070
+    #define NSWindowCollectionBehaviorFullScreenPrimary   (1 << 7)
+    #define NSWindowCollectionBehaviorFullScreenAuxiliary (1 << 8)
+//  #define NSFullScreenWindowMask (1 << 14)
+#endif
+
+
 static sal_uInt16 ImplGetModifierMask( unsigned int nMask )
 {
     sal_uInt16 nRet = 0;
@@ -158,6 +166,18 @@ static const struct ExceptionalKey
 static AquaSalFrame* getMouseContainerFrame()
 {
     AquaSalFrame* pDispatchFrame = NULL;
+#if MACOSX_SDK_VERSION < 1060
+    NSInteger nWindows = 0;
+    NSCountWindows( &nWindows );
+    NSInteger* pWindows = (NSInteger*)alloca( nWindows * sizeof(NSInteger) );
+    NSWindowList( nWindows, pWindows ); // NSWindowList is supposed to be in z-order front to back
+    for(int i = 0; i < nWindows && ! pDispatchFrame; i++ )
+    {
+        NSWindow* pWin = [NSApp windowWithWindowNumber: pWindows[i]];
+        if( pWin && [pWin isMemberOfClass: [SalFrameWindow class]] && [(SalFrameWindow*)pWin containsMouse] )
+            pDispatchFrame = [(SalFrameWindow*)pWin getSalFrame];
+    }
+#else
     NSArray* aWindows = [NSWindow windowNumbersWithOptions:0];
     for(NSUInteger i = 0; i < [aWindows count] && ! pDispatchFrame; i++ )
     {
@@ -165,6 +185,7 @@ static AquaSalFrame* getMouseContainerFrame()
         if( pWin && [pWin isMemberOfClass: [SalFrameWindow class]] && [(SalFrameWindow*)pWin containsMouse] )
             pDispatchFrame = [(SalFrameWindow*)pWin getSalFrame];
     }
+#endif
     return pDispatchFrame;
 }
 
@@ -755,11 +776,19 @@ private:
 
         if( bNewSeries )
             mfMagnifyDeltaSum = 0.0;
+#if MACOSX_SDK_VERSION < 1060
+        mfMagnifyDeltaSum += [pEvent deltaZ];
+#else
         mfMagnifyDeltaSum += [pEvent magnification];
+#endif
 
         mfLastMagnifyTime = [pEvent timestamp];
 // TODO: change to 0.1 when CommandWheelMode::ZOOM handlers allow finer zooming control
+#if MACOSX_SDK_VERSION < 1060
+        static const float fMagnifyFactor = 0.25;
+#else
         static const float fMagnifyFactor = 0.25*500; // steps are 500 times smaller for -magnification
+#endif
         static const float fMinMagnifyStep = 15.0 / fMagnifyFactor;
         if( fabs(mfMagnifyDeltaSum) <= fMinMagnifyStep )
             return;
@@ -1012,9 +1041,15 @@ private:
     }
 }
 
+#if MACOSX_SDK_VERSION < 1060
+-(void)insertText:(id)aString
+#else
 -(void)insertText:(id)aString replacementRange:(NSRange)replacementRange
+#endif
 {
+#if MACOSX_SDK_VERSION >= 1060
     (void) replacementRange; // FIXME: surely it must be used
+#endif
 
     YIELD_GUARD;
 
@@ -1584,9 +1619,15 @@ private:
     return mSelectedRange;
 }
 
+#if MACOSX_SDK_VERSION < 1060
+- (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange
+#else
 - (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange replacementRange:(NSRange)replacementRange
+#endif
 {
+#if MACOSX_SDK_VERSION >= 1060
     (void) replacementRange; // FIXME - use it!
+#endif
 
     YIELD_GUARD;
 
@@ -1656,10 +1697,16 @@ private:
     mSelectedRange = mMarkedRange = NSMakeRange(NSNotFound, 0);
 }
 
+#if MACOSX_SDK_VERSION < 1060
+- (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange
+#else
 - (NSAttributedString *)attributedSubstringForProposedRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange
+#endif
 {
     (void) aRange;
+#if MACOSX_SDK_VERSION >= 1060
     (void) actualRange;
+#endif
 
     // FIXME - Implement
     return nil;
@@ -1703,11 +1750,17 @@ private:
     mpLastEvent = nil;
 }
 
+#if MACOSX_SDK_VERSION < 1060
+- (NSRect)firstRectForCharacterRange:(NSRange)aRange
+#else
 - (NSRect)firstRectForCharacterRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange
+#endif
 {
      // FIXME - These should probably be used?
     (void) aRange;
+#if MACOSX_SDK_VERSION >= 1060
     (void) actualRange;
+#endif
 
     YIELD_GUARD;
 
diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index ed42091..3016373 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -1050,7 +1050,12 @@ NSImage* CreateNSImage( const Image& rImage )
     NSImage* pImage = [[NSImage alloc] initWithSize: NSMakeSize( aSize.Width(), aSize.Height() )];
     if( pImage )
     {
+#if MACOSX_SDK_VERSION < 1060
+        [pImage setFlipped:YES];
+        [pImage lockFocus];
+#else
         [pImage lockFocusFlipped:YES];
+#endif
         NSGraphicsContext* pContext = [NSGraphicsContext currentContext];
         CGContextRef rCGContext = reinterpret_cast<CGContextRef>([pContext graphicsPort]);
 
diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx
index 6d2c6d8..12451e7 100644
--- a/vcl/osx/salmenu.cxx
+++ b/vcl/osx/salmenu.cxx
@@ -246,7 +246,11 @@ AquaSalMenu::AquaSalMenu( bool bMenuBar ) :
     if( ! mbMenuBar )
     {
         mpMenu = [[SalNSMenu alloc] initWithMenu: this];
+#if MACOSX_SDK_VERSION < 1060
+        objc_msgSend(mpMenu, @selector(setDelegate:), mpMenu);
+#else
         [mpMenu setDelegate: (id<NSMenuDelegate>)mpMenu];
+#endif
     }
     else
     {
diff --git a/vcl/osx/salprn.cxx b/vcl/osx/salprn.cxx
index f8fe422..3d7f2d2 100644
--- a/vcl/osx/salprn.cxx
+++ b/vcl/osx/salprn.cxx
@@ -462,7 +462,11 @@ bool AquaSalInfoPrinter::StartJob( const OUString* i_pFileName,
             {
                 [mpPrintInfo setJobDisposition: NSPrintSaveJob];
                 NSString* pPath = CreateNSString( *i_pFileName );
+#if MACOSX_SDK_VERSION < 1060
+                [pPrintDict setObject:[NSURL fileURLWithPath:pPath] forKey:NSPrintSavePath];
+#else
                 [pPrintDict setObject:[NSURL fileURLWithPath:pPath] forKey:NSPrintJobSavingURL];
+#endif
                 [pPath release];
             }
 
diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx
index 5fb772b..894a7aa 100644
--- a/vcl/quartz/ctfonts.cxx
+++ b/vcl/quartz/ctfonts.cxx
@@ -80,9 +80,13 @@ CoreTextStyle::CoreTextStyle( const FontSelectPattern& rFSD )
          ((mpFontData->GetWeight() < WEIGHT_SEMIBOLD) &&
           (mpFontData->GetWeight() != WEIGHT_DONTKNOW)) )
     {
+#if MACOSX_SDK_VERSION >= 1060
         int nStroke = -10.0;
         CFNumberRef rStroke = CFNumberCreate(NULL, kCFNumberSInt32Type, &nStroke);
         CFDictionarySetValue(mpStyleDict, kCTStrokeWidthAttributeName, rStroke);
+#else /* kCTStrokeWidthAttributeName is not available */
+        /* do we really need "fake" bold? */
+#endif
     }
 
     // fake italic
@@ -312,8 +316,10 @@ ImplDevFontAttributes DevFontFromCTFontDescriptor( CTFontDescriptorRef pFD, bool
     // get font-enabled status
     if( bFontEnabled ) {
         int bEnabled = TRUE; // by default (and when we're on OS X < 10.6) it's "enabled"
+#if MACOSX_SDK_VERSION >= 1060
         CFNumberRef pEnabled = (CFNumberRef)CTFontDescriptorCopyAttribute( pFD, kCTFontEnabledAttribute );
         CFNumberGetValue( pEnabled, kCFNumberIntType, &bEnabled );
+#endif
         *bFontEnabled = bEnabled;
     }
 
diff --git a/vcl/quartz/ctlayout.cxx b/vcl/quartz/ctlayout.cxx
index fe294cb..af545f4 100644
--- a/vcl/quartz/ctlayout.cxx
+++ b/vcl/quartz/ctlayout.cxx
@@ -251,6 +251,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
         // - CoreText handles spaces specially (in particular at the text end)
         if( mnTrailingSpaceCount )
         {
+#if MACOSX_SDK_VERSION < 1070
+            // don't recreate line layout here, because this can lead to problems
+            // (looks like internal issues inside early CoreText versions)
+            mfTrailingSpaceWidth = CTLineGetTrailingWhitespaceWidth( mpCTLine );
+#else
             if(mfTrailingSpaceWidth <= 0.0)
             {
                 mfTrailingSpaceWidth = CTLineGetTrailingWhitespaceWidth( mpCTLine );
@@ -275,7 +280,7 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
             SAL_INFO( "vcl.ct", "CTLineCreateWithAttributedString(\"" << GetOUString(aCFText) << "\") = " << mpCTLine );
             CFRelease( pAttrStr );
             CFRelease( aCFText );
-
+#endif
             // in RTL-layouts trailing spaces are leftmost
             // TODO: use BiDi-algorithm to thoroughly check this assumption
             if( rArgs.mnFlags & SAL_LAYOUT_BIDI_RTL)
@@ -283,9 +288,12 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
                 mfBaseAdv = mfTrailingSpaceWidth;
             }
         }
+#if MACOSX_SDK_VERSION < 1070
+        CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth - mfTrailingSpaceWidth );
+#else
         CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth);
         SAL_INFO( "vcl.ct", "CTLineCreateJustifiedLine(" << mpCTLine << ",1.0," << nPixelWidth << ") = " << pNewCTLine );
-
+#endif
         if( !pNewCTLine )
         {
             // CTLineCreateJustifiedLine can and does fail
@@ -299,7 +307,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
         SAL_INFO( "vcl.ct", "CFRelease(" << mpCTLine << ")" );
         CFRelease( mpCTLine );
         mpCTLine = pNewCTLine;
+#if MACOSX_SDK_VERSION < 1070
+        mfCachedWidth = nPixelWidth;
+#else
         mfCachedWidth = nPixelWidth + mfTrailingSpaceWidth;
+#endif
     }
 }
 
@@ -354,9 +366,13 @@ bool CTLayout::DrawTextSpecial( SalGraphics& rGraphics, sal_uInt32 flags ) const
                 CFDictionaryGetCount(mpTextStyle->GetStyleDict()),
                 mpTextStyle->GetStyleDict());
 
+#if MACOSX_SDK_VERSION < 1060
+        /* just don't do 'kCTStrokeWidthAttributeName' */
+#else
         int nStroke = 2;
         CFNumberRef rStroke = CFNumberCreate(NULL, kCFNumberSInt32Type, &nStroke);
         CFDictionarySetValue(styledict, kCTStrokeWidthAttributeName, rStroke);
+#endif
 
         CFAttributedStringRef pAttrStr = CFAttributedStringCreate(
                 NULL,
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 2cb8271..5c2c374 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -327,12 +327,28 @@ static bool AddTempDevFont(const OUString& rFontFileURL)
 
     bool success = false;
 
+#if MACOSX_SDK_VERSION >= 1060
     CFErrorRef error;
     success = CTFontManagerRegisterFontsForURL(rFontURL, kCTFontManagerScopeProcess, &error);
     if (!success)
     {
         CFRelease(error);
     }
+#else /* CTFontManagerRegisterFontsForURL is not available on OS X <10.6 */
+    CGDataProviderRef dataProvider = CGDataProviderCreateWithURL(rFontURL);
+    CGFontRef graphicsFont = CGFontCreateWithDataProvider(dataProvider);
+    if (graphicsFont)
+    {
+        CTFontRef coreTextFont = CTFontCreateWithGraphicsFont(graphicsFont, /*fontSize*/ 0, /*matrix*/ NULL, /*attributes*/ NULL);
+        if (coreTextFont)
+        {
+            success = true;
+            CFRelease(coreTextFont);
+        }
+        CGFontRelease(graphicsFont);
+    }
+    CGDataProviderRelease(dataProvider);
+#endif
 
     return success;
 }
commit 0e166a30aef709c32d564f469a556cd666acf655
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Oct 5 08:11:22 2014 -0400

    avmediaMacAVF is not available on OS X 10.5/10.6
    
    related commits:
        4fa8282816cb39692678e9da6b6693e821a3039b
        d4759066933e87f6b56dde40e9e4c224bc1f723f
    
    Change-Id: Ice433ac738096c4142cc78ce793f2b2f1e2a1708

diff --git a/Repository.mk b/Repository.mk
index aa9224f..635c487 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -291,7 +291,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 	acc \
 	$(call gb_Helper_optional,AVMEDIA,avmedia) \
 	$(if $(filter MACOSX,$(OS)),\
-		avmediaMacAVF \
+		$(if $(filter-out 1050 1060,$(MACOSX_SDK_VERSION)),avmediaMacAVF) \
 		$(if $(ENABLE_MACOSX_SANDBOX),,avmediaQuickTime) \
 	) \
 	$(call gb_Helper_optional,SCRIPTING, \
diff --git a/avmedia/Module_avmedia.mk b/avmedia/Module_avmedia.mk
index 06af36f..27b588d 100644
--- a/avmedia/Module_avmedia.mk
+++ b/avmedia/Module_avmedia.mk
@@ -44,10 +44,14 @@ endif
 endif
 
 ifeq ($(OS),MACOSX)
+ifneq (1050,$(MACOSX_SDK_VERSION))
+ifneq (1060,$(MACOSX_SDK_VERSION))
 $(eval $(call gb_Module_add_targets,avmedia,\
 	Library_avmediaMacAVF \
 ))
 endif
+endif
+endif
 
 ifneq ($(ENABLE_DIRECTX),)
 $(eval $(call gb_Module_add_targets,avmedia,\
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index affb629..adaef73 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -124,7 +124,9 @@ $(eval $(call gb_Rdb_add_components,services,\
 	writerperfect/source/writer/wpftwriter \
 	writerperfect/source/calc/wpftcalc \
 	$(if $(filter MACOSX,$(OS)), \
-		$(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \
+		$(if $(filter 1050 1060,$(MACOSX_SDK_VERSION)),, \
+			$(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \
+		) \
 		$(if $(filter TRUE,$(ENABLE_MACOSX_SANDBOX)),, \
 			$(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \
 		) \
commit ba0e991974d4adabe6252c4f6c6673ad24c33ada
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Thu Dec 25 00:39:19 2014 -0500

    cpp_uno: OSL_ASSERT -> assert; OSL_ENSURE -> assert
    
    Change-Id: I24a46b5603a933930c1578ec25b1905e2d216249

diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
index 0cba20d..81bae49f 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
@@ -82,7 +82,7 @@ static typelib_TypeClass cpp2uno_call(
     ng++;
 
     // stack space
-    OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
+    assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
     // parameters
     void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
     void ** pCppArgs = pUnoArgs + nParams;
@@ -332,7 +332,7 @@ static typelib_TypeClass cpp_mediate(
         void ** gpreg, void ** fpreg, void ** ovrflw,
     sal_Int64 * pRegisterReturn /* space for register return */ )
 {
-    OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" );
+    assert( sizeof(sal_Int32)==sizeof(void *) && "### unexpected!" );
 
     // gpreg:  [ret *], this, [other gpr params]
     // fpreg:  [fpr params]
@@ -356,7 +356,7 @@ static typelib_TypeClass cpp_mediate(
 
     typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
 
-    OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
+    assert( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex && "### illegal vtable index!" );
     if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
     {
         throw RuntimeException( "illegal vtable index!", (XInterface *)pThis );
@@ -364,7 +364,7 @@ static typelib_TypeClass cpp_mediate(
 
     // determine called method
     sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
-    OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" );
+    assert( nMemberPos < pTypeDescr->nAllMembers && "### illegal member index!" );
 
     TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
 
@@ -537,8 +537,8 @@ unsigned char *  codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal
 
     unsigned long * p = (unsigned long *) code;
 
-    // OSL_ASSERT( sizeof (long) == 4 );
-    OSL_ASSERT((((unsigned long)code) & 0x3) == 0 );  //aligned to 4 otherwise a mistake
+    // assert( sizeof (long) == 4 );
+    assert((((unsigned long)code) & 0x3) == 0 );  //aligned to 4 otherwise a mistake
 
     /* generate this code */
     // # so first save gpr 3 to gpr 10 (aligned to 4)
@@ -688,7 +688,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
     for (sal_Int32 i = 0; i < type->nMembers; ++i) {
         typelib_TypeDescription * member = 0;
         TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
-        OSL_ASSERT(member != 0);
+        assert(member != 0);
         switch (member->eTypeClass) {
         case typelib_TypeClass_INTERFACE_ATTRIBUTE:
             // Getter:
@@ -721,7 +721,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
             break;
 
         default:
-            OSL_ASSERT(false);
+            assert(false);
             break;
         }
         TYPELIB_DANGER_RELEASE(member);
diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx
index 10fd194..55a7172 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx
@@ -320,7 +320,7 @@ static void cpp_call(
     // return
     typelib_TypeDescription * pReturnTypeDescr = 0;
     TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-    // OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
+    // assert( pReturnTypeDescr && "### expected return type description!" );
 
     void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
 
@@ -347,7 +347,7 @@ static void cpp_call(
         *pPT++ = 'I';
 
     // stack space
-    // OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
+    // assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
     // args
     void ** pCppArgs  = (void **)alloca( 3 * sizeof(void *) * nParams );
     // indices of values this have to be converted (interface conversion cpp<=>uno)
@@ -455,7 +455,7 @@ static void cpp_call(
 
     try
     {
-        OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" );
+        assert( !( (pCppStack - pCppStackStart ) & 3) && "UNALIGNED STACK !!! (Please DO panic)" );
         callVirtualMethod(
             pAdjustedThisPtr, aVtableSlot.index,
             pCppReturn, pReturnTypeDescr->eTypeClass, pParamType,
commit b907add410dee8851cc8d15f3c891f59ea5327d6
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Oct 5 07:40:55 2014 -0400

    Revert "PPC Mac support can go away now (again)"
    
    This reverts commit e29862bcc509916e7fe3e9b2f43b0672c49b7f6e.
    
    Change-Id: Ie6f7b94c2760b34f2b9e3ef7e619905ccb26892e

diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index 5d9454c..09de8e6 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -150,6 +150,12 @@ bridge_noncallexception_noopt_objects := callvirtualmethod
 bridge_exception_objects := abi cpp2uno except uno2cpp
 endif
 
+else ifeq ($(OS)-$(CPUNAME),MACOSX-POWERPC)
+
+bridges_SELECTED_BRIDGE := gcc3_macosx_powerpc
+bridge_noopt_objects := uno2cpp
+bridge_exception_objects := cpp2uno except
+
 else ifeq ($(OS)-$(CPUNAME),SOLARIS-SPARC)
 
 bridges_SELECTED_BRIDGE := gcc3_solaris_sparc
diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
new file mode 100644
index 0000000..0cba20d
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
@@ -0,0 +1,732 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <com/sun/star/uno/genfunc.hxx>
+#include <uno/data.h>
+#include <typelib/typedescription.hxx>
+
+#include "bridges/cpp_uno/shared/bridge.hxx"
+#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
+#include "bridges/cpp_uno/shared/types.hxx"
+#include "bridges/cpp_uno/shared/vtablefactory.hxx"
+
+#include "share.hxx"
+
+using namespace ::com::sun::star::uno;
+
+namespace
+{
+
+static typelib_TypeClass cpp2uno_call(
+    bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
+    const typelib_TypeDescription * pMemberTypeDescr,
+    typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
+    sal_Int32 nParams, typelib_MethodParameter * pParams,
+        void ** gpreg, void ** fpreg, void ** ovrflw,
+    sal_Int64 * pRegisterReturn /* space for register return */ )
+{
+        int ng = 0; //number of gpr registers used
+        int nf = 0; //number of fpr regsiters used
+
+        void ** pCppStack; //temporary stack pointer
+
+        // gpreg:  [ret *], this, [gpr params]
+        // fpreg:  [fpr params]
+        // ovrflw: [gpr or fpr params (properly aligned)]
+
+    // return
+    typelib_TypeDescription * pReturnTypeDescr = 0;
+    if (pReturnTypeRef)
+        TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
+
+    void * pUnoReturn = 0;
+    void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
+
+    // handle optional return pointer
+    if (pReturnTypeDescr)
+    {
+        if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
+        {
+            pUnoReturn = pRegisterReturn; // direct way for simple types
+        }
+        else // complex return via ptr (pCppReturn)
+        {
+            pCppReturn = *gpreg;
+                        gpreg++; //ovrflw++;
+                        ng++;
+
+            pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
+                          ? alloca( pReturnTypeDescr->nSize )
+                          : pCppReturn); // direct way
+        }
+    }
+    // pop "this"
+    gpreg++; //ovrflw++;
+    ng++;
+
+    // stack space
+    OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
+    // parameters
+    void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
+    void ** pCppArgs = pUnoArgs + nParams;
+    // indices of values this have to be converted (interface conversion cpp<=>uno)
+    sal_Int32 * pTempIndices = (sal_Int32 *)(pUnoArgs + (2 * nParams));
+    // type descriptions for reconversions
+    typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
+
+    sal_Int32 nTempIndices   = 0;
+
+    for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
+    {
+        const typelib_MethodParameter & rParam = pParams[nPos];
+        typelib_TypeDescription * pParamTypeDescr = 0;
+        TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
+
+        if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
+                // value
+        {
+
+            switch (pParamTypeDescr->eTypeClass)
+            {
+
+              case typelib_TypeClass_DOUBLE:
+               if (nf < 13) {
+                  pCppArgs[nPos] = fpreg;
+                  pUnoArgs[nPos] = fpreg;
+                  nf++;
+                  fpreg += 2;
+               } else {
+                if (((long)ovrflw) & 4) ovrflw++;
+                pCppArgs[nPos] = ovrflw;
+                pUnoArgs[nPos] = ovrflw;
+                    ovrflw += 2;
+               }
+               break;
+
+               case typelib_TypeClass_FLOAT:
+                // fpreg are all double values so need to
+                // modify fpreg to be a single word float value
+                if (nf < 13) {
+                   float tmp = (float) (*((double *)fpreg));
+                   (*((float *) fpreg)) = tmp;
+                   pCppArgs[nPos] = fpreg;
+                   pUnoArgs[nPos] = fpreg;
+                   nf++;
+                   fpreg += 2;
+                } else {
+#if 0 /* abi is not being followed correctly */
+                  if (((long)ovrflw) & 4) ovrflw++;
+                  float tmp = (float) (*((double *)ovrflw));
+                  (*((float *) ovrflw)) = tmp;
+                  pCppArgs[nPos] = ovrflw;
+                  pUnoArgs[nPos] = ovrflw;
+                  ovrflw += 2;
+#else
+                  pCppArgs[nPos] = ovrflw;
+                  pUnoArgs[nPos] = ovrflw;
+                  ovrflw += 1;
+#endif
+                }
+                break;
+
+            case typelib_TypeClass_HYPER:
+            case typelib_TypeClass_UNSIGNED_HYPER:
+             if (ng & 1) {
+                ng++;
+                gpreg++;
+             }
+             if (ng < 8) {
+                pCppArgs[nPos] = gpreg;
+                pUnoArgs[nPos] = gpreg;
+                ng += 2;
+                gpreg += 2;
+             } else {
+                if (((long)ovrflw) & 4) ovrflw++;
+                pCppArgs[nPos] = ovrflw;
+                pUnoArgs[nPos] = ovrflw;
+                ovrflw += 2;
+              }
+              break;
+
+            case typelib_TypeClass_BYTE:
+            case typelib_TypeClass_BOOLEAN:
+             if (ng < 8) {
+                  pCppArgs[nPos] = (((char *)gpreg) + 3);
+                  pUnoArgs[nPos] = (((char *)gpreg) + 3);
+                  ng++;
+                  gpreg++;
+             } else {
+                  pCppArgs[nPos] = (((char *)ovrflw) + 3);
+                  pUnoArgs[nPos] = (((char *)ovrflw) + 3);
+                  ovrflw++;
+             }
+             break;
+
+
+               case typelib_TypeClass_CHAR:
+               case typelib_TypeClass_SHORT:
+               case typelib_TypeClass_UNSIGNED_SHORT:
+            if (ng < 8) {
+                  pCppArgs[nPos] = (((char *)gpreg)+ 2);
+                  pUnoArgs[nPos] = (((char *)gpreg)+ 2);
+                  ng++;
+                  gpreg++;
+            } else {
+                  pCppArgs[nPos] = (((char *)ovrflw) + 2);
+                  pUnoArgs[nPos] = (((char *)ovrflw) + 2);
+                  ovrflw++;
+            }
+            break;
+
+
+              default:
+            if (ng < 8) {
+                  pCppArgs[nPos] = gpreg;
+                  pUnoArgs[nPos] = gpreg;
+                  ng++;
+                  gpreg++;
+            } else {
+                  pCppArgs[nPos] = ovrflw;
+                  pUnoArgs[nPos] = ovrflw;
+                  ovrflw++;
+            }
+                        break;
+
+                }
+                // no longer needed
+            TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+        }
+        else // ptr to complex value | ref
+        {
+
+                if (ng < 8) {
+                  pCppArgs[nPos] = *(void **)gpreg;
+                  pCppStack = gpreg;
+                  ng++;
+                  gpreg++;
+                } else {
+                  pCppArgs[nPos] = *(void **)ovrflw;
+                  pCppStack = ovrflw;
+                 ovrflw++;
+                }
+
+            if (! rParam.bIn) // is pure out
+            {
+                // uno out is unconstructed mem!
+                pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
+                pTempIndices[nTempIndices] = nPos;
+                // will be released at reconversion
+                ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
+            }
+            // is in/inout
+            else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
+            {
+                uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
+                                        *(void **)pCppStack, pParamTypeDescr,
+                                        pThis->getBridge()->getCpp2Uno() );
+                pTempIndices[nTempIndices] = nPos; // has to be reconverted
+                // will be released at reconversion
+                ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
+            }
+            else // direct way
+            {
+                pUnoArgs[nPos] = *(void **)pCppStack;
+                // no longer needed
+                TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+            }
+        }
+    }
+
+    // ExceptionHolder
+    uno_Any aUnoExc; // Any will be constructed by callee
+    uno_Any * pUnoExc = &aUnoExc;
+
+    // invoke uno dispatch call
+    (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
+
+    // in case an exception occurred...
+    if (pUnoExc)
+    {
+        // destruct temporary in/inout params
+        for ( ; nTempIndices--; )
+        {
+            sal_Int32 nIndex = pTempIndices[nTempIndices];
+
+            if (pParams[nIndex].bIn) // is in/inout => was constructed
+                uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndices], 0 );
+            TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
+        }
+        if (pReturnTypeDescr)
+            TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
+
+        CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() );
+                // has to destruct the any
+        // is here for dummy
+        return typelib_TypeClass_VOID;
+    }
+    else // else no exception occurred...
+    {
+        // temporary params
+        for ( ; nTempIndices--; )
+        {
+            sal_Int32 nIndex = pTempIndices[nTempIndices];
+            typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
+
+            if (pParams[nIndex].bOut) // inout/out
+            {
+                // convert and assign
+                uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
+                uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
+                                        pThis->getBridge()->getUno2Cpp() );
+            }
+            // destroy temp uno param

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list