From 8a47f238de9feb410678a2504240c971e9ed7df3 Mon Sep 17 00:00:00 2001 From: vletoux Date: Sun, 1 Nov 2015 13:35:05 +0100 Subject: [PATCH] win32: link OpenSSL statically again --- src/common/Makefile.mak | 2 +- src/common/compat_report_rangecheckfailure.c | 21 ++++++++++++++++++++ src/pkcs11/Makefile.am | 1 + src/pkcs11/Makefile.mak | 2 +- win32/Make.rules.mak | 12 ++++------- win32/OpenSC.wxs.in | 4 ---- 6 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 src/common/compat_report_rangecheckfailure.c diff --git a/src/common/Makefile.mak b/src/common/Makefile.mak index e80bede2..c6ea6016 100644 --- a/src/common/Makefile.mak +++ b/src/common/Makefile.mak @@ -1,6 +1,6 @@ TOPDIR = ..\.. -COMMON_OBJECTS = compat_getpass.obj compat_getopt.obj compat_strlcpy.obj compat_strlcat.obj simclist.obj +COMMON_OBJECTS = compat_getpass.obj compat_getopt.obj compat_strlcpy.obj compat_strlcat.obj simclist.obj compat_report_rangecheckfailure.obj all: common.lib libpkcs11.lib libscdl.lib diff --git a/src/common/compat_report_rangecheckfailure.c b/src/common/compat_report_rangecheckfailure.c new file mode 100644 index 00000000..50b3aa60 --- /dev/null +++ b/src/common/compat_report_rangecheckfailure.c @@ -0,0 +1,21 @@ +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef HAVE_RANGECHECKFAILURE /* empty file if __report_rangecheckfailure is available */ + +// do not fail when linked with /GS dll and when /GS is not available +#ifdef _WIN32 +#if defined(_MSC_VER) && (_MSC_VER < 1700) +// only for vs 2012 or later + +#include + +__declspec(noreturn) void __cdecl __report_rangecheckfailure() +{ + ExitProcess(1); +} + +#endif +#endif +#endif \ No newline at end of file diff --git a/src/pkcs11/Makefile.am b/src/pkcs11/Makefile.am index aac6739c..7e82ece7 100644 --- a/src/pkcs11/Makefile.am +++ b/src/pkcs11/Makefile.am @@ -37,6 +37,7 @@ pkcs11_spy_la_SOURCES = pkcs11-spy.c pkcs11-display.c pkcs11-display.h pkcs11.ex pkcs11_spy_la_LIBADD = \ $(top_builddir)/src/common/libpkcs11.la \ $(top_builddir)/src/common/libscdl.la \ + $(top_builddir)/src/common/libcompat.la \ $(OPTIONAL_OPENSSL_LIBS) pkcs11_spy_la_LDFLAGS = $(AM_LDFLAGS) \ -export-symbols "$(srcdir)/pkcs11.exports" \ diff --git a/src/pkcs11/Makefile.mak b/src/pkcs11/Makefile.mak index 7fcdb930..8aa76b43 100644 --- a/src/pkcs11/Makefile.mak +++ b/src/pkcs11/Makefile.mak @@ -33,5 +33,5 @@ $(TARGET3): $(OBJECTS3) ..\libopensc\opensc.lib echo LIBRARY $* > $*.def echo EXPORTS >> $*.def type pkcs11.exports >> $*.def - link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:$(TARGET3) $(OBJECTS3) ..\libopensc\opensc.lib ..\common\libpkcs11.lib ..\common\libscdl.lib $(OPENSSL_LIB) gdi32.lib advapi32.lib + link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:$(TARGET3) $(OBJECTS3) ..\libopensc\opensc.lib ..\common\libpkcs11.lib ..\common\libscdl.lib ..\common\common.lib $(OPENSSL_LIB) gdi32.lib advapi32.lib if EXIST $(TARGET3).manifest mt -manifest $(TARGET3).manifest -outputresource:$(TARGET3);2 diff --git a/win32/Make.rules.mak b/win32/Make.rules.mak index 1f8deb90..7c2c27a1 100644 --- a/win32/Make.rules.mak +++ b/win32/Make.rules.mak @@ -33,11 +33,7 @@ OPENSSL_DIR = C:\OpenSSL-Win32 OPENSSL_INCL_DIR = /I$(OPENSSL_DIR)\include #define OPENSSL_STATIC if you have visual studio compatible with OpenSSL's static binaries -!IF "$(OPENSSL_STATIC)" == "yes, I know what I do" OPENSSL_STATIC_DIR = static -!ELSE -OPENSSL_EXTRA_CFLAGS = /DOPENSSL_NO_STATIC_ENGINE -!ENDIF !IF "$(DEBUG_DEF)" == "/DDEBUG" OPENSSL_LIB = $(OPENSSL_DIR)\lib\VC\$(OPENSSL_STATIC_DIR)\libeay32MTd.lib user32.lib advapi32.lib crypt32.lib @@ -80,19 +76,19 @@ ALL_INCLUDES = /I$(TOPDIR)\win32 /I$(TOPDIR)\src $(OPENSSL_INCL_DIR) $(OPENSSL_E !IF "$(DEBUG_DEF)" == "/DDEBUG" LINKDEBUGFLAGS = /NODEFAULTLIB:LIBCMT /DEBUG CODE_OPTIMIZATION = -COPTS = /W3 /D_CRT_SECURE_NO_DEPRECATE /MTd /nologo /DHAVE_CONFIG_H $(ALL_INCLUDES) /D_WIN32_WINNT=0x0502 /DWIN32_LEAN_AND_MEAN $(OPENSSL_DEF) $(ZLIB_DEF) $(MINIDRIVER_DEF) $(SM_DEF) /DOPENSC_FEATURES="\"$(OPENSC_FEATURES)\"" /DDEBUG /Zi /Od +COPTS = /GS /W3 /D_CRT_SECURE_NO_DEPRECATE /MTd /nologo /DHAVE_CONFIG_H $(ALL_INCLUDES) /D_WIN32_WINNT=0x0502 /DWIN32_LEAN_AND_MEAN $(OPENSSL_DEF) $(ZLIB_DEF) $(MINIDRIVER_DEF) $(SM_DEF) /DOPENSC_FEATURES="\"$(OPENSC_FEATURES)\"" /DDEBUG /Zi /Od !ELSE LINKDEBUGFLAGS = /NODEFAULTLIB:LIBCMTD -COPTS = /W3 /D_CRT_SECURE_NO_DEPRECATE /MT /nologo /DHAVE_CONFIG_H $(ALL_INCLUDES) /D_WIN32_WINNT=0x0502 /DWIN32_LEAN_AND_MEAN $(OPENSSL_DEF) $(ZLIB_DEF) $(MINIDRIVER_DEF) $(SM_DEF) /DOPENSC_FEATURES="\"$(OPENSC_FEATURES)\"" +COPTS = /GS /W3 /D_CRT_SECURE_NO_DEPRECATE /MT /nologo /DHAVE_CONFIG_H $(ALL_INCLUDES) /D_WIN32_WINNT=0x0502 /DWIN32_LEAN_AND_MEAN $(OPENSSL_DEF) $(ZLIB_DEF) $(MINIDRIVER_DEF) $(SM_DEF) /DOPENSC_FEATURES="\"$(OPENSC_FEATURES)\"" !ENDIF !IF "$(BUILD_FOR)" == "WIN64" -LINKFLAGS = /NOLOGO /INCREMENTAL:NO /MACHINE:X64 /MANIFEST:NO /NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:MSVCRT $(LINKDEBUGFLAGS) +LINKFLAGS = /NOLOGO /INCREMENTAL:NO /MACHINE:X64 /MANIFEST:NO /NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:MSVCRT /NXCOMPAT /DYNAMICBASE $(LINKDEBUGFLAGS) LIBFLAGS = /nologo /machine:x64 CANDLEFLAGS = -dPlatform=x64 $(CANDLEFLAGS) !ELSE -LINKFLAGS = /NOLOGO /INCREMENTAL:NO /MACHINE:X86 /MANIFEST:NO /NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:MSVCRT $(LINKDEBUGFLAGS) +LINKFLAGS = /NOLOGO /INCREMENTAL:NO /MACHINE:X86 /MANIFEST:NO /NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:MSVCRT /NXCOMPAT /DYNAMICBASE /SAFESH $(LINKDEBUGFLAGS) LIBFLAGS = /nologo /machine:x86 CANDLEFLAGS = -dPlatform=x86 $(CANDLEFLAGS) !ENDIF diff --git a/win32/OpenSC.wxs.in b/win32/OpenSC.wxs.in index 291a99af..ae0a8d16 100644 --- a/win32/OpenSC.wxs.in +++ b/win32/OpenSC.wxs.in @@ -152,9 +152,6 @@ - - - @@ -297,7 +294,6 @@ -