Mercurial > mxe-octave
comparison src/msvc-openssl-1.patch @ 3113:1fbdd34dd2ef
[MSVC] enable OpenSSL compilation
- make OpenSSL DLL relocatable
- make engine support compatible with library prefix/suffix
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Mon, 01 Jul 2013 13:31:12 -0400 |
parents | |
children | 45018a221c4a |
comparison
equal
deleted
inserted
replaced
3112:31edb6eea0eb | 3113:1fbdd34dd2ef |
---|---|
1 diff -ur openssl-1.0.1c-orig/Configure openssl-1.0.1c/Configure | |
2 --- openssl-1.0.1c-orig/Configure 2012-03-14 18:20:40 -0400 | |
3 +++ openssl-1.0.1c/Configure 2013-07-01 12:42:45 -0400 | |
4 @@ -532,6 +532,7 @@ | |
5 | |
6 # MinGW | |
7 "mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", | |
8 +"msvc", "clgcc:-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DOPENSSL_SYSNAME_WIN32 -O2 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK::.lib", | |
9 # As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll | |
10 # compiled with one compiler with application compiled with another | |
11 # compiler. It's possible to engage Applink support in mingw64 build, | |
12 @@ -1120,7 +1121,7 @@ | |
13 | |
14 my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds; | |
15 | |
16 -$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/); | |
17 +$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/ || $target =~ /^msvc/); | |
18 $exe_ext=".nlm" if ($target =~ /netware/); | |
19 $exe_ext=".pm" if ($target =~ /vos/); | |
20 $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); | |
21 @@ -1175,6 +1176,7 @@ | |
22 my $shared_cflag = $fields[$idx_shared_cflag]; | |
23 my $shared_ldflag = $fields[$idx_shared_ldflag]; | |
24 my $shared_extension = $fields[$idx_shared_extension]; | |
25 +my $shared_prefix = "lib"; | |
26 my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib]; | |
27 my $ar = $ENV{'AR'} || "ar"; | |
28 my $arflags = $fields[$idx_arflags]; | |
29 @@ -1201,6 +1203,11 @@ | |
30 $shared_ldflag =~ s/\-mno\-cygwin\s*//; | |
31 } | |
32 | |
33 +if ($target =~ /^msvc/) | |
34 + { | |
35 + $shared_prefix = ""; | |
36 + } | |
37 + | |
38 my $no_shared_warn=0; | |
39 my $no_user_cflags=0; | |
40 | |
41 @@ -1601,6 +1608,7 @@ | |
42 s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; | |
43 s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; | |
44 s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/; | |
45 + s/^SHLIB_PRE=.*/SHLIB_PRE=$shared_prefix/; | |
46 s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; | |
47 s/^MULTILIB=.*$/MULTILIB=$multilib/; | |
48 s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; | |
49 @@ -1806,6 +1814,12 @@ | |
50 $foo =~ s/\\/\\\\/g; | |
51 print OUT "#define ENGINESDIR \"$foo\"\n"; | |
52 } | |
53 + elsif (/^#define\s+OPENSSLROOT/) | |
54 + { | |
55 + my $foo = "$prefix"; | |
56 + $foo =~ s/\\/\\\\/g; | |
57 + print OUT "#define OPENSSLROOT \"$foo\"\n"; | |
58 + } | |
59 elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/) | |
60 { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n" | |
61 if $export_var_as_fn; | |
62 diff -ur openssl-1.0.1c-orig/Makefile.org openssl-1.0.1c/Makefile.org | |
63 --- openssl-1.0.1c-orig/Makefile.org 2012-04-22 09:25:19 -0400 | |
64 +++ openssl-1.0.1c/Makefile.org 2013-07-01 12:42:45 -0400 | |
65 @@ -10,6 +10,7 @@ | |
66 SHLIB_MAJOR= | |
67 SHLIB_MINOR= | |
68 SHLIB_EXT= | |
69 +SHLIB_PRE=lib | |
70 PLATFORM=dist | |
71 OPTIONS= | |
72 CONFIGURE_ARGS= | |
73 @@ -170,8 +171,8 @@ | |
74 EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS | |
75 WDIRS= windows | |
76 LIBS= libcrypto.a libssl.a | |
77 -SHARED_CRYPTO=libcrypto$(SHLIB_EXT) | |
78 -SHARED_SSL=libssl$(SHLIB_EXT) | |
79 +SHARED_CRYPTO=$(SHLIB_PRE)crypto$(SHLIB_EXT) | |
80 +SHARED_SSL=$(SHLIB_PRE)ssl$(SHLIB_EXT) | |
81 SHARED_LIBS= | |
82 SHARED_LIBS_LINK_EXTS= | |
83 SHARED_LDFLAGS= | |
84 @@ -204,7 +205,7 @@ | |
85 | |
86 BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \ | |
87 CC='$(CC)' CFLAG='$(CFLAG)' \ | |
88 - AS='$(CC)' ASFLAG='$(CFLAG) -c' \ | |
89 + AS='$(AS)' ASFLAG='$(CFLAG) -c' \ | |
90 AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \ | |
91 CROSS_COMPILE='$(CROSS_COMPILE)' \ | |
92 PERL='$(PERL)' ENGDIRS='$(ENGDIRS)' \ | |
93 @@ -219,7 +220,7 @@ | |
94 KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)' \ | |
95 ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)' \ | |
96 EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)' \ | |
97 - SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \ | |
98 + SHLIB_PRE='$(SHLIB_PRE)' SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \ | |
99 PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)' \ | |
100 CPUID_OBJ='$(CPUID_OBJ)' \ | |
101 BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' \ | |
102 @@ -295,7 +296,7 @@ | |
103 $(FIPSLIBDIR)fips_premain.c $(FIPSLIBDIR)fipscanister.o \ | |
104 libcrypto.a $(EX_LIBS) | |
105 | |
106 -libcrypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT) | |
107 +$(SHLIB_PRE)crypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT) | |
108 @if [ "$(SHLIB_TARGET)" != "" ]; then \ | |
109 if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \ | |
110 FIPSLD_LIBCRYPTO=libcrypto.a ; \ | |
111 @@ -308,7 +309,7 @@ | |
112 exit 1; \ | |
113 fi | |
114 | |
115 -libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a | |
116 +$(SHLIB_PRE)ssl$(SHLIB_EXT): $(SHLIB_PRE)crypto$(SHLIB_EXT) libssl.a | |
117 @if [ "$(SHLIB_TARGET)" != "" ]; then \ | |
118 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \ | |
119 else \ | |
120 @@ -324,7 +325,7 @@ | |
121 ( set -x; rm -f lib$$i$$j ); \ | |
122 done; \ | |
123 fi; \ | |
124 - ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \ | |
125 + ( set -x; rm -f $(SHLIB_PRE)$$i$(SHLIB_EXT) ); \ | |
126 if [ "$(PLATFORM)" = "Cygwin" ]; then \ | |
127 ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \ | |
128 fi; \ | |
129 @@ -583,16 +584,21 @@ | |
130 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ | |
131 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ | |
132 fi ); \ | |
133 - if expr $(PLATFORM) : 'mingw' > /dev/null; then \ | |
134 - ( case $$i in \ | |
135 - *crypto*) i=libeay32.dll;; \ | |
136 - *ssl*) i=ssleay32.dll;; \ | |
137 + case $(PLATFORM) in \ | |
138 + mingw | msvc) \ | |
139 + ( \ | |
140 + case $$i in \ | |
141 + *crypto*) i=@LIBRARY_PREFIX@crypto32@LIBRARY_SUFFIX@.dll;; \ | |
142 + *ssl*) i=@LIBRARY_PREFIX@ssl32@LIBRARY_SUFFIX@.dll;; \ | |
143 esac; \ | |
144 echo installing $$i; \ | |
145 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \ | |
146 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \ | |
147 - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \ | |
148 - fi; \ | |
149 + mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new \ | |
150 + $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i \ | |
151 + ); \ | |
152 + ;; \ | |
153 + esac; \ | |
154 fi; \ | |
155 done; \ | |
156 ( here="`pwd`"; \ | |
157 diff -ur openssl-1.0.1c-orig/Makefile.shared openssl-1.0.1c/Makefile.shared | |
158 --- openssl-1.0.1c-orig/Makefile.shared 2010-08-21 07:37:17 -0400 | |
159 +++ openssl-1.0.1c/Makefile.shared 2013-07-01 12:42:45 -0400 | |
160 @@ -261,13 +261,15 @@ | |
161 SHLIB=cyg$(LIBNAME); \ | |
162 base=-Wl,--enable-auto-image-base; \ | |
163 deffile=; \ | |
164 - if expr $(PLATFORM) : 'mingw' > /dev/null; then \ | |
165 - SHLIB=$(LIBNAME)eay32; base=; \ | |
166 + case $(PLATFORM) in \ | |
167 + mingw | msvc) \ | |
168 + SHLIB=@LIBRARY_PREFIX@$(LIBNAME)32; base=; \ | |
169 if test -f $(LIBNAME)eay32.def; then \ | |
170 deffile=$(LIBNAME)eay32.def; \ | |
171 fi; \ | |
172 - fi; \ | |
173 - SHLIB_SUFFIX=.dll; \ | |
174 + ;; \ | |
175 + esac; \ | |
176 + SHLIB_SUFFIX=@LIBRARY_SUFFIX@.dll; \ | |
177 LIBVERSION="$(LIBVERSION)"; \ | |
178 SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \ | |
179 ALLSYMSFLAGS='-Wl,--whole-archive'; \ | |
180 @@ -278,26 +280,28 @@ | |
181 link_a.cygwin: | |
182 @ $(CALC_VERSIONS); \ | |
183 INHIBIT_SYMLINKS=yes; \ | |
184 - SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=.dll; \ | |
185 + SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=@LIBRARY_SUFFIX@.dll; \ | |
186 dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; extras=; \ | |
187 base=-Wl,--enable-auto-image-base; \ | |
188 - if expr $(PLATFORM) : 'mingw' > /dev/null; then \ | |
189 + case $(PLATFORM) in \ | |
190 + mingw | msvc) \ | |
191 case $(LIBNAME) in \ | |
192 - crypto) SHLIB=libeay;; \ | |
193 - ssl) SHLIB=ssleay;; \ | |
194 + crypto) SHLIB=@LIBRARY_PREFIX@crypto;; \ | |
195 + ssl) SHLIB=@LIBRARY_PREFIX@ssl;; \ | |
196 esac; \ | |
197 SHLIB_SOVER=32; \ | |
198 extras="$(LIBNAME).def"; \ | |
199 - $(PERL) util/mkdef.pl 32 $$SHLIB > $$extras; \ | |
200 + $(PERL) util/mkdef.pl 32 $(LIBNAME) > $$extras; \ | |
201 base=; [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \ | |
202 - fi; \ | |
203 + ;; \ | |
204 + esac; \ | |
205 dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \ | |
206 $(PERL) util/mkrc.pl $$dll_name | \ | |
207 $(CROSS_COMPILE)windres -o rc.o; \ | |
208 extras="$$extras rc.o"; \ | |
209 ALLSYMSFLAGS='-Wl,--whole-archive'; \ | |
210 NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \ | |
211 - SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-s,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$extras"; \ | |
212 + SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-s,-Bsymbolic -Wl,--out-implib,$(SHLIB_PRE)$(LIBNAME)$(SHLIB_EXT) $$extras"; \ | |
213 [ -f apps/$$dll_name ] && rm apps/$$dll_name; \ | |
214 [ -f test/$$dll_name ] && rm test/$$dll_name; \ | |
215 $(LINK_SO_A) || exit 1; \ | |
216 diff -ur openssl-1.0.1c-orig/crypto/Makefile openssl-1.0.1c/crypto/Makefile | |
217 --- openssl-1.0.1c-orig/crypto/Makefile 2011-12-09 20:37:55 -0500 | |
218 +++ openssl-1.0.1c/crypto/Makefile 2013-07-01 12:42:45 -0400 | |
219 @@ -33,7 +33,7 @@ | |
220 GENERAL=Makefile README crypto-lib.com install.com | |
221 | |
222 LIB= $(TOP)/libcrypto.a | |
223 -SHARED_LIB= libcrypto$(SHLIB_EXT) | |
224 +SHARED_LIB= $(SHLIB_PRE)crypto$(SHLIB_EXT) | |
225 LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c cpt_err.c \ | |
226 ebcdic.c uid.c o_time.c o_str.c o_dir.c o_fips.c o_init.c fips_ers.c | |
227 LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o cpt_err.o ebcdic.o \ | |
228 diff -ur openssl-1.0.1c-orig/crypto/cryptlib.c openssl-1.0.1c/crypto/cryptlib.c | |
229 --- openssl-1.0.1c-orig/crypto/cryptlib.c 2012-01-21 07:18:29 -0500 | |
230 +++ openssl-1.0.1c/crypto/cryptlib.c 2013-07-01 12:42:45 -0400 | |
231 @@ -924,3 +924,81 @@ | |
232 } | |
233 | |
234 void *OPENSSL_stderr(void) { return stderr; } | |
235 + | |
236 +#ifdef _MSC_VER | |
237 +char* OPENSSL_relocate(const char* path) | |
238 +{ | |
239 + static char* openssl_root = NULL; | |
240 + static size_t openssl_root_len = 0; | |
241 + | |
242 + if (path == NULL) | |
243 + return path; | |
244 + | |
245 + if (openssl_root == NULL) | |
246 + { | |
247 + HMODULE hMod; | |
248 + | |
249 + if (GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, | |
250 + (LPCTSTR)OPENSSL_relocate, | |
251 + &hMod)) | |
252 + { | |
253 + DWORD len = 256, rlen; | |
254 + | |
255 + while (1) | |
256 + { | |
257 + openssl_root = (char*)OPENSSL_realloc(openssl_root, len); | |
258 + if (openssl_root == NULL) | |
259 + { | |
260 + OPENSSL_showfatal("Unable to allocate internal buffer"); | |
261 + break; | |
262 + } | |
263 + rlen = GetModuleFileName(hMod, openssl_root, len); | |
264 + if (rlen == 0) | |
265 + OPENSSL_showfatal("Unable to retrieve OpenSSL module file name"); | |
266 + else if (rlen < len) | |
267 + { | |
268 + char* p; | |
269 + | |
270 + p = strrchr(openssl_root, '\\'); | |
271 + if (p != NULL) | |
272 + { | |
273 + *p = '\0'; | |
274 + rlen = strlen(openssl_root); | |
275 + } | |
276 + | |
277 + if (rlen >= 4 && strcmp(openssl_root+rlen-4, "\\bin") == 0) | |
278 + { | |
279 + openssl_root[rlen-4] = '\0'; | |
280 + rlen -= 4; | |
281 + } | |
282 + openssl_root_len = rlen; | |
283 + | |
284 + /* Convert to forward slashes */ | |
285 + for (p = openssl_root; *p; ++p) | |
286 + if (*p == '\\') | |
287 + *p = '/'; | |
288 + | |
289 + break; | |
290 + } | |
291 + else | |
292 + len *= 2; | |
293 + } | |
294 + } | |
295 + else | |
296 + OPENSSL_showfatal("Unable to get OpenSSL module handle"); | |
297 + } | |
298 + | |
299 + if (strncmp(path, OPENSSLROOT, sizeof(OPENSSLROOT)-1) == 0) | |
300 + { | |
301 + size_t plen = openssl_root_len + strlen(path) - sizeof(OPENSSLROOT) + 2; | |
302 + char* new_path = (char*)OPENSSL_malloc(plen); | |
303 + | |
304 + BUF_strlcpy(new_path, openssl_root, plen); | |
305 + BUF_strlcat(new_path, path + sizeof(OPENSSLROOT) - 1, plen); | |
306 + | |
307 + return new_path; | |
308 + } | |
309 + else | |
310 + return OPENSSL_strdup(path); | |
311 +} | |
312 +#endif | |
313 diff -ur openssl-1.0.1c-orig/crypto/cryptlib.h openssl-1.0.1c/crypto/cryptlib.h | |
314 --- openssl-1.0.1c-orig/crypto/cryptlib.h 2011-06-28 09:31:57 -0400 | |
315 +++ openssl-1.0.1c/crypto/cryptlib.h 2013-07-01 12:42:45 -0400 | |
316 @@ -103,6 +103,9 @@ | |
317 void OPENSSL_showfatal(const char *,...); | |
318 void *OPENSSL_stderr(void); | |
319 extern int OPENSSL_NONPIC_relocated; | |
320 +#ifdef _MSC_VER | |
321 +extern char* OPENSSL_relocate(const char* path); | |
322 +#endif | |
323 | |
324 #ifdef __cplusplus | |
325 } | |
326 diff -ur openssl-1.0.1c-orig/crypto/dso/dso_win32.c openssl-1.0.1c/crypto/dso/dso_win32.c | |
327 --- openssl-1.0.1c-orig/crypto/dso/dso_win32.c 2009-07-15 07:01:40 -0400 | |
328 +++ openssl-1.0.1c/crypto/dso/dso_win32.c 2013-07-01 12:44:21 -0400 | |
329 @@ -638,7 +638,9 @@ | |
330 (strstr(filename, ":") == NULL)); | |
331 if(transform) | |
332 /* We will convert this to "%s.dll" */ | |
333 - translated = OPENSSL_malloc(len + 5); | |
334 + translated = OPENSSL_malloc(len + 5 + | |
335 + strlen("@LIBRARY_PREFIX@") + | |
336 + strlen("32@LIBRARY_SUFFIX@")); | |
337 else | |
338 /* We will simply duplicate filename */ | |
339 translated = OPENSSL_malloc(len + 1); | |
340 @@ -649,7 +651,7 @@ | |
341 return(NULL); | |
342 } | |
343 if(transform) | |
344 - sprintf(translated, "%s.dll", filename); | |
345 + sprintf(translated, "%s%s%s.dll", "@LIBRARY_PREFIX@", filename, "32@LIBRARY_SUFFIX@"); | |
346 else | |
347 sprintf(translated, "%s", filename); | |
348 return(translated); | |
349 diff -ur openssl-1.0.1c-orig/crypto/engine/eng_list.c openssl-1.0.1c/crypto/engine/eng_list.c | |
350 --- openssl-1.0.1c-orig/crypto/engine/eng_list.c 2010-03-27 14:28:13 -0400 | |
351 +++ openssl-1.0.1c/crypto/engine/eng_list.c 2013-07-01 12:42:45 -0400 | |
352 @@ -401,8 +401,12 @@ | |
353 #ifdef OPENSSL_SYS_VMS | |
354 if((load_dir = getenv("OPENSSL_ENGINES")) == 0) load_dir = "SSLROOT:[ENGINES]"; | |
355 #else | |
356 +#ifdef _MSC_VER | |
357 + if((load_dir = getenv("OPENSSL_ENGINES")) == 0) load_dir = OPENSSL_relocate(ENGINESDIR); | |
358 +#else | |
359 if((load_dir = getenv("OPENSSL_ENGINES")) == 0) load_dir = ENGINESDIR; | |
360 #endif | |
361 +#endif | |
362 iterator = ENGINE_by_id("dynamic"); | |
363 if(!iterator || !ENGINE_ctrl_cmd_string(iterator, "ID", id, 0) || | |
364 !ENGINE_ctrl_cmd_string(iterator, "DIR_LOAD", "2", 0) || | |
365 @@ -410,9 +414,15 @@ | |
366 load_dir, 0) || | |
367 !ENGINE_ctrl_cmd_string(iterator, "LOAD", NULL, 0)) | |
368 goto notfound; | |
369 +#ifdef _MSC_VER | |
370 + if (load_dir != NULL) OPENSSL_free(load_dir); | |
371 +#endif | |
372 return iterator; | |
373 } | |
374 notfound: | |
375 +#ifdef _MSC_VER | |
376 + if (load_dir != NULL) OPENSSL_free(load_dir); | |
377 +#endif | |
378 ENGINE_free(iterator); | |
379 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE); | |
380 ERR_add_error_data(2, "id=", id); | |
381 diff -ur openssl-1.0.1c-orig/crypto/opensslconf.h.in openssl-1.0.1c/crypto/opensslconf.h.in | |
382 --- openssl-1.0.1c-orig/crypto/opensslconf.h.in 2005-12-16 05:37:23 -0500 | |
383 +++ openssl-1.0.1c/crypto/opensslconf.h.in 2013-07-01 12:42:45 -0400 | |
384 @@ -5,6 +5,7 @@ | |
385 | |
386 #if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ | |
387 #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) | |
388 +#define OPENSSLROOT "/usr/local" | |
389 #define ENGINESDIR "/usr/local/lib/engines" | |
390 #define OPENSSLDIR "/usr/local/ssl" | |
391 #endif | |
392 diff -ur openssl-1.0.1c-orig/crypto/x509/x509_def.c openssl-1.0.1c/crypto/x509/x509_def.c | |
393 --- openssl-1.0.1c-orig/crypto/x509/x509_def.c 1999-09-11 13:54:11 -0400 | |
394 +++ openssl-1.0.1c/crypto/x509/x509_def.c 2013-07-01 12:42:45 -0400 | |
395 @@ -61,21 +61,31 @@ | |
396 #include <openssl/crypto.h> | |
397 #include <openssl/x509.h> | |
398 | |
399 +#ifdef _MSC_VER | |
400 +#define X509_GET_DEFAULT_PATH(p) \ | |
401 +static char* __internal__ = NULL; \ | |
402 +if (__internal__ == NULL) \ | |
403 + __internal__ = OPENSSL_relocate(p); \ | |
404 +return __internal__ | |
405 +#else | |
406 +#define X509_GET_DEFAULT_PATH(p) return(p) | |
407 +#endif | |
408 + | |
409 const char *X509_get_default_private_dir(void) | |
410 - { return(X509_PRIVATE_DIR); } | |
411 - | |
412 + { X509_GET_DEFAULT_PATH(X509_PRIVATE_DIR); } | |
413 + | |
414 const char *X509_get_default_cert_area(void) | |
415 - { return(X509_CERT_AREA); } | |
416 + { X509_GET_DEFAULT_PATH(X509_CERT_AREA); } | |
417 | |
418 const char *X509_get_default_cert_dir(void) | |
419 - { return(X509_CERT_DIR); } | |
420 + { X509_GET_DEFAULT_PATH(X509_CERT_DIR); } | |
421 | |
422 const char *X509_get_default_cert_file(void) | |
423 - { return(X509_CERT_FILE); } | |
424 + { X509_GET_DEFAULT_PATH(X509_CERT_FILE); } | |
425 | |
426 const char *X509_get_default_cert_dir_env(void) | |
427 - { return(X509_CERT_DIR_EVP); } | |
428 + { X509_GET_DEFAULT_PATH(X509_CERT_DIR_EVP); } | |
429 | |
430 const char *X509_get_default_cert_file_env(void) | |
431 - { return(X509_CERT_FILE_EVP); } | |
432 + { X509_GET_DEFAULT_PATH(X509_CERT_FILE_EVP); } | |
433 | |
434 diff -ur openssl-1.0.1c-orig/engines/Makefile openssl-1.0.1c/engines/Makefile | |
435 --- openssl-1.0.1c-orig/engines/Makefile 2010-08-24 17:46:58 -0400 | |
436 +++ openssl-1.0.1c/engines/Makefile 2013-07-01 12:42:45 -0400 | |
437 @@ -116,7 +116,7 @@ | |
438 *DSO_BEOS*) sfx=".so";; \ | |
439 *DSO_DLFCN*) sfx=`expr "$(SHLIB_EXT)" : '.*\(\.[a-z][a-z]*\)' \| ".so"`;; \ | |
440 *DSO_DL*) sfx=".sl";; \ | |
441 - *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \ | |
442 + *DSO_WIN32*) sfx="32@LIBRARY_SUFFIX@.dll"; pfx="@LIBRARY_PREFIX@";; \ | |
443 *) sfx=".bad";; \ | |
444 esac; \ | |
445 cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ | |
446 diff -ur openssl-1.0.1c-orig/engines/ccgost/Makefile openssl-1.0.1c/engines/ccgost/Makefile | |
447 --- openssl-1.0.1c-orig/engines/ccgost/Makefile 2012-04-26 06:42:20 -0400 | |
448 +++ openssl-1.0.1c/engines/ccgost/Makefile 2013-07-01 12:42:45 -0400 | |
449 @@ -50,7 +50,7 @@ | |
450 *DSO_BEOS*) sfx=".so";; \ | |
451 *DSO_DLFCN*) sfx=`expr "$(SHLIB_EXT)" : '.*\(\.[a-z][a-z]*\)' \| ".so"`;; \ | |
452 *DSO_DL*) sfx=".sl";; \ | |
453 - *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \ | |
454 + *DSO_WIN32*) sfx="32@LIBRARY_SUFFIX@.dll"; pfx="@LIBRARY_PREFIX@";; \ | |
455 *) sfx=".bad";; \ | |
456 esac; \ | |
457 cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ | |
458 diff -ur openssl-1.0.1c-orig/ssl/Makefile openssl-1.0.1c/ssl/Makefile | |
459 --- openssl-1.0.1c-orig/ssl/Makefile 2012-01-02 11:41:11 -0500 | |
460 +++ openssl-1.0.1c/ssl/Makefile 2013-07-01 12:42:45 -0400 | |
461 @@ -19,7 +19,7 @@ | |
462 APPS= | |
463 | |
464 LIB=$(TOP)/libssl.a | |
465 -SHARED_LIB= libssl$(SHLIB_EXT) | |
466 +SHARED_LIB= $(SHLIB_PRE)ssl$(SHLIB_EXT) | |
467 LIBSRC= \ | |
468 s2_meth.c s2_srvr.c s2_clnt.c s2_lib.c s2_enc.c s2_pkt.c \ | |
469 s3_meth.c s3_srvr.c s3_clnt.c s3_lib.c s3_enc.c s3_pkt.c s3_both.c \ | |
470 diff -ur openssl-1.0.1c-orig/util/mkdef.pl openssl-1.0.1c/util/mkdef.pl | |
471 --- openssl-1.0.1c-orig/util/mkdef.pl 2011-12-31 18:49:45 -0500 | |
472 +++ openssl-1.0.1c/util/mkdef.pl 2013-07-01 12:42:45 -0400 | |
473 @@ -1306,7 +1306,7 @@ | |
474 ; Definition file for the DLL version of the $name library from OpenSSL | |
475 ; | |
476 | |
477 -LIBRARY $libname $liboptions | |
478 +LIBRARY @LIBRARY_PREFIX@$libname@LIBRARY_SUFFIX@ $liboptions | |
479 | |
480 EOF | |
481 |