Files
MINGW-packages/mingw-w64-firebird2-git/mingw-w64-2_5.patch
2015-07-13 10:16:40 +03:00

3038 lines
95 KiB
Diff

From 040e7991a66b7a116c2b2aec3845070feae9b1d6 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 07:39:37 +0300
Subject: [PATCH] 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 fd36abe..04e0978 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.4.3
From 388764fb68898fe4f2d2c2032eb20dd537221b32 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 06:18:02 +0300
Subject: [PATCH] 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 ae54880..49e8b60 100644
--- a/src/jrd/common.h
+++ b/src/jrd/common.h
@@ -65,7 +65,7 @@
#include <unistd.h>
#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.4.3
From 25ab2a5c3452e500fb88929f8b31b4b15e9e37ad Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 08:56:28 +0300
Subject: [PATCH] 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 86e89f1..d345348 100644
--- a/configure.in
+++ b/configure.in
@@ -463,7 +463,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.4.3
From eebccb1a6b54c304e71295b4e0681fb1bc06fc59 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 09:20:35 +0300
Subject: [PATCH] mingw-w64 have isinf
---
src/common/classes/FpeControl.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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,7 +217,7 @@ private:
// getting a portable isinf() is harder than you would expect
-#ifdef WIN_NT
+#if defined(WIN_NT) && !defined(__MINGW32__)
inline bool isinf(double x)
{
return (!_finite (x) && !isnan(x));
--
2.4.3
From 74d9460e370d88aace248cb83a77c70c998c6d9b Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 09:57:27 +0300
Subject: [PATCH] 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 c3816a8..f05de04 100644
--- a/src/remote/inet.cpp
+++ b/src/remote/inet.cpp
@@ -1851,7 +1851,7 @@ static void wsaExitHandler(void*)
}
-static int fork(SOCKET old_handle, USHORT flag)
+static int fork(SOCKET old_handle, DWORD flag)
{
/**************************************
*
@@ -1908,7 +1908,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.4.3
From ca424f7f14051b4bb2dcb6f2a78f62dec372ed47 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 10:08:42 +0300
Subject: [PATCH] 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 d420041..15b859c 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.4.3
From ee27fb5a5b44aaa6c8cdf2e9bb98a8cafc85e51f Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 10:09:19 +0300
Subject: [PATCH] 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 04e0978..7523670 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.4.3
From 091fa8c6af051c2b2c28cc3fe7151fdcfbada1a7 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 13:28:03 +0300
Subject: [PATCH] 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 bbb9440..de6b2f8 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.4.3
From 0d645a60d9428071de004b66a5b42da71be6b44c Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 15:47:34 +0300
Subject: [PATCH] Fix using function pointer.
---
src/common/classes/locks.cpp | 2 +-
src/common/classes/locks.h | 7 +++----
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/common/classes/locks.cpp b/src/common/classes/locks.cpp
index de6b2f8..321da36 100644
--- a/src/common/classes/locks.cpp
+++ b/src/common/classes/locks.cpp
@@ -124,7 +124,7 @@ 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 = TryEnterCriticalSection;
static TryEnterCS tryEnterCS;
diff --git a/src/common/classes/locks.h b/src/common/classes/locks.h
index 75ba194..d2ddb7d 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.4.3
From fe9183946307439cf80717e0a5d73834ff82cde1 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 18:54:37 +0300
Subject: [PATCH] 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 c5a620d..9017228 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.4.3
From 1f2879b2cd476e9260c335951a21f0d5d9876618 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 21:44:53 +0300
Subject: [PATCH] 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 e3949fc..0b6852f 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.4.3
From 0bfbf421ab2e5dcfe9af435c88c86a114f38c94e Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 19 Nov 2014 22:06:27 +0300
Subject: [PATCH] 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 363cad5..93e48be 100644
--- a/src/common/classes/FpeControl.h
+++ b/src/common/classes/FpeControl.h
@@ -30,7 +30,7 @@
#define CLASSES_FPE_CONTROL_H
#include <math.h>
-#if defined(WIN_NT)
+#if defined(_MSC_VER)
#include <float.h>
#else
#include <fenv.h>
@@ -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.4.3
From 2451d9f71a68b84d3256d8e71b2feefc2508829e Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Fri, 21 Nov 2014 12:38:29 +0300
Subject: [PATCH] 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 fd0f75c..a0bf167 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.4.3
From ae55d9f83c245655ad4cfbc2c7de79bcac5b3774 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Fri, 21 Nov 2014 14:21:32 +0300
Subject: [PATCH] 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 7523670..ac1327c 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.4.3
From 54226188d61f2edbbe8453b8f93e7c8a6288913e Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Sat, 22 Nov 2014 12:03:41 +0300
Subject: [PATCH] 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 57ecb34..8d1e4e4 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
@@ -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.4.3
From 96ce4d2f57a06a1643b5864cc74fb00928b237fd Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Sat, 22 Nov 2014 22:59:59 +0300
Subject: [PATCH] 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 2efa520..803ea4f 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 dab8911..70bfab7 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 3d1a98f..8488a05 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 0f1a09e..daee0d8 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.4.3
From 665da4221ab9a54a2d927f506956e8f1ee72bb00 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Sun, 23 Nov 2014 00:13:24 +0300
Subject: [PATCH] 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 d59b07a..ad471fd 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.4.3
From 19ad463e1d0eb2fbe94a51fb7bd3644feb1bcc05 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Sun, 23 Nov 2014 13:27:02 +0300
Subject: [PATCH] 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 ad471fd..99ddd19 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 1bc3872..f386021 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.4.3
From a27a60606a72b99c9956b4188d1b31d38159fb9c Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 26 Nov 2014 09:27:40 +0300
Subject: [PATCH] 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 | 707 +++++++++++++++++++++++++++++++++++++++
builds/win32/defs/fbclient64.def | 361 ++++++++++++++++++++
4 files changed, 1104 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 bced0da..bc96ceb 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 ac1327c..8e514d8 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 0000000..b14e89a
--- /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 0000000..ce3875c
--- /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.4.3
From 6d98c3bf146bb2f937166fd44a9a8c3045919f25 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 26 Nov 2014 12:25:47 +0300
Subject: [PATCH] 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 d345348..346a94d 100644
--- a/configure.in
+++ b/configure.in
@@ -1313,32 +1313,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
@@ -1438,6 +1445,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.4.3
From a4ee44393c1773cf58914e06657b66842041237e Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 26 Nov 2014 16:15:47 +0300
Subject: [PATCH] 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 3137649..ade180b 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 c1b61a6..68016cc 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 bc96ceb..2e60fd3 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.4.3
From 5b6eb56e1b994c86a415c2fa3c9e20ce1aa7a127 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Sun, 30 Nov 2014 15:08:19 +0300
Subject: [PATCH] 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 2e60fd3..8e3a39f 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 a784cb2..600b8f9 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=$(<D) $< $@
+$(OBJ)/%.res: $(SRC_ROOT)/%.rc
+ $(RC) --output-format=coff --include-dir=$(<D) $< $@
diff --git a/builds/posix/make.shared.targets b/builds/posix/make.shared.targets
index ff5c2a2..f881106 100644
--- a/builds/posix/make.shared.targets
+++ b/builds/posix/make.shared.targets
@@ -93,16 +93,16 @@ $(BLRTABLE): $(BLRTABLE_Objects)
# Adding resources as prerequisite for some files
-$(FilesToAddVersionInfo): $(GEN_ROOT)/jrd/version.res
-$(FilesToAddDialog): $(GEN_ROOT)/remote/os/win32/window.res
-$(FilesToAddDialog2): $(GEN_ROOT)/iscguard/iscguard.res
+$(FilesToAddVersionInfo): $(OBJ)/jrd/version.res
+$(FilesToAddDialog): $(OBJ)/remote/os/win32/window.res
+$(FilesToAddDialog2): $(OBJ)/iscguard/iscguard.res
# Explicit dependence of resource script
-$(GEN_ROOT)/remote/os/win32/window.res: $(SRC_ROOT)/remote/os/win32/window.rc $(SRC_ROOT)/remote/os/win32/window.rh \
+$(OBJ)/remote/os/win32/window.res: $(SRC_ROOT)/remote/os/win32/window.rc $(SRC_ROOT)/remote/os/win32/window.rh \
$(SRC_ROOT)/jrd/version.rc $(SRC_ROOT)/jrd/build_no.h $(SRC_ROOT)/remote/os/win32/property.rc \
$(SRC_ROOT)/remote/os/win32/property.rh
-$(GEN_ROOT)/iscguard/iscguard.res: $(SRC_ROOT)/iscguard/iscguard.rc $(SRC_ROOT)/iscguard/iscguard.rh \
+$(OBJ)/iscguard/iscguard.res: $(SRC_ROOT)/iscguard/iscguard.rc $(SRC_ROOT)/iscguard/iscguard.rh \
$(SRC_ROOT)/jrd/version.rc
.PHONY: FORCE
diff --git a/configure.in b/configure.in
index 346a94d..35400d3 100644
--- a/configure.in
+++ b/configure.in
@@ -683,6 +683,16 @@ AC_LIBTOOL_DLOPEN
AC_LIBTOOL_WIN32_DLL
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
+if test $PLATFORM = win32; then
+ # Checks for mingw resource compiler.
+ AC_CHECK_PROGS([RC],
+ [$target-windres \
+ windres])
+
+ if test -z "${RC}"; then
+ AC_MSG_ERROR(windres command is not found.);
+ fi
+fi
dnl Check for system header files
AC_HEADER_DIRENT
--
2.4.3
From ef49c8b8fe8373c9490a51e9341333039d5b037a Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 26 Nov 2014 16:23:09 +0300
Subject: [PATCH] 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 d919ba2..2e70ab9 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.4.3
From ed78858f827e8ba9969e81580863012fa640a073 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Wed, 3 Dec 2014 14:23:31 +0300
Subject: [PATCH] MSVC compatibility fix.
---
src/common/classes/locks.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/classes/locks.h b/src/common/classes/locks.h
index d2ddb7d..3586592 100644
--- a/src/common/classes/locks.h
+++ b/src/common/classes/locks.h
@@ -64,7 +64,7 @@ public:
}
private:
- typedef BOOL WINAPI (*tTryEnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection);
+ typedef BOOL (WINAPI *tTryEnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection);
static tTryEnterCriticalSection m_funct;
};
--
2.4.3
From 8e36ccb8876d2118b0b5d3409c28b39f35725523 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Tue, 23 Jun 2015 11:57:07 +0300
Subject: [PATCH] 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 76ceeca..51694ba 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.4.3
From 088f6afada0199d180859da6de65546dccf15a70 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Tue, 23 Jun 2015 11:59:24 +0300
Subject: [PATCH] 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 ef6099e..b10dae4 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 0000000..9291ffd
--- /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: <mingw.android@gmail.com>.
+ */
+
+#if defined(__APPLE__)
+#include <stdlib.h>
+#else
+#include <malloc.h>
+#endif
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__)
+#include <alloca.h>
+#endif
+#include <unistd.h>
+
+/* 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 <mach-o/dyld.h>
+#elif defined(_WIN32)
+#define WIN32_MEAN_AND_LEAN
+#include <windows.h>
+#include <psapi.h>
+#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 0000000..139b7c2
--- /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: <mingw.android@gmail.com>.
+ */
+
+#ifndef PATHTOOLS_H
+#define PATHTOOLS_H
+
+#include <unistd.h>
+#if defined(__APPLE__)
+#include <stdlib.h>
+#else
+#include <malloc.h>
+#endif
+#include <stdio.h>
+
+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 34c7c5c..5991363 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 0b6852f..29d6cda 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
@@ -3596,13 +3597,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;
@@ -3685,7 +3686,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 f5c7d54..deb33cc 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 6e22f15..48186bc 100644
--- a/src/jrd/os/win32/path_utils.cpp
+++ b/src/jrd/os/win32/path_utils.cpp
@@ -4,8 +4,11 @@
#include <io.h> // _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.4.3
From 0982205145962152e3b964aa63559c435bddb6f1 Mon Sep 17 00:00:00 2001
From: Alexpux <alexey.pawlow@gmail.com>
Date: Sat, 11 Jul 2015 16:57:36 +0300
Subject: [PATCH] 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 76a10c5..71e6cf5 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.4.5