diff --git a/mingw-w64-firebird2-git/0001-Remove-hardcoded-march-to-allow-64-bit-builds.patch b/mingw-w64-firebird2-git/0001-Remove-hardcoded-march-to-allow-64-bit-builds.patch new file mode 100644 index 0000000000..78cf685758 --- /dev/null +++ b/mingw-w64-firebird2-git/0001-Remove-hardcoded-march-to-allow-64-bit-builds.patch @@ -0,0 +1,27 @@ +From 1b88368a75d416898d19fc5459fabf7e0a93baa7 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 07:39:37 +0300 +Subject: [PATCH 01/27] Remove hardcoded march to allow 64-bit builds. + +--- + builds/posix/prefix.mingw | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw +index fd36abe8be..04e0978aa9 100644 +--- a/builds/posix/prefix.mingw ++++ b/builds/posix/prefix.mingw +@@ -20,8 +20,8 @@ + # + + # -Wno-unused-variable is used due to unused gpre generated variables +-PROD_FLAGS=-O2 -march=i586 -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads +-DEV_FLAGS=-ggdb -march=i586 -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads ++PROD_FLAGS=-O2 -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads ++DEV_FLAGS=-ggdb -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads + + PLATFORM_PATH=os/win32 + +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0002-Always-use-Win32-threads-for-mingw.patch b/mingw-w64-firebird2-git/0002-Always-use-Win32-threads-for-mingw.patch new file mode 100644 index 0000000000..6e9f8602c6 --- /dev/null +++ b/mingw-w64-firebird2-git/0002-Always-use-Win32-threads-for-mingw.patch @@ -0,0 +1,25 @@ +From 9345eddc1b31aef3530359809cb6b5ac6d4a4a79 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 06:18:02 +0300 +Subject: [PATCH 02/27] Always use Win32 threads for mingw. + +--- + src/jrd/common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/jrd/common.h b/src/jrd/common.h +index ae54880929..49e8b607d8 100644 +--- a/src/jrd/common.h ++++ b/src/jrd/common.h +@@ -65,7 +65,7 @@ + #include + #endif + +-#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 200112L ++#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 200112L && !defined(WIN_NT) + // above check is generally true. However, we use pthreads on some platforms + // where _POSIX_THREADS is defined to "1" or not even defined at all! + #define USE_POSIX_THREADS +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0003-Define-AMD64-for-64-bit-mingw.patch b/mingw-w64-firebird2-git/0003-Define-AMD64-for-64-bit-mingw.patch new file mode 100644 index 0000000000..35fbe17348 --- /dev/null +++ b/mingw-w64-firebird2-git/0003-Define-AMD64-for-64-bit-mingw.patch @@ -0,0 +1,30 @@ +From 52d9003e807dc18c460bed6b3654a97c996ccfe4 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 08:56:28 +0300 +Subject: [PATCH 03/27] Define AMD64 for 64-bit mingw. + +--- + configure.in | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index fe2cc11d0a..21384bf391 100644 +--- a/configure.in ++++ b/configure.in +@@ -464,7 +464,12 @@ dnl CPU_TYPE=ppc64 + EDITLINE_FLG=N + RAW_DEVICES_FLG=N + SHRLIB_EXT=dll +- ICU_PLATFORM=MinGW ++ ICU_PLATFORM=MinGW ++ case "$target" in ++ x86_64-*-mingw*) ++ AC_DEFINE(AMD64, 1, [Define this if CPU is amd64]) ++ ;; ++ esac + ;; + + *) +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0004-mingw-w64-have-isinf.patch b/mingw-w64-firebird2-git/0004-mingw-w64-have-isinf.patch new file mode 100644 index 0000000000..eee2feb984 --- /dev/null +++ b/mingw-w64-firebird2-git/0004-mingw-w64-have-isinf.patch @@ -0,0 +1,31 @@ +From 2980d42e1b6164dddc62e78edaac8b99ccf8f83f Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 09:20:35 +0300 +Subject: [PATCH 04/27] mingw-w64 have isinf + +--- + src/common/classes/FpeControl.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/common/classes/FpeControl.h b/src/common/classes/FpeControl.h +index e0e36acafa..ecc334b805 100644 +--- a/src/common/classes/FpeControl.h ++++ b/src/common/classes/FpeControl.h +@@ -217,6 +217,7 @@ private: + + + // getting a portable isinf() is harder than you would expect ++#if !defined(__MINGW32__) + #ifdef WIN_NT + inline bool isinf(double x) + { +@@ -231,5 +232,6 @@ inline bool isinf(F x) + } + #endif // isinf + #endif // WIN_NT ++#endif // __MINGW32__ + + #endif //CLASSES_FPE_CONTROL_H +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0005-Fix-cast-error.patch b/mingw-w64-firebird2-git/0005-Fix-cast-error.patch new file mode 100644 index 0000000000..61cb8c01ca --- /dev/null +++ b/mingw-w64-firebird2-git/0005-Fix-cast-error.patch @@ -0,0 +1,34 @@ +From 94a88c81c24c948f163109a86aea62ad04ee1ba6 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 09:57:27 +0300 +Subject: [PATCH 05/27] Fix cast error. + +--- + src/remote/inet.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/remote/inet.cpp b/src/remote/inet.cpp +index 2f1f63dea0..9a3e9a120a 100644 +--- a/src/remote/inet.cpp ++++ b/src/remote/inet.cpp +@@ -1888,7 +1888,7 @@ static void wsaExitHandler(void*) + } + + +-static int fork(SOCKET old_handle, USHORT flag) ++static int fork(SOCKET old_handle, DWORD flag) + { + /************************************** + * +@@ -1945,7 +1945,7 @@ static int fork(SOCKET old_handle, USHORT flag) + + THREAD_ENTRY_DECLARE forkThread(THREAD_ENTRY_PARAM arg) + { +- const USHORT flag = (USHORT) arg; ++ const DWORD flag = (uintptr_t) arg; + + while (!INET_shutting_down) + { +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0006-mingw-w64-don-t-need-hack-for-SecPkgContext_AccessTo.patch b/mingw-w64-firebird2-git/0006-mingw-w64-don-t-need-hack-for-SecPkgContext_AccessTo.patch new file mode 100644 index 0000000000..64ca603083 --- /dev/null +++ b/mingw-w64-firebird2-git/0006-mingw-w64-don-t-need-hack-for-SecPkgContext_AccessTo.patch @@ -0,0 +1,25 @@ +From 3111e94f0404818ac20d51f7261c195dda4301f4 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 10:08:42 +0300 +Subject: [PATCH 06/27] mingw-w64 don't need hack for SecPkgContext_AccessToken + +--- + src/auth/trusted/AuthSspi.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/auth/trusted/AuthSspi.cpp b/src/auth/trusted/AuthSspi.cpp +index d420041ee1..15b859c703 100644 +--- a/src/auth/trusted/AuthSspi.cpp ++++ b/src/auth/trusted/AuthSspi.cpp +@@ -87,7 +87,7 @@ AuthSspi::~AuthSspi() + + bool AuthSspi::checkAdminPrivilege(PCtxtHandle phContext) const + { +-#if defined (__GNUC__) ++#if defined (__GNUC__) && !defined(__MINGW64_VERSION_MAJOR) + // ASF: MinGW hack. + struct SecPkgContext_AccessToken + { +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0007-Use-modern-ICU-libraries-when-link-with-system-wide-.patch b/mingw-w64-firebird2-git/0007-Use-modern-ICU-libraries-when-link-with-system-wide-.patch new file mode 100644 index 0000000000..2e28bccd1b --- /dev/null +++ b/mingw-w64-firebird2-git/0007-Use-modern-ICU-libraries-when-link-with-system-wide-.patch @@ -0,0 +1,28 @@ +From 7e8ba6ce7d71757825fec96011c29f1cd7940d89 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 10:09:19 +0300 +Subject: [PATCH 07/27] Use modern ICU libraries when link with system wide + ICU. + +--- + builds/posix/prefix.mingw | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw +index 04e0978aa9..7523670f6d 100644 +--- a/builds/posix/prefix.mingw ++++ b/builds/posix/prefix.mingw +@@ -19,6 +19,10 @@ + # 2003-Sep-27 BRS Removed IPSERVER after XNET is included + # + ++ifeq ($(STD_ICU),true) ++ ICU_LIBS= -licuuc -licudt -licuin ++endif ++ + # -Wno-unused-variable is used due to unused gpre generated variables + PROD_FLAGS=-O2 -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads + DEV_FLAGS=-ggdb -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0008-mingw-w64-don-t-have-win98-support.patch b/mingw-w64-firebird2-git/0008-mingw-w64-don-t-have-win98-support.patch new file mode 100644 index 0000000000..82ebf76efc --- /dev/null +++ b/mingw-w64-firebird2-git/0008-mingw-w64-don-t-have-win98-support.patch @@ -0,0 +1,25 @@ +From 92c6963b88f38a3f14f14f510b2d803bf95e40b5 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 13:28:03 +0300 +Subject: [PATCH 08/27] mingw-w64 don't have win98 support. + +--- + src/common/classes/locks.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/common/classes/locks.cpp b/src/common/classes/locks.cpp +index bbb9440b32..de6b2f8e36 100644 +--- a/src/common/classes/locks.cpp ++++ b/src/common/classes/locks.cpp +@@ -28,7 +28,7 @@ + #include "../../include/firebird.h" + #include "../../jrd/common.h" + +-#if defined(WIN_NT) ++#if defined(WIN_NT) && !defined(__MINGW64_VERSION_MAJOR) + // minimum win32 version: win98 / winnt4 SP3 + #define _WIN32_WINNT 0x0403 + #endif +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0009-Fix-redefinition-of-matherr.patch b/mingw-w64-firebird2-git/0009-Fix-redefinition-of-matherr.patch new file mode 100644 index 0000000000..1e94cc9e8b --- /dev/null +++ b/mingw-w64-firebird2-git/0009-Fix-redefinition-of-matherr.patch @@ -0,0 +1,29 @@ +From 40736d1d9af81885b284c22d12544bc534ca9a9c Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 18:54:37 +0300 +Subject: [PATCH 09/27] Fix redefinition of matherr. + +--- + src/extlib/ib_udf.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/extlib/ib_udf.cpp b/src/extlib/ib_udf.cpp +index c5a620d5e6..9017228002 100644 +--- a/src/extlib/ib_udf.cpp ++++ b/src/extlib/ib_udf.cpp +@@ -50,10 +50,12 @@ extern "C" + #else + #define exception_type __exception + #endif ++#ifndef matherr + int MATHERR(struct exception_type*) + { + return 1; + } ++#endif + #undef exception_type + #endif /* SOLARIS */ + #endif //__ICC +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0010-Don-t-export-gds__print_pool-as-it-not-part-of-API-a.patch b/mingw-w64-firebird2-git/0010-Don-t-export-gds__print_pool-as-it-not-part-of-API-a.patch new file mode 100644 index 0000000000..bab6fbcca1 --- /dev/null +++ b/mingw-w64-firebird2-git/0010-Don-t-export-gds__print_pool-as-it-not-part-of-API-a.patch @@ -0,0 +1,26 @@ +From a3bf1d09e6957eff7583e5a1f5f7f329020aa462 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 21:44:53 +0300 +Subject: [PATCH 10/27] Don't export gds__print_pool as it not part of API + according to gds_proto.h:135 + +--- + src/jrd/gds.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/jrd/gds.cpp b/src/jrd/gds.cpp +index 44fdbf7a30..a4ccaa9ac7 100644 +--- a/src/jrd/gds.cpp ++++ b/src/jrd/gds.cpp +@@ -1226,7 +1226,7 @@ void API_ROUTINE gds__log(const TEXT* text, ...) + #endif + } + +-void API_ROUTINE gds__print_pool(MemoryPool* pool, const TEXT* text, ...) ++void gds__print_pool(MemoryPool* pool, const TEXT* text, ...) + { + /************************************** + * +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0011-mingw-w64-have-fenv.h.patch b/mingw-w64-firebird2-git/0011-mingw-w64-have-fenv.h.patch new file mode 100644 index 0000000000..3bbb75db50 --- /dev/null +++ b/mingw-w64-firebird2-git/0011-mingw-w64-have-fenv.h.patch @@ -0,0 +1,34 @@ +From 95d0091b613b32a904db451147e56fdde4f5c122 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 19 Nov 2014 21:44:53 +0300 +Subject: [PATCH 11/27] mingw-w64 have fenv.h + +--- + src/common/classes/FpeControl.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/common/classes/FpeControl.h b/src/common/classes/FpeControl.h +index ecc334b805..f5587ea564 100644 +--- a/src/common/classes/FpeControl.h ++++ b/src/common/classes/FpeControl.h +@@ -30,7 +30,7 @@ + #define CLASSES_FPE_CONTROL_H + + #include +-#if defined(WIN_NT) ++#if defined(_MSC_VER) + #include + #else + #include +@@ -78,7 +78,7 @@ public: + } + } + +-#if defined(WIN_NT) ++#if defined(_MSC_VER) + static void maskAll() throw() + { + _clearfp(); // always call _clearfp() before setting control word +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0012-Fix-cast-error-for-64-bit.patch b/mingw-w64-firebird2-git/0012-Fix-cast-error-for-64-bit.patch new file mode 100644 index 0000000000..7b5c5ce0b7 --- /dev/null +++ b/mingw-w64-firebird2-git/0012-Fix-cast-error-for-64-bit.patch @@ -0,0 +1,25 @@ +From 3133bde97438739f9d416e85302f346d1a5a1899 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Fri, 21 Nov 2014 21:44:53 +0300 +Subject: [PATCH 12/27] Fix cast error for 64-bit. + +--- + src/remote/os/win32/srvr_w32.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/remote/os/win32/srvr_w32.cpp b/src/remote/os/win32/srvr_w32.cpp +index fd0f75c692..a0bf167bbe 100644 +--- a/src/remote/os/win32/srvr_w32.cpp ++++ b/src/remote/os/win32/srvr_w32.cpp +@@ -269,7 +269,7 @@ int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE /*hPrevInst*/, LPSTR lpszArgs, + else if (server_flag & SRVR_wnet) + port = WNET_reconnect(connection_handle, status_vector); + else if (server_flag & SRVR_xnet) +- port = XNET_reconnect((ULONG) connection_handle, status_vector); ++ port = XNET_reconnect((ULONG_PTR) connection_handle, status_vector); + + if (port) { + service_connection(port); +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0013-Fix-source-extension.patch b/mingw-w64-firebird2-git/0013-Fix-source-extension.patch new file mode 100644 index 0000000000..cc59a8c910 --- /dev/null +++ b/mingw-w64-firebird2-git/0013-Fix-source-extension.patch @@ -0,0 +1,25 @@ +From b44435148212da2bf91490e12722ef59c8efd3ea Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Fri, 21 Nov 2014 21:44:53 +0300 +Subject: [PATCH 13/27] Fix source extension. + +--- + builds/posix/prefix.mingw | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw +index 7523670f6d..ac1327c46c 100644 +--- a/builds/posix/prefix.mingw ++++ b/builds/posix/prefix.mingw +@@ -31,7 +31,7 @@ PLATFORM_PATH=os/win32 + + OS_SPECIFIC_Files=thd_priority.cpp + +-OS_ServerFiles= os/win32/srvr_w32 os/win32/window.cpp os/win32/chop.cpp os/win32/property.cpp os/win32/cntl.cpp ++OS_ServerFiles= os/win32/srvr_w32.cpp os/win32/window.cpp os/win32/chop.cpp os/win32/property.cpp os/win32/cntl.cpp + + # Override link command for implicit stdc++ linking + LIB_LINK=$(LD) +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0014-Move-extra-mingw-sources-definitions-for-fbintl-to-M.patch b/mingw-w64-firebird2-git/0014-Move-extra-mingw-sources-definitions-for-fbintl-to-M.patch new file mode 100644 index 0000000000..0ca214e4cd --- /dev/null +++ b/mingw-w64-firebird2-git/0014-Move-extra-mingw-sources-definitions-for-fbintl-to-M.patch @@ -0,0 +1,40 @@ +From 3ef250d8ffa5a949012c71518cc1201f7d84d606 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sat, 22 Nov 2014 12:03:41 +0300 +Subject: [PATCH 14/27] Move extra mingw sources definitions for fbintl to + Makefile.in.intl + +--- + builds/posix/Makefile.in.intl | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/builds/posix/Makefile.in.intl b/builds/posix/Makefile.in.intl +index 1bd37d02f2..d5a2c8bebc 100644 +--- a/builds/posix/Makefile.in.intl ++++ b/builds/posix/Makefile.in.intl +@@ -52,6 +52,13 @@ INTL_Files1= ld.cpp cv_narrow.cpp \ + cs_ksc.cpp cv_ksc.cpp lc_ksc.cpp \ + cs_icu.cpp cv_icu.cpp lc_icu.cpp + ++ifeq ($(PLATFORM),win32) ++INTL_Files2 += $(FBCONFIG_Sources) \ ++ $(FBCLASSES_MsgSources) \ ++ $(OS_SPECIFIC_Sources) \ ++ jrd/isc.cpp jrd/gds.cpp \ ++ common/utils.cpp ++endif + # use INTL_Files2 in prefix file for host-specific additional files + INTL_Sources= $(addprefix intl/, $(INTL_Files1)) $(INTL_Files2) \ + jrd/IntlUtil.cpp jrd/unicode_util.cpp jrd/CharSet.cpp jrd/mod_loader.cpp jrd/path_utils.cpp +@@ -61,7 +68,7 @@ INTL_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(INTL_Sources))) + # SD: Shared variables are overriden to exclude extra files and + # this way fix 'unresolved symbol' errors when some unused routines call + # other routines from not included modules +-FBCLASSES_ClientFiles=alloc.cpp locks.cpp fb_string.cpp timestamp.cpp ++FBCLASSES_ClientFiles=alloc.cpp locks.cpp fb_string.cpp timestamp.cpp TempFile.cpp + + + AllObjects = $(INTL_Objects) +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0015-Add-missing-sources-for-utils-building.patch b/mingw-w64-firebird2-git/0015-Add-missing-sources-for-utils-building.patch new file mode 100644 index 0000000000..0040432de9 --- /dev/null +++ b/mingw-w64-firebird2-git/0015-Add-missing-sources-for-utils-building.patch @@ -0,0 +1,102 @@ +From 8fa9f201df10cee4f5f21d9d439798de8f433d8d Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sat, 22 Nov 2014 22:59:59 +0300 +Subject: [PATCH 15/27] Add missing sources for utils building. + +--- + builds/posix/Makefile.in.client.gsec | 2 +- + builds/posix/Makefile.in.client.util | 4 ++-- + builds/posix/Makefile.in.embed.util | 8 ++++---- + builds/posix/Makefile.in.fbtrace | 2 +- + 4 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/builds/posix/Makefile.in.client.gsec b/builds/posix/Makefile.in.client.gsec +index 2efa520f3a..803ea4f71f 100644 +--- a/builds/posix/Makefile.in.client.gsec ++++ b/builds/posix/Makefile.in.client.gsec +@@ -29,7 +29,7 @@ include $(ROOT)/gen/make.shared.variables + + @SET_MAKE@ + +-GSEC_Other_Sources = jrd/isc_file.cpp jrd/ThreadData.cpp common/UtilSvc.cpp jrd/enc.cpp \ ++GSEC_Other_Sources = jrd/isc.cpp jrd/isc_file.cpp jrd/ThreadData.cpp common/UtilSvc.cpp jrd/enc.cpp \ + jrd/sha.cpp jrd/guid.cpp + GSEC_Files = gsec.cpp call_service.cpp gsecMain.cpp security.cpp + GSEC_Sources = $(addprefix utilities/gsec/, $(GSEC_Files)) $(GSEC_Other_Sources) +diff --git a/builds/posix/Makefile.in.client.util b/builds/posix/Makefile.in.client.util +index dab8911753..70bfab7901 100644 +--- a/builds/posix/Makefile.in.client.util ++++ b/builds/posix/Makefile.in.client.util +@@ -40,14 +40,14 @@ include $(ROOT)/gen/make.shared.variables + @SET_MAKE@ + + +-LOCKPRINT_Other_Sources = jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \ ++LOCKPRINT_Other_Sources = jrd/isc_ipc.cpp jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \ + common/config/config.cpp common/config/config_file.cpp $(OS_SPECIFIC_Sources) + LOCKPRINT_Files= print.cpp + LOCKPRINT_Sources = $(addprefix lock/, $(LOCKPRINT_Files)) $(LOCKPRINT_Other_Sources) + LOCKPRINT_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(LOCKPRINT_Sources)))) \ + $(FBCONFIG_Objects) + +-NBACKUP_Other_Sources = jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources) ++NBACKUP_Other_Sources = jrd/isc.cpp jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources) + NBACKUP_Files= nbackup.cpp nbackup/nbkMain.cpp + NBACKUP_Sources = $(addprefix utilities/, $(NBACKUP_Files)) $(NBACKUP_Other_Sources) + NBACKUP_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(NBACKUP_Sources)))) \ +diff --git a/builds/posix/Makefile.in.embed.util b/builds/posix/Makefile.in.embed.util +index 3d1a98fbb7..8488a05473 100644 +--- a/builds/posix/Makefile.in.embed.util ++++ b/builds/posix/Makefile.in.embed.util +@@ -40,7 +40,7 @@ include $(ROOT)/gen/make.shared.variables + @SET_MAKE@ + + +-LOCKPRINT_Other_Sources += jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \ ++LOCKPRINT_Other_Sources += jrd/isc_ipc.cpp jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \ + $(OS_SPECIFIC_Sources) + + LOCKPRINT_Files= print.cpp +@@ -48,7 +48,7 @@ LOCKPRINT_Sources = $(addprefix lock/, $(LOCKPRINT_Files)) $(LOCKPRINT_Other_Sou + LOCKPRINT_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(LOCKPRINT_Sources)))) \ + $(FBCONFIG_Objects) + +-NBACKUP_Other_Sources = jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources) ++NBACKUP_Other_Sources = jrd/isc.cpp jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources) + + NBACKUP_Files= nbackup.cpp nbackup/nbkMain.cpp + NBACKUP_Sources = $(addprefix utilities/, $(NBACKUP_Files)) $(NBACKUP_Other_Sources) +@@ -65,7 +65,7 @@ DROP_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(DROP_Sources))) + + + GSEC_Other_Sources = jrd/enc.cpp jrd/sha.cpp jrd/guid.cpp \ +-jrd/isc_file.cpp common/config/config.cpp common/config/config_file.cpp \ ++jrd/isc.cpp jrd/isc_file.cpp common/config/config.cpp common/config/config_file.cpp \ + common/config/dir_list.cpp \ + common/UtilSvc.cpp jrd/ThreadData.cpp \ + $(OS_SPECIFIC_Sources) +@@ -76,7 +76,7 @@ GSEC_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(GSEC_Sources))) + + + GSTAT_Other_Sources = jrd/btn.cpp jrd/db_alias.cpp common/utils.cpp jrd/ods.cpp \ +-common/UtilSvc.cpp jrd/ThreadData.cpp jrd/isc_file.cpp $(OS_SPECIFIC_Sources) ++common/UtilSvc.cpp jrd/ThreadData.cpp jrd/isc.cpp jrd/isc_file.cpp $(OS_SPECIFIC_Sources) + + GSTAT_Files = dba.epp ppg.cpp gstatMain.cpp + GSTAT_Sources = $(addprefix utilities/gstat/, $(GSTAT_Files)) $(GSTAT_Other_Sources) +diff --git a/builds/posix/Makefile.in.fbtrace b/builds/posix/Makefile.in.fbtrace +index 0f1a09ec2b..daee0d8954 100644 +--- a/builds/posix/Makefile.in.fbtrace ++++ b/builds/posix/Makefile.in.fbtrace +@@ -49,7 +49,7 @@ FBTRACE_UTIL_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(FBTRACE + + + FBTRACE_OTHER_Sources = $(OS_SPECIFIC_Sources) $(TRACE_OS_Sources) \ +- jrd/isc.cpp jrd/isc_file.cpp jrd/CharSet.cpp jrd/TextType.cpp \ ++ jrd/isc.cpp jrd/isc_file.cpp jrd/isc_sync.cpp jrd/CharSet.cpp jrd/TextType.cpp \ + jrd/IntlUtil.cpp jrd/unicode_util.cpp common/classes/ClumpletReader.cpp common/utils.cpp + + FBTRACE_OTHER_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(FBTRACE_OTHER_Sources)))) +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0016-smtp_server-Add-win32-platform-files.patch b/mingw-w64-firebird2-git/0016-smtp_server-Add-win32-platform-files.patch new file mode 100644 index 0000000000..f476354053 --- /dev/null +++ b/mingw-w64-firebird2-git/0016-smtp_server-Add-win32-platform-files.patch @@ -0,0 +1,26 @@ +From 0d4ab03c720bdcd5a8966d38d98672a81e914614 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 23 Nov 2014 00:13:24 +0300 +Subject: [PATCH 16/27] smtp_server: Add win32 platform files. + +--- + builds/posix/Makefile.in.inet_server | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/builds/posix/Makefile.in.inet_server b/builds/posix/Makefile.in.inet_server +index d59b07a39e..ad471fda12 100644 +--- a/builds/posix/Makefile.in.inet_server ++++ b/builds/posix/Makefile.in.inet_server +@@ -40,6 +40,9 @@ include $(ROOT)/gen/make.shared.variables + + SERVER_Files = server_stub.cpp + SERVER_Sources = $(addprefix remote/, $(SERVER_Files)) ++ifeq ($(PLATFORM),win32) ++SERVER_Sources += utilities/nbackup/nbkMain.cpp common/UtilSvc.cpp ++endif + SERVER_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(SERVER_Sources)))) + + AllObjects = $(SERVER_Objects) +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0017-Fix-building-net_server-and-mp_server-with-mingw.patch b/mingw-w64-firebird2-git/0017-Fix-building-net_server-and-mp_server-with-mingw.patch new file mode 100644 index 0000000000..d7da9fd977 --- /dev/null +++ b/mingw-w64-firebird2-git/0017-Fix-building-net_server-and-mp_server-with-mingw.patch @@ -0,0 +1,43 @@ +From ca51dedfbfc1489aafcb638b5f4ae45cefb5fbf3 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 23 Nov 2014 13:27:02 +0300 +Subject: [PATCH 17/27] Fix building net_server and mp_server with mingw + +--- + builds/posix/Makefile.in.inet_server | 4 ++-- + builds/posix/Makefile.in.smp_server | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/builds/posix/Makefile.in.inet_server b/builds/posix/Makefile.in.inet_server +index ad471fda12..99ddd19753 100644 +--- a/builds/posix/Makefile.in.inet_server ++++ b/builds/posix/Makefile.in.inet_server +@@ -54,8 +54,8 @@ Dependencies = $(AllObjects:.o=.d) + # but we must ensure it's existance + fb_inet_server : $(LIBFBEMBED_SO) $(FB_CLASSIC_SERVER) + +-$(FB_CLASSIC_SERVER): $(SERVER_Objects) +- $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LIB_GUI) $(LINK_LIBS) ++$(FB_CLASSIC_SERVER): $(SERVER_Objects) $(COMMON_Objects) $(CLUMPLETS_Objects) $(FBCONFIG_Objects) $(OS_SPECIFIC_Objects) $(DSQL_Objects) $(BURP_Objects) $(ALICE_Objects) $(LOCK_Objects) $(INTERFACE_Objects) $(NBACKUP_SERVER_Objects) $(NTRACE_SERVER_Objects) $(SECURITY_Objects) $(JRD_Objects) ++ $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LIB_GUI) $(ICU_LIBS) $(LINK_LIBS) + + include $(ROOT)/gen/make.shared.targets + +diff --git a/builds/posix/Makefile.in.smp_server b/builds/posix/Makefile.in.smp_server +index 1bc387230e..f3860213ef 100644 +--- a/builds/posix/Makefile.in.smp_server ++++ b/builds/posix/Makefile.in.smp_server +@@ -59,8 +59,8 @@ $(OS_SPECIFIC_Objects) + + fb_smp_server: $(FB_DAEMON) + +-$(FB_DAEMON): $(SERVER_Objects) +- $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LINK_LIBS) ++$(FB_DAEMON): $(SERVER_Objects) $(DSQL_Objects) $(BURP_Objects) $(ALICE_Objects) $(JRD_Objects) $(LOCK_Objects) $(INTERFACE_Objects) $(SECURITY_Objects) $(NBACKUP_SERVER_Objects) $(NTRACE_SERVER_Objects) ++ $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LIB_GUI) $(LINK_LIBS) $(ICU_LIBS) + + AllObjects = $(SERVER_Objects) + +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0018-For-mingw-place-dll-s-into-BIN-and-generate-import-l.patch b/mingw-w64-firebird2-git/0018-For-mingw-place-dll-s-into-BIN-and-generate-import-l.patch new file mode 100644 index 0000000000..a9172162ec --- /dev/null +++ b/mingw-w64-firebird2-git/0018-For-mingw-place-dll-s-into-BIN-and-generate-import-l.patch @@ -0,0 +1,1219 @@ +From 86bf476f33e8565aa8dff2bb59b3a33c1c14321f Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 26 Nov 2014 09:27:40 +0300 +Subject: [PATCH 18/27] For mingw place dll's into BIN and generate import + libraries in LIB. Don't link with def files. + +--- + builds/posix/make.defaults | 18 +- + builds/posix/prefix.mingw | 38 ++- + builds/win32/defs/fbclient32.def | 703 +++++++++++++++++++++++++++++++++++++++ + builds/win32/defs/fbclient64.def | 361 ++++++++++++++++++++ + 4 files changed, 1100 insertions(+), 20 deletions(-) + create mode 100644 builds/win32/defs/fbclient32.def + create mode 100644 builds/win32/defs/fbclient64.def + +diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults +index 44b4e04586..c2c2ffe343 100755 +--- a/builds/posix/make.defaults ++++ b/builds/posix/make.defaults +@@ -93,6 +93,11 @@ IsProdTypeBuild = @PROD_BUILD_FLG@ + + CpuType=@CPU_TYPE@ + ++ifeq ($(CpuType), x86_64) ++ BITNESS_SUFFIX := 64 ++else ++ BITNESS_SUFFIX := 32 ++endif + PLATFORM=@PLATFORM@ + ifeq (@FIREBIRD_ARCH_TYPE@,classic) + ArchPrefix=CS +@@ -193,9 +198,9 @@ BLRTABLE = $(BIN)/blrtable$(EXEC_EXT) + # Scold me, but I don't want library names to be in configure.in + # + +-SharedLibraryName=libfbembed.${SHRLIB_EXT}.${FirebirdVersion} +-SharedLibrarySoName=libfbembed.${SHRLIB_EXT}.${MajorVer}.${MinorVer} +-SharedLibraryBaseName=libfbembed.${SHRLIB_EXT} ++SharedLibraryBaseName=$(LIB_PREFIX)fbembed.${SHRLIB_EXT} ++SharedLibraryName=${SharedLibraryBaseName}.${FirebirdVersion} ++SharedLibrarySoName=${SharedLibraryBaseName}.${MajorVer}.${MinorVer} + + LIBFBEMBED_SO = $(LIB)/$(SharedLibraryName) + LIBFBEMBED_SOBASENAME = $(LIB)/$(SharedLibrarySoName) +@@ -261,6 +266,7 @@ LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,'$$$$ORIGIN/../$(1)') + endif + LIB_PATH_OPTS = $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_RPATH,intl) + LIB_LINK_SONAME= -Wl,-soname,$(1) ++LIB_LINK_IMPLIB= + LIB_LINK_MAPFILE= -Wl,--version-script, + FBEMBED_LINK= -L$(LIB) -lfbembed + +@@ -281,7 +287,7 @@ LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_ + LINK_UDF_LIBS = $(THR_LIBS) -L$(LIB) -lib_util + + LINK_IB_UTIL = $(LIB_LINK) $(LINK_IBUTIL_SYMBOLS) $(LIB_LINK_OPTIONS)\ +- $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib) ++ $(call LIB_LINK_IMPLIB,$(LIB)/lib$(IbUtilLibraryName).a) $(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)\ +@@ -293,11 +299,11 @@ LINK_TRACE = $(LIB_LINK) $(LINK_TRACE_SYMBOLS) $(LIB_LINK_OPTIONS)\ + LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS) + + LINK_CLIENT = $(CLIENTLIB_LINK) $(LINK_FIREBIRD_CLIENT_SYMBOLS) $(LIB_LINK_OPTIONS)\ +- $(LIB_LINK_IMPLIB) $(call LIB_LINK_SONAME,$(ClientLibrarySoName)) $(call LIB_LINK_RPATH,lib) ++ $(call LIB_LINK_IMPLIB,$(LIB)/lib$(ClientLibraryName).a) $(call LIB_LINK_SONAME,$(ClientLibrarySoName)) $(call LIB_LINK_RPATH,lib) + LINK_CLIENT_LIBS = $(SO_LINK_LIBS) $(STATIC_CXXSUPPORT_LIB) + + LINK_EMBED = $(LIB_LINK) $(LINK_FIREBIRD_EMBED_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_EMBED_LINK_OPTIONS)\ +- $(call LIB_LINK_SONAME,$(SharedLibrarySoName)) $(call LIB_LINK_RPATH,lib) ++ $(call LIB_LINK_IMPLIB,$(LIB)/lib$(SharedLibraryBaseName).a) $(call LIB_LINK_SONAME,$(SharedLibrarySoName)) $(call LIB_LINK_RPATH,lib) + LINK_EMBED_LIBS = -L$(LIB) $(LIB_GUI) $(SO_LINK_LIBS) $(ICU_LIBS) + + # From utilities +diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw +index ac1327c46c..8e514d8c33 100644 +--- a/builds/posix/prefix.mingw ++++ b/builds/posix/prefix.mingw +@@ -36,16 +36,12 @@ OS_ServerFiles= os/win32/srvr_w32.cpp os/win32/window.cpp os/win32/chop.cpp os/w + # Override link command for implicit stdc++ linking + LIB_LINK=$(LD) + +-LIB_LINK_OPTIONS+=-Wl,--enable-stdcall-fixup +- + # Strip symbols from release versions to decrease size + ifeq ($(IsProdTypeBuild),Y) + LINK_OPTS+=-Wl,-s + LIB_LINK_OPTIONS+=-Wl,-s + endif + +-# Generation of fbclient_ms.lib +-LIB_LINK_IMPLIB:=-Wl,--out-implib,firebird/lib/fbclient_ms.lib + LIB_GUI:= -mwindows -lcomctl32 -lgdi32 + + +@@ -65,19 +61,33 @@ FilesToAddDialog2=$(IBGUARD) + LIB_PREFIX= + + # Override library names to suppress version suffix +-ClientLibraryNameFull := $(ClientLibraryName) +-ClientLibrarySoName := $(ClientLibraryName) ++SharedLibraryName = $(SharedLibraryBaseName) ++SharedLibrarySoName = $(SharedLibraryBaseName) ++ ++LIBFBEMBED_SO = $(BIN)/$(SharedLibraryName) ++LIBFBEMBED_SOBASENAME = $(BIN)/$(SharedLibrarySoName) ++LIBFBEMBED_SONAME = $(BIN)/$(SharedLibraryBaseName) ++ ++ClientLibraryNameFull = $(ClientLibraryName) ++ClientLibrarySoName = $(ClientLibraryName) ++ ++LIBFBCLIENT_SO = $(BIN)/$(ClientLibraryNameFull) ++LIBFBCLIENT_SOBASENAME = $(BIN)/$(ClientLibrarySoName) ++LIBFBCLIENT_SONAME = $(BIN)/$(ClientLibraryName) + +-# Looks like MinGW 3 does not support version scripts but support def-files +-LINK_FIREBIRD_SYMBOLS = $(BLD_ROOT)/win32/defs/fbclient_s.def $(BLD_ROOT)/win32/defs/fbclient.def ++LIBIBUTIL_SO = $(BIN)/$(IbUtilLibraryName) + +-# This is required for newly built executable to find newly built shared +-# libraries because on Win32 there is no such thing as LD_LIBRARY_PATH +-LIB=$(BIN) ++# Generation of import libraries ++LIB_LINK_IMPLIB= -Wl,--out-implib,$(1) ++LIB_LINK_SONAME= + +-# Special options for UDF link +-LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_EXT)) -L$(LIB) -lib_util +-LINK_UDF_LIBS = ++LINK_FIREBIRD_SYMBOLS = $(BLD_ROOT)/win32/defs/fbclient$(BITNESS_SUFFIX).def ++#LINK_FIREBIRD_EMBED_SYMBOLS = ++#LINK_FIREBIRD_CLIENT_SYMBOLS = ++LINK_TRACE_SYMBOLS = ++LINK_FBINTL_SYMBOLS = ++LINK_IBUTIL_SYMBOLS = ++LINK_EMPTY_SYMBOLS = + + # Special options for trace plugin link + LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS) $(ICU_LIBS) +diff --git a/builds/win32/defs/fbclient32.def b/builds/win32/defs/fbclient32.def +new file mode 100644 +index 0000000000..e867e6585c +--- /dev/null ++++ b/builds/win32/defs/fbclient32.def +@@ -0,0 +1,703 @@ ++; 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) Inprise Corporation. ++; ++; All Rights Reserved. ++; Contributor(s): ______________________________________. ++ ++LIBRARY "fbclient.dll" ++EXPORTS ++ ++;------------------- ++; PRIVATE INTERFACE ++;------------------- ++ ++ gds__alloc@4 ++ gds__attach_database@24 ++ gds__blob_info@24 ++ gds__blob_size@16 ++ gds__cancel_blob@8 ++ gds__cancel_events@12 ++ gds__close@8 ++ gds__close_blob@8 ++ gds__commit_retaining@8 ++ gds__commit_transaction@8 ++ gds__compile_request@20 ++ gds__compile_request2@20 ++ gds__create_blob@20 ++ gds__create_blob2@28 ++ gds__create_database@28 ++ gds__database_cleanup@16 ++ gds__database_info@24 ++ gds__ddl@20 ++ gds__declare@12 ++ gds__decode@12 ++ gds__decode_date@8 ++ gds__describe@12 ++ gds__describe_bind@12 ++ gds__detach_database@8 ++ gds__disable_subsystem@4 ++ gds__dsql_finish@4 ++ gds__edit@8 ++ gds__enable_subsystem@4 ++ gds__encode@8 ++ gds__encode_date@8 ++ gds__event_block@0 ++ gds__event_counts@16 ++ gds__event_wait@20 ++ gds__execute@16 ++ gds__execute_immediate@20 ++ gds__fetch@12 ++ gds__free@4 ++ gds__ftof@16 ++ gds__get_prefix@8 ++ gds__get_segment@20 ++ gds__get_slice@44 ++ gds__interprete@8 ++ gds__log@0 ++ gds__log_status@8 ++ gds__map_blobs@8 ++ gds__msg_close@4 ++ gds__msg_format@40 ++ gds__msg_lookup@24 ++ gds__msg_open@8 ++ gds__msg_put@32 ++ gds__open@16 ++ gds__open_blob@20 ++ gds__open_blob2@28 ++ gds__parse_bpb@16 ++ gds__prefix@8 ++ gds__prefix_lock@8 ++ gds__prefix_msg@8 ++ gds__prepare@28 ++ gds__prepare_transaction@8 ++ gds__prepare_transaction2@16 ++ gds__print_blr@16 ++ gds__print_status@4 ++ gds__put_error@4 ++ gds__put_segment@16 ++ gds__put_slice@40 ++ gds__qtoq@8 ++ gds__que_events@28 ++ gds__receive@24 ++ gds__reconnect_transaction@20 ++ gds__register_cleanup@8 ++ gds__release_request@8 ++ gds__request_info@28 ++ gds__rollback_transaction@8 ++ gds__seek_blob@20 ++ gds__send@24 ++ gds__set_debug@4 ++ gds__sqlcode@4 ++ gds__start_and_send@28 ++ gds__start_multiple@16 ++ gds__start_request@16 ++ gds__start_transaction@0 ++ gds__temp_file@20 ++ gds__thread_enable@4 ++ gds__thread_enter@0 ++ gds__thread_exit@0 ++ gds__thread_start@20 ++ gds__to_sqlda@20 ++ gds__transaction_cleanup@16 ++ gds__transaction_info@24 ++ gds__unregister_cleanup@8 ++ gds__unwind_request@12 ++ gds__validate_lib_path@16 ++ gds__vax_integer@8 ++ gds__version@12 ++ gds__vtof@12 ++ gds__vtov@12 ++ gds__default_printer@0 ++ ++ gds__alloc_debug@12 ++ ++ gds_alloc_flag_unfreed@4 ++ gds_alloc_report@12 ++ ++ fb_shutdown@8 ++ fb_shutdown_callback@16 ++ fb_cancel_operation@12 ++ fb_disconnect_transaction@8 ++ ++ perf_format@20 ++ perf_get_info@8 ++ perf_report@16 ++ ++ perf64_format@20 ++ perf64_get_info@8 ++ perf64_report@16 ++ ++;---------------------------- ++; PUBLIC INTERFACE, i.e. API ++;---------------------------- ++ ++ ; Array functions ++ ++ isc_array_gen_sdl@20 ++ isc_array_get_slice@28 ++ isc_array_lookup_bounds@24 ++ isc_array_lookup_desc@24 ++ isc_array_put_slice@28 ++ isc_array_set_desc@28 ++ isc_get_slice@44 ++ isc_put_slice@40 ++ ++ ; BLOB functions ++ ++ isc_blob_default_desc@12 ++ isc_blob_gen_bpb@24 ++ isc_blob_info@24 ++ isc_blob_lookup_desc@28 ++ isc_blob_set_desc@28 ++ isc_cancel_blob@8 ++ isc_close_blob@8 ++ isc_create_blob@20 ++ isc_create_blob2@28 ++ isc_get_segment@20 ++ isc_open_blob@20 ++ isc_open_blob2@28 ++ isc_put_segment@16 ++ ++ ; Database functions ++ ++ isc_attach_database@24 ++ isc_create_database@28 ++ isc_database_info@24 ++ isc_detach_database@8 ++ isc_drop_database@8 ++ isc_expand_dpb@0 ++ isc_modify_dpb@20 ++ isc_version@12 ++ isc_get_client_major_version@0 ++ isc_get_client_minor_version@0 ++ isc_get_client_version@4 ++ ++ ; Conversion functions ++ ++ isc_decode_date@8 ++ isc_decode_sql_date@8 ++ isc_decode_sql_time@8 ++ isc_decode_timestamp@8 ++ isc_encode_date@8 ++ isc_encode_sql_date@8 ++ isc_encode_sql_time@8 ++ isc_encode_timestamp@8 ++ isc_portable_integer@8 ++ isc_vax_integer@8 ++ ++ ; DSQL functions ++ ++ isc_dsql_allocate_statement@12 ++ isc_dsql_alloc_statement2@12 ++ isc_dsql_describe@16 ++ isc_dsql_describe_bind@16 ++ isc_dsql_execute@20 ++ isc_dsql_execute2@24 ++ isc_dsql_execute_m@32 ++ isc_dsql_execute2_m@52 ++ isc_dsql_execute_immediate@28 ++ isc_dsql_exec_immed2@32 ++ isc_dsql_execute_immediate_m@44 ++ isc_dsql_exec_immed2_m@64 ++ isc_dsql_exec_immed3_m@64 ++ isc_dsql_fetch@16 ++ isc_dsql_fetch_a@20 ++ isc_dsql_fetch_m@28 ++ isc_dsql_finish@4 ++ isc_dsql_free_statement@12 ++ isc_dsql_insert@16 ++ isc_dsql_insert_m@28 ++ isc_dsql_prepare@28 ++ isc_dsql_prepare_m@40 ++ isc_dsql_release@8 ++ isc_dsql_set_cursor_name@16 ++ isc_dsql_sql_info@24 ++ ++ ; ESQL functions ++ ++ isc_embed_dsql_close@8 ++ isc_embed_dsql_declare@12 ++ isc_embed_dsql_describe@16 ++ isc_embed_dsql_describe_bind@16 ++ isc_embed_dsql_execute@20 ++ isc_embed_dsql_execute2@24 ++ isc_embed_dsql_execute_immed@28 ++ isc_embed_dsql_exec_immed2@32 ++ isc_embed_dsql_fetch@16 ++ isc_embed_dsql_fetch_a@20 ++ isc_embed_dsql_insert@16 ++ isc_embed_dsql_open@20 ++ isc_embed_dsql_open2@24 ++ isc_embed_dsql_prepare@32 ++ isc_embed_dsql_release@8 ++ isc_embed_dsql_length@8 ++ ++ ; Error-handling functions ++ ++ isc_interprete@8 ++ fb_interpret@12 ++ isc_print_sqlerror@8 ++ isc_print_status@4 ++ isc_sqlcode@4 ++ isc_sql_interprete@12 ++ isc_sqlcode_s@8 ++ fb_sqlstate@8 ++ ++ ; Event functions ++ ++ isc_cancel_events@12 ++ isc_event_block@0 ++ isc_event_counts@16 ++ isc_que_events@28 ++ isc_wait_for_event@20 ++ isc_event_block_a@16 ++ isc_event_block_s@20 ++ ++ ; Security functions ++ ++ isc_add_user@8 ++ isc_delete_user@8 ++ isc_modify_user@8 ++ ++ ; Services functions ++ ++ isc_service_attach@24 ++ isc_service_detach@8 ++ isc_service_query@36 ++ isc_service_start@20 ++ ++ ; Transaction control functions ++ ++ isc_commit_retaining@8 ++ isc_commit_transaction@8 ++ isc_prepare_transaction@8 ++ isc_prepare_transaction2@16 ++ isc_rollback_retaining@8 ++ isc_rollback_transaction@8 ++ isc_start_multiple@16 ++ isc_start_transaction@0 ++ isc_transaction_info@24 ++ ++ ; Other functions ++ ++ isc_compile_request@20 ++ isc_compile_request2@20 ++ isc_ddl@20 ++ isc_prepare@28 ++ isc_receive@24 ++ isc_reconnect_transaction@20 ++ isc_release_request@8 ++ isc_request_info@28 ++ isc_seek_blob@20 ++ isc_send@24 ++ isc_start_and_send@28 ++ isc_start_request@16 ++ isc_transact_request@36 ++ isc_unwind_request@12 ++ ++ ; Other SQL functions ++ ++ isc_close@8 ++ isc_declare@12 ++ isc_describe@12 ++ isc_describe_bind@12 ++ isc_execute@16 ++ isc_execute_immediate@20 ++ isc_fetch@12 ++ isc_fetch_a@16 ++ isc_open@16 ++ ++ ; Other BLOB functions ++ ++ BLOB_close@4 ++ BLOB_display@16 ++ BLOB_dump@16 ++ BLOB_edit@16 ++ BLOB_get@4 ++ BLOB_load@16 ++ BLOB_open@12 ++ BLOB_put@8 ++ BLOB_text_dump@16 ++ BLOB_text_load@16 ++ Bopen@16 ++ ++ ; Other misc functions ++ ++ isc_ftof@16 ++ isc_free@4 ++ isc_print_blr@16 ++ fb_print_blr@20 ++ isc_qtoq@8 ++ isc_reset_fpe@4 ++ isc_set_debug@4 ++ isc_to_sqlda@20 ++ isc_vtof@12 ++ isc_vtov@12 ++ isc_baddress@4 ++ isc_baddress_s@8 ++ ++ _isc_start_transaction = isc_start_transaction@0 ++ _isc_expand_dpb = isc_expand_dpb@0 ++ _isc_event_block = isc_event_block@0 ++ ++;----------------- ++; OTHER FUNCTIONS ++;----------------- ++ ++ CVT_move@12 ++ ++ KEYWORD_stringIsAToken@4 ++ KEYWORD_getTokens@0 ++ ++;-------------------------------------- ++; DUPLICATE FOR COMPATIBILITY WITH MSVC ++;-------------------------------------- ++ ++;------------------- ++; PRIVATE INTERFACE ++;------------------- ++ ++ gds__alloc = gds__alloc@4 @1 ++ gds__attach_database = gds__attach_database@24 @2 ++ gds__blob_info = gds__blob_info@24 @3 ++ gds__blob_size = gds__blob_size@16 @4 ++ gds__cancel_blob = gds__cancel_blob@8 @5 ++ gds__cancel_events = gds__cancel_events@12 @6 ++ gds__close = gds__close@8 @7 ++ gds__close_blob = gds__close_blob@8 @8 ++ gds__commit_retaining = gds__commit_retaining@8 @9 ++ gds__commit_transaction = gds__commit_transaction@8 @10 ++ gds__compile_request = gds__compile_request@20 @11 ++ gds__compile_request2 = gds__compile_request2@20 @12 ++ gds__create_blob = gds__create_blob@20 @13 ++ gds__create_blob2 = gds__create_blob2@28 @14 ++ gds__create_database = gds__create_database@28 @15 ++ gds__database_cleanup = gds__database_cleanup@16 @16 ++ gds__database_info = gds__database_info@24 @17 ++ gds__ddl = gds__ddl@20 @18 ++ gds__declare = gds__declare@12 @19 ++ gds__decode = gds__decode@12 @20 ++ gds__decode_date = gds__decode_date@8 @21 ++ gds__describe = gds__describe@12 @22 ++ gds__describe_bind = gds__describe_bind@12 @23 ++ gds__detach_database = gds__detach_database@8 @24 ++ gds__disable_subsystem = gds__disable_subsystem@4 @25 ++ gds__dsql_finish = gds__dsql_finish@4 @26 ++ gds__edit = gds__edit@8 @27 ++ gds__enable_subsystem = gds__enable_subsystem@4 @28 ++ gds__encode = gds__encode@8 @29 ++ gds__encode_date = gds__encode_date@8 @30 ++ gds__event_block = gds__event_block@0 @31 ++ gds__event_counts = gds__event_counts@16 @32 ++ gds__event_wait = gds__event_wait@20 @33 ++ gds__execute = gds__execute@16 @34 ++ gds__execute_immediate = gds__execute_immediate@20 @35 ++ gds__fetch = gds__fetch@12 @36 ++ gds__free = gds__free@4 @37 ++ gds__ftof = gds__ftof@16 @38 ++ gds__get_prefix = gds__get_prefix@8 @248 ++ gds__get_segment = gds__get_segment@20 @39 ++ gds__get_slice = gds__get_slice@44 @40 ++ gds__interprete = gds__interprete@8 @41 ++ gds__log = gds__log@0 @42 ++ gds__log_status = gds__log_status@8 @142 ++ gds__map_blobs = gds__map_blobs@8 @240 ++ gds__msg_close = gds__msg_close@4 @223 ++ gds__msg_format = gds__msg_format@40 @43 ++ gds__msg_lookup = gds__msg_lookup@24 @44 ++ gds__msg_open = gds__msg_open@8 @45 ++ gds__msg_put = gds__msg_put@32 @46 ++ gds__open = gds__open@16 @47 ++ gds__open_blob = gds__open_blob@20 @48 ++ gds__open_blob2 = gds__open_blob2@28 @49 ++ gds__parse_bpb = gds__parse_bpb@16 @50 ++ gds__prefix = gds__prefix@8 @51 ++ gds__prefix_lock = gds__prefix_lock@8 @249 ++ gds__prefix_msg = gds__prefix_msg@8 @250 ++ gds__prepare = gds__prepare@28 @52 ++ gds__prepare_transaction = gds__prepare_transaction@8 @53 ++ gds__prepare_transaction2 = gds__prepare_transaction2@16 @54 ++ gds__print_blr = gds__print_blr@16 @55 ++ gds__print_status = gds__print_status@4 @56 ++ gds__put_error = gds__put_error@4 @57 ++ gds__put_segment = gds__put_segment@16 @58 ++ gds__put_slice = gds__put_slice@40 @59 ++ gds__qtoq = gds__qtoq@8 @60 ++ gds__que_events = gds__que_events@28 @61 ++ gds__receive = gds__receive@24 @62 ++ gds__reconnect_transaction = gds__reconnect_transaction@20 @63 ++ gds__register_cleanup = gds__register_cleanup@8 @64 ++ gds__release_request = gds__release_request@8 @65 ++ gds__request_info = gds__request_info@28 @66 ++ gds__rollback_transaction = gds__rollback_transaction@8 @67 ++ gds__seek_blob = gds__seek_blob@20 @68 ++ gds__send = gds__send@24 @69 ++ gds__set_debug = gds__set_debug@4 @70 ++ gds__sqlcode = gds__sqlcode@4 @71 ++ gds__start_and_send = gds__start_and_send@28 @72 ++ gds__start_multiple = gds__start_multiple@16 @73 ++ gds__start_request = gds__start_request@16 @74 ++ gds__start_transaction = gds__start_transaction@0 @75 ++ gds__temp_file = gds__temp_file@20 @231 ++ gds__thread_enable = gds__thread_enable@4 @76 ++ gds__thread_enter = gds__thread_enter@0 @77 ++ gds__thread_exit = gds__thread_exit@0 @78 ++ gds__thread_start = gds__thread_start@20 @79 ++ gds__to_sqlda = gds__to_sqlda@20 @80 ++ gds__transaction_cleanup = gds__transaction_cleanup@16 @235 ++ gds__transaction_info = gds__transaction_info@24 @81 ++ gds__unregister_cleanup = gds__unregister_cleanup@8 @224 ++ gds__unwind_request = gds__unwind_request@12 @82 ++ gds__validate_lib_path = gds__validate_lib_path@16 @255 ++ gds__vax_integer = gds__vax_integer@8 @83 ++ gds__version = gds__version@12 @84 ++ gds__vtof = gds__vtof@12 @85 ++ gds__vtov = gds__vtov@12 @86 ++ gds__default_printer = gds__default_printer@0 @87 ++ ++ gds__alloc_debug = gds__alloc_debug@12 ++ ++ gds_alloc_flag_unfreed = gds_alloc_flag_unfreed@4 ++ gds_alloc_report = gds_alloc_report@12 ++ ++ fb_shutdown = fb_shutdown@8 ++ fb_shutdown_callback = fb_shutdown_callback@16 ++ fb_cancel_operation = fb_cancel_operation@12 ++ fb_disconnect_transaction = fb_disconnect_transaction@8 ++ ++ perf_format = perf_format@20 @100 ++ perf_get_info = perf_get_info@8 @101 ++ perf_report = perf_report@16 @102 ++ ++ perf64_format = perf64_format@20 ++ perf64_get_info = perf64_get_info@8 ++ perf64_report = perf64_report@16 ++ ++;---------------------------- ++; PUBLIC INTERFACE, i.e. API ++;---------------------------- ++ ++ ; Array functions ++ ++ isc_array_gen_sdl = isc_array_gen_sdl@20 @217 ++ isc_array_get_slice = isc_array_get_slice@28 @218 ++ isc_array_lookup_bounds = isc_array_lookup_bounds@24 @219 ++ isc_array_lookup_desc = isc_array_lookup_desc@24 @220 ++ isc_array_put_slice = isc_array_put_slice@28 @221 ++ isc_array_set_desc = isc_array_set_desc@28 @222 ++ isc_get_slice = isc_get_slice@44 @140 ++ isc_put_slice = isc_put_slice@40 @153 ++ ++ ; BLOB functions ++ ++ isc_blob_default_desc = isc_blob_default_desc@12 @239 ++ isc_blob_gen_bpb = isc_blob_gen_bpb@24 @236 ++ isc_blob_info = isc_blob_info@24 @108 ++ isc_blob_lookup_desc = isc_blob_lookup_desc@28 @237 ++ isc_blob_set_desc = isc_blob_set_desc@28 @238 ++ isc_cancel_blob = isc_cancel_blob@8 @110 ++ isc_close_blob = isc_close_blob@8 @113 ++ isc_create_blob = isc_create_blob@20 @118 ++ isc_create_blob2 = isc_create_blob2@28 @119 ++ isc_get_segment = isc_get_segment@20 @139 ++ isc_open_blob = isc_open_blob@20 @144 ++ isc_open_blob2 = isc_open_blob2@28 @145 ++ isc_put_segment = isc_put_segment@16 @152 ++ ++ ; Database functions ++ ++ isc_attach_database = isc_attach_database@24 @103 ++ isc_create_database = isc_create_database@28 @120 ++ isc_database_info = isc_database_info@24 @122 ++ isc_detach_database = isc_detach_database@8 @128 ++ isc_drop_database = isc_drop_database@8 @229 ++ isc_expand_dpb = isc_expand_dpb@0 @135 ++ isc_modify_dpb = isc_modify_dpb@20 @244 ++ isc_version = isc_version@12 @174 ++ isc_get_client_major_version = isc_get_client_major_version@0 @268 ++ isc_get_client_minor_version = isc_get_client_minor_version@0 @269 ++ isc_get_client_version = isc_get_client_version@4 @270 ++ ++ ; Conversion functions ++ ++ isc_decode_date = isc_decode_date@8 @125 ++ isc_decode_sql_date = isc_decode_sql_date@8 @261 ++ isc_decode_sql_time = isc_decode_sql_time@8 @262 ++ isc_decode_timestamp = isc_decode_timestamp@8 @263 ++ isc_encode_date = isc_encode_date@8 @129 ++ isc_encode_sql_date = isc_encode_sql_date@8 @264 ++ isc_encode_sql_time = isc_encode_sql_time@8 @265 ++ isc_encode_timestamp = isc_encode_timestamp@8 @266 ++ isc_portable_integer = isc_portable_integer@8 @259 ++ isc_vax_integer = isc_vax_integer@8 @173 ++ ++ ; DSQL functions ++ ++ isc_dsql_allocate_statement = isc_dsql_allocate_statement@12 @178 ++ isc_dsql_alloc_statement2 = isc_dsql_alloc_statement2@12 @179 ++ isc_dsql_describe = isc_dsql_describe@16 @180 ++ isc_dsql_describe_bind = isc_dsql_describe_bind@16 @181 ++ isc_dsql_execute = isc_dsql_execute@20 @182 ++ isc_dsql_execute2 = isc_dsql_execute2@24 @183 ++ isc_dsql_execute_m = isc_dsql_execute_m@32 @184 ++ isc_dsql_execute2_m = isc_dsql_execute2_m@52 @185 ++ isc_dsql_execute_immediate = isc_dsql_execute_immediate@28 @186 ++ isc_dsql_exec_immed2 = isc_dsql_exec_immed2@32 @187 ++ isc_dsql_execute_immediate_m = isc_dsql_execute_immediate_m@44 @188 ++ isc_dsql_exec_immed2_m = isc_dsql_exec_immed2_m@64 @189 ++ isc_dsql_exec_immed3_m = isc_dsql_exec_immed3_m@64 @230 ++ isc_dsql_fetch = isc_dsql_fetch@16 @190 ++ isc_dsql_fetch_a = isc_dsql_fetch_a@20 @191 ++ isc_dsql_fetch_m = isc_dsql_fetch_m@28 @192 ++ isc_dsql_finish = isc_dsql_finish@4 @193 ++ isc_dsql_free_statement = isc_dsql_free_statement@12 @194 ++ isc_dsql_insert = isc_dsql_insert@16 @195 ++ isc_dsql_insert_m = isc_dsql_insert_m@28 @196 ++ isc_dsql_prepare = isc_dsql_prepare@28 @197 ++ isc_dsql_prepare_m = isc_dsql_prepare_m@40 @198 ++ isc_dsql_release = isc_dsql_release@8 @199 ++ isc_dsql_set_cursor_name = isc_dsql_set_cursor_name@16 @200 ++ isc_dsql_sql_info = isc_dsql_sql_info@24 @201 ++ ++ ; ESQL functions ++ ++ isc_embed_dsql_close = isc_embed_dsql_close@8 @202 ++ isc_embed_dsql_declare = isc_embed_dsql_declare@12 @203 ++ isc_embed_dsql_describe = isc_embed_dsql_describe@16 @204 ++ isc_embed_dsql_describe_bind = isc_embed_dsql_describe_bind@16 @205 ++ isc_embed_dsql_execute = isc_embed_dsql_execute@20 @206 ++ isc_embed_dsql_execute2 = isc_embed_dsql_execute2@24 @207 ++ isc_embed_dsql_execute_immed = isc_embed_dsql_execute_immed@28 @208 ++ isc_embed_dsql_exec_immed2 = isc_embed_dsql_exec_immed2@32 @209 ++ isc_embed_dsql_fetch = isc_embed_dsql_fetch@16 @210 ++ isc_embed_dsql_fetch_a = isc_embed_dsql_fetch_a@20 @211 ++ isc_embed_dsql_insert = isc_embed_dsql_insert@16 @212 ++ isc_embed_dsql_open = isc_embed_dsql_open@20 @213 ++ isc_embed_dsql_open2 = isc_embed_dsql_open2@24 @214 ++ isc_embed_dsql_prepare = isc_embed_dsql_prepare@32 @215 ++ isc_embed_dsql_release = isc_embed_dsql_release@8 @216 ++ isc_embed_dsql_length = isc_embed_dsql_length@8 @273 ++ ++ ; Error-handling functions ++ ++ isc_interprete = isc_interprete@8 @141 ++ fb_interpret = fb_interpret@12 ++ isc_print_sqlerror = isc_print_sqlerror@8 @150 ++ isc_print_status = isc_print_status@4 @151 ++ isc_sqlcode = isc_sqlcode@4 @165 ++ isc_sql_interprete = isc_sql_interprete@12 @164 ++ isc_sqlcode_s = isc_sqlcode_s@8 @278 ++ fb_sqlstate = fb_sqlstate@8 @279 ++ ++ ; Event functions ++ ++ isc_cancel_events = isc_cancel_events@12 @111 ++ isc_event_block = isc_event_block@0 @130 ++ isc_event_counts = isc_event_counts@16 @131 ++ isc_que_events = isc_que_events@28 @155 ++ isc_wait_for_event = isc_wait_for_event@20 @177 ++ isc_event_block_a = isc_event_block_a@16 @274 ++ isc_event_block_s = isc_event_block_s@20 @275 ++ ++ ; Security functions ++ ++ isc_add_user = isc_add_user@8 @256 ++ isc_delete_user = isc_delete_user@8 @257 ++ isc_modify_user = isc_modify_user@8 @258 ++ ++ ; Services functions ++ ++ isc_service_attach = isc_service_attach@24 @225 ++ isc_service_detach = isc_service_detach@8 @226 ++ isc_service_query = isc_service_query@36 @227 ++ isc_service_start = isc_service_start@20 @228 ++ ++ ; Transaction control functions ++ ++ isc_commit_retaining = isc_commit_retaining@8 @114 ++ isc_commit_transaction = isc_commit_transaction@8 @115 ++ isc_prepare_transaction = isc_prepare_transaction@8 @147 ++ isc_prepare_transaction2 = isc_prepare_transaction2@16 @148 ++ isc_rollback_retaining = isc_rollback_retaining@8 @260 ++ isc_rollback_transaction = isc_rollback_transaction@8 @160 ++ isc_start_multiple = isc_start_multiple@16 @167 ++ isc_start_transaction = isc_start_transaction@0 @169 ++ isc_transaction_info = isc_transaction_info@24 @171 ++ ++ ; Other functions ++ ++ isc_compile_request = isc_compile_request@20 @116 ++ isc_compile_request2 = isc_compile_request2@20 @117 ++ isc_ddl = isc_ddl@20 @123 ++ isc_prepare = isc_prepare@28 @146 ++ isc_receive = isc_receive@24 @156 ++ isc_reconnect_transaction = isc_reconnect_transaction@20 @157 ++ isc_release_request = isc_release_request@8 @158 ++ isc_request_info = isc_request_info@28 @159 ++ isc_seek_blob = isc_seek_blob@20 @161 ++ isc_send = isc_send@24 @162 ++ isc_start_and_send = isc_start_and_send@28 @166 ++ isc_start_request = isc_start_request@16 @168 ++ isc_transact_request = isc_transact_request@36 @132 ++ isc_unwind_request = isc_unwind_request@12 @172 ++ ++ ; Other SQL functions ++ ++ isc_close = isc_close@8 @112 ++ isc_declare = isc_declare@12 @124 ++ isc_describe = isc_describe@12 @126 ++ isc_describe_bind = isc_describe_bind@12 @127 ++ isc_execute = isc_execute@16 @133 ++ isc_execute_immediate = isc_execute_immediate@20 @134 ++ isc_fetch = isc_fetch@12 @136 ++ isc_fetch_a = isc_fetch_a@16 @137 ++ isc_open = isc_open@16 @143 ++ ++ ; Other BLOB functions ++ ++ BLOB_close = BLOB_close@4 @91 ++ BLOB_display = BLOB_display@16 @92 ++ BLOB_dump = BLOB_dump@16 @93 ++ BLOB_edit = BLOB_edit@16 @94 ++ BLOB_get = BLOB_get@4 @95 ++ BLOB_load = BLOB_load@16 @96 ++ BLOB_open = BLOB_open@12 @97 ++ BLOB_put = BLOB_put@8 @98 ++ BLOB_text_dump = BLOB_text_dump@16 @242 ++ BLOB_text_load = BLOB_text_load@16 @243 ++ Bopen = Bopen@16 @99 ++ ++ ; Other misc functions ++ ++ isc_ftof = isc_ftof@16 @138 ++ isc_free = isc_free@4 @241 ++ isc_print_blr = isc_print_blr@16 @149 ++ fb_print_blr = fb_print_blr@20 @280 ++ isc_qtoq = isc_qtoq@8 @154 ++ isc_reset_fpe = isc_reset_fpe@4 ++ isc_set_debug = isc_set_debug@4 @163 ++ isc_to_sqlda = isc_to_sqlda@20 @170 ++ isc_vtof = isc_vtof@12 @175 ++ isc_vtov = isc_vtov@12 @176 ++ isc_baddress = isc_baddress@4 @276 ++ isc_baddress_s = isc_baddress_s@8 @277 ++ ++;----------------- ++; OTHER FUNCTIONS ++;----------------- ++ ++ CVT_move = CVT_move@12 @267 ++ ++ KEYWORD_stringIsAToken = KEYWORD_stringIsAToken@4 @271 ++ KEYWORD_getTokens = KEYWORD_getTokens@0 @272 +diff --git a/builds/win32/defs/fbclient64.def b/builds/win32/defs/fbclient64.def +new file mode 100644 +index 0000000000..ce3875c248 +--- /dev/null ++++ b/builds/win32/defs/fbclient64.def +@@ -0,0 +1,361 @@ ++; 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) Inprise Corporation. ++; ++; All Rights Reserved. ++; Contributor(s): ______________________________________. ++ ++LIBRARY "fbclient.dll" ++EXPORTS ++ ++;------------------- ++; PRIVATE INTERFACE ++;------------------- ++ ++ gds__alloc @1 ++ gds__attach_database @2 ++ gds__blob_info @3 ++ gds__blob_size @4 ++ gds__cancel_blob @5 ++ gds__cancel_events @6 ++ gds__close @7 ++ gds__close_blob @8 ++ gds__commit_retaining @9 ++ gds__commit_transaction @10 ++ gds__compile_request @11 ++ gds__compile_request2 @12 ++ gds__create_blob @13 ++ gds__create_blob2 @14 ++ gds__create_database @15 ++ gds__database_cleanup @16 ++ gds__database_info @17 ++ gds__ddl @18 ++ gds__declare @19 ++ gds__decode @20 ++ gds__decode_date @21 ++ gds__describe @22 ++ gds__describe_bind @23 ++ gds__detach_database @24 ++ gds__disable_subsystem @25 ++ gds__dsql_finish @26 ++ gds__edit @27 ++ gds__enable_subsystem @28 ++ gds__encode @29 ++ gds__encode_date @30 ++ gds__event_block @31 ++ gds__event_counts @32 ++ gds__event_wait @33 ++ gds__execute @34 ++ gds__execute_immediate @35 ++ gds__fetch @36 ++ gds__free @37 ++ gds__ftof @38 ++ gds__get_prefix @248 ++ gds__get_segment @39 ++ gds__get_slice @40 ++ gds__interprete @41 ++ gds__log @42 ++ gds__log_status @142 ++ gds__map_blobs @240 ++ gds__msg_close @223 ++ gds__msg_format @43 ++ gds__msg_lookup @44 ++ gds__msg_open @45 ++ gds__msg_put @46 ++ gds__open @47 ++ gds__open_blob @48 ++ gds__open_blob2 @49 ++ gds__parse_bpb @50 ++ gds__prefix @51 ++ gds__prefix_lock @249 ++ gds__prefix_msg @250 ++ gds__prepare @52 ++ gds__prepare_transaction @53 ++ gds__prepare_transaction2 @54 ++ gds__print_blr @55 ++ gds__print_status @56 ++ gds__put_error @57 ++ gds__put_segment @58 ++ gds__put_slice @59 ++ gds__qtoq @60 ++ gds__que_events @61 ++ gds__receive @62 ++ gds__reconnect_transaction @63 ++ gds__register_cleanup @64 ++ gds__release_request @65 ++ gds__request_info @66 ++ gds__rollback_transaction @67 ++ gds__seek_blob @68 ++ gds__send @69 ++ gds__set_debug @70 ++ gds__sqlcode @71 ++ gds__start_and_send @72 ++ gds__start_multiple @73 ++ gds__start_request @74 ++ gds__start_transaction @75 ++ gds__temp_file @231 ++ gds__thread_enable @76 ++ gds__thread_enter @77 ++ gds__thread_exit @78 ++ gds__thread_start @79 ++ gds__to_sqlda @80 ++ gds__transaction_cleanup @235 ++ gds__transaction_info @81 ++ gds__unregister_cleanup @224 ++ gds__unwind_request @82 ++ gds__validate_lib_path @255 ++ gds__vax_integer @83 ++ gds__version @84 ++ gds__vtof @85 ++ gds__vtov @86 ++ gds__default_printer @87 ++ ++ gds__alloc_debug ++ ++ gds_alloc_flag_unfreed ++ gds_alloc_report ++ ++ fb_shutdown ++ fb_shutdown_callback ++ fb_cancel_operation ++ fb_disconnect_transaction ++ ++ perf_format @100 ++ perf_get_info @101 ++ perf_report @102 ++ ++ perf64_format ++ perf64_get_info ++ perf64_report ++ ++;---------------------------- ++; PUBLIC INTERFACE, i.e. API ++;---------------------------- ++ ++ ; Array functions ++ ++ isc_array_gen_sdl @217 ++ isc_array_get_slice @218 ++ isc_array_lookup_bounds @219 ++ isc_array_lookup_desc @220 ++ isc_array_put_slice @221 ++ isc_array_set_desc @222 ++ isc_get_slice @140 ++ isc_put_slice @153 ++ ++ ; BLOB functions ++ ++ isc_blob_default_desc @239 ++ isc_blob_gen_bpb @236 ++ isc_blob_info @108 ++ isc_blob_lookup_desc @237 ++ isc_blob_set_desc @238 ++ isc_cancel_blob @110 ++ isc_close_blob @113 ++ isc_create_blob @118 ++ isc_create_blob2 @119 ++ isc_get_segment @139 ++ isc_open_blob @144 ++ isc_open_blob2 @145 ++ isc_put_segment @152 ++ ++ ; Database functions ++ ++ isc_attach_database @103 ++ isc_create_database @120 ++ isc_database_info @122 ++ isc_detach_database @128 ++ isc_drop_database @229 ++ isc_expand_dpb @135 ++ isc_modify_dpb @244 ++ isc_version @174 ++ isc_get_client_major_version @268 ++ isc_get_client_minor_version @269 ++ isc_get_client_version @270 ++ ++ ; Conversion functions ++ ++ isc_decode_date @125 ++ isc_decode_sql_date @261 ++ isc_decode_sql_time @262 ++ isc_decode_timestamp @263 ++ isc_encode_date @129 ++ isc_encode_sql_date @264 ++ isc_encode_sql_time @265 ++ isc_encode_timestamp @266 ++ isc_portable_integer @259 ++ isc_vax_integer @173 ++ ++ ; DSQL functions ++ ++ isc_dsql_allocate_statement @178 ++ isc_dsql_alloc_statement2 @179 ++ isc_dsql_describe @180 ++ isc_dsql_describe_bind @181 ++ isc_dsql_execute @182 ++ isc_dsql_execute2 @183 ++ isc_dsql_execute_m @184 ++ isc_dsql_execute2_m @185 ++ isc_dsql_execute_immediate @186 ++ isc_dsql_exec_immed2 @187 ++ isc_dsql_execute_immediate_m @188 ++ isc_dsql_exec_immed2_m @189 ++ isc_dsql_exec_immed3_m @230 ++ isc_dsql_fetch @190 ++ isc_dsql_fetch_a @191 ++ isc_dsql_fetch_m @192 ++ isc_dsql_finish @193 ++ isc_dsql_free_statement @194 ++ isc_dsql_insert @195 ++ isc_dsql_insert_m @196 ++ isc_dsql_prepare @197 ++ isc_dsql_prepare_m @198 ++ isc_dsql_release @199 ++ isc_dsql_set_cursor_name @200 ++ isc_dsql_sql_info @201 ++ ++ ; ESQL functions ++ ++ isc_embed_dsql_close @202 ++ isc_embed_dsql_declare @203 ++ isc_embed_dsql_describe @204 ++ isc_embed_dsql_describe_bind @205 ++ isc_embed_dsql_execute @206 ++ isc_embed_dsql_execute2 @207 ++ isc_embed_dsql_execute_immed @208 ++ isc_embed_dsql_exec_immed2 @209 ++ isc_embed_dsql_fetch @210 ++ isc_embed_dsql_fetch_a @211 ++ isc_embed_dsql_insert @212 ++ isc_embed_dsql_open @213 ++ isc_embed_dsql_open2 @214 ++ isc_embed_dsql_prepare @215 ++ isc_embed_dsql_release @216 ++ isc_embed_dsql_length @273 ++ ++ ; Error-handling functions ++ ++ isc_interprete @141 ++ fb_interpret ++ isc_print_sqlerror @150 ++ isc_print_status @151 ++ isc_sqlcode @165 ++ isc_sql_interprete @164 ++ isc_sqlcode_s @278 ++ fb_sqlstate @279 ++ ++ ; Event functions ++ ++ isc_cancel_events @111 ++ isc_event_block @130 ++ isc_event_counts @131 ++ isc_que_events @155 ++ isc_wait_for_event @177 ++ isc_event_block_a @274 ++ isc_event_block_s @275 ++ ++ ; Security functions ++ ++ isc_add_user @256 ++ isc_delete_user @257 ++ isc_modify_user @258 ++ ++ ; Services functions ++ ++ isc_service_attach @225 ++ isc_service_detach @226 ++ isc_service_query @227 ++ isc_service_start @228 ++ ++ ; Transaction control functions ++ ++ isc_commit_retaining @114 ++ isc_commit_transaction @115 ++ isc_prepare_transaction @147 ++ isc_prepare_transaction2 @148 ++ isc_rollback_retaining @260 ++ isc_rollback_transaction @160 ++ isc_start_multiple @167 ++ isc_start_transaction @169 ++ isc_transaction_info @171 ++ ++ ; Other functions ++ ++ isc_compile_request @116 ++ isc_compile_request2 @117 ++ isc_ddl @123 ++ isc_prepare @146 ++ isc_receive @156 ++ isc_reconnect_transaction @157 ++ isc_release_request @158 ++ isc_request_info @159 ++ isc_seek_blob @161 ++ isc_send @162 ++ isc_start_and_send @166 ++ isc_start_request @168 ++ isc_transact_request @132 ++ isc_unwind_request @172 ++ ++ ; Other SQL functions ++ ++ isc_close @112 ++ isc_declare @124 ++ isc_describe @126 ++ isc_describe_bind @127 ++ isc_execute @133 ++ isc_execute_immediate @134 ++ isc_fetch @136 ++ isc_fetch_a @137 ++ isc_open @143 ++ ++ ; Other BLOB functions ++ ++ BLOB_close @91 ++ BLOB_display @92 ++ BLOB_dump @93 ++ BLOB_edit @94 ++ BLOB_get @95 ++ BLOB_load @96 ++ BLOB_open @97 ++ BLOB_put @98 ++ BLOB_text_dump @242 ++ BLOB_text_load @243 ++ Bopen @99 ++ ++ ; Other misc functions ++ ++ isc_ftof @138 ++ isc_free @241 ++ isc_print_blr @149 ++ fb_print_blr @280 ++ isc_qtoq @154 ++ isc_reset_fpe ++ isc_set_debug @163 ++ isc_to_sqlda @170 ++ isc_vtof @175 ++ isc_vtov @176 ++ isc_baddress @276 ++ isc_baddress_s @277 ++ ++ _isc_start_transaction=isc_start_transaction ++ _isc_expand_dpb=isc_expand_dpb ++ _isc_event_block=isc_event_block ++ ++;----------------- ++; OTHER FUNCTIONS ++;----------------- ++ ++ CVT_move @267 ++ ++ KEYWORD_stringIsAToken @271 ++ KEYWORD_getTokens @272 +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0019-Don-t-install-unix-files-for-Windows-platform.patch b/mingw-w64-firebird2-git/0019-Don-t-install-unix-files-for-Windows-platform.patch new file mode 100644 index 0000000000..68cb11cbba --- /dev/null +++ b/mingw-w64-firebird2-git/0019-Don-t-install-unix-files-for-Windows-platform.patch @@ -0,0 +1,96 @@ +From bd4dc8916de1872a19b588bd9983f874167c35d5 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 26 Nov 2014 09:27:40 +0300 +Subject: [PATCH 19/27] Don't install unix files for Windows platform + +--- + configure.in | 66 ++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 40 insertions(+), 26 deletions(-) + +diff --git a/configure.in b/configure.in +index 21384bf391..10ad6a2857 100644 +--- a/configure.in ++++ b/configure.in +@@ -1314,32 +1314,39 @@ MAKE_SRC_DIR=builds/posix + + dnl common files for all posix hosts + dnl TODO: fix "arch-specific/linux/" paths for common posix scripts with SVN +-AC_CONFIG_FILES([gen/install/misc/firebird.conf:builds/install/misc/firebird.conf.in +-gen/install/misc/aliases.conf:builds/install/misc/aliases.conf.in +-gen/install/misc/fbintl.conf:builds/install/misc/fbintl.conf +-gen/install/misc/fbtrace.conf:src/utilities/ntrace/fbtrace.conf +-gen/firebird/bin/fb_config:builds/install/misc/fb_config.in +-gen/firebird/bin/posixLibrary.sh:builds/install/misc/posixLibrary.sh.in +-gen/firebird/bin/classicLibrary.sh:builds/install/misc/classicLibrary.sh.in +-gen/firebird/bin/superLibrary.sh:builds/install/misc/superLibrary.sh.in +-gen/firebird/bin/changeRunUser.sh:builds/install/misc/changeRunUser.sh.in +-gen/firebird/bin/restoreRootRunUser.sh:builds/install/misc/restoreRootRunUser.sh.in +-gen/firebird/bin/tarMainInstall.sh:builds/install/arch-specific/linux/misc/tarMainInstall.sh.in +-gen/firebird/bin/tarinstall.sh:builds/install/arch-specific/linux/misc/tarinstall.sh.in +-gen/firebird/bin/preinstall.sh:builds/install/arch-specific/linux/misc/preinstall.sh.in +-gen/firebird/bin/postinstall.sh:builds/install/arch-specific/linux/misc/postinstall.sh.in +-gen/firebird/bin/preuninstall.sh:builds/install/arch-specific/linux/misc/preuninstall.sh.in +-gen/firebird/bin/postuninstall.sh:builds/install/arch-specific/linux/misc/postuninstall.sh.in +-gen/firebird/bin/taruninstall.sh:builds/install/arch-specific/linux/misc/taruninstall.sh.in +-gen/firebird/bin/tarMainUninstall.sh:builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in +-gen/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in +-gen/firebird/bin/changeGdsLibraryCompatibleLink.sh:builds/install/misc/changeGdsLibraryCompatibleLink.sh.in +-gen/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in], +-[chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null]) +- +-if test $FIREBIRD_ARCH_TYPE = classic; then +- AC_CONFIG_FILES([gen/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in], +- [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null]) ++if test $PLATFORM = win32; then ++ AC_CONFIG_FILES(gen/firebird/firebird.conf:builds/install/misc/firebird.conf.in ++ gen/firebird/aliases.conf:builds/install/misc/aliases.conf.in ++ gen/firebird/intl/fbintl.conf:builds/install/misc/fbintl.conf ++ gen/firebird/fbtrace.conf:src/utilities/ntrace/fbtrace.conf) ++else ++ AC_CONFIG_FILES([gen/install/misc/firebird.conf:builds/install/misc/firebird.conf.in ++ gen/install/misc/aliases.conf:builds/install/misc/aliases.conf.in ++ gen/install/misc/fbintl.conf:builds/install/misc/fbintl.conf ++ gen/install/misc/fbtrace.conf:src/utilities/ntrace/fbtrace.conf ++ gen/firebird/bin/fb_config:builds/install/misc/fb_config.in ++ gen/firebird/bin/posixLibrary.sh:builds/install/misc/posixLibrary.sh.in ++ gen/firebird/bin/classicLibrary.sh:builds/install/misc/classicLibrary.sh.in ++ gen/firebird/bin/superLibrary.sh:builds/install/misc/superLibrary.sh.in ++ gen/firebird/bin/changeRunUser.sh:builds/install/misc/changeRunUser.sh.in ++ gen/firebird/bin/restoreRootRunUser.sh:builds/install/misc/restoreRootRunUser.sh.in ++ gen/firebird/bin/tarMainInstall.sh:builds/install/arch-specific/linux/misc/tarMainInstall.sh.in ++ gen/firebird/bin/tarinstall.sh:builds/install/arch-specific/linux/misc/tarinstall.sh.in ++ gen/firebird/bin/preinstall.sh:builds/install/arch-specific/linux/misc/preinstall.sh.in ++ gen/firebird/bin/postinstall.sh:builds/install/arch-specific/linux/misc/postinstall.sh.in ++ gen/firebird/bin/preuninstall.sh:builds/install/arch-specific/linux/misc/preuninstall.sh.in ++ gen/firebird/bin/postuninstall.sh:builds/install/arch-specific/linux/misc/postuninstall.sh.in ++ gen/firebird/bin/taruninstall.sh:builds/install/arch-specific/linux/misc/taruninstall.sh.in ++ gen/firebird/bin/tarMainUninstall.sh:builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in ++ gen/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in ++ gen/firebird/bin/changeGdsLibraryCompatibleLink.sh:builds/install/misc/changeGdsLibraryCompatibleLink.sh.in ++ gen/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in], ++ [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null]) ++ ++ if test $FIREBIRD_ARCH_TYPE = classic; then ++ AC_CONFIG_FILES([gen/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in], ++ [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null]) ++ fi + fi + + dnl: Platform Specific Files +@@ -1439,6 +1446,13 @@ case "$PLATFORM" in + + DARWIN) + ;; ++ ++ win32) ++ AC_CONFIG_FILES(gen/firebird/install_classic.bat:builds/install/arch-specific/win32/install_classic.bat ++ gen/firebird/install_super.bat:builds/install/arch-specific/win32/install_super.bat ++ gen/firebird/install_superclassic.bat:builds/install/arch-specific/win32/install_superclassic.bat ++ gen/firebird/uninstall.bat:builds/install/arch-specific/win32/uninstall.bat) ++ ;; + esac + if test -f ${MAKE_SRC_DIR}/postfix.${MAKEFILE_POSTFIX};then + POSTFIX_FILE=gen/make.platform.postfix:${MAKE_SRC_DIR}/postfix.${MAKEFILE_POSTFIX} +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0020-Fix-rules-to-use-variables.patch b/mingw-w64-firebird2-git/0020-Fix-rules-to-use-variables.patch new file mode 100644 index 0000000000..f5137c5fe8 --- /dev/null +++ b/mingw-w64-firebird2-git/0020-Fix-rules-to-use-variables.patch @@ -0,0 +1,116 @@ +From 2be65017c9c3136ffcfa6abe9f9d5f30e237a087 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Wed, 26 Nov 2014 09:27:40 +0300 +Subject: [PATCH 20/27] Fix rules to use variables. + +--- + builds/posix/Makefile.in.examples | 18 +++++++++--------- + builds/posix/Makefile.in.refDatabases | 8 ++++---- + builds/posix/make.defaults | 2 +- + 3 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/builds/posix/Makefile.in.examples b/builds/posix/Makefile.in.examples +index 31376494d9..ade180b4fa 100644 +--- a/builds/posix/Makefile.in.examples ++++ b/builds/posix/Makefile.in.examples +@@ -117,9 +117,9 @@ $(EXAMPLES_DEST)% : $(EXAMPLES_SRC)% + + + $(EXAMPLES_DEST)/employee.fdb: $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT) +- -$(RM) employee.fdb +- ./empbuild employee.fdb +- -$(CHMOD_6) employee.fdb ++ -$(RM) $(EXAMPLES_DEST)/employee.fdb ++ $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(EXAMPLES_DEST)/employee.fdb ++ -$(CHMOD_6) $(EXAMPLES_DEST)/employee.fdb + + # To get past the fact isql is called from the programs, we create a local link + # to the static one in this directory +@@ -134,16 +134,16 @@ $(EXAMPLES_DEST)/empbuild.c: $(EXAMPLES_DEST)/empbuild.fdb $(EXAMPLES_DEST)/empb + + $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/empbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT) + -$(RM) $(EXAMPLES_DEST)/empbuild.fdb +- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql ++ $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i $(EXAMPLES_DEST)/empbld.sql + + # The chain for intlemp.fdb is the same a script file to create an empty database + # to allow a .e program to be compiled, to then create and populate with data + # the intlemp.fdb database. + + $(EXAMPLES_DEST)/intlemp.fdb: $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) $(INTL_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT) +- -$(RM) intlemp.fdb +- ./intlbld intlemp.fdb +- -$(CHMOD_6) intlemp.fdb ++ -$(RM) $(EXAMPLES_DEST)/intlemp.fdb ++ $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) $(EXAMPLES_DEST)/intlemp.fdb ++ -$(CHMOD_6) $(EXAMPLES_DEST)/intlemp.fdb + + $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_Objects) $(LIBFBSTATIC_A) + $(EXE_LINK) $(LINK_OPTS) $(INTLBLD_Objects) $(COMMON_Objects) -o $@ -L$(LIB) -lfbstatic $(LINK_LIBS) $(ICU_LIBS) +@@ -151,8 +151,8 @@ $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_Objects) $(LIBF + $(EXAMPLES_DEST)/intlbld.c: $(EXAMPLES_DEST)/intlbuild.fdb $(EXAMPLES_DEST)/intlbld.e + + $(EXAMPLES_DEST)/intlbuild.fdb : $(EXAMPLES_DEST)/intlddl.sql $(EXAMPLES_DEST)/intlbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT) +- -$(RM) intlbuild.fdb +- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql ++ -$(RM) $(EXAMPLES_DEST)/intlbuild.fdb ++ $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i $(EXAMPLES_DEST)/intlbld.sql + + + $(EXAMPLES_DEST)/%.sql: $(EXAMPLES_SRC)/empbuild/%.sql +diff --git a/builds/posix/Makefile.in.refDatabases b/builds/posix/Makefile.in.refDatabases +index c1b61a64fc..68016ccebc 100644 +--- a/builds/posix/Makefile.in.refDatabases ++++ b/builds/posix/Makefile.in.refDatabases +@@ -65,7 +65,7 @@ empty_db : empty.fdb yachts.lnk + empty.fdb : $(CREATE_DB) + $(MAKE) -f $(GEN_ROOT)/Makefile.static.createdb + -$(RM) $@ +- $(BIN)/create_db $@ ++ $(CREATE_DB) $@ + $(TOUCH) $@ + $(CHMOD) 444 $@ + +@@ -99,7 +99,7 @@ help.fdb: $(FIREBIRD)/help/help.fdb + $(LN) -f $^ $@ + + $(FIREBIRD)/help/help.fdb: $(BLD_ROOT)/misc/help.gbak +- $(BIN)/gbak_static -MODE read_only -R $< $@ ++ $(GBAK_STATIC) -MODE read_only -R $< $@ + $(TOUCH) $@ + $(CHMOD) 444 $@ + +@@ -114,7 +114,7 @@ security2.fdb: $(SRC_ROOT)/dbs/security.sql + $(CHMOD) a=rw $@ + + metadata.fdb: $(BLD_ROOT)/misc/metadata.gbak +- $(BIN)/gbak_static -MODE read_only -R $< $@ ++ $(GBAK_STATIC) -MODE read_only -R $< $@ + $(TOUCH) $@ + $(CHMOD) 444 $@ + +@@ -122,7 +122,7 @@ metadata.fdb: $(BLD_ROOT)/misc/metadata.gbak + # since it ensures the data is valid. + + metadata.fdb.x: $(SRC_ROOT)/misc/metadata.sql +- $(BIN)/isql -i $< ++ $(ISQL) -i $< + $(TOUCH) $@ + $(CHMOD) 444 $@ + +diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults +index c2c2ffe343..2ad21f93f5 100755 +--- a/builds/posix/make.defaults ++++ b/builds/posix/make.defaults +@@ -183,7 +183,7 @@ SHRLIB_FOREIGN_EXT= $(SHRLIB_EXT) + + vpath %.so $(LIB) + vpath %.a $(LIB) +-vpath %.dll $(LIB) ++vpath %.dll $(BIN) + + #_____________________________________________________________________________ + +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0021-Auto-detect-WINDRES-with-autoconf.patch b/mingw-w64-firebird2-git/0021-Auto-detect-WINDRES-with-autoconf.patch new file mode 100644 index 0000000000..e252f4749a --- /dev/null +++ b/mingw-w64-firebird2-git/0021-Auto-detect-WINDRES-with-autoconf.patch @@ -0,0 +1,92 @@ +From 49a1247dc150c5c11a50225c98b142838e10110d Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 30 Nov 2014 09:27:40 +0300 +Subject: [PATCH 21/27] Auto detect WINDRES with autoconf. + +Fix building .rc files. +--- + builds/posix/make.defaults | 4 +++- + builds/posix/make.rules | 4 ++-- + builds/posix/make.shared.targets | 10 +++++----- + configure.in | 10 ++++++++++ + 4 files changed, 20 insertions(+), 8 deletions(-) + +diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults +index 2ad21f93f5..a3836acf9a 100755 +--- a/builds/posix/make.defaults ++++ b/builds/posix/make.defaults +@@ -139,9 +139,11 @@ ECHO= echo + QUIET_ECHO= @echo + CD= cd + CAT= cat +-AR= ar @AR_OPTIONS@ crsu ++AR= @AR@ @AR_OPTIONS@ crsu + LN= @LN_S@ ++DLLTOOL= @DLLTOOL@ + RANLIB= @RANLIB@ ++RC= @RC@ + BTYACC=$(ROOT)/extern/btyacc/btyacc + + CC = @CC@ +diff --git a/builds/posix/make.rules b/builds/posix/make.rules +index a784cb21ab..600b8f9e6a 100644 +--- a/builds/posix/make.rules ++++ b/builds/posix/make.rules +@@ -115,5 +115,5 @@ $(OBJ)/%.o: $(SRC_ROOT)/%.cpp + + # Rules for making resource files + +-$(GEN_ROOT)/%.res: $(SRC_ROOT)/%.rc +- windres --output-format=coff --include-dir=$( +Date: Wed, 26 Nov 2014 09:27:40 +0300 +Subject: [PATCH 22/27] Create symlinks of fbembed only if names are different + +--- + builds/posix/Makefile.in.libfbembed | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/builds/posix/Makefile.in.libfbembed b/builds/posix/Makefile.in.libfbembed +index d919ba2b34..2e70ab90f8 100644 +--- a/builds/posix/Makefile.in.libfbembed ++++ b/builds/posix/Makefile.in.libfbembed +@@ -61,14 +61,18 @@ Dependencies = $(AllObjects:.o=.d) + + libfbembed : $(LIBIBUTIL_SO) $(LIBFBEMBED_SONAME) + +-$(LIBFBEMBED_SO): $(LIBFBEMBED_Objects) $(SERVER_Objects) $(COMMON_Objects) +- $(LINK_EMBED) -o $@ $^ $(LINK_EMBED_LIBS) +- ++ifneq ($(SharedLibraryName),$(SharedLibrarySoName)) + $(LIBFBEMBED_SOBASENAME): $(LIBFBEMBED_SO) + (cd $(LIB) && $(LN) -f $(SharedLibraryName) $(SharedLibrarySoName) ) ++endif + ++ifneq ($(SharedLibrarySoName),$(SharedLibraryBaseName)) + $(LIBFBEMBED_SONAME): $(LIBFBEMBED_SOBASENAME) + (cd $(LIB) && $(LN) -f $(SharedLibrarySoName) $(SharedLibraryBaseName) ) ++endif ++ ++$(LIBFBEMBED_SO): $(LIBFBEMBED_Objects) $(SERVER_Objects) $(COMMON_Objects) ++ $(LINK_EMBED) -o $@ $^ $(LINK_EMBED_LIBS) + + include $(ROOT)/gen/make.shared.targets + +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0023-mod_loader-mingw-always-link-to-msvcrt.dll.patch b/mingw-w64-firebird2-git/0023-mod_loader-mingw-always-link-to-msvcrt.dll.patch new file mode 100644 index 0000000000..150bb5dba2 --- /dev/null +++ b/mingw-w64-firebird2-git/0023-mod_loader-mingw-always-link-to-msvcrt.dll.patch @@ -0,0 +1,36 @@ +From adae02b6514ae186f797e01611c35ed1d843f256 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 23 Nov 2014 09:27:40 +0300 +Subject: [PATCH 23/27] mod_loader: mingw always link to msvcrt.dll + +--- + src/jrd/os/win32/mod_loader.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/jrd/os/win32/mod_loader.cpp b/src/jrd/os/win32/mod_loader.cpp +index aeae4c2bd5..004625336d 100644 +--- a/src/jrd/os/win32/mod_loader.cpp ++++ b/src/jrd/os/win32/mod_loader.cpp +@@ -74,7 +74,7 @@ public: + // if we don't use MSVC then we don't use MS CRT ? + // NS: versions of MSVC before 2005 and, as preliminary reports suggest, + // after 2008 do not need this hack +-#if !defined(_MSC_VER) || (_MSC_VER < 1400) ++#if (!defined(_MSC_VER) || (_MSC_VER < 1400)) && !defined(__MINGW32__) + return; + #else + +@@ -89,7 +89,9 @@ public: + if ((*mFindActCtxSectionString) + (0, NULL, + ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, +-#if _MSC_VER == 1400 ++#if defined(__MINGW32__) ++ "msvcrt.dll", ++#elif _MSC_VER == 1400 + "msvcr80.dll", + #elif _MSC_VER == 1500 + "msvcr90.dll", +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0024-Relocate-paths-for-unix-like-files-layout.patch b/mingw-w64-firebird2-git/0024-Relocate-paths-for-unix-like-files-layout.patch new file mode 100644 index 0000000000..57f1e5c346 --- /dev/null +++ b/mingw-w64-firebird2-git/0024-Relocate-paths-for-unix-like-files-layout.patch @@ -0,0 +1,775 @@ +From 6694e24ed8e6a86db3f6518e63cfa8581d838d5e Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 23 Nov 2014 09:27:40 +0300 +Subject: [PATCH 24/27] Relocate paths for unix-like files layout. + +--- + builds/posix/make.shared.variables | 4 +- + src/common/pathtools.cpp | 538 +++++++++++++++++++++++++++++++++++++ + src/common/pathtools.h | 53 ++++ + src/common/utils.cpp | 21 +- + src/jrd/gds.cpp | 7 +- + src/jrd/os/win32/config_root.cpp | 7 +- + src/jrd/os/win32/path_utils.cpp | 5 +- + 7 files changed, 623 insertions(+), 12 deletions(-) + create mode 100644 src/common/pathtools.cpp + create mode 100644 src/common/pathtools.h + +diff --git a/builds/posix/make.shared.variables b/builds/posix/make.shared.variables +index ef6099ed83..b10dae4cbc 100644 +--- a/builds/posix/make.shared.variables ++++ b/builds/posix/make.shared.variables +@@ -259,7 +259,7 @@ VULCAN_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(VULCAN_Source + # common + + FBCOMMON_ClientFiles = fb_exception.cpp thd.cpp classes/MetaName.cpp StatusHolder.cpp classes/init.cpp StatusArg.cpp +-FBCOMMON_ServerFiles = utils.cpp ++FBCOMMON_ServerFiles = utils.cpp pathtools.cpp + + FBCOMMON_ClientObjects = $(addprefix $(OBJ)/common/, $(addsuffix .o, $(basename $(FBCOMMON_ClientFiles)))) \ + $(addprefix $(OBJ)/jrd/, $(addsuffix .o, $(basename fbsyslog.cpp))) +@@ -287,7 +287,7 @@ CLUMPLETS_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(CLUMPLETS_ + # just in case if make.platform defined some files + OS_SPECIFIC_Files += config_root.cpp path_utils.cpp mod_loader.cpp guid.cpp os_utils.cpp + +-OS_SPECIFIC_Sources = $(addprefix jrd/, $(OS_SPECIFIC_Files)) common/dllinst.cpp ++OS_SPECIFIC_Sources = $(addprefix jrd/, $(OS_SPECIFIC_Files)) common/dllinst.cpp common/pathtools.cpp + ifneq ($(strip @BINRELOC_CFLAGS@),) + OS_SPECIFIC_Sources += $(ROOT)/extern/binreloc/binreloc.c + endif +diff --git a/src/common/pathtools.cpp b/src/common/pathtools.cpp +new file mode 100644 +index 0000000000..9291ffd81f +--- /dev/null ++++ b/src/common/pathtools.cpp +@@ -0,0 +1,538 @@ ++/* ++ .Some useful path tools. ++ .ASCII only for now. ++ .Written by Ray Donnelly in 2014. ++ .Licensed under CC0 (and anything. ++ .else you need to license it under). ++ .No warranties whatsoever. ++ .email: . ++ */ ++ ++#if defined(__APPLE__) ++#include ++#else ++#include ++#endif ++#include ++#include ++#include ++#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__) ++#include ++#endif ++#include ++ ++/* If you don't define this, then get_executable_path() ++ can only use argv[0] which will often not work well */ ++#define IMPLEMENT_SYS_GET_EXECUTABLE_PATH ++ ++#if defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH) ++#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__) ++/* Nothing needed, unistd.h is enough. */ ++#elif defined(__APPLE__) ++#include ++#elif defined(_WIN32) ++#define WIN32_MEAN_AND_LEAN ++#include ++#include ++#endif ++#endif /* defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH) */ ++ ++#include "pathtools.h" ++ ++char * ++malloc_copy_string(char const * original) ++{ ++ char * result = (char *) malloc (sizeof (char*) * strlen (original)+1); ++ if (result != NULL) ++ { ++ strcpy (result, original); ++ } ++ return result; ++} ++ ++void ++sanitise_path(char * path) ++{ ++ size_t path_size = strlen (path); ++ ++ /* Replace any '\' with '/' */ ++ char * path_p = path; ++ while ((path_p = strchr (path_p, '\\')) != NULL) ++ { ++ *path_p = '/'; ++ } ++ /* Replace any '//' with '/' */ ++ path_p = path; ++ while ((path_p = strstr (path_p, "//")) != NULL) ++ { ++ memmove (path_p, path_p + 1, path_size--); ++ } ++ return; ++} ++ ++char * ++get_relative_path(char const * from_in, char const * to_in) ++{ ++ size_t from_size = (from_in == NULL) ? 0 : strlen (from_in); ++ size_t to_size = (to_in == NULL) ? 0 : strlen (to_in); ++ size_t max_size = (from_size + to_size) * 2 + 4; ++ char * scratch_space = (char *) alloca (from_size + 1 + to_size + 1 + max_size + max_size); ++ char * from; ++ char * to; ++ char * common_part; ++ char * result; ++ size_t count; ++ ++ /* No to, return "./" */ ++ if (to_in == NULL) ++ { ++ return malloc_copy_string ("./"); ++ } ++ ++ /* If alloca failed or no from was given return a copy of to */ ++ if ( from_in == NULL ++ || scratch_space == NULL ) ++ { ++ return malloc_copy_string (to_in); ++ } ++ ++ from = scratch_space; ++ strcpy (from, from_in); ++ to = from + from_size + 1; ++ strcpy (to, to_in); ++ common_part = to + to_size + 1; ++ result = common_part + max_size; ++ simplify_path (from); ++ simplify_path (to); ++ ++ result[0] = '\0'; ++ ++ size_t match_size_dirsep = 0; /* The match size up to the last /. Always wind back to this - 1 */ ++ size_t match_size = 0; /* The running (and final) match size. */ ++ size_t largest_size = (from_size > to_size) ? from_size : to_size; ++ int to_final_is_slash = (to[to_size-1] == '/') ? 1 : 0; ++ char from_c; ++ char to_c; ++ for (match_size = 0; match_size < largest_size; ++match_size) ++ { ++ /* To simplify the logic, always pretend the strings end with '/' */ ++ from_c = (match_size < from_size) ? from[match_size] : '/'; ++ to_c = (match_size < to_size) ? to[match_size] : '/'; ++ ++ if (from_c != to_c) ++ { ++ if (from_c != '\0' || to_c != '\0') ++ { ++ match_size = match_size_dirsep; ++ } ++ break; ++ } ++ else if (from_c == '/') ++ { ++ match_size_dirsep = match_size; ++ } ++ } ++ strncpy (common_part, from, match_size); ++ common_part[match_size] = '\0'; ++ from += match_size; ++ to += match_size; ++ size_t ndotdots = 0; ++ char const* from_last = from + strlen(from) - 1; ++ while ((from = strchr (from, '/')) && from != from_last) ++ { ++ ++ndotdots; ++ ++from; ++ } ++ for (count = 0; count < ndotdots; ++count) ++ { ++ strcat(result, "../"); ++ } ++ if (strlen(to) > 0) ++ { ++ strcat(result, to+1); ++ } ++ /* Make sure that if to ends with '/' result does the same, and ++ vice-versa. */ ++ size_t size_result = strlen(result); ++ if ((to_final_is_slash == 1) ++ && (!size_result || result[size_result-1] != '/')) ++ { ++ strcat (result, "/"); ++ } ++ else if (!to_final_is_slash ++ && size_result && result[size_result-1] == '/') ++ { ++ result[size_result-1] = '\0'; ++ } ++ ++ return malloc_copy_string (result); ++} ++ ++void ++simplify_path(char * path) ++{ ++ ssize_t n_toks = 1; /* in-case we need an empty initial token. */ ++ ssize_t i, j; ++ size_t tok_size; ++ size_t in_size = strlen (path); ++ int it_ended_with_a_slash = (path[in_size - 1] == '/') ? 1 : 0; ++ char * result = path; ++ sanitise_path(result); ++ char * result_p = result; ++ ++ do ++ { ++ ++n_toks; ++ ++result_p; ++ } while ((result_p = strchr (result_p, '/')) != NULL); ++ ++ result_p = result; ++ char const ** toks = (char const **) alloca (sizeof (char const*) * n_toks); ++ n_toks = 0; ++ do ++ { ++ if (result_p > result) ++ { ++ *result_p++ = '\0'; ++ } ++ else if (*result_p == '/') ++ { ++ /* A leading / creates an empty initial token. */ ++ toks[n_toks++] = result_p; ++ *result_p++ = '\0'; ++ } ++ toks[n_toks++] = result_p; ++ } while ((result_p = strchr (result_p, '/')) != NULL); ++ ++ /* Remove all non-leading '.' and any '..' we can match ++ with an earlier forward path (i.e. neither '.' nor '..') */ ++ for (i = 1; i < n_toks; ++i) ++ { ++ int removals[2] = { -1, -1 }; ++ if ( strcmp (toks[i], "." ) == 0) ++ { ++ removals[0] = i; ++ } ++ else if ( strcmp (toks[i], ".." ) == 0) ++ { ++ /* Search backwards for a forward path to collapse. ++ If none are found then the .. also stays. */ ++ for (j = i - 1; j > -1; --j) ++ { ++ if ( strcmp (toks[j], "." ) ++ && strcmp (toks[j], ".." ) ) ++ { ++ removals[0] = j; ++ removals[1] = i; ++ break; ++ } ++ } ++ } ++ for (j = 0; j < 2; ++j) ++ { ++ if (removals[j] >= 0) /* Can become -2 */ ++ { ++ --n_toks; ++ memmove (&toks[removals[j]], &toks[removals[j]+1], (n_toks - removals[j])*sizeof (char*)); ++ --i; ++ if (!j) ++ { ++ --removals[1]; ++ } ++ } ++ } ++ } ++ result_p = result; ++ for (i = 0; i < n_toks; ++i) ++ { ++ tok_size = strlen(toks[i]); ++ memcpy (result_p, toks[i], tok_size); ++ result_p += tok_size; ++ if ((!i || tok_size) && ((i < n_toks - 1) || it_ended_with_a_slash == 1)) ++ { ++ *result_p = '/'; ++ ++result_p; ++ } ++ } ++ *result_p = '\0'; ++} ++ ++/* Returns actual_to by calculating the relative path from -> to and ++ applying that to actual_from. An assumption that actual_from is a ++ dir is made, and it may or may not end with a '/' */ ++char const * ++get_relocated_path (char const * from, char const * to, char const * actual_from) ++{ ++ char const * relative_from_to = get_relative_path (from, to); ++ char * actual_to = (char *) malloc (strlen(actual_from) + 2 + strlen(relative_from_to)); ++ return actual_to; ++} ++ ++int ++get_executable_path(char const * argv0, char * result, ssize_t max_size) ++{ ++ char * system_result = (char *) alloca (max_size); ++ ssize_t system_result_size = -1; ++ ssize_t result_size = -1; ++ ++ if (system_result != NULL) ++ { ++#if defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH) ++#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__) ++ system_result_size = readlink("/proc/self/exe", system_result, max_size); ++#elif defined(__APPLE__) ++ uint32_t bufsize = (uint32_t)max_size; ++ if (_NSGetExecutablePath(system_result, &bufsize) == 0) ++ { ++ system_result_size = (ssize_t)bufsize; ++ } ++#elif defined(_WIN32) ++ unsigned long bufsize = (unsigned long)max_size; ++ system_result_size = GetModuleFileNameA(NULL, system_result, bufsize); ++ if (system_result_size == 0 || system_result_size == (ssize_t)bufsize) ++ { ++ /* Error, possibly not enough space. */ ++ system_result_size = -1; ++ } ++ else ++ { ++ /* Early conversion to unix slashes instead of more changes ++ everywhere else .. */ ++ char * winslash; ++ system_result[system_result_size] = '\0'; ++ while ((winslash = strchr (system_result, '\\')) != NULL) ++ { ++ *winslash = '/'; ++ } ++ } ++#else ++#warning "Don't know how to get executable path on this system" ++#endif ++#endif /* defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH) */ ++ } ++ /* Use argv0 as a default in-case of failure */ ++ if (system_result_size != -1) ++ { ++ strncpy (result, system_result, system_result_size); ++ result[system_result_size] = '\0'; ++ } ++ else ++ { ++ if (argv0 != NULL) ++ { ++ strncpy (result, argv0, max_size); ++ result[max_size-1] = '\0'; ++ } ++ else ++ { ++ result[0] = '\0'; ++ } ++ } ++ result_size = strlen (result); ++ return result_size; ++} ++ ++char const * ++strip_n_prefix_folders(char const * path, size_t n) ++{ ++ if (path == NULL) ++ { ++ return NULL; ++ } ++ ++ if (path[0] != '/') ++ { ++ return path; ++ } ++ ++ char const * last = path; ++ while (n-- && path != NULL) ++ { ++ last = path; ++ path = strchr (path + 1, '/'); ++ } ++ return (path == NULL) ? last : path; ++} ++ ++void ++strip_n_suffix_folders(char * path, size_t n) ++{ ++ if (path == NULL) ++ { ++ return; ++ } ++ while (n--) ++ { ++ if (strrchr (path + 1, '/')) ++ { ++ *strrchr (path + 1, '/') = '\0'; ++ } ++ else ++ { ++ return; ++ } ++ } ++ return; ++} ++ ++size_t ++split_path_list(char const * path_list, char split_char, char *** arr) ++{ ++ size_t path_count; ++ size_t path_list_size; ++ char const * path_list_p; ++ ++ path_list_p = path_list; ++ if (path_list == NULL || path_list[0] == '\0') ++ { ++ return 0; ++ } ++ path_list_size = strlen (path_list); ++ ++ path_count = 0; ++ do ++ { ++ ++path_count; ++ ++path_list_p; ++ } ++ while ((path_list_p = strchr (path_list_p, split_char)) != NULL); ++ ++ /* allocate everything in one go. */ ++ char * all_memory = (char *) malloc (sizeof (char *) * path_count + strlen(path_list) + 1); ++ if (all_memory == NULL) ++ return 0; ++ *arr = (char **)all_memory; ++ all_memory += sizeof (char *) * path_count; ++ ++ path_count = 0; ++ path_list_p = path_list; ++ char const * next_path_list_p = 0; ++ do ++ { ++ next_path_list_p = strchr (path_list_p, split_char); ++ if (next_path_list_p != NULL) ++ { ++ ++next_path_list_p; ++ } ++ size_t this_size = (next_path_list_p != NULL) ++ ? next_path_list_p - path_list_p - 1 ++ : &path_list[path_list_size] - path_list_p; ++ memcpy (all_memory, path_list_p, this_size); ++ all_memory[this_size] = '\0'; ++ (*arr)[path_count++] = all_memory; ++ all_memory += this_size + 1; ++ } while ((path_list_p = next_path_list_p) != NULL); ++ ++ return path_count; ++} ++ ++char * ++get_relocated_path_list(char const * from, char const * to_path_list) ++{ ++ char exe_path[MAX_PATH]; ++ char * temp; ++ get_executable_path (NULL, &exe_path[0], sizeof (exe_path) / sizeof (exe_path[0])); ++ if ((temp = strrchr (exe_path, '/')) != NULL) ++ { ++ temp[1] = '\0'; ++ } ++ ++ char **arr = NULL; ++ /* Ask Alexey why he added this. Are we not 100% sure ++ that we're dealing with unix paths here? */ ++ char split_char = ':'; ++ if (strchr (to_path_list, ';')) ++ { ++ split_char = ';'; ++ } ++ size_t count = split_path_list (to_path_list, split_char, &arr); ++ int result_size = 1 + (count - 1); /* count - 1 is for ; delim. */ ++ size_t exe_path_size = strlen (exe_path); ++ size_t i; ++ /* Space required is: ++ count * (exe_path_size + strlen (rel_to_datadir)) ++ rel_to_datadir upper bound is: ++ (count * strlen (from)) + (3 * num_slashes (from)) ++ + strlen(arr[i]) + 1. ++ .. pathalogically num_slashes (from) is strlen (from) ++ (from = ////////) */ ++ size_t space_required = (count * (exe_path_size + 4 * strlen (from))) + count - 1; ++ for (i = 0; i < count; ++i) ++ { ++ space_required += strlen (arr[i]); ++ } ++ char * scratch = (char *) alloca (space_required); ++ if (scratch == NULL) ++ return NULL; ++ for (i = 0; i < count; ++i) ++ { ++ char * rel_to_datadir = get_relative_path (from, arr[i]); ++ scratch[0] = '\0'; ++ arr[i] = scratch; ++ strcat (scratch, exe_path); ++ strcat (scratch, rel_to_datadir); ++ simplify_path (arr[i]); ++ size_t arr_i_size = strlen (arr[i]); ++ result_size += arr_i_size; ++ scratch = arr[i] + arr_i_size + 1; ++ } ++ char * result = (char *) malloc (result_size); ++ if (result == NULL) ++ { ++ return NULL; ++ } ++ result[0] = '\0'; ++ for (i = 0; i < count; ++i) ++ { ++ strcat (result, arr[i]); ++ if (i != count-1) ++ { ++#if defined(_WIN32) ++ strcat (result, ";"); ++#else ++ strcat (result, ":"); ++#endif ++ } ++ } ++ free ((void*)arr); ++ return result; ++} ++ ++char * ++single_path_relocation(const char *from, const char *to) ++{ ++#if defined(__MINGW32__) ++ char exe_path[PATH_MAX]; ++ get_executable_path (NULL, &exe_path[0], sizeof(exe_path)/sizeof(exe_path[0])); ++ if (strrchr (exe_path, '/') != NULL) ++ { ++ strrchr (exe_path, '/')[1] = '\0'; ++ } ++ char * rel_to_datadir = get_relative_path (from, to); ++ strcat (exe_path, rel_to_datadir); ++ simplify_path (&exe_path[0]); ++ return malloc_copy_string(exe_path); ++#else ++ return malloc_copy_string(to); ++#endif ++} ++ ++char * ++pathlist_relocation(const char *from_path, const char *to_path_list) ++{ ++#if defined(__MINGW32__) ++ static char stored_path[PATH_MAX]; ++ static int stored = 0; ++ if (stored == 0) ++ { ++ char const * relocated = get_relocated_path_list(from_path, to_path_list); ++ strncpy (stored_path, relocated, PATH_MAX); ++ stored_path[PATH_MAX-1] = '\0'; ++ free ((void *)relocated); ++ stored = 1; ++ } ++ return stored_path; ++#else ++ return (to_path_list); ++#endif ++} +diff --git a/src/common/pathtools.h b/src/common/pathtools.h +new file mode 100644 +index 0000000000..139b7c2024 +--- /dev/null ++++ b/src/common/pathtools.h +@@ -0,0 +1,53 @@ ++/* ++ .Some useful path tools. ++ .ASCII only for now. ++ .Written by Ray Donnelly in 2014. ++ .Licensed under CC0 (and anything. ++ .else you need to license it under). ++ .No warranties whatsoever. ++ .email: . ++ */ ++ ++#ifndef PATHTOOLS_H ++#define PATHTOOLS_H ++ ++#include ++#if defined(__APPLE__) ++#include ++#else ++#include ++#endif ++#include ++ ++char * malloc_copy_string(char const * original); ++ ++/* In-place replaces any '\' with '/' and any '//' with '/' */ ++void sanitise_path(char * path); ++ ++/* Uses a host OS specific function to determine the path of the executable, ++ if IMPLEMENT_SYS_GET_EXECUTABLE_PATH is defined, otherwise uses argv0. */ ++int get_executable_path(char const * argv0, char * result, ssize_t max_size); ++ ++/* Where possible, in-place removes occourances of '.' and 'path/..' */ ++void simplify_path(char * path); ++ ++/* Allocates (via malloc) and returns the path to get from from to to. */ ++char * get_relative_path(char const * from, char const * to); ++ ++size_t split_path_list(char const * path_list, char split_char, char *** arr); ++ ++/* Advances path along by the amount that removes n prefix folders. */ ++char const * ++strip_n_prefix_folders(char const * path, size_t n); ++ ++/* NULL terminates path to remove n suffix folders. */ ++void ++strip_n_suffix_folders(char * path, size_t n); ++ ++char const * get_relocated_path (char const * from, char const * to, char const * actual_from); ++char * get_relocated_path_list(char const * from, char const * to_path_list); ++ ++char * single_path_relocation(const char *from, const char *to); ++char * pathlist_relocation(const char *from_path, const char *to_path_list); ++ ++#endif /* PATHTOOLS_H */ +diff --git a/src/common/utils.cpp b/src/common/utils.cpp +index 34c7c5c263..5991363f10 100644 +--- a/src/common/utils.cpp ++++ b/src/common/utils.cpp +@@ -43,6 +43,7 @@ + #include "../common/utils_proto.h" + #include "../common/classes/locks.h" + #include "../common/classes/init.h" ++#include "../common/pathtools.h" + #include "../jrd/constants.h" + #include "../jrd/os/path_utils.h" + #include "../jrd/os/fbsyslog.h" +@@ -929,9 +930,23 @@ Firebird::PathName getPrefix(FB_DIR prefType, const char* name) + + #ifndef BOOT_BUILD + const char* configDir[] = { +- FB_BINDIR, FB_SBINDIR, FB_CONFDIR, FB_LIBDIR, FB_INCDIR, FB_DOCDIR, FB_UDFDIR, FB_SAMPLEDIR, +- FB_SAMPLEDBDIR, FB_HELPDIR, FB_INTLDIR, FB_MISCDIR, FB_SECDBDIR, FB_MSGDIR, FB_LOGDIR, +- FB_GUARDDIR, FB_PLUGDIR ++ single_path_relocation(FB_BINDIR,FB_BINDIR), ++ single_path_relocation(FB_BINDIR,FB_SBINDIR), ++ single_path_relocation(FB_BINDIR,FB_CONFDIR), ++ single_path_relocation(FB_BINDIR,FB_LIBDIR), ++ single_path_relocation(FB_BINDIR,FB_INCDIR), ++ single_path_relocation(FB_BINDIR,FB_DOCDIR), ++ single_path_relocation(FB_BINDIR,FB_UDFDIR), ++ single_path_relocation(FB_BINDIR,FB_SAMPLEDIR), ++ single_path_relocation(FB_BINDIR,FB_SAMPLEDBDIR), ++ single_path_relocation(FB_BINDIR,FB_HELPDIR), ++ single_path_relocation(FB_BINDIR,FB_INTLDIR), ++ single_path_relocation(FB_BINDIR,FB_MISCDIR), ++ single_path_relocation(FB_BINDIR,FB_SECDBDIR), ++ single_path_relocation(FB_BINDIR,FB_MSGDIR), ++ single_path_relocation(FB_BINDIR,FB_LOGDIR), ++ single_path_relocation(FB_BINDIR,FB_GUARDDIR), ++ single_path_relocation(FB_BINDIR,FB_PLUGDIR) + }; + + fb_assert(FB_NELEM(configDir) == FB_DIR_LAST); +diff --git a/src/jrd/gds.cpp b/src/jrd/gds.cpp +index a4ccaa9ac7..a802e8ce90 100644 +--- a/src/jrd/gds.cpp ++++ b/src/jrd/gds.cpp +@@ -56,6 +56,7 @@ + #include "../common/classes/timestamp.h" + #include "../common/classes/init.h" + #include "../common/classes/TempFile.h" ++#include "../common/pathtools.h" + #include "../common/utils_proto.h" + + #ifdef HAVE_UNISTD_H +@@ -3604,13 +3605,13 @@ public: + { + prefix = Config::getRootDirectory(); + if (prefix.isEmpty() && !GetProgramFilesDir(prefix)) +- prefix = FB_CONFDIR[0] ? FB_CONFDIR : FB_PREFIX; ++ prefix = FB_CONFDIR[0] ? single_path_relocation(FB_BINDIR,FB_CONFDIR) : single_path_relocation(FB_BINDIR,FB_PREFIX); + } + catch (Firebird::fatal_exception&) + { + // CVC: Presumably here we failed because the config file can't be located. + if (!GetProgramFilesDir(prefix)) +- prefix = FB_CONFDIR[0] ? FB_CONFDIR : FB_PREFIX; ++ prefix = FB_CONFDIR[0] ? single_path_relocation(FB_BINDIR,FB_CONFDIR) : single_path_relocation(FB_BINDIR,FB_PREFIX); + } + prefix.copyTo(fb_prefix_val, sizeof(fb_prefix_val)); + fb_prefix = fb_prefix_val; +@@ -3693,7 +3694,7 @@ public: + Firebird::PathName msgPrefix; + if (!fb_utils::readenv(FB_MSG_ENV, msgPrefix)) + { +- msgPrefix = FB_MSGDIR[0] ? FB_MSGDIR : prefix; ++ msgPrefix = FB_MSGDIR[0] ? single_path_relocation(FB_BINDIR,FB_MSGDIR) : prefix; + } + msgPrefix.copyTo(fb_prefix_msg_val, sizeof(fb_prefix_msg_val)); + fb_prefix_msg = fb_prefix_msg_val; +diff --git a/src/jrd/os/win32/config_root.cpp b/src/jrd/os/win32/config_root.cpp +index f5c7d54b51..deb33cc713 100644 +--- a/src/jrd/os/win32/config_root.cpp ++++ b/src/jrd/os/win32/config_root.cpp +@@ -28,6 +28,7 @@ + #include "fb_types.h" + #include "../../../common/classes/fb_string.h" + #include "../../../common/dllinst.h" ++#include "../../../common/pathtools.h" + + #include "../jrd/os/config_root.h" + #include "../utilities/install/registry.h" +@@ -88,7 +89,7 @@ bool getBinFromHInstance(PathName& root) + void ConfigRoot::osConfigRoot() + { + // check the registry first +-#if defined(SUPERCLIENT) ++#if defined(SUPERCLIENT) && !defined(__MINGW32__) + if (getRootFromRegistry(root_dir)) + { + addSlash(); +@@ -125,7 +126,7 @@ void ConfigRoot::osConfigRoot() + } + + // As a last resort get it from the default install directory +- root_dir = FB_PREFIX; ++ root_dir = single_path_relocation(FB_BINDIR,FB_PREFIX); + } + + void ConfigRoot::osConfigInstallDir() +@@ -159,5 +160,5 @@ void ConfigRoot::osConfigInstallDir() + } + + // As a last resort get it from the default install directory +- install_dir = FB_PREFIX; ++ install_dir = single_path_relocation(FB_BINDIR,FB_PREFIX); + } +diff --git a/src/jrd/os/win32/path_utils.cpp b/src/jrd/os/win32/path_utils.cpp +index 6e22f15704..48186bcec4 100644 +--- a/src/jrd/os/win32/path_utils.cpp ++++ b/src/jrd/os/win32/path_utils.cpp +@@ -4,8 +4,11 @@ + #include // _access + + /// The Win32 implementation of the path_utils abstraction. +- ++#if defined(__MINGW32__) ++const char PathUtils::dir_sep = '/'; ++#else + const char PathUtils::dir_sep = '\\'; ++#endif + const char* PathUtils::up_dir_link = ".."; + + class Win32DirItr : public PathUtils::dir_iterator +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0025-Fix-building-gstat.patch b/mingw-w64-firebird2-git/0025-Fix-building-gstat.patch new file mode 100644 index 0000000000..778b73e632 --- /dev/null +++ b/mingw-w64-firebird2-git/0025-Fix-building-gstat.patch @@ -0,0 +1,25 @@ +From ab52abf519b5121f1a7d820fc1bb86b253e908b6 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Tue, 11 Nov 2014 09:27:40 +0300 +Subject: [PATCH 25/27] Fix building gstat + +--- + src/utilities/gstat/dba.epp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/utilities/gstat/dba.epp b/src/utilities/gstat/dba.epp +index 76a10c5b49..71e6cf5bf8 100644 +--- a/src/utilities/gstat/dba.epp ++++ b/src/utilities/gstat/dba.epp +@@ -42,7 +42,7 @@ + #include "../jrd/ibase.h" + #include "../jrd/ods.h" + #include "../jrd/btn.h" +-#include "../jrd/svc.h" ++#include "../jrd/ThreadData.h" + #include "../jrd/license.h" + #include "../jrd/msg_encode.h" + #include "../jrd/gdsassert.h" +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0026-Fix-using-function-pointer.patch b/mingw-w64-firebird2-git/0026-Fix-using-function-pointer.patch new file mode 100644 index 0000000000..461bbf37da --- /dev/null +++ b/mingw-w64-firebird2-git/0026-Fix-using-function-pointer.patch @@ -0,0 +1,49 @@ +From d2f6452be919d2e2a77db67e6fdc7a2e498a091c Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 22 Nov 2015 17:09:05 +0300 +Subject: [PATCH 26/27] Fix using function pointer. + +--- + src/common/classes/locks.cpp | 3 ++- + src/common/classes/locks.h | 7 +++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/common/classes/locks.cpp b/src/common/classes/locks.cpp +index de6b2f8e36..aaf7f868d5 100644 +--- a/src/common/classes/locks.cpp ++++ b/src/common/classes/locks.cpp +@@ -124,7 +124,8 @@ BOOL WINAPI TryEnterCriticalSection_Win9X(CRITICAL_SECTION* cs) + + // On Win 98 and Win ME TryEnterCriticalSection is defined, but not implemented + // So direct linking to it won't hurt and will signal our incompatibility with Win 95 +-TryEnterCS::tTryEnterCriticalSection* TryEnterCS::m_funct = &TryEnterCriticalSection; ++TryEnterCS::tTryEnterCriticalSection TryEnterCS::m_funct = ++ reinterpret_cast(TryEnterCriticalSection); + + static TryEnterCS tryEnterCS; + +diff --git a/src/common/classes/locks.h b/src/common/classes/locks.h +index 75ba1943fb..358659201f 100644 +--- a/src/common/classes/locks.h ++++ b/src/common/classes/locks.h +@@ -60,14 +60,13 @@ public: + + static bool tryEnter(LPCRITICAL_SECTION lpCS) + { +- return ((*m_funct) (lpCS) == TRUE); ++ return ((m_funct) (lpCS) == TRUE); + } + + private: +- typedef WINBASEAPI BOOL WINAPI tTryEnterCriticalSection +- (LPCRITICAL_SECTION lpCriticalSection); ++ typedef BOOL (WINAPI *tTryEnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); + +- static tTryEnterCriticalSection* m_funct; ++ static tTryEnterCriticalSection m_funct; + }; + + class Mutex +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0027-The-operator-new-declaration-has-changed-slightly-in.patch b/mingw-w64-firebird2-git/0027-The-operator-new-declaration-has-changed-slightly-in.patch new file mode 100644 index 0000000000..b95f8399fa --- /dev/null +++ b/mingw-w64-firebird2-git/0027-The-operator-new-declaration-has-changed-slightly-in.patch @@ -0,0 +1,67 @@ +From a2575c3c96be502e4af420f50e6b816569330531 Mon Sep 17 00:00:00 2001 +From: Alexpux +Date: Sun, 22 Nov 2015 17:09:05 +0300 +Subject: [PATCH 27/27] The operator new declaration has changed slightly in + C++11. + +It has to do with the fact that the throwing exception specification is deprecated in C++11, +and the introduction of the nothrow declaration: +throw (std::bad_alloc) has been omitted +throw() is replaced with nothrow +--- + src/common/classes/alloc.cpp | 8 ++++---- + src/common/classes/alloc.h | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/common/classes/alloc.cpp b/src/common/classes/alloc.cpp +index 257030bccb..d6036ec2b2 100644 +--- a/src/common/classes/alloc.cpp ++++ b/src/common/classes/alloc.cpp +@@ -2124,20 +2124,20 @@ void AutoStorage::ProbeStack() const + + } // namespace Firebird + +-void* operator new(size_t s) THROW_BAD_ALLOC ++void* operator new(size_t s) + { + return Firebird::MemoryPool::globalAlloc(s); + } +-void* operator new[](size_t s) THROW_BAD_ALLOC ++void* operator new[](size_t s) + { + return Firebird::MemoryPool::globalAlloc(s); + } + +-void operator delete(void* mem) throw() ++void operator delete(void* mem) noexcept + { + Firebird::MemoryPool::globalFree(mem); + } +-void operator delete[](void* mem) throw() ++void operator delete[](void* mem) noexcept + { + Firebird::MemoryPool::globalFree(mem); + } +diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h +index 93ffe370cc..0c7e38f24d 100644 +--- a/src/common/classes/alloc.h ++++ b/src/common/classes/alloc.h +@@ -499,11 +499,11 @@ using Firebird::MemoryPool; + inline static MemoryPool* getDefaultMemoryPool() { return Firebird::MemoryPool::processMemoryPool; } + + // Global versions of operators new and delete +-void* operator new(size_t s) THROW_BAD_ALLOC; +-void* operator new[](size_t s) THROW_BAD_ALLOC; ++void* operator new(size_t s); ++void* operator new[](size_t s); + +-void operator delete(void* mem) throw(); +-void operator delete[](void* mem) throw(); ++void operator delete(void* mem) noexcept; ++void operator delete[](void* mem) noexcept; + + #ifdef DEBUG_GDS_ALLOC + inline void* operator new(size_t s, Firebird::MemoryPool& pool, const char* file, int line) +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0028-Fix-different-warnings.patch b/mingw-w64-firebird2-git/0028-Fix-different-warnings.patch new file mode 100644 index 0000000000..5f9fea4354 --- /dev/null +++ b/mingw-w64-firebird2-git/0028-Fix-different-warnings.patch @@ -0,0 +1,247 @@ +From 403cbaf0f0b7acbe469edaf6df35c591f8fecb17 Mon Sep 17 00:00:00 2001 +From: Alexey Pavlov +Date: Fri, 9 Jun 2017 14:57:58 +0300 +Subject: [PATCH 28/28] Fix different warnings. + +--- + src/common/classes/fb_string.cpp | 6 +++--- + src/common/classes/fb_string.h | 2 +- + src/common/cvt.cpp | 6 +++--- + src/gpre/sqe.cpp | 4 +++- + src/gpre/sql.cpp | 12 ++++++------ + src/include/fb_blk.h | 11 ++++++----- + src/jrd/Database.h | 4 ++-- + src/jrd/RuntimeStatistics.h | 8 ++++---- + src/jrd/common.h | 4 ++++ + src/jrd/gds.cpp | 2 +- + 10 files changed, 33 insertions(+), 26 deletions(-) + +diff --git a/src/common/classes/fb_string.cpp b/src/common/classes/fb_string.cpp +index 439bcfdbaa..9173634fca 100644 +--- a/src/common/classes/fb_string.cpp ++++ b/src/common/classes/fb_string.cpp +@@ -460,13 +460,13 @@ extern "C" { + return STRNCASECMP(s1, s2, n); + } + +- bool AbstractString::equalsNoCase(AbstractString::const_pointer string) const ++ bool AbstractString::equalsNoCase(AbstractString::const_pointer stringval) const + { +- size_t l = strlen(string); ++ size_t l = strlen(stringval); + if (l > length()) + { + l = length(); + } +- return (STRNCASECMP(c_str(), string, ++l) == 0); ++ return (STRNCASECMP(c_str(), stringval, ++l) == 0); + } + } // namespace Firebird +diff --git a/src/common/classes/fb_string.h b/src/common/classes/fb_string.h +index b1fea2703c..962176cad3 100644 +--- a/src/common/classes/fb_string.h ++++ b/src/common/classes/fb_string.h +@@ -425,7 +425,7 @@ namespace Firebird + return hash(c_str(), tableSize); + } + +- bool equalsNoCase(const_pointer string) const; ++ bool equalsNoCase(const_pointer stringval) const; + + inline AbstractString& append(const AbstractString& str) + { +diff --git a/src/common/cvt.cpp b/src/common/cvt.cpp +index 4389a0ae68..c5dc8d5307 100644 +--- a/src/common/cvt.cpp ++++ b/src/common/cvt.cpp +@@ -1671,11 +1671,11 @@ void CVT_move_common(const dsc* from, dsc* to, Callbacks* cb) + { + USHORT strtype_unused; + UCHAR* ptr; +- USHORT l = CVT_get_string_ptr_common(from, &strtype_unused, &ptr, NULL, 0, cb); ++ USHORT sval = CVT_get_string_ptr_common(from, &strtype_unused, &ptr, NULL, 0, cb); + +- if (l == to->dsc_length) ++ if (sval == to->dsc_length) + { +- memcpy(to->dsc_address, ptr, l); ++ memcpy(to->dsc_address, ptr, sval); + return; + } + } +diff --git a/src/gpre/sqe.cpp b/src/gpre/sqe.cpp +index 61e989c3fa..bcd8b11065 100644 +--- a/src/gpre/sqe.cpp ++++ b/src/gpre/sqe.cpp +@@ -1721,6 +1721,7 @@ static gpre_ctx* par_alias_list( gpre_req* request, gpre_nod* alias_list) + // a base table having a matching table name or alias + + if (!context) ++ { + for (context = request->req_contexts; context; context = context->ctx_next) + { + if (context->ctx_scope_level != request->req_scope_level) +@@ -1738,7 +1739,8 @@ static gpre_ctx* par_alias_list( gpre_req* request, gpre_nod* alias_list) + fb_utils::snprintf(error_string, sizeof(error_string), + "there is no alias or table named %s at this scope level", + (TEXT*) *arg); +- PAR_error(error_string); ++ PAR_error(error_string); ++ } + } + + // find the base table using the specified alias list, skipping the first one +diff --git a/src/gpre/sql.cpp b/src/gpre/sql.cpp +index 1f42573e41..32df2a2b03 100644 +--- a/src/gpre/sql.cpp ++++ b/src/gpre/sql.cpp +@@ -5159,7 +5159,7 @@ static act* act_upsert(void) + + if (MSC_match(KW_RETURNING)) + { +- gpre_nod* value_list = SQE_list(SQE_value_or_null, NULL, false); ++ gpre_nod* value_list2 = SQE_list(SQE_value_or_null, NULL, false); + + if (!MSC_match(KW_INTO)) + CPR_s_error("INTO"); +@@ -5177,7 +5177,7 @@ static act* act_upsert(void) + gpre_sym* new_ctx_sym = MSC_symbol(SYM_context, NEW_CONTEXT, strlen(NEW_CONTEXT), update_context); + HSH_insert(new_ctx_sym); + +- upd_ret_list = return_values(request, value_list, var_list); ++ upd_ret_list = return_values(request, value_list2, var_list); + + // restore the insertion context back + +@@ -5186,12 +5186,12 @@ static act* act_upsert(void) + + new_ctx_sym->sym_object = insert_context; + +- ins_ret_list = return_values(request, value_list, var_list); ++ ins_ret_list = return_values(request, value_list2, var_list); + +- for (int i = 0; i < value_list->nod_count; i++) +- SQE_resolve(&value_list->nod_arg[i], request, NULL); ++ for (int i = 0; i < value_list2->nod_count; i++) ++ SQE_resolve(&value_list2->nod_arg[i], request, NULL); + +- into(request, value_list, var_list); ++ into(request, value_list2, var_list); + ref_list = (ref*) var_list; + + HSH_remove(new_ctx_sym); +diff --git a/src/include/fb_blk.h b/src/include/fb_blk.h +index b57443f3c4..4929c525c4 100644 +--- a/src/include/fb_blk.h ++++ b/src/include/fb_blk.h +@@ -112,6 +112,7 @@ enum BlockType + rem_type_rsr + }; + ++static void * zero = (void *) 0; + + template + class TypedHandle +@@ -170,8 +171,8 @@ public: + + private: + // These operators are off-limits +- void* operator new(size_t s) { return 0; } +- void* operator new[](size_t s) { return 0; } ++ void* operator new(size_t s) { return zero; } ++ void* operator new[](size_t s) { return zero; } + }; + + template +@@ -194,15 +195,15 @@ public: + private: + // These operations are not supported on static repeat-base objects + void* operator new[](size_t s, MemoryPool& p) +- { return 0; } ++ { return zero; } + void operator delete[](void* mem, MemoryPool& p) + { } + void operator delete[](void* mem) + { } + + // These operators are off-limits +- void* operator new(size_t s) { return 0; } +- void* operator new[](size_t s) { return 0; } ++ void* operator new(size_t s) { return zero; } ++ void* operator new[](size_t s) { return zero; } + }; + + #endif // INCLUDE_FB_BLK +diff --git a/src/jrd/Database.h b/src/jrd/Database.h +index 4f81b88c90..62a5526638 100644 +--- a/src/jrd/Database.h ++++ b/src/jrd/Database.h +@@ -81,8 +81,8 @@ namespace Jrd + class TrigVector : public Firebird::ObjectsArray + { + public: +- TrigVector(Firebird::MemoryPool& pool) +- : Firebird::ObjectsArray(pool), ++ TrigVector(Firebird::MemoryPool& mempool) ++ : Firebird::ObjectsArray(mempool), + useCount(0) + { } + +diff --git a/src/jrd/RuntimeStatistics.h b/src/jrd/RuntimeStatistics.h +index d00b3fb61c..3543d89a2a 100644 +--- a/src/jrd/RuntimeStatistics.h ++++ b/src/jrd/RuntimeStatistics.h +@@ -101,8 +101,8 @@ public: + reset(); + } + +- explicit RuntimeStatistics(MemoryPool& pool) +- : Firebird::AutoStorage(pool), rel_counts(getPool()) ++ explicit RuntimeStatistics(MemoryPool& mempool) ++ : Firebird::AutoStorage(mempool), rel_counts(getPool()) + { + reset(); + } +@@ -117,8 +117,8 @@ public: + relChgNumber = other.relChgNumber; + } + +- RuntimeStatistics(MemoryPool& pool, const RuntimeStatistics& other) +- : Firebird::AutoStorage(pool), rel_counts(getPool()) ++ RuntimeStatistics(MemoryPool& mempool, const RuntimeStatistics& other) ++ : Firebird::AutoStorage(mempool), rel_counts(getPool()) + { + memcpy(values, other.values, sizeof(values)); + rel_counts = other.rel_counts; +diff --git a/src/jrd/common.h b/src/jrd/common.h +index 49e8b607d8..37fb209480 100644 +--- a/src/jrd/common.h ++++ b/src/jrd/common.h +@@ -494,7 +494,11 @@ extern "C" int remove(const char* path); + /* The following define is the prefix to go in front of a "d" or "u" + format item in a printf() format string, to indicate that the argument + is an SINT64 or FB_UINT64. */ ++#if !defined(__USE_MINGW_ANSI_STDIO) + #define QUADFORMAT "I64" ++#else ++#define QUADFORMAT "ll" ++#endif + /* The following macro creates a quad-sized constant, possibly one + which is too large to fit in a long int. The Microsoft compiler does + not permit the LL suffix which some other platforms require, but it +diff --git a/src/jrd/gds.cpp b/src/jrd/gds.cpp +index a802e8ce90..b603a8dde1 100644 +--- a/src/jrd/gds.cpp ++++ b/src/jrd/gds.cpp +@@ -122,7 +122,7 @@ static const TEXT gdslogid[] = ""; + + #ifdef WIN_NT + #include +-#if _MSC_VER <= 1500 ++#if defined(_MSC_VER) && (_MSC_VER<=1500) + #include + #endif + #define _WINSOCKAPI_ +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/0029-Fix-format-warnings.patch b/mingw-w64-firebird2-git/0029-Fix-format-warnings.patch new file mode 100644 index 0000000000..b4092c5a08 --- /dev/null +++ b/mingw-w64-firebird2-git/0029-Fix-format-warnings.patch @@ -0,0 +1,335 @@ +From 2b9a68b2a714f3cfa791e2dcb6b928b1b3a270a1 Mon Sep 17 00:00:00 2001 +From: Alexey Pavlov +Date: Fri, 9 Jun 2017 15:01:35 +0300 +Subject: [PATCH 29/29] Fix format warnings + +--- + src/gpre/c_cxx.cpp | 90 +++++++++++++++++++++++++++--------------------------- + 1 file changed, 45 insertions(+), 45 deletions(-) + +diff --git a/src/gpre/c_cxx.cpp b/src/gpre/c_cxx.cpp +index f8fe95964a..efff81cc68 100644 +--- a/src/gpre/c_cxx.cpp ++++ b/src/gpre/c_cxx.cpp +@@ -1226,7 +1226,7 @@ static void gen_compile( const act* action, int column) + fprintf(gpreGlob.out_file, "\n"); + align(column - INDENT); + for (; blob; blob = blob->blb_next) +- fprintf(gpreGlob.out_file, "isc_%d = ", blob->blb_ident); ++ fprintf(gpreGlob.out_file, "isc_%zu = ", blob->blb_ident); + fprintf(gpreGlob.out_file, "0;"); + } + } +@@ -1246,14 +1246,14 @@ static void gen_create_database( const act* action, int column) + const gpre_req* request = ((const mdbb*) action->act_object)->mdbb_dpb_request; + const gpre_dbb* db = request->req_database; + +- sprintf(s1, "isc_%dl", request->req_ident); +- sprintf(trname, "isc_%dt", request->req_ident); ++ sprintf(s1, "isc_%zul", request->req_ident); ++ sprintf(trname, "isc_%zut", request->req_ident); + + if (request->req_flags & REQ_extend_dpb) + { +- sprintf(s2, "isc_%dp", request->req_ident); ++ sprintf(s2, "isc_%zup", request->req_ident); + if (request->req_length) +- printa(column, "%s = isc_%d;", s2, request->req_ident); ++ printa(column, "%s = isc_%zu;", s2, request->req_ident); + else + printa(column, "%s = (char*) 0;", s2); + +@@ -1267,7 +1267,7 @@ static void gen_create_database( const act* action, int column) + db->dbb_r_lc_ctype ? db->dbb_r_lc_ctype : "(char*) 0"); + } + else +- sprintf(s2, "isc_%d", request->req_ident); ++ sprintf(s2, "isc_%zu", request->req_ident); + + PAT args; + args.pat_vector1 = status_vector(action); +@@ -1285,7 +1285,7 @@ static void gen_create_database( const act* action, int column) + if (request->req_flags & REQ_extend_dpb) + { + if (request->req_length) +- printa(column, "if (%s != isc_%d)", s2, request->req_ident); ++ printa(column, "if (%s != isc_%zu)", s2, request->req_ident); + printa(column + (request->req_length ? INDENT : 0), "isc_free ((char*) %s);", s2); + + // reset the length of the dpb +@@ -1303,7 +1303,7 @@ static void gen_create_database( const act* action, int column) + printa(column, "if (%s)", trname); + column += INDENT; + align(column); +- fprintf(gpreGlob.out_file, "isc_ddl (%s, &%s, &%s, (short) %d, isc_%d);", ++ fprintf(gpreGlob.out_file, "isc_ddl (%s, &%s, &%s, (short) %d, isc_%zu);", + status_vector(action), request->req_database->dbb_name->sym_string, + trname, request->req_length, request->req_ident); + column -= INDENT; +@@ -1356,7 +1356,7 @@ static void gen_cursor_init( const act* action, int column) + + if (action->act_request->req_flags & (REQ_sql_blob_open | REQ_sql_blob_create)) + { +- printa(column, "isc_%d = 0;", action->act_request->req_blobs->blb_ident); ++ printa(column, "isc_%zu = 0;", action->act_request->req_blobs->blb_ident); + } + } + +@@ -1547,7 +1547,7 @@ static void gen_ddl( const act* action, int column) + } + + align(column); +- fprintf(gpreGlob.out_file, "isc_ddl (%s, &%s, &%s, (short) %d, isc_%d);", ++ fprintf(gpreGlob.out_file, "isc_ddl (%s, &%s, &%s, (short) %d, isc_%zu);", + status_vector(action), + request->req_database->dbb_name->sym_string, + gpreGlob.transaction_name, request->req_length, request->req_ident); +@@ -2457,7 +2457,7 @@ static void gen_get_or_put_slice(const act* action, const ref* reference, bool g + gen_name(s1, reference, true); // blob handle + args.pat_string2 = s1; + args.pat_value1 = reference->ref_sdl_length; // slice description length +- sprintf(s2, "isc_%d", reference->ref_sdl_ident); // slice description ++ sprintf(s2, "isc_%zu", reference->ref_sdl_ident); // slice description + args.pat_string3 = s2; + + args.pat_long1 = reference->ref_field->fld_array_info->ary_size; +@@ -2468,7 +2468,7 @@ static void gen_get_or_put_slice(const act* action, const ref* reference, bool g + args.pat_string5 = reference->ref_value; + else + { +- sprintf(s4, "isc_%d", reference->ref_field->fld_array_info->ary_ident); ++ sprintf(s4, "isc_%zu", reference->ref_field->fld_array_info->ary_ident); + args.pat_string5 = s4; // array name + } + +@@ -2518,13 +2518,13 @@ static void gen_get_segment( const act* action, int column) + column += INDENT; + begin(column); + align(column); +- fprintf(gpreGlob.out_file, "isc_ftof (isc_%d, isc_%d, %s, isc_%d);", ++ fprintf(gpreGlob.out_file, "isc_ftof (isc_%zu, isc_%zu, %s, isc_%zu);", + blob->blb_buff_ident, blob->blb_len_ident, + into->ref_value, blob->blb_len_ident); + if (into->ref_null_value) + { + align(column); +- fprintf(gpreGlob.out_file, "%s = isc_%d;", into->ref_null_value, blob->blb_len_ident); ++ fprintf(gpreGlob.out_file, "%s = isc_%zu;", into->ref_null_value, blob->blb_len_ident); + } + endp(column); + column -= INDENT; +@@ -2696,9 +2696,9 @@ static void gen_put_segment( const act* action, int column) + blob = (blb*) action->act_request->req_blobs; + const ref* from = action->act_object; + align(column); +- fprintf(gpreGlob.out_file, "isc_%d = %s;", blob->blb_len_ident, from->ref_null_value); ++ fprintf(gpreGlob.out_file, "isc_%zu = %s;", blob->blb_len_ident, from->ref_null_value); + align(column); +- fprintf(gpreGlob.out_file, "isc_ftof (%s, isc_%d, isc_%d, isc_%d);", ++ fprintf(gpreGlob.out_file, "isc_ftof (%s, isc_%zu, isc_%zu, isc_%zu);", + from->ref_value, blob->blb_len_ident, + blob->blb_buff_ident, blob->blb_len_ident); + } +@@ -2857,32 +2857,32 @@ static void gen_request(const gpre_req* request) + + if (request->req_flags & REQ_extend_dpb) + { +- printa(0, "static char\n *isc_%dp;", request->req_ident); ++ printa(0, "static char\n *isc_%zup;", request->req_ident); + if (!request->req_length) +- printa(0, "static short\n isc_%dl = %d;", request->req_ident, request->req_length); ++ printa(0, "static short\n isc_%zul = %d;", request->req_ident, request->req_length); + } + + if (request->req_type == REQ_create_database) +- printa(0, "static %s\n *isc_%dt;", DCL_LONG, request->req_ident); ++ printa(0, "static %s\n *isc_%zut;", DCL_LONG, request->req_ident); + + if (request->req_flags & (REQ_sql_blob_open | REQ_sql_blob_create)) +- printa(0, "static isc_stmt_handle\n isc_%ds;\t\t/* sql statement handle */", ++ printa(0, "static isc_stmt_handle\n isc_%zus;\t\t/* sql statement handle */", + request->req_ident); + + if (request->req_length) + { + if (request->req_flags & REQ_sql_cursor) +- printa(0, "static isc_stmt_handle\n isc_%ds;\t\t/* sql statement handle */", ++ printa(0, "static isc_stmt_handle\n isc_%zus;\t\t/* sql statement handle */", + request->req_ident); + #ifdef SCROLLABLE_CURSORS + if (request->req_flags & REQ_scroll) + printa(0, "static short\n isc_%ddirection;\t\t/* last direction sent to engine */", + request->req_ident); + #endif +- printa(0, "static %sshort\n isc_%dl = %d;", ++ printa(0, "static %sshort\n isc_%zul = %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 %schar\n isc_%zu [] = {", CONST_STR, request->req_ident); + + const TEXT* string_type = "blr"; + if (gpreGlob.sw_raw) +@@ -2939,7 +2939,7 @@ static void gen_request(const gpre_req* request) + if (fb_print_blr(request->req_blr, request->req_length, gen_blr, 0, 0)) + CPR_error("internal error during BLR generation"); + } +- printa(INDENT, "};\t/* end of %s string for request isc_%d */\n", ++ printa(INDENT, "};\t/* end of %s string for request isc_%zu */\n", + string_type, request->req_ident); + } + +@@ -2951,15 +2951,15 @@ static void gen_request(const gpre_req* request) + { + if (reference->ref_sdl) + { +- printa(0, "static %sshort\n isc_%dl = %d;", CONST_STR, ++ printa(0, "static %sshort\n isc_%zul = %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 %schar\n isc_%zu [] = {", 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)) + CPR_error("internal error during SDL generation"); + +- printa(INDENT, "};\t/* end of sdl string for request isc_%d */\n", ++ printa(INDENT, "};\t/* end of sdl string for request isc_%zu */\n", + reference->ref_sdl_ident); + } + } +@@ -2982,9 +2982,9 @@ static void gen_request(const gpre_req* request) + if (request->req_type == REQ_slice) + { + printa(0, "static %s", DCL_LONG); +- printa(INDENT, "isc_%dv [%d],", request->req_ident, ++ printa(INDENT, "isc_%zuv [%d],", request->req_ident, + MAX(request->req_slice->slc_parameters, 1)); +- printa(INDENT, "isc_%ds;", request->req_ident); ++ printa(INDENT, "isc_%zus;", request->req_ident); + } + } + +@@ -3027,10 +3027,10 @@ static void gen_routine( const act* action, int column) + make_port(port, column); + for (const blb* blob = request->req_blobs; blob; blob = blob->blb_next) + { +- printa(column, "isc_blob_handle\t\tisc_%d;\t\t/* blob handle */", blob->blb_ident); +- printa(column, "char\t\t\tisc_%d [%d];\t/* blob segment */", ++ printa(column, "isc_blob_handle\t\tisc_%zu;\t\t/* blob handle */", blob->blb_ident); ++ printa(column, "char\t\t\tisc_%zu [%d];\t/* blob segment */", + blob->blb_buff_ident, blob->blb_seg_length); +- printa(column, "unsigned short\tisc_%d;\t\t/* segment length */", blob->blb_len_ident); ++ printa(column, "unsigned short\tisc_%zu;\t\t/* segment length */", blob->blb_len_ident); + } + } + } +@@ -3163,7 +3163,7 @@ static void gen_segment( const act* action, int column) + { + const blb* blob = (blb*) action->act_object; + +- printa(column, "isc_%d", ++ printa(column, "isc_%zu", + (action->act_type == ACT_segment) ? blob->blb_buff_ident : + (action->act_type == ACT_segment_length) ? blob->blb_len_ident : blob->blb_ident); + } +@@ -3254,7 +3254,7 @@ static void gen_slice( const act* action, const ref* var_reference, int column) + + // Compute array size + +- printa(column, "isc_%ds = %d", request->req_ident, slice->slc_field->fld_array->fld_length); ++ printa(column, "isc_%zus = %d", request->req_ident, slice->slc_field->fld_array->fld_length); + + const slc::slc_repeat* tail = slice->slc_rpt; + for (const slc::slc_repeat* const end = tail + slice->slc_dimensions; tail < end; ++tail) +@@ -3277,7 +3277,7 @@ static void gen_slice( const act* action, const ref* var_reference, int column) + const ref* reference; + for (reference = request->req_values; reference; reference = reference->ref_next) + { +- printa(column, "isc_%dv [%d] = %s;", ++ printa(column, "isc_%zuv [%d] = %s;", + request->req_ident, reference->ref_id, reference->ref_value); + } + +@@ -3422,7 +3422,7 @@ static void gen_t_start( const act* action, int column) + remaining = 256 - column - INDENT; + } + remaining -= length; +- fprintf(gpreGlob.out_file, ", &%s, (short) %d, isc_tpb_%d", ++ fprintf(gpreGlob.out_file, ", &%s, (short) %d, isc_tpb_%zu", + tpb_iterator->tpb_database->dbb_name->sym_string, + tpb_iterator->tpb_length, tpb_iterator->tpb_ident); + } +@@ -3450,7 +3450,7 @@ static void gen_tpb(const tpb* tpb_buffer, int column) + for (length = 0; length < column; length++) + *p++ = ' '; + +- sprintf(p, "isc_tpb_%d [%d] = {", tpb_buffer->tpb_ident, tpb_buffer->tpb_length); ++ sprintf(p, "isc_tpb_%zu [%d] = {", tpb_buffer->tpb_ident, tpb_buffer->tpb_length); + while (*p) + p++; + +@@ -3666,7 +3666,7 @@ static void make_array_declaration(ref* reference) + } + } + +- fprintf(gpreGlob.out_file, "static %s isc_%d", dtype, field->fld_array_info->ary_ident); ++ fprintf(gpreGlob.out_file, "static %s isc_%zu", dtype, field->fld_array_info->ary_ident); + + // Print out the dimension part of the declaration + +@@ -3748,7 +3748,7 @@ static void make_ok_test( const act* action, const gpre_req* request, int column + + static void make_port(const gpre_port* port, int column) + { +- printa(column, "struct isc_%d_struct {", port->por_ident); ++ printa(column, "struct isc_%zu_struct {", port->por_ident); + + for (const ref* reference = port->por_references; reference; reference = reference->ref_next) + { +@@ -3832,7 +3832,7 @@ static void make_port(const gpre_port* port, int column) + fprintf(gpreGlob.out_file, " %s isc_%d;\t/* %s */", dtype, reference->ref_ident, name); + } + +- printa(column, "} isc_%d;", port->por_ident); ++ printa(column, "} isc_%zu;", port->por_ident); + } + + +@@ -3851,12 +3851,12 @@ static void make_ready(const gpre_dbb* db, + + if (request) + { +- sprintf(s1, "isc_%dl", request->req_ident); ++ sprintf(s1, "isc_%zul", request->req_ident); + + if (request->req_flags & REQ_extend_dpb) +- sprintf(s2, "isc_%dp", request->req_ident); ++ sprintf(s2, "isc_%zup", request->req_ident); + else +- sprintf(s2, "isc_%d", request->req_ident); ++ sprintf(s2, "isc_%zu", request->req_ident); + + // if the dpb needs to be extended at runtime to include items + // in host variables, do so here; this assumes that there is +@@ -3865,7 +3865,7 @@ static void make_ready(const gpre_dbb* db, + if (request->req_flags & REQ_extend_dpb) + { + if (request->req_length) +- printa(column, "%s = isc_%d;", s2, request->req_ident); ++ printa(column, "%s = isc_%zu;", s2, request->req_ident); + else + printa(column, "%s = (char*) 0;", s2); + +@@ -3900,7 +3900,7 @@ static void make_ready(const gpre_dbb* db, + if (request && request->req_flags & REQ_extend_dpb) + { + if (request->req_length) +- printa(column, "if (%s != isc_%d)", s2, request->req_ident); ++ printa(column, "if (%s != isc_%zu)", s2, request->req_ident); + printa(column + (request->req_length ? INDENT : 0), "isc_free ((char*) %s);", s2); + + // reset the length of the dpb +-- +2.13.0 + diff --git a/mingw-w64-firebird2-git/PKGBUILD b/mingw-w64-firebird2-git/PKGBUILD index fd0e4e5947..cee0df0160 100644 --- a/mingw-w64-firebird2-git/PKGBUILD +++ b/mingw-w64-firebird2-git/PKGBUILD @@ -1,9 +1,10 @@ # Maintainer: Alexey Pavlov +# Package building only when previous package is not installed _realname=firebird pkgbase=mingw-w64-${_realname}2-git pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}2-git" -pkgver=2.5.8.27063.a2575c3c96 +pkgver=2.5.8.27063.403cbaf0f0 pkgrel=1 pkgdesc="Cross-platform relational database offering many ANSI SQL standard features - version 2.x (mingw-w64)" url="http://www.firebirdsql.org/" @@ -24,10 +25,34 @@ makedepends=(#"${MINGW_PACKAGE_PREFIX}-btyacc" # Maybe add check in firebird pre ) options=('!debug' 'strip') source=("${_realname}"::"git+https://github.com/FirebirdSQL/firebird.git#branch=B2_5_Release" - mingw-w64-2_5.patch) -sha256sums=('SKIP' - '22f5f762ef130dc619e9278861ffe87f75bc21b850ad6c9c035c12d01372cb93') - + 0001-Remove-hardcoded-march-to-allow-64-bit-builds.patch + 0002-Always-use-Win32-threads-for-mingw.patch + 0003-Define-AMD64-for-64-bit-mingw.patch + 0004-mingw-w64-have-isinf.patch + 0005-Fix-cast-error.patch + 0006-mingw-w64-don-t-need-hack-for-SecPkgContext_AccessTo.patch + 0007-Use-modern-ICU-libraries-when-link-with-system-wide-.patch + 0008-mingw-w64-don-t-have-win98-support.patch + 0009-Fix-redefinition-of-matherr.patch + 0010-Don-t-export-gds__print_pool-as-it-not-part-of-API-a.patch + 0011-mingw-w64-have-fenv.h.patch + 0012-Fix-cast-error-for-64-bit.patch + 0013-Fix-source-extension.patch + 0014-Move-extra-mingw-sources-definitions-for-fbintl-to-M.patch + 0015-Add-missing-sources-for-utils-building.patch + 0016-smtp_server-Add-win32-platform-files.patch + 0017-Fix-building-net_server-and-mp_server-with-mingw.patch + 0018-For-mingw-place-dll-s-into-BIN-and-generate-import-l.patch + 0019-Don-t-install-unix-files-for-Windows-platform.patch + 0020-Fix-rules-to-use-variables.patch + 0021-Auto-detect-WINDRES-with-autoconf.patch + 0022-Create-symlinks-of-fbembed-only-if-names-are-differe.patch + 0023-mod_loader-mingw-always-link-to-msvcrt.dll.patch + 0024-Relocate-paths-for-unix-like-files-layout.patch + 0025-Fix-building-gstat.patch + 0026-Fix-using-function-pointer.patch + 0027-The-operator-new-declaration-has-changed-slightly-in.patch + 0028-Fix-different-warnings.patch) pkgver() { cd "${_realname}" @@ -37,7 +62,34 @@ pkgver() { prepare() { cd ${_realname} - git am --committer-date-is-author-date ${srcdir}/mingw-w64-2_5.patch + git am --committer-date-is-author-date ${srcdir}/0001-Remove-hardcoded-march-to-allow-64-bit-builds.patch + git am --committer-date-is-author-date ${srcdir}/0002-Always-use-Win32-threads-for-mingw.patch + git am --committer-date-is-author-date ${srcdir}/0003-Define-AMD64-for-64-bit-mingw.patch + git am --committer-date-is-author-date ${srcdir}/0004-mingw-w64-have-isinf.patch + git am --committer-date-is-author-date ${srcdir}/0005-Fix-cast-error.patch + git am --committer-date-is-author-date ${srcdir}/0006-mingw-w64-don-t-need-hack-for-SecPkgContext_AccessTo.patch + git am --committer-date-is-author-date ${srcdir}/0007-Use-modern-ICU-libraries-when-link-with-system-wide-.patch + git am --committer-date-is-author-date ${srcdir}/0008-mingw-w64-don-t-have-win98-support.patch + git am --committer-date-is-author-date ${srcdir}/0009-Fix-redefinition-of-matherr.patch + git am --committer-date-is-author-date ${srcdir}/0010-Don-t-export-gds__print_pool-as-it-not-part-of-API-a.patch + git am --committer-date-is-author-date ${srcdir}/0011-mingw-w64-have-fenv.h.patch + git am --committer-date-is-author-date ${srcdir}/0012-Fix-cast-error-for-64-bit.patch + git am --committer-date-is-author-date ${srcdir}/0013-Fix-source-extension.patch + git am --committer-date-is-author-date ${srcdir}/0014-Move-extra-mingw-sources-definitions-for-fbintl-to-M.patch + git am --committer-date-is-author-date ${srcdir}/0015-Add-missing-sources-for-utils-building.patch + git am --committer-date-is-author-date ${srcdir}/0016-smtp_server-Add-win32-platform-files.patch + git am --committer-date-is-author-date ${srcdir}/0017-Fix-building-net_server-and-mp_server-with-mingw.patch + git am --committer-date-is-author-date ${srcdir}/0018-For-mingw-place-dll-s-into-BIN-and-generate-import-l.patch + git am --committer-date-is-author-date ${srcdir}/0019-Don-t-install-unix-files-for-Windows-platform.patch + git am --committer-date-is-author-date ${srcdir}/0020-Fix-rules-to-use-variables.patch + git am --committer-date-is-author-date ${srcdir}/0021-Auto-detect-WINDRES-with-autoconf.patch + git am --committer-date-is-author-date ${srcdir}/0022-Create-symlinks-of-fbembed-only-if-names-are-differe.patch + git am --committer-date-is-author-date ${srcdir}/0023-mod_loader-mingw-always-link-to-msvcrt.dll.patch + git am --committer-date-is-author-date ${srcdir}/0024-Relocate-paths-for-unix-like-files-layout.patch + git am --committer-date-is-author-date ${srcdir}/0025-Fix-building-gstat.patch + git am --committer-date-is-author-date ${srcdir}/0026-Fix-using-function-pointer.patch + git am --committer-date-is-author-date ${srcdir}/0027-The-operator-new-declaration-has-changed-slightly-in.patch + git am --committer-date-is-author-date ${srcdir}/0028-Fix-different-warnings.patch NOCONFIGURE=1 ./autogen.sh } @@ -109,3 +161,33 @@ package() { # Remove build tools rm -f ${pkgdir}${MINGW_PREFIX}/bin/{brltable,codes,create_db,*build*,*boot*,*static*,*current*}.exe } + +sha256sums=('SKIP' + 'eaa4b490dfaac611001d06f9e1f0fc782340c9631808cb4ded16148f16498146' + '6d8c2321a4fe693ac444db650b090fd841cc7c7b914bb30d0fe76559ca1be029' + '563193c16e0004f0b4123f153b09462fde08e8a1ab9de25c6de762a7a5751b1e' + '299b10113b00c7aa8dd94334724f87ec7abac9dbad5025f2e86d576ea5eae06a' + '56c702d53c017af3a371a6064d3280547c0e09bddadbcf1d8761a47614ce6c76' + 'e51633c91aa54d2433cadc6726fabb1946e5b19cd928510c41112718607589a3' + '37026200645a621283f1d2ff7f50f719cea352838d0c3bdf65dbcc7f6fc94b5f' + 'efc7fb392127fbeda7f798fca53fd4c8dafb6b9bdf231bf0fe11900fb058a7b7' + 'c50164f18a1fa8e5369b7f64ef703936fe62c7499a06a601582441f9c9da2ef4' + '983fe70bc300265bf1e2690bdfeaab19031a4f80fd74f940948e9a56fda293fd' + '61fda2ac6e4e0349b1a60212c2b677581a562b4f08f741bef41c764fc9d10def' + 'aec6b53a9b1319d5eceec2dbb823c7f0b675d11b9bde12bb5cc921398e09979e' + '559656a9f6234460ed979b7c743ab8629a954a6ec6e89bd981b5f471490b12c7' + 'b6b9251c231f2551d70376b6c6e27879f3fcaf37d657e4ec81f0759a4d747df2' + 'e6bc726aae8e519300d8d9ddddebc23f13f1b3f40e5b80d97845ee82e0755d9d' + 'c34e0a04b015096434fad579c3e3de79cb08ae68a40f285d0159221bdee12365' + '2e104b68083bd010a2d54ae23ccbe70ddfcaa220cc400acf850b5462380955bb' + '7a84483a48d7d92177d8892c03e3291e3c693f365c7b5c0b38eb5d04d7e589cb' + '80e7741f59815024ace8c1f662c37f5f6c3618890d83b9c94ee074f181e2ea62' + '0439855ce3e58b3b41a0268c0135f3f3600e0ce3015706eefcd155643c590f73' + 'e927670f2ef41cdb1f13f300308d75eb7de7b680c2e40246b65a0236fe8c2fad' + '865abc7226916fd4503a80ed5555a835d1774a4659fd32b49fdaa38e8f5d3353' + '5896a3a0b2732a9f835c183ea3d1269e1541428ce11c27b1f15fc3d683da8310' + '8a23055594e2bc3f4857f141417c8864ff02d533d94a3ede1cbbc5bdba68c158' + '32a3520e588f0cc6648dfdf66f5a2579ff67d4db30ecdaac69bcf275b8b8c919' + '2e2ee6f9c6d91a707b12666fa340c31b4f8edb8e910cd7ff08d6cfed5ed4c2d2' + '1c3cc11e3c202974aed83059a409cba881d591c6665a9564709c3eef6b4c9a46' + 'd04a94c9900166c095b6d5b1b51e6c3504441a62508d56497bbd74e8a981b94b') diff --git a/mingw-w64-firebird2-git/mingw-w64-2_5.patch b/mingw-w64-firebird2-git/mingw-w64-2_5.patch1 similarity index 98% rename from mingw-w64-firebird2-git/mingw-w64-2_5.patch rename to mingw-w64-firebird2-git/mingw-w64-2_5.patch1 index 83677b9584..98176c4337 100644 --- a/mingw-w64-firebird2-git/mingw-w64-2_5.patch +++ b/mingw-w64-firebird2-git/mingw-w64-2_5.patch1 @@ -93,21 +93,15 @@ diff --git a/src/common/classes/FpeControl.h b/src/common/classes/FpeControl.h index e0e36ac..363cad5 100644 --- a/src/common/classes/FpeControl.h +++ b/src/common/classes/FpeControl.h -@@ -217,6 +217,7 @@ private: +@@ -217,7 +217,7 @@ private: // getting a portable isinf() is harder than you would expect -+#if !defined(__MINGW32__) - #ifdef WIN_NT +-#ifdef WIN_NT ++#if defined(WIN_NT) && !defined(__MINGW32__) inline bool isinf(double x) { -@@ -231,5 +231,6 @@ - } - #endif // isinf - #endif // WIN_NT -+#endif // __MINGW32__ - - #endif //CLASSES_FPE_CONTROL_H + return (!_finite (x) && !isnan(x)); -- 2.6.3 @@ -3036,60 +3030,59 @@ diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h index de6b2f8..aaf7f86 100644 --- a/src/common/classes/alloc.h +++ b/src/common/classes/alloc.h -@@ -499,18 +499,18 @@ +@@ -499,29 +499,29 @@ inline static MemoryPool* getDefaultMemoryPool() { return Firebird::MemoryPool::processMemoryPool; } // Global versions of operators new and delete -void* operator new(size_t s) THROW_BAD_ALLOC; -void* operator new[](size_t s) THROW_BAD_ALLOC; -+void* operator new(size_t s); -+void* operator new[](size_t s); ++void* operator new(std::size_t s) THROW_BAD_ALLOC; ++void* operator new[](std::size_t s) THROW_BAD_ALLOC; --void operator delete(void* mem) throw(); --void operator delete[](void* mem) throw(); -+void operator delete(void* mem) noexcept; -+void operator delete[](void* mem) noexcept; + void operator delete(void* mem) throw(); + void operator delete[](void* mem) throw(); #ifdef DEBUG_GDS_ALLOC -inline void* operator new(size_t s, Firebird::MemoryPool& pool, const char* file, int line) -+inline void* operator new(size_t s, Firebird::MemoryPool& pool, const char* file, int line) ++inline void* operator new(std::size_t s, Firebird::MemoryPool& pool, const char* file, int line) { return pool.allocate(s, file, line); } -inline void* operator new[](size_t s, Firebird::MemoryPool& pool, const char* file, int line) -+inline void* operator new[](size_t s, Firebird::MemoryPool& pool, const char* file, int line) ++inline void* operator new[](std::size_t s, Firebird::MemoryPool& pool, const char* file, int line) { return pool.allocate(s, file, line); } + #define FB_NEW(pool) new(pool, __FILE__, __LINE__) + #define FB_NEW_RPT(pool, count) new(pool, count, __FILE__, __LINE__) + #else +-inline void* operator new(size_t s, Firebird::MemoryPool& pool) ++inline void* operator new(std::size_t s, Firebird::MemoryPool& pool) + { + return pool.allocate(s); + } +-inline void* operator new[](size_t s, Firebird::MemoryPool& pool) ++inline void* operator new[](std::size_t s, Firebird::MemoryPool& pool) + { + return pool.allocate(s); + } diff --git a/src/common/classes/alloc.cpp b/src/common/classes/alloc.cpp index de6b2f8..aaf7f86 100644 --- a/src/common/classes/alloc.cpp +++ b/src/common/classes/alloc.cpp -@@ -2124,19 +2124,19 @@ +@@ -2124,11 +2124,11 @@ } // namespace Firebird -void* operator new(size_t s) THROW_BAD_ALLOC -+void* operator new(size_t s) ++void* operator new(std::size_t s) THROW_BAD_ALLOC { return Firebird::MemoryPool::globalAlloc(s); } -void* operator new[](size_t s) THROW_BAD_ALLOC -+void* operator new[](size_t s) ++void* operator new[](std::size_t s) THROW_BAD_ALLOC { return Firebird::MemoryPool::globalAlloc(s); - } - --void operator delete(void* mem) throw() -+void operator delete(void* mem) noexcept - { - Firebird::MemoryPool::globalFree(mem); - } --void operator delete[](void* mem) throw() -+void operator delete[](void* mem) noexcept - { - Firebird::MemoryPool::globalFree(mem); - } -- 2.6.3