[Libreoffice-commits] core.git: Branch 'ports/macosx10.5/master' - 3315 commits - accessibility/inc accessibility/source android/Bootstrap android/mobile-config.py android/source animations/source apple_remote/Library_AppleRemote.mk apple_remote/source autogen.sh avmedia/Library_avmedia.mk avmedia/Library_avmediaogl.mk avmedia/Library_avmediaQuickTime.mk avmedia/Module_avmedia.mk avmedia/source basctl/CppunitTest_basctl_dialogs_test.mk basctl/inc basctl/Module_basctl.mk basctl/qa basctl/source basctl/uiconfig basegfx/source basic/CppunitTest_basic_scanner.mk basic/inc basic/qa basic/source bean/native binaryurp/source bin/check-elf-dynamic-objects bin/convwatch.py bin/count-src-resources bin/count-todo-dialogs bin/findunusedcode bin/gbuild-to-ide bin/lo-all-static-libs bin/lo-pack-sources bin/removetooltip_markups.sh bin/test-hid-vs-ui.py bin/upload_symbols.py bridges/inc bridges/Library_cpp_uno.mk bridges/source canvas/Library_oglcanvas.mk canvas/Module_canvas.mk canvas/source chart2/CppunitTest _chart2_dialogs_test.mk chart2/inc chart2/Library_chartcore.mk chart2/Library_chartopengl.mk chart2/qa chart2/source chart2/uiconfig chart2/workbench cli_ure/source codemaker/source comphelper/inc comphelper/Library_comphelper.mk comphelper/qa comphelper/source compilerplugins/clang config_host/config_global.h.in config_host/config_graphite.h.in config_host/config_locales.h.in config_host/config_opengl.h.in config_host/config_options_calc.h.in config_host/config_orcus.h.in config_host/config_version.h.in config_host.mk.in configmgr/qa configmgr/source configure.ac connectivity/Library_ado.mk connectivity/Library_jdbc.mk connectivity/qa connectivity/source connectivity/workben cppcanvas/qa cppcanvas/source cppu/CppunitTest_cppu_any-external.mk cppuhelper/qa cppuhelper/source cppuhelper/test cppu/Library_cppu.mk cppu/Module_cppu.mk cppu/qa cppu/source cui/CppunitTest_cui_dialogs_test_2.mk cui/CppunitTest_cui_dialogs_test_3.mk cui/CppunitTest_cui_dialogs_test_4.mk cui/CppunitTest_cui_d ialogs_test.mk cui/inc cui/Library_cui.mk cui/Module_cui.mk cui/qa cui/source cui/uiconfig dbaccess/CppunitTest_dbaccess_dialog_save.mk dbaccess/CppunitTest_dbaccess_dialogs_test.mk dbaccess/CppunitTest_dbaccess_empty_stdlib_save.mk dbaccess/CppunitTest_dbaccess_macros_test.mk dbaccess/CppunitTest_dbaccess_nolib_save.mk dbaccess/CppunitTest_dbaccess_RowSetClones.mk dbaccess/inc dbaccess/Library_dbu.mk dbaccess/Module_dbaccess.mk dbaccess/qa dbaccess/source dbaccess/uiconfig dbaccess/UIConfig_dbapp.mk dbaccess/UIConfig_dbbrowser.mk dbaccess/UIConfig_dbtdata.mk dbaccess/util dbaccess/win32 desktop/CppunitTest_desktop_app.mk desktop/CppunitTest_desktop_dialogs_test.mk desktop/inc desktop/Library_sofficeapp.mk desktop/Module_desktop.mk desktop/qa desktop/scripts desktop/source desktop/test desktop/uiconfig desktop/UIConfig_deployment.mk desktop/unx desktop/util desktop/win32 desktop/WinResTarget_sbase.mk desktop/WinResTarget_scalc.mk desktop/WinResTarget_sdraw.mk desktop/WinResTarget_si mpress.mk desktop/WinResTarget_smath.mk desktop/WinResTarget_sofficebin.mk desktop/WinResTarget_soffice.mk desktop/WinResTarget_sweb.mk desktop/WinResTarget_swriter.mk dictionaries distro-configs/Jenkins distro-configs/LibreOfficeEmscripten.conf distro-configs/LibreOfficeFlatpak.conf distro-configs/LibreOfficeLinux.conf distro-configs/LibreOfficeOssFuzz.conf download.lst drawinglayer/inc drawinglayer/qa drawinglayer/source dtrans/Library_dnd.mk dtrans/source editeng/inc editeng/Module_editeng.mk editeng/source embeddedobj/source embedserv/source eventattacher/source extensions/source extensions/test extensions/uiconfig external/apache-commons external/beanshell external/cairo external/clew external/coinmp external/curl external/epoxy external/firebird external/glew external/glm external/glyphy external/graphite external/harfbuzz external/hsqldb external/hunspell external/hyphen external/icu external/jfreereport external/jpeg external/jpeg-turbo external/languagetool external/libatom ic_ops external/libcmis external/libgltf external/liblangtag external/libmwaw external/liborcus external/libpng external/libwps external/libxml2 external/libxmlsec external/libzmf external/Module_external.mk external/more_fonts external/msc-externals external/nss external/openldap external/openssl external/poppler external/postgresql external/python3 external/python33 external/redland external/rhino external/zlib extras/Package_palettes.mk extras/Package_tplpresnt.mk extras/source filter/Configuration_filter.mk filter/CppunitTest_filter_dialogs_test.mk filter/CppunitTest_filter_dxf_test.mk filter/CppunitTest_filter_pict_test.mk filter/Library_svgfilter.mk filter/Module_filter.mk filter/qa filter/source filter/uiconfig filter/UIConfig_filter.mk filter/UIConfig_xsltdlg.mk forms/inc forms/source formula/CppunitTest_formula_dialogs_test.mk formula/Module_formula.mk formula/qa formula/source formula/uiconfig fpicker/CppunitTest_fpicker_dialogs_test.mk fpicker/Library_fps_aqua.mk fpicker/ Library_fps.mk fpicker/Module_fpicker.mk fpicker/qa fpicker/source framework/dtd framework/inc framework/Library_fwi.mk framework/qa framework/source framework/uiconfig .git-hooks/pre-commit .gitignore helpcompiler/inc helpcompiler/source helpcontent2 hwpfilter/source i18nlangtag/qa i18nlangtag/source i18npool/CustomTarget_breakiterator.mk i18npool/inc i18npool/source i18nutil/source icon-themes/breeze icon-themes/breeze_dark icon-themes/breeze_svg icon-themes/crystal icon-themes/elementary icon-themes/galaxy icon-themes/hicontrast icon-themes/human icon-themes/industrial icon-themes/oxygen icon-themes/sifr icon-themes/tango icon-themes/tango_testing idlc/inc idlc/source idl/inc idl/source include/avmedia include/backtrace.hxx include/basegfx include/basic include/canvas include/codemaker include/com include/comphelper include/connectivity include/cppcanvas include/cppuhelper include/dbaccess include/default.rc include/desktop include/drawinglayer include/editeng include/filter incl ude/formula include/framework include/i18nlangtag include/jvmaccess include/jvmfwk include/LibreOfficeKit include/o3tl include/oox include/opencl include/osl include/package include/postwin.h include/rsc include/rtl include/sal include/sax include/sfx2 include/sot include/svl include/svtools include/svx include/test include/toolkit include/tools include/tubes include/ucbhelper include/unoidl include/unotest include/unotools include/vbahelper include/vcl include/version.hrc include/xmloff include/xmlscript instsetoo_native/CustomTarget_install.mk instsetoo_native/CustomTarget_setup.mk instsetoo_native/util ios/experimental io/source javaunohelper/source jurt/Library_jpipe.mk jurt/source jvmfwk/distributions jvmfwk/Library_jvmfwk.mk jvmfwk/plugins jvmfwk/source l10ntools/Executable_genlang.mk l10ntools/inc l10ntools/source Library_merged.mk librelogo/source libreofficekit/Package_selectionhandles.mk libreofficekit/source lingucomponent/source linguistic/inc linguistic/source lotusword pro/source m4/libo_fuzz_configury.m4 Makefile.fetch Makefile.in mysqlc/source nlpsolver/help nlpsolver/src odk/CppunitTest_odk_checkapi.mk odk/CustomTarget_check.mk odk/CustomTarget_settings.mk odk/examples odk/Module_odk.mk odk/Package_lib.mk odk/Package_odk_headers.mk odk/settings odk/source offapi/com offapi/type_reference offapi/UnoApi_offapi.mk officecfg/registry oox/inc oox/README oox/source opencl/inc opencl/source osx/soffice.xcodeproj package/inc package/source postprocess/CustomTarget_images.mk postprocess/CustomTarget_registry.mk postprocess/Module_postprocess.mk postprocess/Rdb_services.mk pyuno/demo pyuno/qa pyuno/source pyuno/zipcore qadevOOo/Jar_OOoRunner.mk qadevOOo/JunitTest_qadevOOo_unoapi.mk qadevOOo/Module_qadevOOo.mk qadevOOo/objdsc qadevOOo/qa qadevOOo/runner qadevOOo/tests readlicense_oo/docs readlicense_oo/license README.md registry/source registry/tools registry/workben remotebridges/examples remotebridges/source reportdesign/CppunitTest_reportdesign_dialogs _test.mk reportdesign/inc reportdesign/qa reportdesign/source reportdesign/uiconfig RepositoryExternal.mk Repository.mk rsc/inc rsc/source sal/cpprt sal/CppunitTest_sal_osl_pipe.mk sal/CppunitTest_sal_rtl_oustring.mk salhelper/qa sal/inc sal/Library_sal.mk sal/Module_sal.mk sal/osl sal/qa sal/rtl sal/StaticLibrary_salcpprt.mk sal/workben sax/qa sax/source scaddins/source sc/AllLangResTarget_sc.mk sccomp/source sc/CppunitTest_sc_addin_functions_test.mk sc/CppunitTest_sc_annotationshapeobj.mk sc/CppunitTest_sc_array_functions_test.mk sc/CppunitTest_sc_bugfix_test.mk sc/CppunitTest_sc_check_data_pilot_field.mk sc/CppunitTest_sc_check_data_pilot_table.mk sc/CppunitTest_sc_check_xcell_ranges_query.mk sc/CppunitTest_sc_database_functions_test.mk sc/CppunitTest_sc_datetime_functions_test.mk sc/CppunitTest_sc_editfieldobj_cell.mk sc/CppunitTest_sc_editfieldobj_header.mk sc/CppunitTest_sc_filters_test.mk sc/CppunitTest_sc_financial_functions_test.mk sc/CppunitTest_sc_functions_test.mk sc/Cpp unitTest_sc_functions_test_old.mk sc/CppunitTest_sc_information_functions_test.mk sc/CppunitTest_sc_logical_functions_test.mk sc/CppunitTest_sc_mathematical_functions_test.mk sc/CppunitTest_sc_range_test.mk sc/CppunitTest_sc_screenshots.mk sc/CppunitTest_sc_spreadsheet_functions_test.mk sc/CppunitTest_sc_statistical_functions_test.mk sc/CppunitTest_sc_subsequent_filters_test.mk sc/CppunitTest_sc_text_functions_test.mk sc/CppunitTest_sc_viewpaneobj.mk sc/inc sc/Library_scfilt.mk sc/Library_sc.mk sc/Library_scqahelper.mk sc/Module_sc.mk scp2/AutoInstall.mk scp2/inc scp2/InstallModule_ooo.mk scp2/InstallModule_sdkoo.mk scp2/InstallScript_setup_osl.mk scp2/source sc/qa sc/res scripting/java scripting/Module_scripting.mk scripting/source sc/sdi sc/source sc/uiconfig sc/UIConfig_scalc.mk sd/AllLangResTarget_sd.mk sd/CppunitTest_sd_dialogs_test.mk sdext/source sd/inc sd/Library_sd.mk sd/qa sd/README sd/sdi sd/source sd/uiconfig sd/UIConfig_sdraw.mk sd/UIConfig_simpress.mk sd/xml setup_nati ve/install_name_patcher.app setup_native/Module_setup_native.mk setup_native/Package_scripts.mk setup_native/scripts setup_native/source sfx2/classification sfx2/CppunitTest_sfx2_classification.mk sfx2/CppunitTest_sfx2_dialogs_test.mk sfx2/inc sfx2/Library_sfx.mk sfx2/Package_classification.mk sfx2/qa sfx2/sdi sfx2/source sfx2/uiconfig sfx2/UIConfig_sfx.mk shell/inc shell/Library_macbe.mk shell/qa shell/source slideshow/Library_OGLTrans.mk slideshow/Library_slideshow.mk slideshow/source slideshow/test solenv/bin solenv/CompilerTest_compilerplugins_clang.mk solenv/CustomTarget_gbuildtesttools.mk solenv/Executable_gbuildtojson.mk solenv/gbuild solenv/gbuildtojson solenv/gcc-wrappers solenv/gdb solenv/Module_solenv.mk solenv/PythonTest_solenv_python.mk solenv/qa sot/qa sot/source starmath/CppunitTest_starmath_dialogs_test.mk starmath/inc starmath/Library_sm.mk starmath/qa starmath/source starmath/uiconfig stoc/Library_javavm.mk stoc/source stoc/test store/source svgio/inc svgio/qa svgi o/source svl/CppunitTest_svl_lngmisc.mk svl/Library_svl.mk svl/qa svl/source svtools/CppunitTest_svtools_dialogs_test.mk svtools/inc svtools/qa svtools/source svx/AllLangResTarget_svx.mk svx/CppunitTest_svx_dialogs_test.mk svx/CppunitTest_svx_unit.mk svx/Executable_gengal.mk svx/inc svx/Library_svxcore.mk svx/Library_svx.mk svx/qa svx/sdi svx/source svx/uiconfig svx/UIConfig_svx.mk svx/util sw/AllLangResTarget_sw.mk sw/CppunitTest_sw_dialogs_test_2.mk sw/CppunitTest_sw_dialogs_test.mk sw/CppunitTest_sw_docbookexport.mk sw/CppunitTest_sw_mailmerge.mk sw/CppunitTest_sw_ooxmlexport8.mk sw/CppunitTest_sw_ooxmlexport9.mk sw/CppunitTest_sw_ooxmlimport.mk sw/CppunitTest_sw_ww8export2.mk sw/inc sw/Library_sw.mk sw/Module_sw.mk sw/ooxmlexport_setup.mk sw/qa sw/README sw/sdi sw/source sw/uiconfig sw/UIConfig_swriter.mk sysui/CustomTarget_deb.mk sysui/CustomTarget_rpm.mk sysui/desktop TEMPLATE.SOURCECODE.HEADER test/README.vars test/source testtools/CustomTarget_uno_test.mk testtools/source to olkit/Library_tk.mk toolkit/source tools/inc tools/qa tools/source translations tubes/qa tubes/source ucbhelper/source ucb/Library_ucpfile1.mk ucb/qa ucb/source uitest/calc_tests uitest/demo_ui uitest/impress_tests uitest/libreoffice uitest/math_tests uitest/test_main.py uitest/uitest uitest/writer_tests UnoControls/inc UnoControls/source unodevtools/source unotest/Library_unotest.mk unotest/source unotools/Library_utl.mk unotools/source unoxml/qa unoxml/source unusedcode.easy ure/source uui/CppunitTest_uui_dialogs_test.mk uui/qa uui/source uui/util vbahelper/source vcl/AllLangResTarget_vcl.mk vcl/android vcl/backendtest vcl/CppunitTest_vcl_bitmap_test.mk vcl/CppunitTest_vcl_dialogs_test.mk vcl/CppunitTest_vcl_wmf_test.mk vcl/CustomTarget_afm_hash.mk vcl/Executable_icontest.mk vcl/Executable_vcldemo.mk vcl/Executable_visualbackendtest.mk vcl/Executable_wmffuzzer.mk vcl/glyphy vcl/headless vcl/inc vcl/Library_vcl.mk vcl/Library_vclplug_gen.mk vcl/Library_vclplug_gtk3.mk vcl/Library_v clplug_gtk.mk vcl/Library_vclplug_kde4.mk vcl/Library_vclplug_tde.mk vcl/Module_vcl.mk vcl/null vcl/opengl vcl/osx vcl/Package_opengl.mk vcl/qa vcl/quartz vcl/README vcl/source vcl/StaticLibrary_vclmain.mk vcl/unx vcl/win vcl/workben winaccessibility/inc winaccessibility/source wizards/source writerfilter/Module_writerfilter.mk writerfilter/source writerperfect/CppunitTest_writerperfect_calc.mk writerperfect/CppunitTest_writerperfect_draw.mk writerperfect/CppunitTest_writerperfect_impress.mk writerperfect/CppunitTest_writerperfect_writer.mk writerperfect/inc writerperfect/Library_wpftcalc.mk writerperfect/Library_wpftdraw.mk writerperfect/Library_wpftqahelper.mk writerperfect/Library_wpftwriter.mk writerperfect/Library_writerperfect.mk writerperfect/Module_writerperfect.mk writerperfect/qa writerperfect/source writerperfect/StaticLibrary_writerperfect_importtestbase.mk xmlhelp/source xmloff/CppunitTest_xmloff_tokenmap.mk xmloff/CppunitTest_xmloff_uxmloff.mk xmloff/inc xmloff/Module_ xmloff.mk xmloff/qa xmloff/source xmlscript/source xmlsecurity/CppunitTest_xmlsecurity_dialogs_test.mk xmlsecurity/CppunitTest_xmlsecurity_pdfsigning.mk xmlsecurity/CppunitTest_xmlsecurity_signing.mk xmlsecurity/Executable_pdfverify.mk xmlsecurity/inc xmlsecurity/Library_xmlsecurity.mk xmlsecurity/Library_xsec_fw.mk xmlsecurity/Library_xsec_xmlsec.mk xmlsecurity/Module_xmlsecurity.mk xmlsecurity/qa xmlsecurity/source xmlsecurity/uiconfig xmlsecurity/workben

Douglas Mencken dougmencken at gmail.com
Fri Dec 16 23:32:41 UTC 2016


Rebased ref, commits from common ancestor:
commit 184d5f5050665ac727494de96e30894a5ca010d0
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Oct 7 14:03:18 2016 -0400

    Let that “ abletorunwindowsnativelysowhytouseOS ” rest in peace
    
    This reverts commit
        a6c88e4bf1d148ac462c2bcd7061eff602b627d6  SAL_WNODEPRECATED_DECLARATIONS_ around new 10.12 deprecations

diff --git a/apple_remote/source/RemoteMainController.m b/apple_remote/source/RemoteMainController.m
index 9e933a3..79af22f 100644
--- a/apple_remote/source/RemoteMainController.m
+++ b/apple_remote/source/RemoteMainController.m
@@ -85,8 +85,6 @@
 
 - (void) postTheEvent: (short int)buttonIdentifier modifierFlags:(int)modifierFlags
 {
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSApplicationDefined' is deprecated: first deprecated in macOS 10.12
     [NSApp postEvent:
     [NSEvent    otherEventWithType:NSApplicationDefined
                 location:NSZeroPoint
@@ -98,7 +96,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                 data1: buttonIdentifier
                 data2: 0]
     atStart: NO];
-SAL_WNODEPRECATED_DECLARATIONS_POP
 }
 
 
diff --git a/vcl/osx/DropTarget.cxx b/vcl/osx/DropTarget.cxx
index 90abe7a..5fb8a72 100644
--- a/vcl/osx/DropTarget.cxx
+++ b/vcl/osx/DropTarget.cxx
@@ -388,12 +388,7 @@ void SAL_CALL DropTarget::initialize(const Sequence< Any >& aArguments)
 
     id wnd = [mView window];
     NSWindow* parentWnd = [wnd parentWindow];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSClosableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSResizableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSTitleWindowMask' is deprecated: first deprecated in macOS 10.12
     unsigned int topWndStyle = (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask);
-SAL_WNODEPRECATED_DECLARATIONS_POP
     unsigned int wndStyles = [wnd styleMask] & topWndStyle;
 
     if (parentWnd == nil && (wndStyles == topWndStyle))
diff --git a/vcl/osx/a11ytextattributeswrapper.mm b/vcl/osx/a11ytextattributeswrapper.mm
index 7374a86..042fafd 100644
--- a/vcl/osx/a11ytextattributeswrapper.mm
+++ b/vcl/osx/a11ytextattributeswrapper.mm
@@ -272,11 +272,6 @@ using namespace ::com::sun::star::uno;
                 sal_Int32 alignment;
                 property.Value >>= alignment;
                 NSNumber *textAlignment = nil;
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSCenterTextAlignment' is deprecated: first deprecated in macOS 10.12
-    // 'NSJustifiedTextAlignment' is deprecated: first deprecated in macOS 10.12
-    // 'NSLeftTextAlignment' is deprecated: first deprecated in macOS 10.12
-    // 'NSRightTextAlignment' is deprecated: first deprecated in macOS 10.12
                 switch(alignment) {
                     case css::style::ParagraphAdjust_RIGHT : textAlignment = [NSNumber numberWithInteger:NSRightTextAlignment]    ; break;
                     case css::style::ParagraphAdjust_CENTER: textAlignment = [NSNumber numberWithInteger:NSCenterTextAlignment]   ; break;
@@ -284,7 +279,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                     case css::style::ParagraphAdjust_LEFT  :
                     default                                             : textAlignment = [NSNumber numberWithInteger:NSLeftTextAlignment]     ; break;
                 }
-SAL_WNODEPRECATED_DECLARATIONS_POP
                 NSDictionary *paragraphStyle = [NSDictionary dictionaryWithObjectsAndKeys:textAlignment, @"AXTextAlignment", textAlignment, @"AXVisualTextAlignment", nil];
                 [string addAttribute:@"AXParagraphStyle" value:paragraphStyle range:range];
             }
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index f082a416..6800e4b 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -156,12 +156,6 @@ void AquaSalFrame::initWindowAndView()
     maGeometry.nHeight = static_cast<unsigned int>(aVisibleRect.size.height * 0.8);
 
     // calculate style mask
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSBorderlessWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSClosableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSMiniaturizableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSResizableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSTitledWindowMask' is deprecated: first deprecated in macOS 10.12
     if( (mnStyle & SalFrameStyleFlags::FLOAT) ||
         (mnStyle & SalFrameStyleFlags::OWNERDRAWDECORATION) )
         mnStyleMask = NSBorderlessWindowMask;
@@ -195,7 +189,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
         if( mnStyleMask != 0 )
             mnStyleMask |= NSTitledWindowMask;
     }
-SAL_WNODEPRECATED_DECLARATIONS_POP
 
     // #i91990# support GUI-less (daemon) execution
     @try
@@ -1413,17 +1406,6 @@ SalPointerState AquaSalFrame::GetPointerState()
     if( pCur )
     {
         bMouseEvent = true;
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSLeftMouseDown' is deprecated: first deprecated in macOS 10.12
-    // 'NSLeftMouseDragged' is deprecated: first deprecated in macOS 10.12
-    // 'NSLeftMouseUp' is deprecated: first deprecated in macOS 10.12
-    // 'NSMouseMoved' is deprecated: first deprecated in macOS 10.12
-    // 'NSOtherMouseDown' is deprecated: first deprecated in macOS 10.12
-    // 'NSOtherMouseDragged' is deprecated: first deprecated in macOS 10.12
-    // 'NSOtherMouseUp' is deprecated: first deprecated in macOS 10.12
-    // 'NSRightMouseDown' is deprecated: first deprecated in macOS 10.12
-    // 'NSRightMouseDragged' is deprecated: first deprecated in macOS 10.12
-    // 'NSRightMouseUp' is deprecated: first deprecated in macOS 10.12
         switch( [pCur type] )
         {
         case NSLeftMouseDown:       state.mnState |= MOUSE_LEFT; break;
@@ -1441,16 +1423,10 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
             bMouseEvent = false;
             break;
         }
-SAL_WNODEPRECATED_DECLARATIONS_POP
     }
     if( bMouseEvent )
     {
         unsigned int nMask = (unsigned int)[pCur modifierFlags];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
         if( (nMask & NSShiftKeyMask) != 0 )
             state.mnState |= KEY_SHIFT;
         if( (nMask & NSControlKeyMask) != 0 )
@@ -1459,7 +1435,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
             state.mnState |= KEY_MOD2;
         if( (nMask & NSCommandKeyMask) != 0 )
             state.mnState |= KEY_MOD1;
-SAL_WNODEPRECATED_DECLARATIONS_POP
 
     }
     else
diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index 060a7d5..f779570 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -46,11 +46,6 @@
 static sal_uInt16 ImplGetModifierMask( unsigned int nMask )
 {
     sal_uInt16 nRet = 0;
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     if( (nMask & NSShiftKeyMask) != 0 )
         nRet |= KEY_SHIFT;
     if( (nMask & NSControlKeyMask) != 0 )
@@ -59,7 +54,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
         nRet |= KEY_MOD2;
     if( (nMask & NSCommandKeyMask) != 0 )
         nRet |= KEY_MOD1;
-SAL_WNODEPRECATED_DECLARATIONS_POP
     return nRet;
 }
 
@@ -166,14 +160,8 @@ static const struct ExceptionalKey
     const unsigned int  nModifierMask;
 } aExceptionalKeys[] =
 {
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     { KEY_D, NSControlKeyMask | NSShiftKeyMask | NSAlternateKeyMask },
     { KEY_D, NSCommandKeyMask | NSShiftKeyMask | NSAlternateKeyMask }
-SAL_WNODEPRECATED_DECLARATIONS_POP
 };
 
 static AquaSalFrame* getMouseContainerFrame()
@@ -868,10 +856,7 @@ private:
         {
             dX += [pEvent deltaX];
             dY += [pEvent deltaY];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSScrollWheelMask' is deprecated: first deprecated in macOS 10.12
             NSEvent* pNextEvent = [NSApp nextEventMatchingMask: NSScrollWheelMask
-SAL_WNODEPRECATED_DECLARATIONS_POP
             untilDate: nil inMode: NSDefaultRunLoopMode dequeue: YES ];
             if( !pNextEvent )
                 break;
@@ -931,10 +916,7 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
         {
             dX += [pEvent deltaX];
             dY += [pEvent deltaY];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSScrollWheelMask' is deprecated: first deprecated in macOS 10.12
             NSEvent* pNextEvent = [NSApp nextEventMatchingMask: NSScrollWheelMask
-SAL_WNODEPRECATED_DECLARATIONS_POP
                 untilDate: nil inMode: NSDefaultRunLoopMode dequeue: YES ];
             if( !pNextEvent )
                 break;
@@ -1020,12 +1002,8 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
            interpretKeyEvents (why?). Try to dispatch them here first,
            if not successful continue normally
         */
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
         if( (mpFrame->mnLastModifierFlags & (NSAlternateKeyMask | NSCommandKeyMask))
                     == (NSAlternateKeyMask | NSCommandKeyMask) )
-SAL_WNODEPRECATED_DECLARATIONS_POP
         {
             if( [self sendSingleCharacter: mpLastEvent] )
                 return YES;
@@ -1101,12 +1079,6 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
                 // #i99567#
                 // find out the unmodified key code
 
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-    // 'NSKeyDown' is deprecated: first deprecated in macOS 10.12
-    // 'NSKeyUp' is deprecated: first deprecated in macOS 10.12
                 // sanity check
                 if( mpLastEvent && ( [mpLastEvent type] == NSKeyDown || [mpLastEvent type] == NSKeyUp ) )
                 {
@@ -1130,7 +1102,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                 {
                     nLastModifiers = 0;
                 }
-SAL_WNODEPRECATED_DECLARATIONS_POP
                 [self sendKeyInputAndReleaseToFrame: nKeyCode character: aCharCode modifiers: nLastModifiers];
             }
             else
@@ -1183,10 +1154,7 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
 -(void)moveLeftAndModifySelection: (id)aSender
 {
     (void)aSender;
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     [self sendKeyInputAndReleaseToFrame: KEY_LEFT character: 0 modifiers: NSShiftKeyMask];
-SAL_WNODEPRECATED_DECLARATIONS_POP
 }
 
 -(void)moveBackwardAndModifySelection: (id)aSender
@@ -1204,10 +1172,7 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
 -(void)moveRightAndModifySelection: (id)aSender
 {
     (void)aSender;
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     [self sendKeyInputAndReleaseToFrame: KEY_RIGHT character: 0 modifiers: NSShiftKeyMask];
-SAL_WNODEPRECATED_DECLARATIONS_POP
 }
 
 -(void)moveForwardAndModifySelection: (id)aSender
diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index d46591f..34830a8 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -373,8 +373,6 @@ void AquaSalInstance::wakeupYield()
     if( mbWaitingYield )
     {
         SalData::ensureThreadAutoreleasePool();
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSApplicationDefined' is deprecated: first deprecated in macOS 10.12
         NSEvent* pEvent = [NSEvent otherEventWithType: NSApplicationDefined
                                    location: NSZeroPoint
                                    modifierFlags: 0
@@ -384,7 +382,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                                    subtype: AquaSalInstance::YieldWakeupEvent
                                    data1: 0
                                    data2: 0 ];
-SAL_WNODEPRECATED_DECLARATIONS_POP
         if( pEvent )
             [NSApp postEvent: pEvent atStart: NO];
     }
@@ -623,10 +620,7 @@ SalYieldResult AquaSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents
         {
             sal_uLong nCount = ReleaseYieldMutex();
 
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSAnyEventMask' is deprecated: first deprecated in macOS 10.12
             pEvent = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: nil
-SAL_WNODEPRECATED_DECLARATIONS_POP
                             inMode: NSDefaultRunLoopMode dequeue: YES];
             if( pEvent )
             {
@@ -644,10 +638,7 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
             sal_uLong nCount = ReleaseYieldMutex();
 
             NSDate* pDt = AquaSalTimer::pRunningTimer ? [AquaSalTimer::pRunningTimer fireDate] : [NSDate distantFuture];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSAnyEventMask' is deprecated: first deprecated in macOS 10.12
             pEvent = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: pDt
-SAL_WNODEPRECATED_DECLARATIONS_POP
                             inMode: NSDefaultRunLoopMode dequeue: YES];
             if( pEvent )
                 [NSApp sendEvent: pEvent];
@@ -749,23 +740,6 @@ bool AquaSalInstance::AnyInput( VclInputFlags nType )
         return false;
 
     unsigned/*NSUInteger*/ nEventMask = 0;
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSFlagsChangedMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSKeyDownMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSKeyUpMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSLeftMouseDownMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSLeftMouseDraggedMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSLeftMouseUpMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSMouseEnteredMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSMouseExitedMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSOtherMouseDownMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSOtherMouseDraggedMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSOtherMouseUpMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSRightMouseDownMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSRightMouseDraggedMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSRightMouseUpMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSScrollWheelMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSTabletPoint' is deprecated: first deprecated in macOS 10.12
     if( nType & VclInputFlags::MOUSE)
         nEventMask |=
             NSLeftMouseDownMask    | NSRightMouseDownMask    | NSOtherMouseDownMask |
@@ -778,7 +752,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
         nEventMask |= NSKeyDownMask | NSKeyUpMask | NSFlagsChangedMask;
     if( nType & VclInputFlags::OTHER)
         nEventMask |= NSTabletPoint;
-SAL_WNODEPRECATED_DECLARATIONS_POP
     // TODO: VclInputFlags::PAINT / more VclInputFlags::OTHER
     if( !bool(nType) )
         return false;
diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx
index 7f02631..712ff12 100644
--- a/vcl/osx/salmenu.cxx
+++ b/vcl/osx/salmenu.cxx
@@ -157,10 +157,7 @@ static void initAppMenu()
                         [pString release];
                     if( pNewItem )
                     {
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
                         [pNewItem setKeyEquivalentModifierMask: NSCommandKeyMask];
-SAL_WNODEPRECATED_DECLARATIONS_POP
                         [pNewItem setTarget: pMainMenuSelector];
                         [pAppMenu insertItem: [NSMenuItem separatorItem] atIndex: 3];
                     }
@@ -798,11 +795,6 @@ void AquaSalMenu::SetAccelerator( unsigned /*nPos*/, SalMenuItem* pSalMenuItem,
     // should always use the command key
     int nItemModifier = 0;
 
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     if (nModifier & KEY_SHIFT)
     {
         nItemModifier |= NSShiftKeyMask;   // actually useful only for function keys
@@ -818,7 +810,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
 
     if(nModifier & KEY_MOD3)
         nItemModifier |= NSControlKeyMask;
-SAL_WNODEPRECATED_DECLARATIONS_POP
 
     AquaSalMenuItem *pAquaSalMenuItem = static_cast<AquaSalMenuItem *>(pSalMenuItem);
     NSString* pString = CreateNSString( OUString( &nCommandKey, 1 ) );
diff --git a/vcl/osx/salnsmenu.mm b/vcl/osx/salnsmenu.mm
index f777a44..be772f9 100644
--- a/vcl/osx/salnsmenu.mm
+++ b/vcl/osx/salnsmenu.mm
@@ -99,12 +99,6 @@
     // must still end up in the view. This is necessary to handle common edit actions in docked
     // windows (e.g. in toolbar fields).
     NSEvent* pEvent = [NSApp currentEvent];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSKeyDown' is deprecated: first deprecated in macOS 10.12
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     if( pEvent && [pEvent type] == NSKeyDown )
     {
         unsigned int nModMask = ([pEvent modifierFlags] & (NSShiftKeyMask|NSControlKeyMask|NSAlternateKeyMask|NSCommandKeyMask));
@@ -120,7 +114,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
             return;
         }
     }
-SAL_WNODEPRECATED_DECLARATIONS_POP
 
     const AquaSalFrame* pFrame = mpMenuItem->mpParentMenu ? mpMenuItem->mpParentMenu->getFrame() : nullptr;
     if( pFrame && AquaSalFrame::isAlive( pFrame ) && ! pFrame->GetWindow()->IsInModalMode() )
@@ -180,10 +173,7 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
             aImgRect.origin.y = floor((aFrame.size.height - aFromRect.size.height)/2);
             aImgRect.size = aFromRect.size;
             if( rButtons[i].mpNSImage )
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSCompositeSourceOver' is deprecated: first deprecated in macOS 10.12
                 [rButtons[i].mpNSImage drawInRect: aImgRect fromRect: aFromRect operation: NSCompositeSourceOver fraction: 1.0];
-SAL_WNODEPRECATED_DECLARATIONS_POP
             aImgRect.origin.x += aFromRect.size.width + 2;
         }
     }
diff --git a/vcl/osx/saltimer.cxx b/vcl/osx/saltimer.cxx
index 2a31581..5a242e8 100644
--- a/vcl/osx/saltimer.cxx
+++ b/vcl/osx/saltimer.cxx
@@ -68,8 +68,6 @@ void ImplSalStartTimer( sal_uLong nMS )
     {
         SalData::ensureThreadAutoreleasePool();
         // post an event so we can get into the main thread
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-    // 'NSApplicationDefined' is deprecated: first deprecated in macOS 10.12
         NSEvent* pEvent = [NSEvent otherEventWithType: NSApplicationDefined
                                    location: NSZeroPoint
                                    modifierFlags: 0
@@ -79,7 +77,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                                    subtype: AquaSalInstance::AppStartTimerEvent
                                    data1: (int)nMS
                                    data2: 0 ];
-SAL_WNODEPRECATED_DECLARATIONS_POP
         if( pEvent )
             [NSApp postEvent: pEvent atStart: YES];
     }
diff --git a/vcl/osx/vclnsapp.mm b/vcl/osx/vclnsapp.mm
index a8eb84a..a8a26a0 100644
--- a/vcl/osx/vclnsapp.mm
+++ b/vcl/osx/vclnsapp.mm
@@ -61,8 +61,6 @@
 {
     (void)pNotification;
 
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSApplicationDefined' is deprecated: first deprecated in macOS 10.12
     NSEvent* pEvent = [NSEvent otherEventWithType: NSApplicationDefined
                                location: NSZeroPoint
                                modifierFlags: 0
@@ -72,7 +70,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                                subtype: AquaSalInstance::AppExecuteSVMain
                                data1: 0
                                data2: 0 ];
-SAL_WNODEPRECATED_DECLARATIONS_POP
     if( pEvent )
         [NSApp postEvent: pEvent atStart: NO];
 }
@@ -80,15 +77,6 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
 -(void)sendEvent:(NSEvent*)pEvent
 {
     NSEventType eType = [pEvent type];
-SAL_WNODEPRECATED_DECLARATIONS_PUSH
-        // 'NSAlternateKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSApplicationDefined' is deprecated: first deprecated in macOS 10.12
-        // 'NSClosableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSCommandKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSControlKeyMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSKeyDown' is deprecated: first deprecated in macOS 10.12
-        // 'NSMiniaturizableWindowMask' is deprecated: first deprecated in macOS 10.12
-        // 'NSShiftKeyMask' is deprecated: first deprecated in macOS 10.12
     if( eType == NSApplicationDefined )
     {
         AquaSalInstance::handleAppDefinedEvent( pEvent );
@@ -236,7 +224,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
             }
         }
     }
-SAL_WNODEPRECATED_DECLARATIONS_POP
     [super sendEvent: pEvent];
 }
 
commit 5758e5a4fb8358b709b7c71a0c4ad7ca30466f92
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Sep 25 09:15:34 2016 -0400

    Tweaks for instsetoo_native/CustomTarget_setup.mk
    
    when “ ' ” is used in some variable, this script fails e.g
    
        syntax error near unexpected token `('
        /bin/sh: -c: line 9: `&& echo 'UpdateUserAgent=<PRODUCT> (${buildid}; ${_OS}; ${_ARCH}; <OPTIONAL_OS_HW_DATA>)' \'
    
        /bin/sh: -c: line 10: unexpected EOF while looking for matching `''
        /bin/sh: -c: line 12: syntax error: unexpected end of file
    
    Change-Id: Id68558533b14e81bd4c4a3f72e7946d9c6ffc5bd

diff --git a/instsetoo_native/CustomTarget_setup.mk b/instsetoo_native/CustomTarget_setup.mk
index c8b9757..f186c48 100644
--- a/instsetoo_native/CustomTarget_setup.mk
+++ b/instsetoo_native/CustomTarget_setup.mk
@@ -150,16 +150,16 @@ $(call gb_CustomTarget_get_workdir,instsetoo_native/setup)/$(call gb_Helper_get_
 $(call gb_CustomTarget_get_workdir,instsetoo_native/setup)/$(call gb_Helper_get_rcfile,version) :
 	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),ECH,1)
 	( \
-		echo '[Version]' \
-		&& echo 'AllLanguages=$(if $(gb_WITH_LANG),$(gb_WITH_LANG),en-US)' \
-		&& echo 'BuildVersion=$(BUILD_VER_STRING)' \
-		&& echo 'buildid=$(shell cd $(SRCDIR) && git log -1 --format=%H)' \
-		&& echo 'ExtensionUpdateURL=http://updateexte.libreoffice.org/ExtensionUpdateService/check.Update' \
-		&& echo 'ReferenceOOoMajorMinor=4.1' \
-		&& echo 'UpdateID=$(PRODUCTNAME)_$(LIBO_VERSION_MAJOR)_en-US' \
-		&& echo 'UpdateURL=$(if $(ENABLE_ONLINE_UPDATE),http://update.libreoffice.org/check.php$(if $(filter-out WNT,$(OS)),?pkgfmt=$(PKGFORMAT)))' \
-		&& echo 'UpdateUserAgent=<PRODUCT> ($${buildid}; $${_OS}; $${_ARCH}; <OPTIONAL_OS_HW_DATA>)' \
-		&& echo 'Vendor=$(OOO_VENDOR)' \
+		echo "[Version]" \
+		&& echo "AllLanguages=$(if $(gb_WITH_LANG),$(gb_WITH_LANG),en-US)" \
+		&& echo "BuildVersion=$(BUILD_VER_STRING)" \
+		&& echo "buildid=$(shell cd $(SRCDIR) && git log -1 --format=%H)" \
+		&& echo "ExtensionUpdateURL=http://updateexte.libreoffice.org/ExtensionUpdateService/check.Update" \
+		&& echo "ReferenceOOoMajorMinor=4.1" \
+		&& echo "UpdateID=$(PRODUCTNAME)_$(LIBO_VERSION_MAJOR)_en-US" \
+		&& echo "UpdateURL=$(if $(ENABLE_ONLINE_UPDATE),http://update.libreoffice.org/check.php$(if $(filter-out WNT,$(OS)),?pkgfmt=$(PKGFORMAT)))" \
+		&& echo "UpdateUserAgent=LibreOffice for Mac OS X PowerPC <OPTIONAL_OS_HW_DATA>" \
+		&& echo "Vendor=$(OOO_VENDOR)" \
 	) > $@
 
 # vim: set noet sw=4 ts=4:
commit c7aa34d580a93cae928eb6d5dc4dac4d8c30a9b9
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Sun Sep 18 16:49:21 2016 -0400

    trying to figure out what’s wrong with gengal and paths

diff --git a/svx/source/gallery2/gallery1.cxx b/svx/source/gallery2/gallery1.cxx
index 69a380e..c593e1b 100644
--- a/svx/source/gallery2/gallery1.cxx
+++ b/svx/source/gallery2/gallery1.cxx
@@ -193,11 +193,17 @@ Gallery* Gallery::GetGalleryInstance()
 
 void Gallery::ImplLoad( const OUString& rMultiPath )
 {
+OString blah = OUStringToOString( rMultiPath, RTL_TEXTENCODING_UTF8 );
+fprintf( stderr, "void Gallery::ImplLoad( \"%s\" )\n", blah.pData->buffer );
+
     const sal_Int32 nTokenCount = comphelper::string::getTokenCount(rMultiPath, ';');
     bool            bIsReadOnlyDir;
 
     bMultiPath = ( nTokenCount > 0 );
 
+OString configpath = OUStringToOString( SvtPathOptions().GetConfigPath(), RTL_TEXTENCODING_UTF8 );
+fprintf( stderr, "void Gallery::ImplLoad SvtPathOptions().GetConfigPath() is \"%s\"\n", configpath.pData->buffer );
+
     INetURLObject aCurURL(SvtPathOptions().GetConfigPath());
     ImplLoadSubDirs( aCurURL, bIsReadOnlyDir );
 
@@ -227,6 +233,8 @@ void Gallery::ImplLoad( const OUString& rMultiPath )
 
 void Gallery::ImplLoadSubDirs( const INetURLObject& rBaseURL, bool& rbDirIsReadOnly )
 {
+fprintf( stderr, "void Gallery::ImplLoadSubDirs\n" );
+
     rbDirIsReadOnly = false;
 
     try
diff --git a/svx/source/gengal/gengal.cxx b/svx/source/gengal/gengal.cxx
index 4541118..e29af99 100644
--- a/svx/source/gengal/gengal.cxx
+++ b/svx/source/gengal/gengal.cxx
@@ -61,6 +61,9 @@ protected:
 
 Gallery* createGallery( const OUString& rURL )
 {
+OString blah = OUStringToOString( rURL, RTL_TEXTENCODING_UTF8 );
+fprintf( stderr, "gengal createGallery( \"%s\" )\n", blah.pData->buffer );
+
     return new Gallery( rURL );
 }
 
@@ -73,9 +76,9 @@ static void createTheme( const OUString& aThemeName, const OUString& aGalleryURL
                          const OUString& aDestDir, std::vector<INetURLObject> &rFiles,
                          bool bRelativeURLs )
 {
-    Gallery* pGallery;
+fprintf( stderr, "gengal top of static void createTheme\n" );
 
-    pGallery = createGallery( aGalleryURL );
+    Gallery* pGallery = createGallery( aGalleryURL );
     if (!pGallery ) {
             fprintf( stderr, "Could't create '%s'\n",
                      OUStringToOString( aGalleryURL, RTL_TEXTENCODING_UTF8 ).getStr() );
@@ -170,9 +173,10 @@ static INetURLObject Smartify( const OUString &rPath )
 
 void GalApp::Init()
 {
-    try {
         if( !mbInBuildTree && getenv( "OOO_INSTALL_PREFIX" ) == nullptr ) {
             OUString fileName = GetAppFileName();
+OString blah = OUStringToOString( fileName, RTL_TEXTENCODING_UTF8 );
+fprintf( stderr, "gengal GalApp::Init() fileName is \"%s\"\n", blah.pData->buffer );
             int lastSlash = fileName.lastIndexOf( '/' );
 #ifdef _WIN32
         // Don't know which directory separators GetAppFileName() returns on Windows.
@@ -180,32 +184,30 @@ void GalApp::Init()
             if( fileName.lastIndexOf( '\\' ) > lastSlash )
                 lastSlash = fileName.lastIndexOf( '\\' );
 #endif
-            OUString baseBinDir = fileName.copy( 0, lastSlash );
-            OUString installPrefix = baseBinDir + "/../..";
+            OUString path = fileName.copy( 0, lastSlash );
+            OUString installPrefix = path + "/../..";
 
-            OUString envVar( "OOO_INSTALL_PREFIX");
-            osl_setEnvironment(envVar.pData, installPrefix.pData);
+            OUString envVar( "OOO_INSTALL_PREFIX" );
+            osl_setEnvironment( envVar.pData, installPrefix.pData );
         }
         SAL_INFO("svx", "OOO_INSTALL_PREFIX=" << getenv( "OOO_INSTALL_PREFIX" ) );
 
-        uno::Reference<uno::XComponentContext> xComponentContext
-            = ::cppu::defaultBootstrap_InitialComponentContext();
-        xMSF.set( xComponentContext->getServiceManager(), uno::UNO_QUERY );
-        if( !xMSF.is() )
+        uno::Reference<uno::XComponentContext> xComponentContext = ::cppu::defaultBootstrap_InitialComponentContext();
+        bool okay = true;
+        if ( ! xComponentContext.is() )
+            okay = false;
+        else
+        {
+            xMSF.set( xComponentContext->getServiceManager(), uno::UNO_QUERY );
+            if( !xMSF.is() ) okay = false;
+        }
+        if ( ! okay )
         {
-            fprintf( stderr, "Failed to bootstrap\n" );
+            fprintf( stderr, "GalApp::Init can not bootstrap\n" );
             exit( 1 );
         }
-        ::comphelper::setProcessServiceFactory( xMSF );
 
-        // For backwards compatibility, in case some code still uses plain
-        // createInstance w/o args directly to obtain an instance:
-        css::ucb::UniversalContentBroker::create(xComponentContext);
-    } catch (const uno::Exception &e) {
-        fprintf( stderr, "Bootstrap exception '%s'\n",
-                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
-        exit( 1 );
-    }
+        ::comphelper::setProcessServiceFactory( xMSF );
 }
 
 std::vector<OUString> ReadResponseFile_Impl(OUString const& rInput)
@@ -275,6 +277,8 @@ ReadResponseFile(std::vector<INetURLObject> & rFiles, OUString const& rInput)
 
 int GalApp::Main()
 {
+fprintf( stderr, "hola from gengal GalApp::Main()\n" );
+
     try
     {
         OUString aPath, aDestDir;
@@ -341,6 +345,7 @@ void GalApp::DeInit()
 
 void vclmain::createApplication()
 {
+fprintf( stderr, "top of gengal vclmain::createApplication()\n" );
     Application::EnableConsoleOnly();
     static GalApp aGalApp;
 }
diff --git a/unotools/source/config/pathoptions.cxx b/unotools/source/config/pathoptions.cxx
index 5accec7..be588c1 100644
--- a/unotools/source/config/pathoptions.cxx
+++ b/unotools/source/config/pathoptions.cxx
@@ -212,6 +212,8 @@ static const VarNameAttribute aVarNameAttribute[] =
 
 const OUString& SvtPathOptions_Impl::GetPath( SvtPathOptions::Paths ePath )
 {
+fprintf( stderr, "const OUString& SvtPathOptions_Impl::GetPath( SvtPathOptions::Paths ePath )\n" );
+
     if ( ePath >= SvtPathOptions::PATH_COUNT )
         return m_aEmptyString;
 
@@ -401,12 +403,18 @@ SvtPathOptions_Impl::SvtPathOptions_Impl() :
     m_aLanguageTag( LANGUAGE_DONTKNOW )
 {
     Reference< XComponentContext > xContext = comphelper::getProcessComponentContext();
+fprintf( stderr, "xContext okay @ SvtPathOptions_Impl::SvtPathOptions_Impl()\n" );
 
     // Create necessary services
     Reference< XPathSettings > xPathSettings = thePathSettings::get(xContext);
+fprintf( stderr, "xPathSettings okay @ SvtPathOptions_Impl::SvtPathOptions_Impl()\n" );
+
     m_xPathSettings.set( xPathSettings, UNO_QUERY_THROW );
+fprintf( stderr, "m_xPathSettings okay @ SvtPathOptions_Impl::SvtPathOptions_Impl()\n" );
     m_xSubstVariables.set( PathSubstitution::create(xContext) );
+fprintf( stderr, "m_xSubstVariables okay @ SvtPathOptions_Impl::SvtPathOptions_Impl()\n" );
     m_xMacroExpander = theMacroExpander::get(xContext);
+fprintf( stderr, "m_xMacroExpander okay @ SvtPathOptions_Impl::SvtPathOptions_Impl()\n" );
 
     // Create temporary hash map to have a mapping between property names and property handles
     Reference< XPropertySetInfo > xPropSetInfo = xPathSettings->getPropertySetInfo();
@@ -435,15 +443,17 @@ SvtPathOptions_Impl::SvtPathOptions_Impl() :
         }
     }
 
-    // Create hash map for path variables that need a system path as a return value!
+    // Create hash map for path variables that need a system path as a return value
     nCount = sizeof( aVarNameAttribute ) / sizeof( VarNameAttribute );
     for ( i = 0; i < nCount; i++ )
     {
         m_aSystemPathVarNames.insert( OUString::createFromAscii( aVarNameAttribute[i].pVarName ) );
     }
 
-    // Set language type!
+    // Set language type
     m_aLanguageTag.reset( ConfigManager::getLocale() );
+
+fprintf( stderr, "exit from constructor SvtPathOptions_Impl::SvtPathOptions_Impl()\n" );
 }
 
 // class SvtPathOptions --------------------------------------------------
@@ -452,14 +462,19 @@ namespace { struct lclMutex : public rtl::Static< ::osl::Mutex, lclMutex > {}; }
 
 SvtPathOptions::SvtPathOptions()
 {
+fprintf( stderr, "constructor SvtPathOptions::SvtPathOptions()\n" );
+
     // Global access, must be guarded (multithreading)
     ::osl::MutexGuard aGuard( lclMutex::get() );
     pImpl = g_pOptions.lock();
     if ( !pImpl )
     {
-        pImpl = std::make_shared<SvtPathOptions_Impl>();
+fprintf( stderr, "( !pImpl ) @ SvtPathOptions::SvtPathOptions()\n" );
+        pImpl = std::make_shared< SvtPathOptions_Impl >();
+fprintf( stderr, "( !pImpl ) @ SvtPathOptions::SvtPathOptions() ~ make shared okay\n" );
         g_pOptions = pImpl;
         ItemHolder1::holdConfigItem(E_PATHOPTIONS);
+fprintf( stderr, "( !pImpl ) @ SvtPathOptions::SvtPathOptions() ~ holdConfigItem okay\n" );
     }
 }
 
@@ -503,6 +518,8 @@ const OUString& SvtPathOptions::GetBitmapPath() const
 
 const OUString& SvtPathOptions::GetConfigPath() const
 {
+fprintf( stderr, "const OUString& SvtPathOptions::GetConfigPath() const\n" );
+
     return pImpl->GetConfigPath();
 }
 
commit cbf025f7faed61c18d99f287de7cf58feca45db1
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Thu Apr 14 08:56:01 2016 -0400

    playing with menus & separators
    
    Change-Id: I20a51b2a173d81eb51310a04722c1b61dd49630b

diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx
index e8963fd..142efef 100644
--- a/framework/source/uielement/newmenucontroller.cxx
+++ b/framework/source/uielement/newmenucontroller.cxx
@@ -302,6 +302,8 @@ NewMenuController::~NewMenuController()
 // private function
 void NewMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopupMenu )
 {
+    SAL_WARN( "framework", "fillPopupMenu()" );
+
     VCLXPopupMenu* pPopupMenu    = static_cast<VCLXPopupMenu *>(VCLXMenu::GetImplementation( rPopupMenu ));
     PopupMenu*     pVCLPopupMenu = nullptr;
 
@@ -348,11 +350,17 @@ void NewMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopup
                 continue;
 
             if ( aURL == "private:separator" )
+            {
+                SAL_WARN( "framework", "separator" );
                 pVCLPopupMenu->InsertSeparator();
+            }
             else
             {
+                SAL_WARN( "framework", "item ( aTitle \"" << aTitle << "\", aURL \"" << aURL << "\", nItemId " << OUString::number( nItemId ) << " )" );
+
                 pVCLPopupMenu->InsertItem( nItemId, aTitle );
                 pVCLPopupMenu->SetItemCommand( nItemId, aURL );
+                //pVCLPopupMenu->DoSomethingCool();
 
                 sal_uIntPtr nAttributePtr = MenuAttributes::CreateAttribute( aTargetFrame, aImageId );
                 pVCLPopupMenu->SetUserValue( nItemId, nAttributePtr, MenuAttributes::ReleaseAttribute );
diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx
index f2202d1..8d746ad 100644
--- a/include/vcl/menu.hxx
+++ b/include/vcl/menu.hxx
@@ -211,7 +211,12 @@ protected:
     virtual void MenuBarKeyInput(const KeyEvent& rEvent);
 
 public:
-    SAL_DLLPRIVATE void ImplKillLayoutData() const;
+    OUString& GetText()
+    {
+        return aTitleText;
+    }
+
+    SAL_DLLPRIVATE void ImplBinLayoutData() const;
 
     SAL_DLLPRIVATE vcl::Window* ImplGetWindow() const { return pWindow; }
 #if defined(MACOSX)
diff --git a/vcl/inc/osx/salmenu.h b/vcl/inc/osx/salmenu.h
index f21c750..3981cdb 100644
--- a/vcl/inc/osx/salmenu.h
+++ b/vcl/inc/osx/salmenu.h
@@ -84,6 +84,9 @@ public:
     static void addFallbackMenuItem( NSMenuItem* NewItem );
     static void removeFallbackMenuItem( NSMenuItem* pOldItem );
 
+    bool IsSeparatorAt( unsigned nPos );
+    static bool IsItemSeparator( AquaSalMenuItem * pAquaSalMenuItem );
+
     const std::vector< MenuBarButtonEntry >& getButtons() const { return maButtons; }
 
     bool                    mbMenuBar;          // true - Menubar, false - Menu
diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx
index a7b90a0..7f02631 100644
--- a/vcl/osx/salmenu.cxx
+++ b/vcl/osx/salmenu.cxx
@@ -515,9 +515,36 @@ void AquaSalMenu::SetFrame( const SalFrame *pFrame )
     mpFrame = static_cast<const AquaSalFrame*>(pFrame);
 }
 
+bool AquaSalMenu::IsItemSeparator( AquaSalMenuItem * pAquaSalMenuItem )
+{
+    if ( ! pAquaSalMenuItem )
+        return false;
+
+    return ( [ pAquaSalMenuItem->mpMenuItem isSeparatorItem ] ? true : false );
+}
+
+bool AquaSalMenu::IsSeparatorAt( unsigned nPos )
+{
+    if( nPos < maItems.size() )
+        return IsItemSeparator( maItems[ nPos ] );
+
+    return false;
+}
+
 void AquaSalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos )
 {
-    AquaSalMenuItem *pAquaSalMenuItem = static_cast<AquaSalMenuItem*>(pSalMenuItem);
+    AquaSalMenuItem *pAquaSalMenuItem = static_cast< AquaSalMenuItem * >( pSalMenuItem );
+    NSMenuItem* nsMenuItem = pAquaSalMenuItem->mpMenuItem;
+    bool isSeparator = IsItemSeparator( pAquaSalMenuItem );
+
+#if OSL_DEBUG_LEVEL > 0
+    if ( isSeparator ) {
+        SAL_WARN( "vcl.osx", "AquaSalMenu::InsertItem separator at position " << nPos );
+    } else {
+        const char* theTitle = [ [ nsMenuItem title ] UTF8String ];
+        SAL_WARN( "vcl.osx", "AquaSalMenu::InsertItem with label \"" << theTitle << "\" at position " << nPos );
+    }
+#endif
 
     pAquaSalMenuItem->mpParentMenu = this;
     DBG_ASSERT( pAquaSalMenuItem->mpVCLMenu == nullptr        ||
@@ -527,24 +554,37 @@ void AquaSalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos )
     if( pAquaSalMenuItem->mpVCLMenu )
         mpVCLMenu = pAquaSalMenuItem->mpVCLMenu;
 
-    if( nPos == MENU_APPEND || nPos == maItems.size() )
-        maItems.push_back( pAquaSalMenuItem );
-    else if( nPos < maItems.size() )
-        maItems.insert( maItems.begin() + nPos, pAquaSalMenuItem );
-    else
+    bool bInsert = true;
+    if ( isSeparator )
     {
-        OSL_FAIL( "invalid item index in insert" );
-        return;
+        bInsert = ( nPos > 0 ) ?
+                  ( !IsSeparatorAt( nPos ) && !IsSeparatorAt( nPos - 1 ) ) :
+                  !IsSeparatorAt( nPos ) ;
+        if ( !bInsert )
+            SAL_WARN( "vcl.osx", "yet another separator here is redundant" );
     }
 
-    if( ! mbMenuBar || pCurrentMenuBar == this )
-        [mpMenu insertItem: pAquaSalMenuItem->mpMenuItem atIndex: getItemIndexByPos(nPos)];
+    if ( bInsert )
+    {
+        if( nPos == MENU_APPEND || nPos == maItems.size() )
+            maItems.push_back( pAquaSalMenuItem );
+        else if( nPos < maItems.size() )
+            maItems.insert( maItems.begin() + nPos, pAquaSalMenuItem );
+        else
+        {
+            SAL_WARN( "vcl.osx", "position of item is somewhere out @ AquaSalMenu::InsertItem" );
+            return;
+        }
+
+        if( ! mbMenuBar || pCurrentMenuBar == this )
+            [ mpMenu insertItem: nsMenuItem atIndex: getItemIndexByPos( nPos ) ];
+    }
 }
 
 void AquaSalMenu::RemoveItem( unsigned nPos )
 {
     AquaSalMenuItem* pRemoveItem = nullptr;
-    if( nPos == MENU_APPEND || nPos == (maItems.size()-1) )
+    if( nPos == MENU_APPEND || nPos == ( maItems.size() - 1 ) )
     {
         pRemoveItem = maItems.back();
         maItems.pop_back();
@@ -552,18 +592,18 @@ void AquaSalMenu::RemoveItem( unsigned nPos )
     else if( nPos < maItems.size() )
     {
         pRemoveItem = maItems[ nPos ];
-        maItems.erase( maItems.begin()+nPos );
+        maItems.erase( maItems.begin() + nPos );
     }
     else
     {
-        OSL_FAIL( "invalid item index in remove" );
+        SAL_WARN( "vcl.osx", "RemoveItem: item is somewhere out" );
         return;
     }
 
     pRemoveItem->mpParentMenu = nullptr;
 
     if( ! mbMenuBar || pCurrentMenuBar == this )
-        [mpMenu removeItemAtIndex: getItemIndexByPos(nPos)];
+        [ mpMenu removeItemAtIndex: getItemIndexByPos( nPos ) ];
 }
 
 void AquaSalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned /*nPos*/ )
@@ -810,7 +850,7 @@ void AquaSalMenu::statusLayout()
         if( [pNSView isMemberOfClass: [OOStatusItemView class]] ) // well of course it is
             [(OOStatusItemView*)pNSView layout];
         else
-            OSL_FAIL( "someone stole our status view" );
+            SAL_WARN( "vcl.osx", "¿where is my status view?" );
     }
 }
 
@@ -917,6 +957,8 @@ AquaSalMenuItem::AquaSalMenuItem( const SalItemParams* pItemData ) :
         // these can go occasionally go in and out of a menu, ensure their lifecycle
         // also for the release in AquaSalMenuItem destructor
         [mpMenuItem retain];
+
+        SAL_WARN( "vcl.osx", "created AquaSalMenuItem separator" );
     }
     else
     {
@@ -930,8 +972,16 @@ AquaSalMenuItem::AquaSalMenuItem( const SalItemParams* pItemData ) :
             [mpMenuItem setTitle: pString];
             [pString release];
         }
-        // anything but a separator should set a menu to dispatch to
-        SAL_WARN_IF( !mpVCLMenu, "vcl", "no menu" );
+
+#if OSL_DEBUG_LEVEL > 0
+        const char* item = [ [ mpMenuItem title ] UTF8String ];
+        if ( mpVCLMenu ) {
+            SAL_WARN( "vcl.osx", "created AquaSalMenuItem \"" << item << "\" of menu \"" << mpVCLMenu->GetText() << "\"" );
+        } else {
+            // anything but a separator needs a menu to dispatch to
+            SAL_WARN( "vcl.osx", "created AquaSalMenuItem \"" << item << "\" of *no menu*" );
+        }
+#endif
     }
 }
 
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 9e3057f..b37dc7f 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -2477,6 +2477,8 @@ std::vector<OString> VclBuilder::handleItems(xmlreader::XmlReader &reader, const
 
 void VclBuilder::handleMenu(xmlreader::XmlReader &reader, const OString &rID)
 {
+    SAL_WARN( "vcl.window", "handleMenu" );
+
     VclPtr<PopupMenu> pCurrentMenu = VclPtr<PopupMenu>::Create();
 
     int nLevel = 1;
@@ -2522,6 +2524,8 @@ void VclBuilder::handleMenu(xmlreader::XmlReader &reader, const OString &rID)
 
 void VclBuilder::handleMenuChild(PopupMenu *pParent, xmlreader::XmlReader &reader)
 {
+    SAL_WARN( "vcl.window", "handleMenuChild" );
+
     xmlreader::Span name;
     int nsId;
 
@@ -2719,14 +2723,17 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, const OString &rClass, con
     if (rClass == "GtkMenuItem")
     {
         OUString sLabel(OStringToOUString(convertMnemonicMarkup(extractLabel(rProps)), RTL_TEXTENCODING_UTF8));
+        SAL_WARN( "vcl.window", "going to InsertItem with position " << nNewId << " & label \"" << sLabel << "\" & id \"" << rID << "\" @ insertMenuObject" );
         pParent->InsertItem(nNewId, sLabel, MenuItemBits::TEXT, rID);
     }
     else if (rClass == "GtkSeparatorMenuItem")
     {
+        SAL_WARN( "vcl.window", "going to InsertSeparator with id \"" << rID << "\" @ insertMenuObject" );
         pParent->InsertSeparator(rID);
     }
+    SAL_WARN( "vcl.window", "done insert @ insertMenuObject" );
 
-    SAL_WARN_IF(nOldCount == pParent->GetItemCount(), "vcl.layout", "probably need to implement " << rClass.getStr());
+    SAL_WARN_IF(nOldCount == pParent->GetItemCount(), "vcl", "probably need to implement " << rClass.getStr());
 
     if (nOldCount != pParent->GetItemCount())
     {
@@ -2746,7 +2753,7 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, const OString &rClass, con
             else if (rKey == "has-default" && toBool(rValue))
                 pParent->SetSelectedEntry(nNewId);
             else
-                SAL_INFO("vcl.layout", "unhandled property: " << rKey.getStr());
+                SAL_INFO( "vcl", "unhandled property \"" << rKey.getStr() << "\"" );
         }
 
         for (stringmap::iterator aI = rAccels.begin(), aEnd = rAccels.end(); aI != aEnd; ++aI)
@@ -2757,7 +2764,7 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, const OString &rClass, con
             if (rSignal == "activate")
                 pParent->SetAccelKey(nNewId, makeKeyCode(rValue));
             else
-                SAL_INFO("vcl.layout", "unhandled accelerator for: " << rSignal.getStr());
+                SAL_INFO( "vcl", "unhandled accelerator for \"" << rSignal.getStr() << "\"" );
         }
     }
 
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 00b931e..936f4b9 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -242,7 +242,7 @@ void Menu::Deactivate()
             if ( ImplGetSalMenu() )
                 ImplGetSalMenu()->RemoveItem( n );
 
-            pItemList->Remove( n );
+            pItemList->RemoveMenuItem( n );
         }
     }
 
@@ -371,8 +371,8 @@ MenuItemData* Menu::NbcInsertItem(sal_uInt16 nId, MenuItemBits nBits,
                                   size_t nPos, const OString &rIdent)
 {
     // put Item in MenuItemList
-    MenuItemData* pData = pItemList->Insert(nId, MenuItemType::STRING,
-                             nBits, rStr, Image(), pMenu, nPos, rIdent);
+    MenuItemData* pData = pItemList->InsertMenuItem( nId, MenuItemType::STRING,
+                             nBits, rStr, Image(), pMenu, nPos, rIdent );
 
     // update native menu
     if (ImplGetSalMenu() && pData->pSalMenuItem)
@@ -526,6 +526,8 @@ void Menu::InsertItem(const OUString& rCommand, const css::uno::Reference<css::f
 
 void Menu::InsertSeparator(const OString &rIdent, sal_uInt16 nPos)
 {
+    SAL_WARN( "vcl", "Menu::InsertSeparator with ident \"" << rIdent << "\" & position " << nPos );
+
     // do nothing if it's a menu bar
     if (IsMenuBar())
         return;
@@ -535,13 +537,13 @@ void Menu::InsertSeparator(const OString &rIdent, sal_uInt16 nPos)
         nPos = MENU_APPEND;
 
     // put separator in item list
-    pItemList->InsertSeparator(rIdent, nPos);
+    MenuItemData *pData = pItemList->InsertSeparator( rIdent, nPos );
 
     // update native menu
-    size_t itemPos = ( nPos != MENU_APPEND ) ? nPos : pItemList->size() - 1;
-    MenuItemData *pData = pItemList->GetDataFromPos( itemPos );
     if( ImplGetSalMenu() && pData && pData->pSalMenuItem )
+    {
         ImplGetSalMenu()->InsertItem( pData->pSalMenuItem, nPos );
+    }
 
     delete mpLayoutData;
     mpLayoutData = nullptr;
@@ -559,7 +561,7 @@ void Menu::RemoveItem( sal_uInt16 nPos )
         if( ImplGetSalMenu() )
             ImplGetSalMenu()->RemoveItem( nPos );
 
-        pItemList->Remove( nPos );
+        pItemList->RemoveMenuItem( nPos );
         bRemove = true;
     }
 
@@ -1404,7 +1406,7 @@ bool Menu::ImplGetNativeSubmenuArrowSize(vcl::RenderContext& rRenderContext, Siz
 
 void Menu::ImplAddDel( ImplMenuDelData& rDel )
 {
-    SAL_WARN_IF( rDel.mpMenu, "vcl", "Menu::ImplAddDel(): cannot add ImplMenuDelData twice !" );
+    SAL_WARN_IF( rDel.mpMenu, "vcl", "Menu::ImplAddDel(): cannot add ImplMenuDelData twice" );
     if( !rDel.mpMenu )
     {
         rDel.mpMenu = this;
diff --git a/vcl/source/window/menuitemlist.cxx b/vcl/source/window/menuitemlist.cxx
index 44757a4..27eb2eb 100644
--- a/vcl/source/window/menuitemlist.cxx
+++ b/vcl/source/window/menuitemlist.cxx
@@ -50,7 +50,7 @@ MenuItemList::~MenuItemList()
         delete i;
 }
 
-MenuItemData* MenuItemList::Insert(
+MenuItemData* MenuItemList::InsertMenuItem(
     sal_uInt16 nId,
     MenuItemType eType,
     MenuItemBits nBits,
@@ -61,6 +61,12 @@ MenuItemData* MenuItemList::Insert(
     const OString &rIdent
 )
 {
+    SAL_WARN( "vcl", "MenuItemList::InsertMenuItem with ident \"" << rIdent << "\" & id " << nId
+                        << " & text \"" << rStr << "\" & position " << nPos );
+
+    if ( eType == MenuItemType::SEPARATOR )
+        return InsertSeparator( rIdent, nPos );
+
     MenuItemData* pData     = new MenuItemData( rStr, rImage );
     pData->nId              = nId;
     pData->sIdent           = rIdent;
@@ -90,11 +96,14 @@ MenuItemData* MenuItemList::Insert(
     } else {
         maItemList.push_back( pData );
     }
+
     return pData;
 }
 
-void MenuItemList::InsertSeparator(const OString &rIdent, size_t nPos)
+MenuItemData* MenuItemList::InsertSeparator( const OString &rIdent, size_t nPos )
 {
+    SAL_WARN( "vcl", "MenuItemList::InsertSeparator with ident \"" << rIdent << "\" & position " << nPos );
+
     MenuItemData* pData     = new MenuItemData;
     pData->nId              = 0;
     pData->sIdent           = rIdent;
@@ -116,23 +125,94 @@ void MenuItemList::InsertSeparator(const OString &rIdent, size_t nPos)
     aSalMIData.aText.clear();
     aSalMIData.aImage = Image();
 
-    // Native-support: returns NULL if not supported
+    // create native item returns nil if it is not supported
     pData->pSalMenuItem = ImplGetSVData()->mpDefInst->CreateMenuItem( &aSalMIData );
 
     if( nPos < maItemList.size() ) {
-        maItemList.insert( maItemList.begin() + nPos, pData );
+        if ( maItemList[ nPos ] && maItemList[ nPos ]->eType != MenuItemType::SEPARATOR )
+        {
+            if ( nPos > 0 && maItemList[ nPos - 1 ] && maItemList[ nPos - 1 ]->eType != MenuItemType::SEPARATOR )
+            {
+                maItemList.insert( maItemList.begin() + nPos, pData );
+            }
+            else {  SAL_WARN( "vcl", "separator is just above" );  }
+        }
+        else {  SAL_WARN( "vcl", "separator is already here" );  }
     } else {
-        maItemList.push_back( pData );
+        if ( maItemList.back() && maItemList.back()->eType != MenuItemType::SEPARATOR )
+        {
+            maItemList.push_back( pData );
+        }
     }
+
+    return pData;
 }
 
-void MenuItemList::Remove( size_t nPos )
+void MenuItemList::RemoveMenuItem( size_t nPos )
 {
     if( nPos < maItemList.size() )
     {
         delete maItemList[ nPos ];
         maItemList.erase( maItemList.begin() + nPos );
     }
+
+    PeelSeparators();
+}
+
+// bin double separators and boundary ones
+bool MenuItemList::PeelSeparators( bool bLastOneToo )
+{
+    SAL_WARN( "vcl", "MenuItemList::PeelSeparators" );
+
+    bool bRet = false;
+
+    for ( size_t i = 1; i < maItemList.size(); ++i )
+    {
+        if ( ( maItemList[ i ] && maItemList[ i ]->eType == MenuItemType::SEPARATOR )
+                && ( maItemList[ i - 1 ] && maItemList[ i - 1 ]->eType == MenuItemType::SEPARATOR ) ) {
+            SAL_WARN( "vcl.window", "double separators @" << OUString::number( i ) << " & @" << OUString::number( i - 1 ) );
+            delete maItemList[ i ];
+            maItemList.erase( maItemList.begin() + i );
+            i--;
+            bRet = true;
+        }
+    }
+
+    while ( maItemList.size() > 0 )
+    {
+        if ( maItemList[ 0 ] && maItemList[ 0 ]->eType == MenuItemType::SEPARATOR )
+        {
+            SAL_WARN( "vcl.window", "first item @" << OUString::number( 0 )
+                                        << " \"" << maItemList[ 0 ]->aText
+                                          << "\" id " << OUString::number( maItemList[ 0 ]->nId )
+                                            << " is separator" );
+            delete maItemList[ 0 ];
+            maItemList.erase( maItemList.begin() );
+            bRet = true;
+        }
+        else {  break;  }
+    }
+
+    if ( bLastOneToo )
+    {
+        while ( maItemList.size() > 0 )
+        {
+            if ( maItemList[ maItemList.size() - 1 ]->eType == MenuItemType::SEPARATOR )
+            {
+                size_t n = maItemList.size() - 1;
+                SAL_WARN( "vcl.window", "last item @" << OUString::number( n )
+                                            << " \"" << maItemList[ n ]->aText
+                                              << "\" id " << OUString::number( maItemList[ n ]->nId )
+                                                << " is separator" );
+                delete maItemList[ n ];
+                maItemList.erase( maItemList.end() );
+                bRet = true;
+            }
+            else {  break;  }
+        }
+    }
+
+    return bRet;
 }
 
 MenuItemData* MenuItemList::GetData( sal_uInt16 nSVId, size_t& rPos ) const
diff --git a/vcl/source/window/menuitemlist.hxx b/vcl/source/window/menuitemlist.hxx
index 89befc1..a2eedb9 100644
--- a/vcl/source/window/menuitemlist.hxx
+++ b/vcl/source/window/menuitemlist.hxx
@@ -97,14 +97,13 @@ struct MenuItemData
 class MenuItemList
 {
 private:
-    typedef ::std::vector< MenuItemData* > MenuItemDataList_impl;
-    MenuItemDataList_impl maItemList;
+    ::std::vector< MenuItemData* > maItemList;
 
 public:
                     MenuItemList() {}
                     ~MenuItemList();
 
-    MenuItemData*   Insert(
+    MenuItemData*   InsertMenuItem(
                         sal_uInt16 nId,
                         MenuItemType eType,
                         MenuItemBits nBits,
@@ -114,8 +113,9 @@ public:
                         size_t nPos,
                         const OString &rIdent
                     );
-    void            InsertSeparator(const OString &rIdent, size_t nPos);
-    void            Remove( size_t nPos );
+    MenuItemData*   InsertSeparator(const OString &rIdent, size_t nPos);
+    void            RemoveMenuItem( size_t nPos );
+    bool            PeelSeparators( bool bLastOneToo = false );
 
     MenuItemData*   GetData( sal_uInt16 nSVId, size_t& rPos ) const;
     MenuItemData*   GetData( sal_uInt16 nSVId ) const
commit 962e8975b6ac347d2555417e44c67042616fa613
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Mon Aug 29 14:55:50 2016 -0400

    hey I want JDK 1.5 back and GCJ too
    
    revert with some changes
        7fe8c0b852fa421fe52de99a7f59e45027139eed  Remove gcj support from build system
        1b8c61d5ca8e2a7ae7a0bcd189b7a87defecea03  Bump JDK buildtime requirement to 1.6
        16c0807d75cfd9ecbca9c703ed0eadda80529aab  configure: reject Apple JDK
    
    Change-Id: I13a36fa9bb500b74de9fca7f88225376a19697f5

diff --git a/config_host.mk.in b/config_host.mk.in
index 21f8ee6..42b9618 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -247,6 +247,7 @@ export HAVE_GCC_GGDB2=@HAVE_GCC_GGDB2@
 export HAVE_GCC_OG=@HAVE_GCC_OG@
 export HAVE_GCC_PRAGMA_OPERATOR=@HAVE_GCC_PRAGMA_OPERATOR@
 export HAVE_GNUMAKE_FILE_FUNC=@HAVE_GNUMAKE_FILE_FUNC@
+export HAVE_JAVA6=@HAVE_JAVA6@
 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@
@@ -281,6 +282,7 @@ export INSTDIR_FOR_BUILD=@INSTDIR_FOR_BUILD@
 export INSTROOT=@INSTROOT@
 export INSTROOT_FOR_BUILD=@INSTROOT_FOR_BUILD@
 export IWYU_PATH=@IWYU_PATH@
+export JAVACISGCJ=@JAVACISGCJ@
 export JAVACOMPILER=@JAVACOMPILER@
 export JAVADOC=@JAVADOC@
 export JAVADOCISGJDOC=@JAVADOCISGJDOC@
diff --git a/configure.ac b/configure.ac
index 0dfd9a9..a59e6ba 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6813,6 +6813,7 @@ if test "$ENABLE_JAVA" != ""; then
     fi
 fi
 
+HAVE_JAVA6=
 HAVE_JAVA9=
 dnl ===================================================================
 dnl Checks for JDK.
@@ -6830,7 +6831,11 @@ if test "$ENABLE_JAVA" != ""; then
         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
-            AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
+            JDK=gcj
+            AC_MSG_RESULT([checked (gcj)])
+            _gij_version=`$JAVAINTERPRETER --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
+            _gij_longver=`echo $_gij_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
+
         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
@@ -6840,8 +6845,11 @@ if test "$ENABLE_JAVA" != ""; then
             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED s/[[-A-Za-z]]*//`
             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
 
-            if test "$_jdk_ver" -lt 10600; then
-                AC_MSG_ERROR([IBM JDK is too old, you need at least 1.6])
+            if test "$_jdk_ver" -lt 10500; then
+                AC_MSG_ERROR([IBM JDK is too old, you need at least 1.5])
+            fi
+            if test "$_jdk_ver" -ge 10600; then
+                HAVE_JAVA6=TRUE
             fi
 
             AC_MSG_RESULT([checked (IBM JDK $_jdk)])
@@ -6859,12 +6867,15 @@ you must use the "--with-jdk-home" configure option explicitly])
             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED s/[[-A-Za-z]]*//`
             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
 
-            if test "$_jdk_ver" -lt 10600; then
-                AC_MSG_ERROR([JDK is too old, you need at least 1.6])
+            if test "$_jdk_ver" -lt 10500; then
+                AC_MSG_ERROR([JDK is too old, you need at least 1.5])
             fi
             if test "$_jdk_ver" -gt 10600; then
                 JAVA_CLASSPATH_NOT_SET="1"
             fi
+            if test "$_jdk_ver" -ge 10600; then
+                HAVE_JAVA6=TRUE
+            fi
             if test "$_jdk_ver" -ge 10900; then
                 HAVE_JAVA9=TRUE
             fi
@@ -6881,13 +6892,15 @@ you must use the "--with-jdk-home" configure option explicitly])
             JAVAFLAGS=-J-Xmx128M
         fi
     else
-        AC_MSG_ERROR([Java not found. You need at least jdk-1.6])
+        AC_MSG_ERROR([Java not found. You need at least JDK 1.5 or GCJ])
     fi
 else
     dnl Java disabled
     JAVA_HOME=
     export JAVA_HOME
 fi
+AC_SUBST([HAVE_JAVA6])
+AC_SUBST([HAVE_JAVA9])
 
 dnl ===================================================================
 dnl Set target Java bytecode version
@@ -6906,7 +6919,11 @@ dnl ===================================================================
 dnl Checks for javac
 dnl ===================================================================
 if test "$ENABLE_JAVA" != ""; then
-    javacompiler="javac"
+    if test "$JDK" = "gcj"; then
+        javacompiler=`echo $with_java | $SED -e "s/gij/gcj/g" | $SED -e "s/java/javac/g"`
+    else
+        javacompiler="javac"
+    fi
     if test -z "$with_jdk_home"; then
         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
     else
@@ -6925,7 +6942,25 @@ if test "$ENABLE_JAVA" != ""; then
         fi
         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
     fi
+
+    if test `$JAVACOMPILER -version 2>&1 | $GREP -c "Eclipse Java Compiler"` -gt 0; then
+        AC_MSG_CHECKING([re-checking JDK])
+        JDK=gcj
+        AC_MSG_RESULT([checked (ecj)])
+        _gij_longver="40200"
+    fi
+fi
+
+JAVACISGCJ=""
+dnl ===================================================================
+dnl Checks that javac is gcj
+dnl ===================================================================
+if test "$ENABLE_JAVA" != ""; then
+    if test `$JAVACOMPILER --version 2>&1 | $GREP -c "GCC"` -gt 0; then
+        JAVACISGCJ="yes"
+    fi
 fi
+AC_SUBST(JAVACISGCJ)
 
 dnl ===================================================================
 dnl Checks for javadoc
@@ -7042,28 +7077,24 @@ _ACEOF
         fi
     fi
 
-    # now check if $JAVA_HOME is really valid
-    if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
-        case "${JAVA_HOME}" in
-            /Library/Java/JavaVirtualMachines/*)
-                ;;
-            *)
-                AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
-                ;;
-        esac
-        if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
+    dnl second sanity check JAVA_HOME if possible
+    if test "$JDK" != "gcj" -o "$_gij_longver" -ge "40200"; then
+        # now check if $JAVA_HOME is really okay
+        if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
+            if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
+                JAVA_HOME_OK="NO"
+            fi
+        elif test ! -d "$JAVA_HOME/jre" -a "x$with_jdk_home" = "x"; then
             JAVA_HOME_OK="NO"
         fi
-    elif test ! -d "$JAVA_HOME/jre" -a "x$with_jdk_home" = "x"; then
-        JAVA_HOME_OK="NO"
-    fi
-    if test "$JAVA_HOME_OK" = "NO"; then
-        AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
-        AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
-        AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects with not be built correctly])
-        add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
-        add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
-        add_warning "in case JAVA_HOME is incorrectly set, some projects with not be built correctly"
+        if test "$JAVA_HOME_OK" = "NO"; then
+            AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home])
+            AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
+            AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects with not be built correctly])
+            add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home"
+            add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
+            add_warning "in case JAVA_HOME is incorrectly set, some projects with not be built correctly"
+        fi
     fi
     PathFormat "$JAVA_HOME"
     JAVA_HOME="$formatted_path"
@@ -11823,7 +11854,12 @@ EOF
         </project>
 EOF
 
-        AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
+        oldJAVA_HOME=$JAVA_HOME
+        if test "$JAVACISGCJ" = "yes"; then
+            JAVA_HOME=; export JAVA_HOME
+            ant_gcj="-Dbuild.compiler=gcj"
+        fi
+        AC_TRY_COMMAND("$ANT" $ant_gcj -buildfile conftest.xml 1>&2)
         if test $? = 0 -a -f ./conftest.class; then
             AC_MSG_RESULT([Ant works])
             if test -z "$WITH_ANT_HOME"; then
@@ -11840,6 +11876,7 @@ EOF
             cat conftest.xml >&5
             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
         fi
+        JAVA_HOME=$oldJAVA_HOME
         rm -f conftest* core core.* *.core
     fi
     if test -z "$ANT_HOME"; then
@@ -12733,7 +12770,7 @@ else
     case "$host_os" in
 
     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
-        if test "$ENABLE_JAVA" != ""; then
+        if test "$ENABLE_JAVA" != "" -a "$JDK"!="gcj"; then
             pathmunge "$JAVA_HOME/bin" "after"
         fi
         ;;
@@ -12772,7 +12809,7 @@ else
             pathmunge "$COMPATH/bin" "before"
             pathmunge "$WINDOWS_SDK_HOME/bin/x86" "before"
         fi
-        if test "$ENABLE_JAVA" != ""; then
+        if test "$ENABLE_JAVA" != "" -a "$JDK"!="gcj"; then
             if test -d "$JAVA_HOME/jre/bin/client"; then
                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
             fi
@@ -12785,7 +12822,7 @@ else
 
     solaris*)
         pathmunge "/usr/css/bin" "before"
-        if test "$ENABLE_JAVA" != ""; then
+        if test "$ENABLE_JAVA" != "" -a "$JDK"!="gcj"; then
             pathmunge "$JAVA_HOME/bin" "after"
         fi
         ;;
diff --git a/external/apache-commons/ExternalProject_apache_commons_logging.mk b/external/apache-commons/ExternalProject_apache_commons_logging.mk
index c34b067..9d329aa 100644
--- a/external/apache-commons/ExternalProject_apache_commons_logging.mk
+++ b/external/apache-commons/ExternalProject_apache_commons_logging.mk
@@ -20,8 +20,10 @@ $(call gb_ExternalProject_get_state_target,apache_commons_logging,build) :
 		-q \
 		-f build.xml \
 		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
-		-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-		-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+		-Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+		$(if $(filter yes,$(JAVACISGCJ)),\
+			-Dbuild.compiler=gcj \
+		) \
 		$(if $(debug),-Dcompile.debug="true",-Dcompile.debug="false") \
 		compile build-jar \
 	)
diff --git a/external/beanshell/ExternalProject_beanshell.mk b/external/beanshell/ExternalProject_beanshell.mk
index eb76ad1..fd7846b 100644
--- a/external/beanshell/ExternalProject_beanshell.mk
+++ b/external/beanshell/ExternalProject_beanshell.mk
@@ -21,6 +21,9 @@ $(call gb_ExternalProject_get_state_target,beanshell,build) :
 		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 		-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 		-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+		$(if $(filter yes,$(JAVACISGCJ)),\
+			-Dbuild.compiler=gcj \
+		) \
 		$(if $(debug),-Dbuild.debug="on") \
 	)
 
diff --git a/external/hsqldb/ExternalProject_hsqldb.mk b/external/hsqldb/ExternalProject_hsqldb.mk
index 07f93ad..cd8d4d3 100644
--- a/external/hsqldb/ExternalProject_hsqldb.mk
+++ b/external/hsqldb/ExternalProject_hsqldb.mk
@@ -21,6 +21,9 @@ $(call gb_ExternalProject_get_state_target,hsqldb,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			$(if $(debug),-Dbuild.debug="on") \
 			jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_flow_engine.mk b/external/jfreereport/ExternalProject_jfreereport_flow_engine.mk
index 8be1e8a..7b8a567 100644
--- a/external/jfreereport/ExternalProject_jfreereport_flow_engine.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_flow_engine.mk
@@ -23,6 +23,7 @@ $(call gb_ExternalProject_get_state_target,jfreereport_flow_engine,build) :
 			-q \
 			-f build.xml \
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
+			-Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) \
 			$(if $(SYSTEM_APACHE_COMMONS),\
 				-Dcommons-logging.jar=$(COMMONS_LOGGING_JAR), \
 				-Dcommons-logging.jar="$(call gb_UnpackedTarball_get_dir,apache_commons_logging)/target/commons-logging-$(COMMONS_LOGGING_VERSION).jar") \
@@ -32,8 +33,9 @@ $(call gb_ExternalProject_get_state_target,jfreereport_flow_engine,build) :
 			-Dlibloader.jar=$(call gb_UnpackedTarball_get_dir,jfreereport_libloader)/dist/libloader-$(LIBLOADER_VERSION).jar \
 			-Dlibserializer.jar=$(call gb_UnpackedTarball_get_dir,jfreereport_libserializer)/dist/libserializer-$(LIBBASE_VERSION).jar \
 			-Dlibxml.jar=$(call gb_UnpackedTarball_get_dir,jfreereport_libxml)/dist/libxml-$(LIBXML_VERSION).jar \
-			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
 
diff --git a/external/jfreereport/ExternalProject_jfreereport_flute.mk b/external/jfreereport/ExternalProject_jfreereport_flute.mk
index c8dfc4c..a78ca65 100644
--- a/external/jfreereport/ExternalProject_jfreereport_flute.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_flute.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_flute,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)),\
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(FLUTE_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_libbase.mk b/external/jfreereport/ExternalProject_jfreereport_libbase.mk
index 77bece5..2c0a079 100644
--- a/external/jfreereport/ExternalProject_jfreereport_libbase.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_libbase.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_libbase,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)),\
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBBASE_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_libfonts.mk b/external/jfreereport/ExternalProject_jfreereport_libfonts.mk
index c71db70..5507732 100644
--- a/external/jfreereport/ExternalProject_jfreereport_libfonts.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_libfonts.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_libfonts,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)),\
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBFONTS_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_libformula.mk b/external/jfreereport/ExternalProject_jfreereport_libformula.mk
index 7e985c8..e706d67 100644
--- a/external/jfreereport/ExternalProject_jfreereport_libformula.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_libformula.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_libformula,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)),\
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBFORMULA_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_liblayout.mk b/external/jfreereport/ExternalProject_jfreereport_liblayout.mk
index 9a72002..bacd22a 100644
--- a/external/jfreereport/ExternalProject_jfreereport_liblayout.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_liblayout.mk
@@ -35,6 +35,7 @@ $(call gb_ExternalProject_get_state_target,jfreereport_liblayout,build) :
 			-q \
 			-f build.xml \
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
+			-Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) \
 			$(if $(SYSTEM_APACHE_COMMONS),\
 				-Dcommons-logging.jar=$(COMMONS_LOGGING_JAR), \
 				-Dcommons-logging.jar="$(call gb_UnpackedTarball_get_dir,apache_commons_logging)/target/commons-logging-$(COMMONS_LOGGING_VERSION).jar") \
@@ -47,10 +48,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_liblayout,build) :
 			-Dlibserializer.jar=$(call gb_UnpackedTarball_get_dir,jfreereport_libserializer)/dist/libserializer-$(LIBBASE_VERSION).jar \
 			-Dlibxml.jar=$(call gb_UnpackedTarball_get_dir,jfreereport_libxml)/dist/libxml-$(LIBXML_VERSION).jar \
 			-Dsac.jar=$(call gb_UnpackedTarball_get_dir,jfreereport_sac)/build/lib/sac.jar \
-			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
 
diff --git a/external/jfreereport/ExternalProject_jfreereport_libloader.mk b/external/jfreereport/ExternalProject_jfreereport_libloader.mk
index 275ef12..5eb9417 100644
--- a/external/jfreereport/ExternalProject_jfreereport_libloader.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_libloader.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_libloader,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBLOADER_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_librepository.mk b/external/jfreereport/ExternalProject_jfreereport_librepository.mk
index 8e953c3..2814457 100644
--- a/external/jfreereport/ExternalProject_jfreereport_librepository.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_librepository.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_librepository,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBREPOSITORY_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_libserializer.mk b/external/jfreereport/ExternalProject_jfreereport_libserializer.mk
index 0e7ff25..7e8761d 100644
--- a/external/jfreereport/ExternalProject_jfreereport_libserializer.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_libserializer.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_libserializer,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)) \
+			,	-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBSERIALIZER_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_libxml.mk b/external/jfreereport/ExternalProject_jfreereport_libxml.mk
index bfe65a3..c6c24f6 100644
--- a/external/jfreereport/ExternalProject_jfreereport_libxml.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_libxml.mk
@@ -24,8 +24,11 @@ $(call gb_ExternalProject_get_state_target,jfreereport_libxml,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
-			-Dbuild.id="10682" \
+			-Dbuild.id="12398" \
 			-Dproject.revision="$(LIBXML_VERSION)" \
 			$(if $(debug),-Dbuild.debug="on") jar \
 	)
diff --git a/external/jfreereport/ExternalProject_jfreereport_sac.mk b/external/jfreereport/ExternalProject_jfreereport_sac.mk
index ff17db9..99d9f25 100644
--- a/external/jfreereport/ExternalProject_jfreereport_sac.mk
+++ b/external/jfreereport/ExternalProject_jfreereport_sac.mk
@@ -21,6 +21,9 @@ $(call gb_ExternalProject_get_state_target,jfreereport_sac,build) :
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ)), \
+				-Dbuild.compiler=gcj \
+			) \
 			-Dantcontrib.available="true" \
 			$(if $(debug),-Dbuild.debug="on") all \
 	)
diff --git a/external/languagetool/ExternalProject_languagetool.mk b/external/languagetool/ExternalProject_languagetool.mk
index ebefbf0..5496017 100644
--- a/external/languagetool/ExternalProject_languagetool.mk
+++ b/external/languagetool/ExternalProject_languagetool.mk
@@ -28,6 +28,9 @@ $(call gb_ExternalProject_get_state_target,languagetool,build) :
 		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
 		-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 		-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+		$(if $(filter yes,$(JAVACISGCJ)), \
+			-Dbuild.compiler=gcj \
+		) \
 		$(if $(debug),-Dbuild.debug="on") \
 		-Dext.ooo.juh.lib="$(call gb_Jar_get_target,juh)" \
 		-Dext.ooo.jurt.lib="$(call gb_Jar_get_target,jurt)" \
diff --git a/external/rhino/ExternalProject_rhino.mk b/external/rhino/ExternalProject_rhino.mk
index 6f0719d..3a62972 100644
--- a/external/rhino/ExternalProject_rhino.mk
+++ b/external/rhino/ExternalProject_rhino.mk
@@ -19,9 +19,11 @@ $(call gb_ExternalProject_get_state_target,rhino,build) :
 			-q \
 			-f build.xml \
 			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO)" \
+			-Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) \
 			-DTARFILE_LOCATION="$(if $(findstring -cygwin,$(BUILD_PLATFORM)),$(shell cygpath -m $(TARFILE_LOCATION)),$(TARFILE_LOCATION))" \
-			-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+			) \
 			$(if $(debug),-Dbuild.debug="on") \
 			jar \
 	)
commit e1021d0a7442785f97548503991b2bf759f2b37e
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Tue Feb 2 22:08:25 2016 -0500

    try to fix build of external:firebird
    
    Change-ID: Ia07a2e34208763228bd78f5b6cbda78c78015d4b

diff --git a/external/firebird/InputDevices-darwin.patch b/external/firebird/InputDevices-darwin.patch
new file mode 100644
index 0000000..b5adbed
--- /dev/null
+++ b/external/firebird/InputDevices-darwin.patch
@@ -0,0 +1,15 @@
+--- src/isql/InputDevices.cpp
++++ src/isql/InputDevices.cpp
+@@ -22,11 +22,10 @@
+  */
+ 
+ #include "firebird.h"
++
+ #if defined(DARWIN) && !defined(IOS)
+ #if defined(i386) || defined(__x86_64__)
+ #include <architecture/i386/io.h>
+-#else
+-#include <io.h>
+ #endif
+ #endif
+ 
diff --git a/external/firebird/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch b/external/firebird/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch
new file mode 100644
index 0000000..02e7363
--- /dev/null
+++ b/external/firebird/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch
@@ -0,0 +1,46 @@
+From: asfernandes <asfernandes at users.sourceforge.net>
+Date: Sat, 5 Mar 2016 03:39:36 +0000
+Subject: Make the generated code compatible with gcc 6 in C++-14 mode.
+ (cherry picked from commit 3618aa2171674babf79ef935aa049c40a3db1321)
+Patch-mainline: 
+Git-commit: 3618aa2171674babf79ef935aa049c40a3db1321
+References: bsc#964466 CORE-5099
+​
+--- src/gpre/c_cxx.cpp
++++ src/gpre/c_cxx.cpp
+@@ -2004,7 +2004,7 @@
+ 	int ident = CMP_next_ident();
+ 	init->nod_arg[2] = (gpre_nod*)(IPTR)ident;
+ 
+-	printa(0, "static %schar\n   *isc_%da, *isc_%db;", CONST_STR, ident, ident);
++	printa(0, "static %sunsigned char\n   *isc_%da, *isc_%db;", CONST_STR, ident, ident);
+ 	printa(0, "static short\n   isc_%dl;", ident);
+ 
+ 	const gpre_nod* list = init->nod_arg[1];
+@@ -2820,7 +2820,7 @@
+ 		printa(0, "static %sshort\n   isc_%dl = %d;",
+ 			   (request->req_flags & REQ_extend_dpb) ? "" : CONST_STR,
+ 			   request->req_ident, request->req_length);
+-		printa(0, "static %schar\n   isc_%d [] = {", CONST_STR, request->req_ident);
++		printa(0, "static %sunsigned char\n   isc_%d [] = {", CONST_STR, request->req_ident);
+ 
+ 		const TEXT* string_type = "blr";
+ 		if (gpreGlob.sw_raw)
+@@ -2891,7 +2891,7 @@
+ 			{
+ 				printa(0, "static %sshort\n   isc_%dl = %d;", CONST_STR,
+ 					   reference->ref_sdl_ident, reference->ref_sdl_length);
+-				printa(0, "static %schar\n   isc_%d [] = {", CONST_STR, reference->ref_sdl_ident);
++				printa(0, "static %sunsigned char\n   isc_%d [] = {", CONST_STR, reference->ref_sdl_ident);
+ 				if (gpreGlob.sw_raw)
+ 					gen_raw(reference->ref_sdl, reference->ref_sdl_length);
+ 				else if (PRETTY_print_sdl(reference->ref_sdl, gen_blr, 0, 0))
+@@ -2909,7 +2909,7 @@
+ 	{
+ 		if (blob->blb_bpb_length)
+ 		{
+-			printa(0, "static %schar\n   isc_%d [] = {", CONST_STR, blob->blb_bpb_ident);
++			printa(0, "static %sunsigned char\n   isc_%d [] = {", CONST_STR, blob->blb_bpb_ident);
+ 			gen_raw(blob->blb_bpb, blob->blb_bpb_length);
+ 			printa(INDENT, "};\n");
+ 		}
diff --git a/external/firebird/Provide-sized-global-delete-operators-when-compiled-.patch b/external/firebird/Provide-sized-global-delete-operators-when-compiled-.patch
new file mode 100644
index 0000000..6f171db
--- /dev/null
+++ b/external/firebird/Provide-sized-global-delete-operators-when-compiled-.patch
@@ -0,0 +1,27 @@
+From: Michal Kubecek <mkubecek at suse.cz>
+Date: Mon, 25 Apr 2016 08:55:36 +0200
+Subject: Provide sized global delete operators when compiled in C++14 mode
+Patch-mainline: submitted
+Git-commit: 038f9fbf559e56032e4cb49eb7ce4c3ead23fda9
+References: bsc#964466 CORE-5099
+​
+--- src/common/classes/alloc.h
++++ src/common/classes/alloc.h
+@@ -331,6 +331,17 @@
+ 	MemoryPool::globalFree(mem);
+ }
+ 
++#if __cplusplus >= 201402L
++inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) throw()
++{
++	MemoryPool::globalFree(mem);
++}
++inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) throw()
++{
++	MemoryPool::globalFree(mem);
++}
++#endif
++
+ #ifdef DEBUG_GDS_ALLOC
+ 
+ #ifdef __clang__
diff --git a/external/firebird/UnpackedTarball_firebird.mk b/external/firebird/UnpackedTarball_firebird.mk
index b65d041..300348c 100644
--- a/external/firebird/UnpackedTarball_firebird.mk
+++ b/external/firebird/UnpackedTarball_firebird.mk
@@ -14,14 +14,18 @@ $(eval $(call gb_UnpackedTarball_set_tarball,firebird,$(FIREBIRD_TARBALL)))
 $(eval $(call gb_UnpackedTarball_set_patchlevel,firebird,0))
 
 $(eval $(call gb_UnpackedTarball_add_patches,firebird,\
+		external/firebird/Provide-sized-global-delete-operators-when-compiled-.patch \
+		external/firebird/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch \
         external/firebird/firebird.disable-ib-util-not-found.patch.1 \
 		external/firebird/firebird-Engine12.patch \
 		external/firebird/firebird-rpath.patch.0 \
 		external/firebird/firebird-cloop-compiler.patch.1 \
-		external/firebird/firebird-gcc6.patch.1 \
 		external/firebird/wnt-dbgutil.patch \
 		external/firebird/debug-gfix-failure.patch \
 		external/firebird/libc++.patch \
+		external/firebird/os_utils-O_CLOEXEC.patch \
+		external/firebird/remote-inet-SOL_TCP.patch \
+		external/firebird/my-own-version-of-strnlen.patch \
 ))
 
 ifeq ($(OS)-$(COM),WNT-MSC)
@@ -32,10 +36,20 @@ endif
 
 ifeq ($(OS),MACOSX)
 $(eval $(call gb_UnpackedTarball_add_patches,firebird,\
-	external/firebird/firebird-configure-x86-64-macosx.patch.1 \
 	external/firebird/firebird-macosx.patch.1 \
-	external/firebird/macosx-elcapitan-dyld.patch \
+	external/firebird/firebird-macosx-print-dyldlibpath.patch \
+	external/firebird/InputDevices-darwin.patch \
+))
+ifeq ($(CPUNAME),POWERPC)
+$(eval $(call gb_UnpackedTarball_add_patches,firebird,\
+	external/firebird/lSystemStubs-darwin.patch \
+	external/firebird/prefix.darwin_powerpc.patch \
+	external/firebird/semaphore.h-darwin.patch \
+))
+else
+$(eval $(call gb_UnpackedTarball_add_patches,firebird,\
+	external/firebird/firebird-configure-x86-64-macosx.patch.1 \
 ))
 endif
-
+endif
 # vim: set noet sw=4 ts=4:
diff --git a/external/firebird/firebird-gcc6.patch.1 b/external/firebird/firebird-gcc6.patch.1
deleted file mode 100644
index e136141..0000000
--- a/external/firebird/firebird-gcc6.patch.1
+++ /dev/null
@@ -1,19 +0,0 @@
-commit 3618aa2171674babf79ef935aa049c40a3db1321
-Author: asfernandes <asfernandes at users.sourceforge.net>
-Date:   Sat Mar 5 03:39:36 2016 +0000
-
-    Make the generated code compatible with gcc 6 in C++-14 mode.
-
-diff --git a/src/gpre/c_cxx.cpp b/src/gpre/c_cxx.cpp
-index 2af96c6..2dcffd6 100644
---- a/src/gpre/c_cxx.cpp
-+++ b/src/gpre/c_cxx.cpp
-@@ -2820,7 +2820,7 @@ static void gen_request(const gpre_req* request)
- 		printa(0, "static %sshort\n   isc_%dl = %d;",
- 			   (request->req_flags & REQ_extend_dpb) ? "" : CONST_STR,
- 			   request->req_ident, request->req_length);
--		printa(0, "static %schar\n   isc_%d [] = {", CONST_STR, request->req_ident);
-+		printa(0, "static %sunsigned char\n   isc_%d [] = {", CONST_STR, request->req_ident);
- 
- 		const TEXT* string_type = "blr";
- 		if (gpreGlob.sw_raw)
diff --git a/external/firebird/macosx-elcapitan-dyld.patch b/external/firebird/firebird-macosx-print-dyldlibpath.patch
similarity index 100%
rename from external/firebird/macosx-elcapitan-dyld.patch
rename to external/firebird/firebird-macosx-print-dyldlibpath.patch
diff --git a/external/firebird/lSystemStubs-darwin.patch b/external/firebird/lSystemStubs-darwin.patch
new file mode 100644
index 0000000..3523d4f
--- /dev/null
+++ b/external/firebird/lSystemStubs-darwin.patch
@@ -0,0 +1,44 @@
+--- configure
++++ configure
+@@ -2925,7 +2925,7 @@
+ 
+ $as_echo "#define DARWIN 1" >>confdefs.h
+ 
+-	LIBS="$LIBS -framework CoreFoundation"
++	LIBS="$LIBS -lSystemStubs -framework CoreFoundation"
+     EDITLINE_FLG=Y
+     SHRLIB_EXT=dylib
+ 	EXPORT_SYMBOLS_STYLE=darwin
+--- configure.ac
++++ configure.ac
+@@ -117,7 +117,7 @@
+     PLATFORM=DARWIN
+     INSTALL_PREFIX=darwin
+     AC_DEFINE(DARWIN, 1, [Define this if OS is DARWIN])
+-	XE_APPEND(-framework CoreFoundation,LIBS)
++	XE_APPEND(-lSystemStubs -framework CoreFoundation,LIBS)
+     EDITLINE_FLG=Y
+     SHRLIB_EXT=dylib
+ dnl CPU_TYPE=ppc64
+--- extern/btyacc/Makefile
++++ extern/btyacc/Makefile
+@@ -17,7 +17,7 @@
+ # No LDFLAGS
+ #LDFLAGS=
+ 
+-LIBS=
++LIBS = -lSystemStubs
+ 
+ # For GNU environment, gmake will set $CC to gcc
+ # Other environments will have different values, maybe no GNU installed!
+--- extern/cloop/Makefile
++++ extern/cloop/Makefile
+@@ -4,7 +4,7 @@
+
+ TARGET	:= release
+
+-LD	:= $(CXX)
++LD	:= $(CXX) -lSystemStubs
+
+ SRC_DIR		:= src
+ BUILD_DIR	:= build
diff --git a/external/firebird/my-own-version-of-strnlen.patch b/external/firebird/my-own-version-of-strnlen.patch
new file mode 100644
index 0000000..c9b530a
--- /dev/null
+++ b/external/firebird/my-own-version-of-strnlen.patch
@@ -0,0 +1,51 @@
+--- src/auth/SecureRemotePassword/Message.h
++++ src/auth/SecureRemotePassword/Message.h
+@@ -19,6 +19,14 @@
+ 
+ #endif // INTERNAL_FIREBIRD
+ 
++/* My implementation of strnlen */
++static size_t my_strnlen( const char *s, size_t maxlen )
++{
++    const char *end = static_cast< const char * >( memchr( s, 0, maxlen ) );
++    return end ? static_cast< size_t >( end - s ) : maxlen;
++}
++
++
+ #ifdef INTERNAL_FIREBIRD
+ // This class helps to work with metadata iface
+ class Meta : public Firebird::RefPtr<Firebird::IMessageMetadata>
+@@ -347,7 +355,7 @@
+ 	const char* operator= (const char* newVal)
+ 	{
+ 		msg->getBuffer();
+-		setStrValue(newVal, static_cast<unsigned>(strnlen(newVal, size)));
++		setStrValue(newVal, static_cast< unsigned >( my_strnlen( newVal, size ) ));
+ 		null = FB_FALSE;
+ 		return newVal;
+ 	}
+--- src/isql/isql.epp
++++ src/isql/isql.epp
+@@ -89,6 +89,13 @@
+ #include "editline.h"
+ #endif
+ 
++/* My implementation of strnlen */
++size_t my_strnlen( const char *s, size_t maxlen )
++{
++    const char *end = static_cast< const char * >( memchr( s, 0, maxlen ) );
++    return end ? static_cast< size_t >( end - s ) : maxlen;
++}
++
+ enum literal_string_type
+ {
+ 	INIT_STR_FLAG			= 0,
+@@ -7179,7 +7186,7 @@
+ 			else
+ 			{
+ 				IcuUtil::pad(p, var->charSet,
+-					static_cast<unsigned>(strnlen(var->value.asChar, var->length)),
++					static_cast<unsigned>( my_strnlen( var->value.asChar, var->length ) ),
+ 					var->value.asChar, length, false);
+ 				strcat(p, " ");
+ 			}
diff --git a/external/firebird/os_utils-O_CLOEXEC.patch b/external/firebird/os_utils-O_CLOEXEC.patch
new file mode 100644
index 0000000..c9ce3f8
--- /dev/null
+++ b/external/firebird/os_utils-O_CLOEXEC.patch
@@ -0,0 +1,13 @@
+--- src/common/os/posix/os_utils.cpp
++++ src/common/os/posix/os_utils.cpp
+@@ -251,6 +251,10 @@
+ #endif
+ }
+ 
++#ifndef O_CLOEXEC
++#define O_CLOEXEC 0
++#endif
++
+ // setting flag is not absolutely required, therefore ignore errors here
+ void setCloseOnExec(int fd)
+ {
diff --git a/external/firebird/prefix.darwin_powerpc.patch b/external/firebird/prefix.darwin_powerpc.patch
new file mode 100644
index 0000000..fa534fd
--- /dev/null
+++ b/external/firebird/prefix.darwin_powerpc.patch
@@ -0,0 +1,17 @@
+--- builds/posix/prefix.darwin_powerpc
++++ builds/posix/prefix.darwin_powerpc
+@@ -20,11 +20,11 @@
+ DYLD_LIBRARY_PATH=$(FIREBIRD)/lib
+ export DYLD_LIBRARY_PATH
+
+-MACOSX_DEPLOYMENT_TARGET=10.2
++MACOSX_DEPLOYMENT_TARGET=10.5
+ export MACOSX_DEPLOYMENT_TARGET
+
+-PROD_FLAGS=-DDARWIN -pipe -p -MMD -fPIC -fno-common -arch ppc -mmacosx-version-min=10.2
+-DEV_FLAGS=-ggdb -DDARWIN -pipe -p -MMD -fPIC -fno-common -Wall -arch ppc -mmacosx-version-min=10.2 -Wno-non-virtual-dtor
++PROD_FLAGS=-DDARWIN -pipe -p -MMD -fPIC -fno-common
++DEV_FLAGS=-ggdb -DDARWIN -pipe -p -MMD -fPIC -fno-common -Wall -Wno-non-virtual-dtor
+ CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -fno-weak
+
+ EXE_LINK_OPTIONS:=
diff --git a/external/firebird/remote-inet-SOL_TCP.patch b/external/firebird/remote-inet-SOL_TCP.patch
new file mode 100644
index 0000000..a76927c
--- /dev/null
+++ b/external/firebird/remote-inet-SOL_TCP.patch
@@ -0,0 +1,15 @@
+--- src/remote/inet.cpp
++++ src/remote/inet.cpp
+@@ -803,11 +803,7 @@
+ 	gai_hints.ai_family = ((packet || host.hasData() || !ipv6) ? AF_UNSPEC : AF_INET6);
+ 	gai_hints.ai_socktype = SOCK_STREAM;
+ 
+-#if !defined(WIN_NT) && !defined(__clang__)
+-	gai_hints.ai_protocol = SOL_TCP;
+-#else
+-	gai_hints.ai_protocol = IPPROTO_TCP;
+-#endif
++	gai_hints.ai_protocol = getprotobyname("TCP")->p_proto;
+ 
+ 	gai_hints.ai_flags =
+ #ifndef ANDROID
diff --git a/external/firebird/semaphore.h-darwin.patch b/external/firebird/semaphore.h-darwin.patch
new file mode 100644
index 0000000..a409962
--- /dev/null
+++ b/external/firebird/semaphore.h-darwin.patch
@@ -0,0 +1,57 @@
+--- src/common/classes/semaphore.h
++++ src/common/classes/semaphore.h
+@@ -78,53 +78,7 @@
+ 
+ #else // WINNT
+ 
+-#if defined(DARWIN)
+-
+-// dispatch semaphore
+-#define COMMON_CLASSES_SEMAPHORE_DISPATCH
+-#include <dispatch/dispatch.h>
+-
+-namespace Firebird
+-{
+-
+-class MemoryPool;
+-
+-class SignalSafeSemaphore
+-{
+-private:
+-	dispatch_semaphore_t semaphore;
+-
+-	void init();
+-
+-	// Forbid copying
+-	SignalSafeSemaphore(const SignalSafeSemaphore&);
+-	SignalSafeSemaphore& operator=(const SignalSafeSemaphore&);
+-
+-public:
+-	SignalSafeSemaphore() { init(); }
+-	explicit SignalSafeSemaphore(MemoryPool&) { init(); }
+-
+-	~SignalSafeSemaphore();
+-
+-	void enter()
+-	{
+-		dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
+-	}
+-
+-	void release(SLONG count = 1)
+-	{
+-		fb_assert(count >= 0);
+-		while (count--)
+-		{
+-			dispatch_semaphore_signal(semaphore);
+-		}
+-	}
+-};
+-
+-} // namespace Firebird
+-
+-
+-#elif defined(HAVE_SEMAPHORE_H)
++#if defined(HAVE_SEMAPHORE_H)
+ 
+ #define COMMON_CLASSES_SEMAPHORE_POSIX_RT
+ #include <semaphore.h>
commit a3095e1e6f4ece3c44e38af3bb3396f34403c48b
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Mar 25 23:20:32 2016 -0400

    try to fix failing unit tests
    
    Change-Id: Ibe6d47d3b102da5bf2f77da74a43d617149ac7ff

diff --git a/filter/source/config/cache/typedetection.cxx b/filter/source/config/cache/typedetection.cxx
index bb4289d..1245d5f 100644
--- a/filter/source/config/cache/typedetection.cxx
+++ b/filter/source/config/cache/typedetection.cxx
@@ -949,8 +949,8 @@ OUString TypeDetection::impl_detectTypeFlatAndDeep(      utl::MediaDescriptor& r
             if (!sDeepType.isEmpty())
                 return sDeepType;
         }
-        catch(const css::container::NoSuchElementException&)
-            {}
+        catch( ... )
+            { }
         // e)
     }
 
@@ -1007,21 +1007,14 @@ OUString TypeDetection::impl_askDetectService(const OUString&               sDet
 
     try
     {
-        // Attention! If e.g. an office module was not installed sometimes we
-        // find a registered detect service, which is referred inside the
-        // configuration ... but not really installed. On the other side we use
-        // third party components here, which can make trouble anyway.  So we
-        // should handle errors during creation of such services more
-        // gracefully .-)
-        xDetector.set(
-                xContext->getServiceManager()->createInstanceWithContext(sDetectService, xContext),
-                css::uno::UNO_QUERY_THROW);
-    }
-    catch (...)
-    {
+        css::uno::Reference< css::uno::XInterface > xInterface =
+                xContext->getServiceManager()->createInstanceWithContext( sDetectService, xContext );
+        if ( xInterface.is() )
+            xDetector.set( xInterface, css::uno::UNO_QUERY_THROW );
     }
+    catch ( ... ) { }
 
-    if ( ! xDetector.is())
+    if ( ! xDetector.is() )
         return OUString();
 
     OUString sDeepType;
@@ -1030,22 +1023,19 @@ OUString TypeDetection::impl_askDetectService(const OUString&               sDet
         // start deep detection
         // Don't forget to convert stl descriptor to its uno representation.
 
-        /* Attention!
+        /*
                 You have to use an explicit instance of this uno sequence ...
-                Because its used as an in out parameter. And in case of a temp. used object
-                we will run into memory corruptions!
+                Because its used as an in out parameter. And in case of a temporary used object
+                you will run into memory corruptions
         */
         css::uno::Sequence< css::beans::PropertyValue > lDescriptor;
         rDescriptor >> lDescriptor;
-        sDeepType = xDetector->detect(lDescriptor);
+        sDeepType = xDetector->detect( lDescriptor );
         rDescriptor << lDescriptor;
     }
     catch (...)
     {
-        // We should ignore errors here.
-        // Thrown exceptions mostly will end in crash recovery ...
-        // But might be we find another deep detection service which can detect the same
-        // document without a problem .-)
+        // ignore errors here
         sDeepType.clear();
     }
 
diff --git a/sc/qa/extras/check_data_pilot_table.cxx b/sc/qa/extras/check_data_pilot_table.cxx
index 11c3ee3..1e1087a 100644
--- a/sc/qa/extras/check_data_pilot_table.cxx
+++ b/sc/qa/extras/check_data_pilot_table.cxx
@@ -8,6 +8,7 @@
  */
 
 #include <test/calc_unoapi_test.hxx>
+
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/container/XIndexAccess.hpp>
 #include <com/sun/star/container/XNamed.hpp>
@@ -23,11 +24,13 @@
 #include <com/sun/star/table/CellRangeAddress.hpp>
 #include <com/sun/star/sheet/GeneralFunction.hpp>
 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+
 #include "test/container/xnamed.hxx"
 #include "test/sheet/xdatapilottable.hxx"
 #include "test/sheet/xdatapilotdescriptor.hxx"
 #include "test/beans/xpropertyset.hxx"
-//check the DataPilot of Calc.
+
+// check the DataPilot of Calc
 
 using namespace css;
 using namespace css::lang;
@@ -86,8 +89,8 @@ uno::Reference< uno::XInterface > CheckDataPilotTable::init()
     else
         return mxObject;
 
-    uno::Reference< sheet::XSpreadsheetDocument > xSheetDoc(mxComponent, uno::UNO_QUERY_THROW);
-    CPPUNIT_ASSERT_MESSAGE("no calc document!", xSheetDoc.is());
+    uno::Reference< sheet::XSpreadsheetDocument > xSheetDoc( mxComponent, uno::UNO_QUERY );
+    CPPUNIT_ASSERT_MESSAGE( "no calc document", xSheetDoc.is() );
 
     // the cell range
     table::CellRangeAddress sCellRangeAdress;
diff --git a/sc/qa/unit/bugfix-test.cxx b/sc/qa/unit/bugfix-test.cxx
index 3499109..6c59116 100644
--- a/sc/qa/unit/bugfix-test.cxx
+++ b/sc/qa/unit/bugfix-test.cxx
@@ -129,26 +129,28 @@ void ScFiltersTest::testTdf43534()
 
 void ScFiltersTest::testTdf91979()
 {
-    uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
-    Sequence < beans::PropertyValue > args(1);
-    args[0].Name = "Hidden";
-    args[0].Value <<= true;
-
-    uno::Reference< lang::XComponent > xComponent = xDesktop->loadComponentFromURL(
-        "private:factory/scalc",
-        "_blank",
-        0,
-        args);
-    CPPUNIT_ASSERT(xComponent.is());
+    uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create( ::comphelper::getProcessComponentContext() );
+    CPPUNIT_ASSERT_MESSAGE( "no desktop", xDesktop.is() );
+    uno::Reference< frame::XComponentLoader > xLoader( xDesktop, uno::UNO_QUERY );
+    CPPUNIT_ASSERT_MESSAGE( "no loader", xLoader.is() );
+
+    Sequence < beans::PropertyValue > extraArgs( 1 );
+    extraArgs[ 0 ].Name = "Hidden";
+    extraArgs[ 0 ].Value <<= true;
+
+    uno::Reference< lang::XComponent > xComponent = xLoader->loadComponentFromURL(
+            "private:factory/scalc" ,
+            "_blank" ,
+            0 /* search flags */ ,
+            extraArgs );
+    CPPUNIT_ASSERT_MESSAGE( "no component", xComponent.is() );
 
     // Get the document model
-    SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+    SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent( xComponent );
+    CPPUNIT_ASSERT_MESSAGE( "no document shell", pFoundShell );
 
-    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
-    CPPUNIT_ASSERT(xDocSh.get() != nullptr);
+    ScDocShellRef xDocSh = dynamic_cast< ScDocShell* >( pFoundShell );
+    CPPUNIT_ASSERT( xDocSh.get() != nullptr );
 
     // Get the document controller
     ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
commit 1e73b01604c80e16fde8536e7e60fe2d4f99abe1
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Apr 13 07:39:36 2016 -0400

    framework: try to fix loading of component


... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list