14955ed91b
First of all, LD_LIBRARY_PATH must not affect the make executable called for the firebird build. That would cause problems when that make executable depends on system versions of dynamic libraries that also happen to be available as LO- built versions on LD_LIBRARY_PATH: > make: symbol lookup error: /data/sbergman/lo-san/core/instdir/program/libfreebl3.so: undefined symbol: __asan_option_detect_stack_use_after_return > make: *** [/data/sbergman/lo-san/core/external/firebird/ExternalProject_firebird.mk:41: /data/sbergman/lo-san/core/workdir/ExternalProject/firebird/build] Error 127 For that, gb_Helper_extend_ld_path is now tunneled to the relevant places in the firebird build, where executables are called that use firebird's UnicodeUtil::getConversionICU (workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp) to dynamically load icu libraries. (Similar to3a2818280a
"external/liblangtag: Tunnel LD_LIBRARY_PATH to where it's actually needed".) Then, what appears to work is to disable firebird's global operators new/delete (so that ASan's versions kick in). MemPool::{alloc,release}Raw would still be called at start-up through Firebird::GlobalPtr<Firebird::Mutex, (Firebird::InstanceControl::DtorPriority)3> ::GlobalPtr() calling Firebird::GlobalStorage::operator new(unsigned long), but there is already provision to avoid those functions' heavy machinery for the USE_VALGRIND case. DEBUG_GDS_ALLOC (which would enable other inopportune overloads of global operator new/delete) needs to be disabled in a somewhat contorted way, because8ea07101c1
"external/firebird: Work around operator new alignment violations" might explicitly set it from the outside, which we need to undo for ASan builds. `make check screenshot` encountered one alloc-dealloc-mismatch (already during building firebird itself) that needs a patch to src/jrd/SimilarToMatcher.h. Change-Id: I6bb68604095908189259be14440f72d3b23cbd4e Reviewed-on: https://gerrit.libreoffice.org/52706 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
654 lines
21 KiB
Diff
654 lines
21 KiB
Diff
--- src/include/firebird.h 2016-07-15 11:31:27.151443500 +0200
|
|
+++ src/include/firebird.h 2016-07-17 14:50:04.043792400 +0200
|
|
@@ -32,11 +32,7 @@
|
|
#ifndef INCLUDE_Firebird_H
|
|
#define INCLUDE_Firebird_H
|
|
|
|
-#ifdef _MSC_VER
|
|
-#include "gen/autoconfig_msvc.h"
|
|
-#else
|
|
#include "gen/autoconfig.h"
|
|
-#endif
|
|
|
|
#if defined __clang__ && defined __has_feature
|
|
#if __has_feature(address_sanitizer)
|
|
--- src/misc/writeBuildNum.sh 2016-07-07 15:57:04.538983200 +0200
|
|
+++ src/misc/writeBuildNum.sh 2016-07-13 11:31:18.132820200 +0200
|
|
@@ -95,9 +95,9 @@
|
|
createMakeVersion() {
|
|
|
|
OdsH="${Root}/src/jrd/ods.h"
|
|
-Mini="/tmp/miniods.h"
|
|
-TestCpp="/tmp/test.cpp"
|
|
-AOut="/tmp/a.out"
|
|
+Mini=$(cygpath -m "/tmp/miniods.h")
|
|
+TestCpp=$(cygpath -m "/tmp/test.cpp")
|
|
+AOut=$(cygpath -m "/tmp/a.out")
|
|
|
|
grep ODS_VERSION $OdsH | grep -v ENCODE_ODS >$Mini
|
|
|
|
--- builds/make.new/config/config.h.in 2016-07-07 15:55:55.693112800 +0200
|
|
+++ builds/make.new/config/config.h.in 2016-07-08 13:38:49.994986400 +0200
|
|
@@ -396,7 +396,7 @@
|
|
#undef HAVE_SIGSET
|
|
|
|
/* Define to 1 if you have the `snprintf' function. */
|
|
-#undef HAVE_SNPRINTF
|
|
+#define HAVE_SNPRINTF
|
|
|
|
/* Define to 1 if you have the <socket.h> header file. */
|
|
#undef HAVE_SOCKET_H
|
|
@@ -551,7 +551,7 @@
|
|
#undef HAVE_VFORK_H
|
|
|
|
/* Define to 1 if you have the `vsnprintf' function. */
|
|
-#undef HAVE_VSNPRINTF
|
|
+#define HAVE_VSNPRINTF
|
|
|
|
/* Define to 1 if you have the <winsock2.h> header file. */
|
|
#undef HAVE_WINSOCK2_H
|
|
@@ -646,7 +646,7 @@
|
|
#undef TIME_WITH_SYS_TIME
|
|
|
|
/* Define this if OS is Windows NT */
|
|
-#undef WIN_NT
|
|
+#define WIN_NT
|
|
|
|
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
|
significant byte first (like Motorola and SPARC, unlike Intel). */
|
|
@@ -703,3 +703,34 @@
|
|
#ifndef HAVE_SOCKLEN_T
|
|
typedef int socklen_t;
|
|
#endif
|
|
+
|
|
+/* taken from src/include/gen/autoconfig_msvc.h */
|
|
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
|
+/* target architecture */
|
|
+#if defined(_M_IX86)
|
|
+/* sizeof(void *) */
|
|
+#define SIZEOF_VOID_P 4
|
|
+/* sizeof(size_t) */
|
|
+#define SIZEOF_SIZE_T 4
|
|
+/* alignment of long */
|
|
+#define FB_ALIGNMENT 4
|
|
+#elif defined(_M_AMD64)
|
|
+#define AMD64
|
|
+/* sizeof(void *) */
|
|
+#define SIZEOF_VOID_P 8
|
|
+/* sizeof(size_t) */
|
|
+#define SIZEOF_SIZE_T 8
|
|
+/* alignment of long */
|
|
+#define FB_ALIGNMENT 8
|
|
+#else
|
|
+#error unknown target platform
|
|
+#endif
|
|
+
|
|
+#define HAVE_IO_H
|
|
+
|
|
+#define HAVE_GETPAGESIZE
|
|
+
|
|
+#if defined _MSC_VER
|
|
+#define isnan _isnan
|
|
+#endif
|
|
+
|
|
--- src/common/common.h 2016-07-15 11:31:26.366735500 +0200
|
|
+++ src/common/common.h 2016-07-17 16:18:39.121579400 +0200
|
|
@@ -551,15 +551,6 @@
|
|
#endif /* WIN_NT */
|
|
|
|
|
|
-#ifndef FB_CPU
|
|
-#error Define FB_CPU for your platform
|
|
-#endif
|
|
-#ifndef FB_OS
|
|
-#error Define FB_OS for your platform
|
|
-#endif
|
|
-#ifndef FB_CC
|
|
-#error Define FB_CC for your platform
|
|
-#endif
|
|
|
|
|
|
/*****************************************************
|
|
diff -ur builds/posix/make.defaults builds/posix/make.defaults
|
|
--- builds/posix/make.defaults 2016-07-07 13:56:13.036235166 +0200
|
|
+++ builds/posix/make.defaults 2016-07-07 14:29:52.368289242 +0200
|
|
@@ -55,7 +55,11 @@
|
|
else
|
|
FIREBIRD=$(FB_BUILD)
|
|
endif
|
|
-FIREBIRD_LOCK=$(FIREBIRD)
|
|
+ifeq (@PLATFORM@,win32)
|
|
+ FIREBIRD_LOCK=$(shell cygpath -w $(FIREBIRD) )
|
|
+else
|
|
+ FIREBIRD_LOCK=$(FIREBIRD)
|
|
+endif
|
|
|
|
export FIREBIRD
|
|
export FIREBIRD_LOCK
|
|
@@ -152,7 +156,11 @@
|
|
CD= cd
|
|
CAT= cat
|
|
AR= ar @AR_OPTIONS@
|
|
-LN= @LN_S@
|
|
+ifeq (@PLATFORM@,win32)
|
|
+ LN= cp
|
|
+else
|
|
+ LN= @LN_S@
|
|
+endif
|
|
RANLIB= @RANLIB@
|
|
BTYACC=$(ROOT)/extern/btyacc/btyacc
|
|
CLOOP=$(GEN_ROOT)/$(TARGET)/cloop/release/bin/cloop
|
|
@@ -174,10 +182,10 @@
|
|
|
|
# Default extensions
|
|
|
|
-ARCH_EXT= .a
|
|
+ARCH_EXT= .lib
|
|
EXEC_EXT= @EXEEXT@
|
|
SHRLIB_EXT=@SHRLIB_EXT@
|
|
-LIB_PREFIX= lib
|
|
+LIB_PREFIX=
|
|
SHRLIB_FOREIGN_EXT= $(SHRLIB_EXT)
|
|
|
|
#_____________________________________________________________________________
|
|
@@ -203,6 +211,7 @@
|
|
vpath %.so $(LIB)
|
|
vpath %.a $(LIB)
|
|
vpath %.dll $(LIB)
|
|
+vpath %.lib $(LIB)
|
|
|
|
#_____________________________________________________________________________
|
|
|
|
@@ -216,9 +225,9 @@
|
|
#
|
|
|
|
#LibraryFileName=libfbclient
|
|
-LibraryFileName=libfbclient
|
|
-LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}.${FirebirdVersion}
|
|
-LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}.2
|
|
+LibraryFileName=ifbclient
|
|
+LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}
|
|
+LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}
|
|
LibraryBaseName=$(LibraryFileName).${SHRLIB_EXT}
|
|
|
|
LIBFIREBIRD_FULLNAME = $(LIB)/$(LibraryFullName)
|
|
@@ -227,7 +236,7 @@
|
|
|
|
# The firebird engine library name
|
|
|
|
-EngineFileName=libEngine${OdsVersion}
|
|
+EngineFileName=Engine12
|
|
EngineSoName=$(EngineFileName).${SHRLIB_EXT}
|
|
ENGINE_SONAME = $(PLUGINS)/$(EngineSoName)
|
|
|
|
@@ -241,7 +250,7 @@
|
|
ifeq ($(STD_EDITLINE), true)
|
|
LIBEDITLINE := -l$(READLINE)
|
|
else
|
|
- LIBEDITLINE := $(LIB)/libedit.a
|
|
+ LIBEDITLINE := $(LIB)/edit.lib
|
|
endif
|
|
endif
|
|
|
|
@@ -289,7 +298,7 @@
|
|
LIB_PATH_OPTS = $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_RPATH,intl)
|
|
LIB_LINK_SONAME= -Wl,-soname,$(1)
|
|
LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
|
|
-FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB)
|
|
+FIREBIRD_LIBRARY_LINK= -L$(LIB) -lifbclient $(MATHLIB)
|
|
|
|
EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS)
|
|
LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared
|
|
@@ -329,7 +338,8 @@
|
|
|
|
# Pay attention - we place common library into obj, not lib dir
|
|
# It's just a set of object files, prepared to be used by ld, not an output library
|
|
-COMMON_LIB = $(OBJ)/common.a
|
|
+
|
|
+COMMON_LIB = $(OBJ)/common.lib
|
|
|
|
# From utilities
|
|
CREATE_DB = $(RBIN)/create_db$(EXEC_EXT)
|
|
--- builds/posix/Makefile.in 2016-07-07 15:56:06.459221300 +0200
|
|
+++ builds/posix/Makefile.in 2016-07-13 12:44:57.134217200 +0200
|
|
@@ -33,7 +33,8 @@
|
|
# Alex Peshkoff - created single makefile based on Mark's files
|
|
#
|
|
|
|
-ROOT=$(shell cd ..; pwd)
|
|
+#ROOT=$(shell cd ..; pwd)
|
|
+ROOT=$(shell cygpath -m '$(shell cd ..; pwd)')
|
|
|
|
include make.defaults
|
|
ifeq ($(CROSS_OUT), Y)
|
|
@@ -163,7 +164,7 @@
|
|
.PHONY: cross1 cross2 boot yvalve engine fbintl gpre utilities plugins rest codes ids examples cross_rest
|
|
|
|
master_process:
|
|
- ln -sf $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
|
|
+ cp -f $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
|
|
$(MAKE) updateBuildNum
|
|
$(MAKE) export_lists
|
|
$(MAKE) extern
|
|
@@ -186,10 +187,10 @@
|
|
(cd $(BIN); $(LN) $(notdir $(GPRE)) $(notdir $(GPRE_CURRENT)))
|
|
ifeq ($(IsDeveloper), Y)
|
|
# In developer mode we must regenerate various files in include/gen
|
|
- $(MAKE) codes
|
|
+# $(MAKE) codes
|
|
endif
|
|
- $(MAKE) plugins
|
|
- $(MAKE) examples
|
|
+# $(MAKE) plugins
|
|
+ $(MAKE) include_generic
|
|
$(MAKE) rest
|
|
|
|
|
|
@@ -198,7 +199,7 @@
|
|
$(MAKE) CROSS_OUT=Y cross2
|
|
|
|
cross1:
|
|
- ln -sf $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
|
|
+ cp -f $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
|
|
$(MAKE) updateBuildNum
|
|
$(MAKE) export_lists
|
|
$(MAKE) extern
|
|
@@ -223,7 +224,7 @@
|
|
$(MAKE) -f Makefile.examples -C $(GEN_ROOT)/examples/
|
|
|
|
cross2:
|
|
- ln -sf $(SRC_ROOT)/include/cross/$(CROSS_CONFIG) $(SRC_ROOT)/include/gen/autoconfig.h
|
|
+ cp -f $(SRC_ROOT)/include/cross/$(CROSS_CONFIG) $(SRC_ROOT)/include/gen/autoconfig.h
|
|
$(MAKE) prerequisites
|
|
$(MAKE) tommath
|
|
$(MAKE) yvalve
|
|
@@ -275,7 +275,8 @@
|
|
|
|
# remote redirector is statically linked in main FB library
|
|
$(LIBFIREBIRD_FULLNAME): $(YValve_Objects) $(Remote_Client_Objects) $(COMMON_LIB)
|
|
- $(LINK_FIREBIRD) -o $@ $^ $(LINK_FIREBIRD_LIBS)
|
|
+ @echo 'compile: $(LINK_FIREBIRD) $(CPPFLAGS) -o $@ $^ $(LINK_FIREBIRD_LIBS)'
|
|
+ $(LINK_FIREBIRD) $(CPPFLAGS) -o $@ $^ $(LINK_FIREBIRD_LIBS)
|
|
|
|
|
|
#___________________________________________________________________________
|
|
@@ -284,7 +286,8 @@
|
|
engine: $(ENGINE_SONAME)
|
|
|
|
$(ENGINE_SONAME): $(Engine_Objects) $(SVC_Objects) $(COMMON_LIB)
|
|
- $(LINK_ENGINE) -o $@ $^ $(LINK_ENGINE_LIBS)
|
|
+ @echo 'compile engine: $(LINK_ENGINE) $(CPPFLAGS) -o $@ $^ $(LINK_ENGINE_LIBS)'
|
|
+ $(LINK_ENGINE) $(CPPFLAGS) -o $@ $^ $(YValve_Objects) $(Remote_Client_Objects) $(LINK_ENGINE_LIBS)
|
|
|
|
|
|
#___________________________________________________________________________
|
|
@@ -294,7 +297,7 @@
|
|
fbintl: $(LIBFBINTL_SO)
|
|
|
|
$(LIBFBINTL_SO): $(INTL_Objects) $(COMMON_LIB)
|
|
- $(LINK_INTL) -o $@ $^ $(LINK_INTL_LIBS)
|
|
+ $(LINK_INTL) $(CPPFLAGS) -o $@ $^ $(YValve_Objects) $(Remote_Client_Objects) $(LINK_INTL_LIBS)
|
|
|
|
|
|
#___________________________________________________________________________
|
|
@@ -393,7 +396,7 @@
|
|
|
|
.PHONY: firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix gsec gsplit gstat isql nbackup
|
|
|
|
-utilities: firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix gsec gsplit gstat isql nbackup udfsupport
|
|
+utilities: gbak gfix isql
|
|
|
|
firebird_server: $(FB_DAEMON)
|
|
|
|
@@ -540,7 +543,7 @@
|
|
GBAK_FILES := $(FDB_FILES:.fdb=.gbak) $(FIREBIRD)/msg.gbak
|
|
GBAK_FILES := $(subst Native,$(TARGET),$(GBAK_FILES))
|
|
|
|
-rest: qli message_file
|
|
+rest: message_file
|
|
|
|
cross_rest: qli gbak_files
|
|
$(MAKE) $(BUILD_FILE)
|
|
@@ -593,7 +595,7 @@
|
|
IBASE_ExtraFiles = include/types_pub.h include/consts_pub.h dsql/sqlda_pub.h common/dsc_pub.h jrd/ibase.h jrd/inf_pub.h jrd/blr.h include/gen/iberror.h
|
|
SRC_IBASE_ExtraFiles = $(addprefix $(SRC_ROOT)/, $(IBASE_ExtraFiles))
|
|
MAKE_HEADER_Src = $(addprefix $(SRC_ROOT)/, misc/makeHeader.cpp)
|
|
-MAKE_HEADER_Bin = ./makeHeader
|
|
+MAKE_HEADER_Bin = ./makeHeader.exe
|
|
|
|
$(INCLUDE_DEST)/ibase.h: $(SRC_IBASE_ExtraFiles)
|
|
$(STATICEXE_LINK) -o $(MAKE_HEADER_Bin) $(MAKE_HEADER_Src)
|
|
diff -ur builds/posix/Makefile.in.examples builds/posix/Makefile.in.examples
|
|
--- builds/posix/Makefile.in.examples 2016-07-07 13:56:13.048235166 +0200
|
|
+++ builds/posix/Makefile.in.examples 2016-07-07 14:37:36.904301682 +0200
|
|
@@ -65,10 +65,13 @@
|
|
EXAMPLES_DEST= $(GEN_ROOT)/examples
|
|
EXAMPLES_SRC= $(ROOT)/examples
|
|
|
|
-
|
|
+ifeq ($(PLATFORM),win32)
|
|
+EMPBLD_Objects= $(EXAMPLES_DEST)/empbuild.obj
|
|
+INTLBLD_Objects= $(EXAMPLES_DEST)/intlbld.obj
|
|
+else
|
|
EMPBLD_Objects= $(EXAMPLES_DEST)/empbuild.o
|
|
-
|
|
INTLBLD_Objects= $(EXAMPLES_DEST)/intlbld.o
|
|
+endif
|
|
|
|
INPUT_Files = empddl.sql empdml.sql indexoff.sql indexon.sql \
|
|
job.inp lang.inp proj.inp qtr.inp
|
|
@@ -172,3 +175,5 @@
|
|
|
|
$(EXAMPLES_DEST)/%.h: $(EXAMPLES_SRC)/common/%.h
|
|
$(CP) $^ $@
|
|
+$(EXAMPLES_DEST)/%.obj: $(EXAMPLES_DEST)/%.c
|
|
+ $(CC) -c $(firstword $<) -Fo$@ $(WCFLAGS)
|
|
diff -ur builds/posix/make.rules builds/posix/make.rules
|
|
--- builds/posix/make.rules 2016-07-07 13:56:13.036235166 +0200
|
|
+++ builds/posix/make.rules 2016-07-07 14:31:16.116291485 +0200
|
|
@@ -88,22 +88,20 @@
|
|
|
|
$(OBJ)/%.o: $(SRC_ROOT)/%.c
|
|
$(CC) $(WCFLAGS) -c $(firstword $<) -o $@
|
|
- @sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
|
|
|
|
$(OBJ)/%.o: $(OBJ)/%.cpp
|
|
$(CXX) $(WCXXFLAGS) -c $(firstword $<) -o $@
|
|
- @sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
|
|
|
|
$(OBJ)/%.o: $(SRC_ROOT)/%.cpp
|
|
$(CXX) $(WCXXFLAGS) -c $(firstword $<) -o $@
|
|
- @sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
|
|
|
|
.SUFFIXES: .epp .e
|
|
|
|
# Rules for making resource files
|
|
|
|
$(GEN_ROOT)/%.res: $(SRC_ROOT)/%.rc
|
|
- windres --output-format=coff --include-dir=$(<D) $< $@
|
|
+ mkdir -p $(@D)
|
|
+ rc.exe $(SOLARINC) /fo $@ $<
|
|
|
|
# Rule for making gbak files when cross-compiling
|
|
|
|
--- src/common/utils.cpp 2016-07-15 11:31:26.746871100 +0200
|
|
+++ src/common/utils.cpp 2016-07-19 19:14:45.370689300 +0200
|
|
@@ -880,15 +880,15 @@
|
|
FILETIME utime, stime, dummy;
|
|
if (GetProcessTimes(GetCurrentProcess(), &dummy, &dummy, &stime, &utime))
|
|
{
|
|
- LARGE_INTEGER lint;
|
|
+ LARGE_INTEGER myLargeInt;
|
|
|
|
- lint.HighPart = stime.dwHighDateTime;
|
|
- lint.LowPart = stime.dwLowDateTime;
|
|
- sysTime = lint.QuadPart / 10000;
|
|
-
|
|
- lint.HighPart = utime.dwHighDateTime;
|
|
- lint.LowPart = utime.dwLowDateTime;
|
|
- userTime = lint.QuadPart / 10000;
|
|
+ myLargeInt.HighPart = stime.dwHighDateTime;
|
|
+ myLargeInt.LowPart = stime.dwLowDateTime;
|
|
+ sysTime = myLargeInt.QuadPart / 10000;
|
|
+
|
|
+ myLargeInt.HighPart = utime.dwHighDateTime;
|
|
+ myLargeInt.LowPart = utime.dwLowDateTime;
|
|
+ userTime = myLargeInt.QuadPart / 10000;
|
|
}
|
|
else
|
|
{
|
|
diff -ur builds/posix/prefix.mingw builds/posix/prefix.mingw
|
|
--- builds/posix/prefix.mingw 2016-07-07 13:56:13.048235166 +0200
|
|
+++ builds/posix/prefix.mingw 2016-07-07 14:50:54.704323046 +0200
|
|
@@ -20,8 +20,8 @@
|
|
#
|
|
|
|
# -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 -Wno-non-virtual-dtor
|
|
-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 -Wno-non-virtual-dtor
|
|
+PROD_FLAGS=-O2 -DMINGW -Dlint -DWIN32_LEAN_AND_MEAN
|
|
+DEV_FLAGS=-ggdb -DMINGW -Dlint -DWIN32_LEAN_AND_MEAN
|
|
|
|
PLATFORM_PATH=os/win32
|
|
|
|
@@ -29,6 +29,7 @@
|
|
LIB_LINK=$(LD)
|
|
|
|
LIB_LINK_OPTIONS+=-Wl,--enable-stdcall-fixup
|
|
+LIB_PLATFORM_RPATH=
|
|
|
|
# Strip symbols from release versions to decrease size
|
|
ifeq ($(IsProdTypeBuild),Y)
|
|
@@ -36,6 +37,9 @@
|
|
LIB_LINK_OPTIONS+=-Wl,-s
|
|
endif
|
|
|
|
+LIB_LINK_OPTIONS=
|
|
+LINK_OPTS=
|
|
+
|
|
# Generation of fbclient_ms.lib
|
|
LIB_LINK_IMPLIB:=-Wl,--out-implib,firebird/lib/fbclient_ms.lib
|
|
LIB_GUI:= -mwindows -lcomctl32 -lgdi32
|
|
@@ -55,7 +59,8 @@
|
|
ClientLibrarySoName := $(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
|
|
+LINK_FIREBIRD_SYMBOLS = /def:$(BLD_ROOT)/win32/defs/fbclient_s.def /def:$(BLD_ROOT)/win32/defs/firebird.def
|
|
+LINK_PLUGIN_SYMBOLS = /def:$(BLD_ROOT)/win32/defs/plugin.def
|
|
|
|
# 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
|
|
--- builds/posix/make.shared.variables 2016-07-22 17:07:46.650672300 +0200
|
|
+++ builds/posix/make.shared.variables 2016-07-23 10:44:41.311454600 +0200
|
|
@@ -56,6 +56,7 @@
|
|
Remote_Server:= $(call dirObjects,remote/server) $(call dirObjects,auth/SecureRemotePassword/server)
|
|
Remote_Client:= $(call dirObjects,remote/client) $(call dirObjects,auth/SecureRemotePassword/client) \
|
|
$(call makeObjects,auth/SecurityDatabase,LegacyClient.cpp) \
|
|
+ $(call dirObjects,auth/trusted) \
|
|
$(call dirObjects,plugins/crypt/arc4)
|
|
Remote_Server_Objects:= $(Remote_Common) $(Remote_Server)
|
|
Remote_Client_Objects:= $(Remote_Common) $(Remote_Client)
|
|
diff -ur configure configure
|
|
--- configure 2016-07-07 13:55:54.976234682 +0200
|
|
+++ configure 2016-07-07 14:54:30.012328812 +0200
|
|
@@ -3337,6 +3337,14 @@
|
|
SHRLIB_EXT=dll
|
|
;;
|
|
|
|
+ *-*-cygwin*)
|
|
+ MAKEFILE_PREFIX=mingw
|
|
+ PLATFORM=win32
|
|
+ EDITLINE_FLG=N
|
|
+ RAW_DEVICES_FLG=N
|
|
+ SHRLIB_EXT=dll
|
|
+ ;;
|
|
+
|
|
*)
|
|
as_fn_error $? "unsupported platform ${build}" "$LINENO" 5
|
|
;;
|
|
@@ -8432,6 +8432,9 @@
|
|
mingw*)
|
|
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
|
;;
|
|
+cygwin*)
|
|
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
|
+ ;;
|
|
esac
|
|
|
|
# Try without a prefix underscore, then with it.
|
|
diff -ur extern/btyacc/main.c extern/btyacc/main.c
|
|
--- extern/btyacc/main.c 2016-07-07 13:55:55.448234695 +0200
|
|
+++ extern/btyacc/main.c 2016-07-07 14:56:03.560331317 +0200
|
|
@@ -2,7 +2,7 @@
|
|
#include <signal.h>
|
|
#include <stdio.h>
|
|
|
|
-#if defined(WIN32)
|
|
+#if defined(WIN32) || defined(_WIN32)
|
|
#include <io.h>
|
|
#else
|
|
#include <unistd.h>
|
|
diff -ur extern/btyacc/Makefile extern/btyacc/Makefile
|
|
--- extern/btyacc/Makefile 2016-07-07 13:55:55.448234695 +0200
|
|
+++ extern/btyacc/Makefile 2016-07-07 14:57:42.284333961 +0200
|
|
@@ -42,7 +42,10 @@
|
|
all: $(PROGRAM)
|
|
|
|
$(PROGRAM): $(OBJS) $(LIBS)
|
|
- $(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
|
|
+ $(CC) -o $(PROGRAM).exe $(OBJS) $(LIBS) $(LDFLAGS)
|
|
+
|
|
+%.o: %.c
|
|
+ $(CC) -c $< -Fo$@ $(CCFLAGS)
|
|
|
|
clean:; rm -f $(OBJS)
|
|
|
|
--- extern/cloop/src/tests/test1/CppTest.cpp 2016-07-07 15:56:27.948015300 +0200
|
|
+++ extern/cloop/src/tests/test1/CppTest.cpp 2016-07-13 18:58:48.529822600 +0200
|
|
@@ -24,6 +24,7 @@
|
|
#include <stdio.h>
|
|
#include <assert.h>
|
|
|
|
+#define WIN32
|
|
#ifdef WIN32
|
|
#include <windows.h>
|
|
#define DLL_EXPORT __declspec(dllexport)
|
|
--- extern/cloop/src/tests/test1/CTest.c 2016-07-07 15:56:27.611791300 +0200
|
|
+++ extern/cloop/src/tests/test1/CTest.c 2016-07-13 17:04:22.805090300 +0200
|
|
@@ -23,6 +23,7 @@
|
|
#include <malloc.h>
|
|
#include <stdio.h>
|
|
|
|
+#define WIN32
|
|
#ifdef WIN32
|
|
#include <windows.h>
|
|
#define DLL_EXPORT __declspec(dllexport)
|
|
--- extern/cloop/Makefile 2016-07-07 15:56:28.279136300 +0200
|
|
+++ extern/cloop/Makefile 2016-07-13 16:22:38.493479800 +0200
|
|
@@ -11,8 +11,8 @@
|
|
SRC_DIR := src
|
|
BUILD_DIR := build
|
|
OUT_DIR := output
|
|
-SHRLIB_EXT := .so
|
|
-EXE_EXT :=
|
|
+SHRLIB_EXT := .dll
|
|
+EXE_EXT := .exe
|
|
|
|
OBJ_DIR := $(BUILD_DIR)/$(TARGET)
|
|
BIN_DIR := $(OUT_DIR)/$(TARGET)/bin
|
|
@@ -27,7 +27,7 @@
|
|
OBJS_C := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS_C))
|
|
OBJS_CPP := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS_CPP))
|
|
|
|
-C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter
|
|
+C_FLAGS := -fPIC
|
|
CXX_FLAGS := $(C_FLAGS)
|
|
FPC_FLAGS := -Mdelphi
|
|
|
|
@@ -53,7 +53,7 @@
|
|
.PHONY: all mkdirs clean
|
|
|
|
all: mkdirs \
|
|
- $(BIN_DIR)/cloop \
|
|
+ $(BIN_DIR)/cloop$(EXE_EXT) \
|
|
$(BIN_DIR)/test1-c$(SHRLIB_EXT) \
|
|
$(BIN_DIR)/test1-c$(EXE_EXT) \
|
|
$(BIN_DIR)/test1-cpp$(SHRLIB_EXT) \
|
|
@@ -74,7 +74,7 @@
|
|
-include $(addsuffix .d,$(basename $(OBJS_C)))
|
|
-include $(addsuffix .d,$(basename $(OBJS_CPP)))
|
|
|
|
-$(BIN_DIR)/cloop: \
|
|
+$(BIN_DIR)/cloop$(EXE_EXT): \
|
|
$(OBJ_DIR)/cloop/Expr.o \
|
|
$(OBJ_DIR)/cloop/Generator.o \
|
|
$(OBJ_DIR)/cloop/Lexer.o \
|
|
@@ -83,20 +83,20 @@
|
|
|
|
$(LD) $^ -o $@
|
|
|
|
-$(SRC_DIR)/tests/test1/CalcCApi.h: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl
|
|
- $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c-header $@ CALC_C_API_H CALC_I
|
|
+$(SRC_DIR)/tests/test1/CalcCApi.h: $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl
|
|
+ $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl c-header $@ CALC_C_API_H CALC_I
|
|
|
|
-$(SRC_DIR)/tests/test1/CalcCApi.c: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl $(SRC_DIR)/tests/test1/CalcCApi.h
|
|
- $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c-impl $@ CalcCApi.h CALC_I
|
|
+$(SRC_DIR)/tests/test1/CalcCApi.c: $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl $(SRC_DIR)/tests/test1/CalcCApi.h
|
|
+ $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl c-impl $@ CalcCApi.h CALC_I
|
|
|
|
-$(SRC_DIR)/tests/test1/CalcCppApi.h: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl
|
|
- $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c++ $@ CALC_CPP_API_H calc I
|
|
+$(SRC_DIR)/tests/test1/CalcCppApi.h: $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl
|
|
+ $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl c++ $@ CALC_CPP_API_H calc I
|
|
|
|
-$(SRC_DIR)/tests/test1/CalcPascalApi.pas: $(BIN_DIR)/cloop \
|
|
+$(SRC_DIR)/tests/test1/CalcPascalApi.pas: $(BIN_DIR)/cloop$(EXE_EXT) \
|
|
$(SRC_DIR)/tests/test1/Interface.idl \
|
|
$(SRC_DIR)/tests/test1/CalcPascalApi.interface.pas \
|
|
$(SRC_DIR)/tests/test1/CalcPascalApi.implementation.pas
|
|
- $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl pascal $@ CalcPascalApi \
|
|
+ $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl pascal $@ CalcPascalApi \
|
|
--uses "SysUtils" \
|
|
--interfaceFile $(SRC_DIR)/tests/test1/CalcPascalApi.interface.pas \
|
|
--implementationFile $(SRC_DIR)/tests/test1/CalcPascalApi.implementation.pas \
|
|
@@ -108,23 +108,23 @@
|
|
$(OBJ_DIR)/tests/test1/CalcCApi.o \
|
|
$(OBJ_DIR)/tests/test1/CTest.o \
|
|
|
|
- $(LD) $^ -shared -ldl -o $@
|
|
+ $(LD) $^ -o $@
|
|
|
|
$(BIN_DIR)/test1-c$(EXE_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CalcCApi.o \
|
|
$(OBJ_DIR)/tests/test1/CTest.o \
|
|
|
|
- $(LD) $^ -ldl -o $@
|
|
+ $(LD) $^ -o $@
|
|
|
|
$(BIN_DIR)/test1-cpp$(SHRLIB_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CppTest.o \
|
|
|
|
- $(LD) $^ -shared -ldl -o $@
|
|
+ $(LD) $^ -o $@
|
|
|
|
$(BIN_DIR)/test1-cpp$(EXE_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CppTest.o \
|
|
|
|
- $(LD) $^ -ldl -o $@
|
|
+ $(LD) $^ -o $@
|
|
|
|
$(BIN_DIR)/test1-pascal$(SHRLIB_EXT): \
|
|
$(SRC_DIR)/tests/test1/PascalClasses.pas \
|
|
diff -ur src/common/classes/fb_string.cpp src/common/classes/fb_string.cpp
|
|
--- src/common/classes/fb_string.cpp 2016-07-07 13:55:56.064234711 +0200
|
|
+++ src/common/classes/fb_string.cpp 2016-07-07 14:59:01.516336083 +0200
|
|
@@ -32,6 +32,12 @@
|
|
#include <ctype.h>
|
|
#include <stdarg.h>
|
|
|
|
+#ifdef WIN_NT
|
|
+#pragma comment(lib, "User32.lib")
|
|
+#pragma comment(lib, "advapi32")
|
|
+#pragma comment(lib, "shell32.lib")
|
|
+#endif
|
|
+
|
|
#ifdef HAVE_STRCASECMP
|
|
#define STRNCASECMP strncasecmp
|
|
#else
|
|
diff -ur src/misc/makeHeader.cpp src/misc/makeHeader.cpp
|
|
--- src/misc/makeHeader.cpp 2016-07-07 13:56:00.100234819 +0200
|
|
+++ src/misc/makeHeader.cpp 2016-07-07 15:00:14.780338045 +0200
|
|
@@ -1,9 +1,9 @@
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
-//#ifdef HAVE_UNISTD_H
|
|
+#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
-//#endif
|
|
+#endif
|
|
|
|
|
|
|