diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index cb390544135..6f9b43e8926 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -360,7 +360,7 @@ jobs:
build-macos:
name: build-macos-${{ matrix.arch }}
- runs-on: ${{ (matrix.arch == 'arm64' && 'macos-14') || 'macos-13' }}
+ runs-on: ${{ (matrix.arch == 'arm64' && 'macos-15') || 'macos-15-intel' }}
strategy:
fail-fast: false
diff --git a/builds/install/arch-specific/darwin/embed.Info.plist b/builds/install/arch-specific/darwin/embed.Info.plist
deleted file mode 100644
index 83f512e3631..00000000000
--- a/builds/install/arch-specific/darwin/embed.Info.plist
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- LSEnvironment
-
- FIREBIRD
- .
-
-
-
diff --git a/builds/install/arch-specific/darwin/embed.darwin b/builds/install/arch-specific/darwin/embed.darwin
deleted file mode 100644
index 2c8f05cad92..00000000000
--- a/builds/install/arch-specific/darwin/embed.darwin
+++ /dev/null
@@ -1,94 +0,0 @@
-# Makefile script to generate an embedded Firebird Framework from a sucessful Firebird build
-# To be run from the gen directory of a Firebird Release build
-# Your application needs to be placed in the Resources/app directory.
-
- FBE=../gen/Release/frameworks/FirebirdEmbedded.framework
- BINLOC=../gen/Release/frameworks/FirebirdEmbedded.framework/Versions/A/Resources/bin
- LIBLOC=../gen/Release/frameworks/FirebirdEmbedded.framework/Versions/A
- INTLOC=../gen/Release/frameworks/FirebirdEmbedded.framework/Versions/A/Resources/intl
- PLULOC=../gen/Release/frameworks/FirebirdEmbedded.framework/Versions/A/Resources/plugins
- UTILOC=../gen/Release/frameworks/FirebirdEmbedded.framework/Versions/A/Libraries
- OLDPATH=/Library/Frameworks/Firebird.framework/Versions/A/Libraries
-
-all:
-
- -$(RM) -rf $(FBE)
- mkdir -p $(FBE)/Versions/A/Resources
- mkdir -p $(FBE)/Versions/A/Resources/intl
- mkdir -p $(FBE)/Versions/A/Resources/plugins
- mkdir -p $(FBE)/Versions/A/Resources/bin
- mkdir -p $(FBE)/Versions/A/Resources/app
- mkdir -p $(FBE)/Versions/A/Headers
- mkdir -p $(FBE)/Versions/A/Libraries
- ln -s Versions/Current/Headers $(FBE)/Headers
- ln -s Versions/Current/Resources $(FBE)/Resources
- ln -s Versions/Current/Libraries $(FBE)/Libraries
- ln -s A $(FBE)/Versions/Current
-
- cp ../gen/Release/firebird/firebird.conf $(FBE)/Versions/A/Resources/firebird.conf
- cp ../gen/Release/firebird/plugins.conf $(FBE)/Versions/A/Resources/plugins.conf
- cp ../gen/Release/firebird/firebird.msg $(FBE)/Versions/A/Resources/firebird.msg
- cp ../gen/Release/firebird/lib/libfbclient.dylib $(FBE)/Versions/A/libfbclient.dylib
- cp ../gen/Release/firebird/plugins/libEngine12.dylib $(FBE)/Versions/A/Resources/plugins/libEngine12.dylib
- cp ../gen/Release/firebird/lib/libicudata.dylib $(FBE)/Versions/A/libicudata.dylib
- cp ../gen/Release/firebird/lib/libicui18n.dylib $(FBE)/Versions/A/libicui18n.dylib
- cp ../gen/Release/firebird/lib/libicuuc.dylib $(FBE)/Versions/A/libicuuc.dylib
- cp ../gen/Release/firebird/bin/gbak $(FBE)/Versions/A/Resources/bin/gbak
- cp ../gen/Release//firebird/bin/isql $(FBE)/Versions/A/Resources/bin/isql
- cp ../gen/Release/firebird/intl/fbintl.conf $(FBE)/Versions/A/Resources/intl/fbintl.conf
- cp ../gen/Release/firebird/intl/libfbintl.dylib $(FBE)/Versions/A/Resources/intl/libfbintl.dylib
- cp ../gen/Release/firebird/lib/libib_util.dylib $(FBE)/Versions/A/Libraries/libib_util.dylib
-
-
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Firebird \
- @loader_path/../../libfbclient.dylib $(BINLOC)/isql
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Firebird \
- @loader_path/../../libfbclient.dylib $(PLULOC)/libEngine12.dylib
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicuuc.dylib \
- @loader_path/../../libicuuc.dylib $(BINLOC)/isql
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicudata.dylib \
- @loader_path/../../libicudata.dylib $(BINLOC)/isql
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicui18n.dylib \
- @loader_path/../../libicui18n.dylib $(BINLOC)/isql
-
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Firebird \
- @loader_path/../../libfbclient.dylib $(BINLOC)/gbak
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicuuc.dylib \
- @loader_path/../../libicuuc.dylib $(BINLOC)/gbak
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicudata.dylib \
- @loader_path/../../libicudata.dylib $(BINLOC)/gbak
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicui18n.dylib \
- @loader_path/../../libicui18n.dylib $(BINLOC)/gbak
-
- install_name_tool -change $(OLDPATH)/libicuuc.dylib @loader_path/libicuuc.dylib \
- $(LIBLOC)/libfbclient.dylib
- install_name_tool -change $(OLDPATH)/libicudata.dylib @loader_path/libicudata.dylib \
- $(LIBLOC)/libfbclient.dylib
- install_name_tool -change $(OLDPATH)/libicui18n.dylib @loader_path/libicui18n.dylib \
- $(LIBLOC)/libfbclient.dylib
- install_name_tool -change $(OLDPATH)/libicudata.dylib @loader_path/libicudata.dylib \
- $(LIBLOC)/libicuuc.dylib
- install_name_tool -change $(OLDPATH)/libicuuc.dylib @loader_path/libicuuc.dylib \
- $(LIBLOC)/libicui18n.dylib
- install_name_tool -change $(OLDPATH)/libicudata.dylib @loader_path/libicudata.dylib \
- $(LIBLOC)/libicui18n.dylib
-
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Firebird \
- @loader_path/../../libfbclient.dylib $(INTLOC)/libfbintl.dylib
-
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicuuc.dylib \
- @loader_path/../libicuuc.dylib $(INTLOC)/libfbintl.dylib
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicudata.dylib \
- @loader_path/../libicudata.dylib $(INTLOC)/libfbintl.dylib
- install_name_tool -change /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicui18n.dylib \
- @loader_path/../libicui18n.dylib $(INTLOC)/libfbintl.dylib
-
- install_name_tool -id @rpath/libfbclient.dylib $(LIBLOC)/libfbclient.dylib
- install_name_tool -id @rpath/libicudata.dylib $(LIBLOC)/libicudata.dylib
- install_name_tool -id @rpath/libicui18n.dylib $(LIBLOC)/libicui18n.dylib
- install_name_tool -id @rpath/libicudata.dylib $(LIBLOC)/libicudata.dylib
- install_name_tool -id @rpath/libicuuc.dylib $(LIBLOC)/libicuuc.dylib
- install_name_tool -id @rpath/libicudata.dylib $(LIBLOC)/libicudata.dylib
- install_name_tool -id @rpath/libib_util.dylib $(UTILOC)/libib_util.dylib
- install_name_tool -id @rpath/libfbintl.dylib $(INTLOC)/libfbintl.dylib
- install_name_tool -id @rpath/libEngine12.dylib $(PLULOC)/libEngine12.dylib
diff --git a/builds/posix/Makefile.in b/builds/posix/Makefile.in
index 6764214e7f3..197f586c991 100644
--- a/builds/posix/Makefile.in
+++ b/builds/posix/Makefile.in
@@ -197,7 +197,7 @@ ifeq ($(CLIENT_ONLY_FLG),N)
CC="$(CC)" CFLAGS="$(CFLAGS)" AR="$(AR)" $(MAKE) -C $(ROOT)/extern/btyacc
endif
- CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" LD_FLAGS="$(WLDFLAGS)" $(MAKE) -C $(ROOT)/extern/cloop TARGET=release WITH_FPC=0 BUILD_DIR=$(TMP_ROOT)/cloop OUT_DIR=$(GEN_ROOT)/$(TARGET)/cloop core
+ CXX="$(CXX)" LD_FLAGS="$(PLATFORM_LDFLAGS)" $(MAKE) -C $(ROOT)/extern/cloop TARGET=release WITH_FPC=0 BUILD_DIR=$(TMP_ROOT)/cloop OUT_DIR=$(GEN_ROOT)/$(TARGET)/cloop core
CC="$(CC)" CFLAGS="$(CFLAGS)" AR="$(AR)" $(MAKE) -C $(ROOT)/extern/decNumber
ln -sf $(ROOT)/extern/decNumber/libdecFloat.a $(STATIC_LIB)
diff --git a/builds/posix/darwin.defaults b/builds/posix/darwin.defaults
index 8012af3ea7e..d8350092c29 100644
--- a/builds/posix/darwin.defaults
+++ b/builds/posix/darwin.defaults
@@ -21,7 +21,7 @@
#FirebirdInstallPrefix=
LIB_BUNDLE_OPTIONS=$(LD_FLAGS) -bundle
LIB_LINK_OPTIONS=$(LD_FLAGS) -dynamiclib
-LIB_LINK_SONAME:=-current_version @FIREBIRD_VERSION@ -compatibility_version @FIREBIRD_VERSION@ -seg1addr 0x30000000
+LIB_LINK_SONAME:=-current_version @FIREBIRD_VERSION@ -compatibility_version @FIREBIRD_VERSION@
LIB_LINK_MAPFILE=-Wl,-exported_symbols_list,$(1)
ADD_LIBS:=-lobjc -framework Foundation -framework Security
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
index 38592dcc96e..82cc51ae5e6 100755
--- a/builds/posix/make.defaults
+++ b/builds/posix/make.defaults
@@ -360,41 +360,41 @@ LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
FIREBIRD_LIBRARY_LINK= -L$(LIB) -L$(STATIC_LIB) -lfbclient $(MATHLIB) $(CRYPTLIB)
EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(call LINK_DARWIN_RPATH,..) $(LINK_EMPTY_SYMBOLS)
-LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared
+LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared $(call LINK_DARWIN_RPATH,..)
FB_DAEMON = $(BIN)/firebird$(EXEC_EXT)
# Per-library link rules
LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_EXT)) $(UNDEF_FLAGS)\
- $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
+ $(call LIB_LINK_RPATH,lib)
LINK_UDF_LIBS = $(THR_LIBS) -L$(LIB) -L$(STATIC_LIB) -lib_util $(SO_LINK_LIBS)
LINK_IB_UTIL = $(LIB_LINK) $(LINK_IBUTIL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
+ $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib)
LINK_IB_UTIL_LIBS = $(THR_LIBS)
LINK_INTL = $(LIB_LINK) $(LINK_FBINTL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,libfbintl.$(SHRLIB_EXT).1) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
+ $(call LIB_LINK_SONAME,libfbintl.$(SHRLIB_EXT).1) $(call LIB_LINK_RPATH,lib)
LINK_INTL_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS) $(FIREBIRD_LIBRARY_LINK)
LINK_TRACE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(LIB_PREFIX)fbtrace.$(SHRLIB_EXT).0) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
+ $(call LIB_LINK_SONAME,$(LIB_PREFIX)fbtrace.$(SHRLIB_EXT).0) $(call LIB_LINK_RPATH,lib)
LINK_TRACE_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS)
LINK_FIREBIRD = $(LIB_LINK) $(LINK_FIREBIRD_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(LibrarySoName)) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
+ $(call LIB_LINK_SONAME,$(LibrarySoName)) $(call LIB_LINK_RPATH,lib)
LINK_FIREBIRD_LIBS = -L$(LIB) -L$(STATIC_LIB) $(LIB_GUI) $(SO_LINK_LIBS) $(MATHLIB)
LINK_ENGINE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(EngineSoName)) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
+ $(call LIB_LINK_SONAME,$(EngineSoName)) $(call LIB_LINK_RPATH,lib)
LINK_ENGINE_LIBS = $(LINK_FIREBIRD_LIBS) $(RE2LIB) $(LIBCDSLIB) $(FIREBIRD_LIBRARY_LINK)
-LINK_UDRENG = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)\
- $(call LINK_DARWIN_RPATH,..)
+LINK_UDRENG = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)
+
LINK_UDRENG_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS)
-LINK_PLUGIN = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)\
- $(call LINK_DARWIN_RPATH,..)
+LINK_PLUGIN = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)
+
LINK_PLUG_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS)
# Pay attention - we place common library into obj, not lib dir
diff --git a/builds/posix/make.rules b/builds/posix/make.rules
index 3bbd2580fea..cc12c500251 100644
--- a/builds/posix/make.rules
+++ b/builds/posix/make.rules
@@ -71,7 +71,8 @@ WCXXFLAGS = $(WFLAGS) $(PLUSPLUS_FLAGS) $(PLATFORM_PLUSPLUS_FLAGS) $(CXXFLAGS) $
WLDFLAGS = $(LDFLAGS) $(AC_LDFLAGS)
ifneq ($(PLATFORM),DARWIN)
-WLDFLAGS += -static-libstdc++
+PLATFORM_LDFLAGS="-static-libstdc++"
+WLDFLAGS += $(PLATFORM_LDFLAGS)
endif
# Here we have definitions for using the preprocessor.
diff --git a/builds/posix/prefix.darwin_aarch64 b/builds/posix/prefix.darwin_aarch64
index 7f2da73ccb7..c179da7fc34 100644
--- a/builds/posix/prefix.darwin_aarch64
+++ b/builds/posix/prefix.darwin_aarch64
@@ -33,17 +33,19 @@
#DYLD_PRINT_LIBRARIES=1
#export DYLD_PRINT_LIBRARIES
-MACOSX_DEPLOYMENT_TARGET=11.0
+MACOSX_DEPLOYMENT_TARGET=12.7
export MACOSX_DEPLOYMENT_TARGET
-PROD_FLAGS=-DDARWIN -DARM64 -pipe -O2 -MMD -fPIC -fno-common -mmacosx-version-min=11.0
-DEV_FLAGS=-ggdb -DDARWIN -DARM64 -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Wall -fno-optimize-sibling-calls -mmacosx-version-min=11.0 -Wno-non-virtual-dtor
+PLATFORM_PLUSPLUS_FLAGS=-Wno-invalid-offsetof
+
+PROD_FLAGS=-DDARWIN -DARM64 -pipe -O2 -MMD -fPIC -fno-common -mmacosx-version-min=12.7
+DEV_FLAGS=-ggdb -DDARWIN -DARM64 -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Wall -fno-optimize-sibling-calls -mmacosx-version-min=12.7 -Wno-non-virtual-dtor
CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden
UNDEF_PLATFORM=
-LINK_LIBS+=-liconv
+#LINK_LIBS+=-liconv
#MATHLIB=$(ROOT)/extern/libtommath/.libs/libtommath.a
-SO_LINK_LIBS+=-liconv
+#SO_LINK_LIBS+=-liconv
include $(ROOT)/gen/darwin.defaults
diff --git a/builds/posix/prefix.darwin_i386 b/builds/posix/prefix.darwin_i386
deleted file mode 100644
index ff6069839d5..00000000000
--- a/builds/posix/prefix.darwin_i386
+++ /dev/null
@@ -1,39 +0,0 @@
-# The contents of this file are subject to the Interbase Public
-# License Version 1.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy
-# of the License at http://www.Inprise.com/IPL.html
-#
-# Software distributed under the License is distributed on an
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
-# or implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code was created by Inprise Corporation
-# and its predecessors. Portions created by Inprise Corporation are
-#
-# Copyright (C) 2000 Inprise Corporation
-# All Rights Reserved.
-# Contributor(s): ______________________________________.
-# Start of file prefix.darwin: $(VERSION) @PLATFORM@
-# 2 Oct 2002, Nickolay Samofatov - Major Cleanup
-#
-# Default build from 10.7 using Clang
-# Use this file to create a 32bit version of Firebird for intel
-# Instructions if running MacOSX 10.7
-# 1. edit configure.in so that MAKEFILE_PREFIX=darwin_i386
-# 2. dnl the CPU_TYPE
-# 3. edit extern/icu/source/config and set the right 32bit flags (-arch i386)
-# 4. for CFLAGS, CXXFLAGS, LDFLAGS export '-m32 -arch i386'
-# 5. export MACOSX_DEPLOYMENT_TARGET=10.7
-
-MACOSX_DEPLOYMENT_TARGET=10.7
-export MACOSX_DEPLOYMENT_TARGET
-
-PROD_FLAGS=-O1 -DDARWIN -pipe -MMD -fPIC -fno-common -arch i386 -mmacosx-version-min=10.7
-DEV_FLAGS=-ggdb -DDARWIN -pipe -MMD -fPIC -fno-common -Wall -arch i386 -mmacosx-version-min=10.7 -Wno-non-virtual-dtor
-CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -fno-weak
-
-EXE_LINK_OPTIONS+=-m32
-LD_FLAGS+=-m32 -arch i386
-
-include $(ROOT)/gen/darwin.defaults
diff --git a/builds/posix/prefix.darwin_powerpc b/builds/posix/prefix.darwin_powerpc
deleted file mode 100644
index c56b5feaede..00000000000
--- a/builds/posix/prefix.darwin_powerpc
+++ /dev/null
@@ -1,27 +0,0 @@
-# The contents of this file are subject to the Interbase Public
-# License Version 1.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy
-# of the License at http://www.Inprise.com/IPL.html
-#
-# Software distributed under the License is distributed on an
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
-# or implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code was created by Inprise Corporation
-# and its predecessors. Portions created by Inprise Corporation are
-#
-# Copyright (C) 2000 Inprise Corporation
-# All Rights Reserved.
-# Contributor(s): ______________________________________.
-# Start of file prefix.darwin: $(VERSION) @PLATFORM@
-# 2 Oct 2002, Nickolay Samofatov - Major Cleanup
-
-MACOSX_DEPLOYMENT_TARGET=10.2
-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
-CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -fno-weak
-
-include $(ROOT)/gen/darwin.defaults
diff --git a/builds/posix/prefix.darwin_ppc64 b/builds/posix/prefix.darwin_ppc64
deleted file mode 100644
index a33ed454899..00000000000
--- a/builds/posix/prefix.darwin_ppc64
+++ /dev/null
@@ -1,42 +0,0 @@
-# The contents of this file are subject to the Interbase Public
-# License Version 1.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy
-# of the License at http://www.Inprise.com/IPL.html
-#
-# Software distributed under the License is distributed on an
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
-# or implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code was created by Inprise Corporation
-# and its predecessors. Portions created by Inprise Corporation are
-#
-# Copyright (C) 2000 Inprise Corporation
-# All Rights Reserved.
-# Contributor(s): ______________________________________.
-# Start of file prefix.darwin: $(VERSION) @PLATFORM@
-# 2 Oct 2002, Nickolay Samofatov - Major Cleanup
-
-# To use this file to build 64bit version of Firebird for MacOS 10.5 (Leopard)
-# Can only be built on MacOSX 10.5 (Leopard) due to lack of 64bit support in
-# Carbon in previous versions of MacOSX
-# 1. edit configure.in so that MAKEFILE_PREFIX=darwin_ppc64
-# 2. uncomment the CPU_TYPE
-# 3. edit extern/icu/source/config/mh-darwin and set the right 64bit flags (-arch ppc64)
-# for CFLAGS, CXXFLAGS & LD_FLAGS
-# 4. export CFLAGS='-arch _ppc64'
-# 5. export CXXFLAGS='-arch ppc_64'
-# 6. export LDFLAGS='-arch ppc_64'
-# 7. export MACOSX_DEPLOYMENT_TARGET=10.5
-
-MACOSX_DEPLOYMENT_TARGET=10.5
-export MACOSX_DEPLOYMENT_TARGET
-
-PROD_FLAGS=-O3 -DDARWIN -pipe -p -MMD -fPIC -fno-common -mmacosx-version-min=10.5
-DEV_FLAGS=-ggdb -DDARWIN -pipe -p -MMD -fPIC -fno-common -Wall -mmacosx-version-min=10.5 -Wno-non-virtual-dtor
-CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden
-
-EXE_LINK_OPTIONS+=-arch ppc64
-LD_FLAGS+=-arch ppc64
-
-include $(ROOT)/gen/darwin.defaults
diff --git a/builds/posix/prefix.darwin_x86_64 b/builds/posix/prefix.darwin_x86_64
index 6280c8607fb..71790506b2c 100644
--- a/builds/posix/prefix.darwin_x86_64
+++ b/builds/posix/prefix.darwin_x86_64
@@ -28,15 +28,17 @@ export DYLD_LIBRARY_PATH
DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
export DYLD_FALLBACK_LIBRARY_PATH
-MACOSX_DEPLOYMENT_TARGET=10.9
+MACOSX_DEPLOYMENT_TARGET=12.7
export MACOSX_DEPLOYMENT_TARGET
-PROD_FLAGS=-O1 -DDARWIN -pipe -MMD -fPIC -fno-common -mmacosx-version-min=10.7
-DEV_FLAGS=-ggdb -DDARWIN -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Wall -fno-optimize-sibling-calls -mmacosx-version-min=10.7 -Wno-non-virtual-dtor
+PLATFORM_PLUSPLUS_FLAGS=-Wno-invalid-offsetof
+
+PROD_FLAGS=-O1 -DDARWIN -pipe -MMD -fPIC -fno-common -mmacosx-version-min=12.7
+DEV_FLAGS=-ggdb -DDARWIN -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Wall -fno-optimize-sibling-calls -mmacosx-version-min=12.7 -Wno-non-virtual-dtor
CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -msse4
-LD_FLAGS+=-liconv
-FIREBIRD_LIBRARY_LINK+=-liconv
+#LD_FLAGS+=-liconv
+#FIREBIRD_LIBRARY_LINK+=-liconv
UNDEF_PLATFORM=
include $(ROOT)/gen/darwin.defaults
diff --git a/builds/win32/msvc15/common.vcxproj b/builds/win32/msvc15/common.vcxproj
index 2c8448d35db..16047820d13 100644
--- a/builds/win32/msvc15/common.vcxproj
+++ b/builds/win32/msvc15/common.vcxproj
@@ -153,6 +153,7 @@
+
diff --git a/builds/win32/msvc15/common.vcxproj.filters b/builds/win32/msvc15/common.vcxproj.filters
index 0145c958fce..fb420f6a966 100644
--- a/builds/win32/msvc15/common.vcxproj.filters
+++ b/builds/win32/msvc15/common.vcxproj.filters
@@ -446,6 +446,9 @@
headers
+
+ headers
+
headers
diff --git a/configure.ac b/configure.ac
index 068b1ce566f..7c250b39456 100644
--- a/configure.ac
+++ b/configure.ac
@@ -719,7 +719,7 @@ case "$build" in
*-*-darwin*)
CFLAGS="$CFLAGS -I${VCPKG_INSTALLED}/include"
CXXFLAGS="$CXXFLAGS -nostdinc++ -isystem ${VCPKG_INSTALLED}/include/c++/v1 -I${VCPKG_INSTALLED}/include"
- LDFLAGS="$LDFLAGS -nostdlib++ -stdlib=libc++ -L${VCPKG_INSTALLED}/lib -lc++"
+ LDFLAGS="$LDFLAGS -nostdlib++ -L${VCPKG_INSTALLED}/lib -lc++"
;;
esac
diff --git a/extern/cloop/Makefile b/extern/cloop/Makefile
index 319218a85ee..4388ee37d36 100644
--- a/extern/cloop/Makefile
+++ b/extern/cloop/Makefile
@@ -41,10 +41,6 @@ ifeq ($(TARGET),release)
CXX_FLAGS += -O3
endif
-ifeq ($(shell uname),Darwin)
-CXX_FLAGS += -stdlib=libc++
-endif
-
ifeq ($(TARGET),debug)
FPC_FLAGS += -g
LD_FLAGS += -ggdb
diff --git a/extern/libtomcrypt/makefile.shared b/extern/libtomcrypt/makefile.shared
index b4e7c430623..c0f17a47166 100644
--- a/extern/libtomcrypt/makefile.shared
+++ b/extern/libtomcrypt/makefile.shared
@@ -43,10 +43,10 @@ include makefile_include.mk
#ciphers come in two flavours... enc+dec and enc
src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c
- $(LTCOMPILE) $(LTC_CFLAGS) $(CPPFLAGS) $(LTC_LDFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o
+ $(LTCOMPILE) $(LTC_CFLAGS) $(CPPFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o
.c.o:
- $(LTCOMPILE) $(LTC_CFLAGS) $(CPPFLAGS) $(LTC_LDFLAGS) -o $@ -c $<
+ $(LTCOMPILE) $(LTC_CFLAGS) $(CPPFLAGS) -o $@ -c $<
LOBJECTS = $(OBJECTS:.o=.lo)
diff --git a/src/common/classes/PodOptional.h b/src/common/classes/PodOptional.h
new file mode 100644
index 00000000000..ee5b6316f25
--- /dev/null
+++ b/src/common/classes/PodOptional.h
@@ -0,0 +1,64 @@
+/*
+ * The contents of this file are subject to the Initial
+ * Developer's Public License Version 1.0 (the "License");
+ * you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at
+ * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl.
+ *
+ * Software distributed under the License is distributed AS IS,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ * See the License for the specific language governing rights
+ * and limitations under the License.
+ *
+ * The Original Code was created by Adriano dos Santos Fernandes
+ * for the Firebird Open Source RDBMS project.
+ *
+ * Copyright (c) 2025 Adriano dos Santos Fernandes
+ * and all contributors signed below.
+ *
+ * All Rights Reserved.
+ * Contributor(s): ______________________________________.
+ *
+ */
+
+#ifndef CLASSES_POD_OPTIONAL_H
+#define CLASSES_POD_OPTIONAL_H
+
+#include
+#include
+
+namespace Firebird {
+
+
+template
+class PodOptional
+{
+public:
+ PodOptional(std::nullopt_t = std::nullopt) noexcept
+ : value(),
+ hasValue(false)
+ {
+ }
+
+ PodOptional(T aValue) noexcept
+ : value(aValue),
+ hasValue(true)
+ {
+ }
+
+public:
+ std::optional toOptional() const noexcept
+ {
+ static_assert(std::is_trivially_copyable_v> && std::is_standard_layout_v>);
+ return hasValue ? std::make_optional(value) : std::nullopt;
+ }
+
+private:
+ T value;
+ bool hasValue;
+};
+
+
+} // namespace Firebird
+
+#endif // CLASSES_POD_OPTIONAL_H
diff --git a/src/dsql/Parser.h b/src/dsql/Parser.h
index 765fa526a25..5ad51baf2ab 100644
--- a/src/dsql/Parser.h
+++ b/src/dsql/Parser.h
@@ -33,6 +33,7 @@
#include "../dsql/PackageNodes.h"
#include "../dsql/StmtNodes.h"
#include "../jrd/RecordSourceNodes.h"
+#include "../common/classes/PodOptional.h"
#include "../common/classes/TriState.h"
#include "../common/classes/stack.h"
diff --git a/src/dsql/btyacc_fb.ske b/src/dsql/btyacc_fb.ske
index 594c40ed0c8..92d8622577b 100644
--- a/src/dsql/btyacc_fb.ske
+++ b/src/dsql/btyacc_fb.ske
@@ -27,6 +27,7 @@
#include "../dsql/StmtNodes.h"
#include "../dsql/WinNodes.h"
#include "../jrd/RecordSourceNodes.h"
+#include "../common/classes/PodOptional.h"
#include "../common/classes/TriState.h"
#include "gen/parse.h"
#include "../dsql/Parser.h"
diff --git a/src/dsql/parse.y b/src/dsql/parse.y
index c8f2204af17..c2b34b66216 100644
--- a/src/dsql/parse.y
+++ b/src/dsql/parse.y
@@ -751,10 +751,10 @@ using namespace Firebird;
YYSTYPE()
{}
- std::optional nullableIntVal;
+ Firebird::PodOptional nullableIntVal;
Firebird::TriState triState;
- std::optional nullableSqlSecurityVal;
- std::optional nullableOverrideClause;
+ Firebird::PodOptional nullableSqlSecurityVal;
+ Firebird::PodOptional nullableOverrideClause;
struct { bool first; bool second; } boolPair;
bool boolVal;
int intVal;
@@ -762,8 +762,8 @@ using namespace Firebird;
SLONG int32Val;
SINT64 int64Val;
FB_UINT64 uint64Val;
- std::optional nullableInt64Val;
- std::optional nullableUint64Val;
+ Firebird::PodOptional nullableInt64Val;
+ Firebird::PodOptional nullableUint64Val;
Jrd::ScaledNumber scaledNumber;
UCHAR blrOp;
Jrd::OrderNode::NullsPlacement nullsPlacement;
@@ -1539,16 +1539,16 @@ arg_desc($parameters)
: udf_data_type param_mechanism
{
$parameters->add(newNode($1));
- $parameters->back()->udfMechanism = $2;
+ $parameters->back()->udfMechanism = $2.toOptional();
}
;
%type param_mechanism
param_mechanism
: /* nothing */ { $$ = std::nullopt; } // Beware: This means FUN_reference or FUN_blob_struct.
- | BY DESCRIPTOR { $$ = FUN_descriptor; }
- | BY SCALAR_ARRAY { $$ = FUN_scalar_array; }
- | NULL { $$ = FUN_ref_with_null; }
+ | BY DESCRIPTOR { $$ = PodOptional(FUN_descriptor); }
+ | BY SCALAR_ARRAY { $$ = PodOptional(FUN_scalar_array); }
+ | NULL { $$ = PodOptional(FUN_ref_with_null); }
;
%type return_value1()
@@ -2084,13 +2084,13 @@ restart_option($seqNode)
: RESTART with_opt
{
setClause($seqNode->restartSpecified, "RESTART", true);
- setClause($seqNode->value, "RESTART WITH", $2);
+ setClause($seqNode->value, "RESTART WITH", $2.toOptional());
}
%type with_opt
with_opt
: /* Nothign */ { $$ = std::nullopt; }
- | WITH sequence_value { $$ = $2; }
+ | WITH sequence_value { $$ = PodOptional($2); }
;
%type set_generator_clause
@@ -2824,7 +2824,7 @@ psql_procedure_clause
: procedure_clause_start optional_sql_security_full_alter_clause AS local_declarations_opt full_proc_block
{
$$ = $1;
- $$->ssDefiner = $2;
+ $$->ssDefiner = $2.toOptional();
$$->source = makeParseStr(YYPOSNARG(4), YYPOSNARG(5));
$$->localDeclList = $4;
$$->body = $5;
@@ -2857,7 +2857,7 @@ partial_alter_procedure_clause
optional_sql_security_partial_alter_clause
{
$$ = $2;
- $$->ssDefiner = $3;
+ $$->ssDefiner = $3.toOptional();
}
;
@@ -2972,7 +2972,7 @@ psql_function_clause
: function_clause_start optional_sql_security_full_alter_clause AS local_declarations_opt full_proc_block
{
$$ = $1;
- $$->ssDefiner = $2;
+ $$->ssDefiner = $2.toOptional();
$$->source = makeParseStr(YYPOSNARG(4), YYPOSNARG(5));
$$->localDeclList = $4;
$$->body = $5;
@@ -3023,7 +3023,7 @@ alter_individual_op($createAlterFunctionNode)
: deterministic_clause
{ setClause($createAlterFunctionNode->deterministic, "DETERMINISTIC", $1); }
| optional_sql_security_partial_alter_clause
- { setClause($createAlterFunctionNode->ssDefiner, "SQL SECURITY", $1); }
+ { setClause($createAlterFunctionNode->ssDefiner, "SQL SECURITY", $1.toOptional()); }
;
%type deterministic_clause
@@ -3092,7 +3092,7 @@ package_clause
: symbol_package_name optional_sql_security_full_alter_clause AS BEGIN package_items_opt END
{
CreateAlterPackageNode* node = newNode(*$1);
- node->ssDefiner = $2;
+ node->ssDefiner = $2.toOptional();
node->source = makeParseStr(YYPOSNARG(4), YYPOSNARG(6));
node->items = $5;
$$ = node;
@@ -3104,7 +3104,7 @@ partial_alter_package_clause
: symbol_package_name optional_sql_security_partial_alter_clause
{
CreateAlterPackageNode* node = newNode(*$1);
- node->ssDefiner = $2;
+ node->ssDefiner = $2.toOptional();
$$ = node;
}
;
@@ -3258,7 +3258,7 @@ schema_clause_option($createAlterSchemaNode)
: DEFAULT CHARACTER SET symbol_character_set_name
{ setClause($createAlterSchemaNode->setDefaultCharSet, "DEFAULT CHARACTER SET", *$4); }
| DEFAULT optional_sql_security_clause
- { setClause($createAlterSchemaNode->setDefaultSqlSecurity, "DEFAULT SQL SECURITY", *$2); }
+ { setClause($createAlterSchemaNode->setDefaultSqlSecurity, "DEFAULT SQL SECURITY", $2.toOptional()); }
;
%type alter_schema_clause
@@ -3285,7 +3285,7 @@ alter_schema_option($alterSchemaNode)
: SET DEFAULT CHARACTER SET symbol_character_set_name
{ setClause($alterSchemaNode->setDefaultCharSet, "DEFAULT CHARACTER SET", *$5); }
| SET DEFAULT optional_sql_security_clause
- { setClause($alterSchemaNode->setDefaultSqlSecurity, "DEFAULT SQL SECURITY", *$3); }
+ { setClause($alterSchemaNode->setDefaultSqlSecurity, "DEFAULT SQL SECURITY", $3.toOptional()); }
| DROP DEFAULT CHARACTER SET
{ setClause($alterSchemaNode->setDefaultCharSet, "DEFAULT CHARACTER SET", QualifiedName()); }
| DROP DEFAULT SQL SECURITY
@@ -4187,7 +4187,7 @@ trigger_clause
: create_trigger_start trg_sql_security_clause AS local_declarations_opt full_proc_block
{
$$ = $1;
- $$->ssDefiner = $2;
+ $$->ssDefiner = $2.toOptional();
$$->source = makeParseStr(YYPOSNARG(3), YYPOSNARG(5));
$$->localDeclList = $4;
$$->body = $5;
@@ -4215,14 +4215,14 @@ create_trigger_common($trigger)
{
$trigger->active = $1;
$trigger->type = $2;
- setClause($trigger->position, "POSITION", $3);
+ setClause($trigger->position, "POSITION", $3.toOptional());
}
| FOR symbol_table_name trigger_active table_trigger_type trigger_position
{
$trigger->relationName = *$2;
$trigger->active = $3;
$trigger->type = $4;
- setClause($trigger->position, "POSITION", $5);
+ setClause($trigger->position, "POSITION", $5.toOptional());
}
;
@@ -4250,7 +4250,7 @@ trigger_type($trigger)
: table_trigger_type trigger_position ON symbol_table_name
{
$$ = $1;
- setClause($trigger->position, "POSITION", $2);
+ setClause($trigger->position, "POSITION", $2.toOptional());
$trigger->relationName = *$4;
}
| ON trigger_db_type
@@ -4360,7 +4360,7 @@ trigger_type_suffix
%type trigger_position
trigger_position
: /* nothing */ { $$ = std::nullopt; }
- | POSITION nonneg_short_integer { $$ = $2; }
+ | POSITION nonneg_short_integer { $$ = PodOptional((int) $2); }
;
// ALTER statement
@@ -4766,7 +4766,7 @@ alter_identity_clause_option($identityOptions)
: RESTART with_opt
{
setClause($identityOptions->restart, "RESTART");
- $identityOptions->startValue = $2;
+ $identityOptions->startValue = $2.toOptional();
}
| SET INCREMENT by_noise signed_long_integer
{ setClause($identityOptions->increment, "SET INCREMENT BY", $4); }
@@ -4926,9 +4926,9 @@ alter_trigger_clause
$$->alter = true;
$$->create = false;
$$->active = $2;
- $$->type = $3;
- $$->position = $4;
- $$->ssDefiner = $5;
+ $$->type = $3.toOptional();
+ $$->position = $4.toOptional();
+ $$->ssDefiner = $5.toOptional();
$$->source = makeParseStr(YYPOSNARG(6), YYPOSNARG(8));
$$->localDeclList = $7;
$$->body = $8;
@@ -4940,8 +4940,8 @@ alter_trigger_clause
$$->alter = true;
$$->create = false;
$$->active = $2;
- $$->type = $3;
- $$->position = $4;
+ $$->type = $3.toOptional();
+ $$->position = $4.toOptional();
$$->external = $5;
if ($6)
$$->source = *$6;
@@ -4952,52 +4952,41 @@ alter_trigger_clause
$$->alter = true;
$$->create = false;
$$->active = $2;
- $$->type = $3;
- $$->position = $4;
- $$->ssDefiner = $5;
+ $$->type = $3.toOptional();
+ $$->position = $4.toOptional();
+ $$->ssDefiner = $5.toOptional();
}
;
%type trigger_type_opt
trigger_type_opt // we do not allow alter database triggers, hence we do not use trigger_type here
- : trigger_type_prefix trigger_type_suffix
- { $$ = $1 + $2 - 1; }
- |
- { $$ = std::nullopt; }
+ : trigger_type_prefix trigger_type_suffix { $$ = PodOptional($1 + $2 - 1); }
+ | /* nothing */ { $$ = std::nullopt; }
;
%type optional_sql_security_clause
optional_sql_security_clause
- : SQL SECURITY DEFINER
- { $$ = SS_DEFINER; }
- | SQL SECURITY INVOKER
- { $$ = SS_INVOKER; }
+ : SQL SECURITY DEFINER { $$ = PodOptional(SS_DEFINER); }
+ | SQL SECURITY INVOKER { $$ = PodOptional(SS_INVOKER); }
;
%type optional_sql_security_full_alter_clause
optional_sql_security_full_alter_clause
- : optional_sql_security_clause
- { $$ = $1; }
- | // nothing
- { $$ = std::nullopt; }
+ : optional_sql_security_clause { $$ = $1; }
+ | /* nothing */ { $$ = std::nullopt; }
;
%type optional_sql_security_partial_alter_clause
optional_sql_security_partial_alter_clause
- : optional_sql_security_clause
- { $$ = $1; }
- | DROP SQL SECURITY
- { $$ = SS_DROP; }
+ : optional_sql_security_clause { $$ = $1; }
+ | DROP SQL SECURITY { $$ = PodOptional(SS_DROP); }
;
%type trg_sql_security_clause
trg_sql_security_clause
- : // nothing
- { $$ = std::nullopt; }
- | optional_sql_security_clause
- { $$ = $1; }
- | DROP SQL SECURITY
- { $$ = SS_DROP; }
+ : /* nothing */ { $$ = std::nullopt; }
+ | optional_sql_security_clause { $$ = $1; }
+ | DROP SQL SECURITY { $$ = PodOptional(SS_DROP); }
;
// DROP metadata operations
@@ -7107,14 +7096,14 @@ insert
returning_clause
{
StoreNode* node = $$ = $1;
- node->overrideClause = $3;
+ node->overrideClause = $3.toOptional();
node->dsqlValues = $6;
node->dsqlReturning = $8;
}
| insert_start ins_column_parens_opt(NOTRIAL(&$1->dsqlFields)) override_opt select_expr returning_clause
{
StoreNode* node = $$ = $1;
- node->overrideClause = $3;
+ node->overrideClause = $3.toOptional();
node->dsqlRse = $4;
node->dsqlReturning = $5;
$$ = node;
@@ -7140,8 +7129,8 @@ insert_start
%type override_opt
override_opt
: /* nothing */ { $$ = std::nullopt; }
- | OVERRIDING USER VALUE { $$ = OverrideClause::USER_VALUE; }
- | OVERRIDING SYSTEM VALUE { $$ = OverrideClause::SYSTEM_VALUE; }
+ | OVERRIDING USER VALUE { $$ = PodOptional(OverrideClause::USER_VALUE); }
+ | OVERRIDING SYSTEM VALUE { $$ = PodOptional(OverrideClause::SYSTEM_VALUE); }
;
%type value_or_default_list
@@ -7226,13 +7215,13 @@ merge_insert_specification($mergeNotMatchedClause)
: THEN INSERT ins_column_parens_opt(NOTRIAL(&$mergeNotMatchedClause->fields)) override_opt
VALUES '(' value_or_default_list ')'
{
- $mergeNotMatchedClause->overrideClause = $4;
+ $mergeNotMatchedClause->overrideClause = $4.toOptional();
$mergeNotMatchedClause->values = $7;
}
| AND search_condition THEN INSERT ins_column_parens_opt(NOTRIAL(&$mergeNotMatchedClause->fields)) override_opt
VALUES '(' value_or_default_list ')'
{
- $mergeNotMatchedClause->overrideClause = $6;
+ $mergeNotMatchedClause->overrideClause = $6.toOptional();
$mergeNotMatchedClause->values = $9;
$mergeNotMatchedClause->condition = $2;
}
@@ -7342,7 +7331,7 @@ update_or_insert
plan_clause order_clause_opt rows_clause_optional returning_clause
{
UpdateOrInsertNode* node = $$ = $6;
- node->overrideClause = $8;
+ node->overrideClause = $8.toOptional();
node->values = $11;
node->plan = $14;
node->order = $15;
diff --git a/vcpkg-custom/triplets/fb-arm64-osx.cmake b/vcpkg-custom/triplets/fb-arm64-osx.cmake
index aa4d2e74845..fd8c1ca2105 100644
--- a/vcpkg-custom/triplets/fb-arm64-osx.cmake
+++ b/vcpkg-custom/triplets/fb-arm64-osx.cmake
@@ -1,3 +1,5 @@
+set(VCPKG_BUILD_TYPE release)
+
set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
@@ -8,3 +10,5 @@ set(VCPKG_OSX_ARCHITECTURES arm64)
if(PORT STREQUAL "icu")
set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()
+
+set(VCPKG_LINKER_FLAGS "-Wl,-headerpad_max_install_names" CACHE STRING "" FORCE)
diff --git a/vcpkg-custom/triplets/fb-x64-osx.cmake b/vcpkg-custom/triplets/fb-x64-osx.cmake
index 278f1444085..b52a30ffc6c 100644
--- a/vcpkg-custom/triplets/fb-x64-osx.cmake
+++ b/vcpkg-custom/triplets/fb-x64-osx.cmake
@@ -1,3 +1,5 @@
+set(VCPKG_BUILD_TYPE release)
+
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
@@ -8,3 +10,5 @@ set(VCPKG_OSX_ARCHITECTURES x86_64)
if(PORT STREQUAL "icu")
set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()
+
+set(VCPKG_LINKER_FLAGS "-Wl,-headerpad_max_install_names" CACHE STRING "" FORCE)