office-gobmx/external/firebird/firebird-cygwin-msvc.patch
Stephan Bergmann 14955ed91b external/firebird: Support Clang ASan
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 to 3a2818280a
"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, because
8ea07101c1 "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>
2018-04-12 13:10:36 +02:00

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