1 |
vapier 12/01/02 19:40:31 |
2 |
|
3 |
Added: libp11-0.2.8-no-ltdl.patch |
4 |
Log: |
5 |
Add patch from upstream to drop libtool requirement #394717. |
6 |
|
7 |
(Portage version: 2.2.0_alpha81/cvs/Linux x86_64) |
8 |
|
9 |
Revision Changes Path |
10 |
1.1 dev-libs/libp11/files/libp11-0.2.8-no-ltdl.patch |
11 |
|
12 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/libp11/files/libp11-0.2.8-no-ltdl.patch?rev=1.1&view=markup |
13 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/libp11/files/libp11-0.2.8-no-ltdl.patch?rev=1.1&content-type=text/plain |
14 |
|
15 |
Index: libp11-0.2.8-no-ltdl.patch |
16 |
=================================================================== |
17 |
patch from upstream |
18 |
|
19 |
From 1c872a3e9c4cbf3cbd485168a7e98b589bbad57a Mon Sep 17 00:00:00 2001 |
20 |
From: alonbl <alonbl@6d86ddd8-19ff-0310-a323-aa2ba648d307> |
21 |
Date: Wed, 14 Dec 2011 10:46:45 +0000 |
22 |
Subject: [PATCH] Remove ltdl usage |
23 |
|
24 |
Use native POSIX/Windows |
25 |
|
26 |
|
27 |
git-svn-id: http://www.opensc-project.org/svn/libp11/trunk@202 6d86ddd8-19ff-0310-a323-aa2ba648d307 |
28 |
--- |
29 |
configure.ac | 23 +++++------------------ |
30 |
src/Makefile.am | 4 ++-- |
31 |
src/Makefile.mak | 7 ++----- |
32 |
src/libpkcs11.c | 52 +++++++++++++++++++++++++++++++++++++++------------- |
33 |
4 files changed, 48 insertions(+), 38 deletions(-) |
34 |
|
35 |
diff --git a/configure.ac b/configure.ac |
36 |
index 679b8da..9fa96bf 100644 |
37 |
--- a/configure.ac |
38 |
+++ b/configure.ac |
39 |
@@ -180,25 +180,14 @@ if test "${svn_checkout}" = "yes"; then |
40 |
fi |
41 |
fi |
42 |
|
43 |
-AC_ARG_VAR([LTLIB_CFLAGS], [C compiler flags for libltdl]) |
44 |
-AC_ARG_VAR([LTLIB_LIBS], [linker flags for libltdl]) |
45 |
-if test -z "${LTLIB_LIBS}"; then |
46 |
+if test "${WIN32}" != "yes"; then |
47 |
AC_CHECK_LIB( |
48 |
- [ltdl], |
49 |
- [lt_dlopen], |
50 |
- [LTLIB_LIBS="-lltdl"], |
51 |
- [AC_MSG_ERROR([ltdl not found, please install libltdl and/or libtool])] |
52 |
+ [dl], |
53 |
+ [dlopen], |
54 |
+ , |
55 |
+ [AC_MSG_ERROR([libdl required])] |
56 |
) |
57 |
- |
58 |
fi |
59 |
-saved_CFLAGS="${CFLAGS}" |
60 |
-CFLAGS="${CFLAGS} ${LTLIB_CFLAGS}" |
61 |
-AC_CHECK_HEADER( |
62 |
- [ltdl.h], |
63 |
- , |
64 |
- [AC_MSG_ERROR([ltdl.h not found, please install libltdl and/or libtool])] |
65 |
-) |
66 |
-CFLAGS="${saved_CFLAGS}" |
67 |
|
68 |
PKG_CHECK_MODULES( |
69 |
[OPENSSL], |
70 |
@@ -273,8 +262,6 @@ Compiler flags: ${CFLAGS} |
71 |
Linker flags: ${LDFLAGS} |
72 |
Libraries: ${LIBS} |
73 |
|
74 |
-LTLIB_CFLAGS: ${LTLIB_CFLAGS} |
75 |
-LTLIB_LIBS: ${LTLIB_LIBS} |
76 |
OPENSSL_CFLAGS: ${OPENSSL_CFLAGS} |
77 |
OPENSSL_LIBS: ${OPENSSL_LIBS} |
78 |
|
79 |
diff --git a/src/Makefile.am b/src/Makefile.am |
80 |
index c66a8cd..0910f44 100644 |
81 |
--- a/src/Makefile.am |
82 |
+++ b/src/Makefile.am |
83 |
@@ -16,8 +16,8 @@ libp11_la_SOURCES += versioninfo.rc |
84 |
else |
85 |
dist_noinst_DATA = versioninfo.rc |
86 |
endif |
87 |
-libp11_la_CFLAGS = $(AM_CFLAGS) $(OPENSSL_CFLAGS) $(LTLIB_CFLAGS) |
88 |
-libp11_la_LIBADD = $(OPENSSL_LIBS) $(LTLIB_LIBS) |
89 |
+libp11_la_CFLAGS = $(AM_CFLAGS) $(OPENSSL_CFLAGS) |
90 |
+libp11_la_LIBADD = $(OPENSSL_LIBS) |
91 |
libp11_la_LDFLAGS = $(AM_LDFLAGS) \ |
92 |
-version-info @LIBP11_LT_CURRENT@:@LIBP11_LT_REVISION@:@LIBP11_LT_AGE@ \ |
93 |
-export-symbols "$(srcdir)/libp11.exports" \ |
94 |
diff --git a/src/Makefile.mak b/src/Makefile.mak |
95 |
index 73b5428..fa0809c 100644 |
96 |
--- a/src/Makefile.mak |
97 |
+++ b/src/Makefile.mak |
98 |
@@ -1,10 +1,7 @@ |
99 |
-LIBLTDL_INC = # E.g. /IC:\libtool-1.5.8-lib\include |
100 |
-LIBLTDL_LIB = # E.g. C:\libtool-1.5.8-lib\lib\libltdl.lib |
101 |
- |
102 |
OPENSSL_INC = /IC:\openssl\include |
103 |
OPENSSL_LIB = C:\openssl\out32dll\libeay32.lib |
104 |
|
105 |
-COPTS = /Zi /MD /nologo /I..\ /I. $(OPENSSL_INC) $(LIBLTDL_INC) /D_WIN32_WINNT=0x0400 /DWIN32 /DWIN32_LEAN_AND_MEAN |
106 |
+COPTS = /Zi /MD /nologo /I..\ /I. $(OPENSSL_INC) /D_WIN32_WINNT=0x0400 /DWIN32 /DWIN32_LEAN_AND_MEAN |
107 |
LINKFLAGS = /DEBUG /NOLOGO /INCREMENTAL:NO /MACHINE:IX86 |
108 |
|
109 |
TARGET = libp11.dll |
110 |
@@ -28,6 +25,6 @@ $(TARGET): $(OBJECTS) versioninfo.res |
111 |
echo EXPORTS >> $*.def |
112 |
type $*.exports >> $*.def |
113 |
link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:$(TARGET) \ |
114 |
- $(OBJECTS) $(OPENSSL_LIB) $(LIBLTDL_LIB) versioninfo.res |
115 |
+ $(OBJECTS) $(OPENSSL_LIB) versioninfo.res |
116 |
if EXIST $*.dll.manifest mt -manifest $*.dll.manifest -outputresource:$*.dll;2 |
117 |
|
118 |
diff --git a/src/libpkcs11.c b/src/libpkcs11.c |
119 |
index a146361..93584d9 100644 |
120 |
--- a/src/libpkcs11.c |
121 |
+++ b/src/libpkcs11.c |
122 |
@@ -27,14 +27,18 @@ |
123 |
#include <stdlib.h> |
124 |
#include <stdio.h> |
125 |
#include <string.h> |
126 |
-#include <ltdl.h> |
127 |
+#ifdef WIN32 |
128 |
+#include <windows.h> |
129 |
+#else |
130 |
+#include <dlfcn.h> |
131 |
+#endif |
132 |
#include "libp11-int.h" |
133 |
|
134 |
#define MAGIC 0xd00bed00 |
135 |
|
136 |
struct sc_pkcs11_module { |
137 |
unsigned int _magic; |
138 |
- lt_dlhandle handle; |
139 |
+ void *handle; |
140 |
}; |
141 |
typedef struct sc_pkcs11_module sc_pkcs11_module_t; |
142 |
|
143 |
@@ -52,19 +56,40 @@ C_LoadModule(const char *mspec, CK_FUNCTION_LIST_PTR_PTR funcs) |
144 |
if (mspec == NULL) |
145 |
return NULL; |
146 |
|
147 |
- if (lt_dlinit() != 0) |
148 |
- return NULL; |
149 |
- |
150 |
mod = (sc_pkcs11_module_t *) calloc(1, sizeof(*mod)); |
151 |
mod->_magic = MAGIC; |
152 |
|
153 |
- mod->handle = lt_dlopen(mspec); |
154 |
+#ifdef WIN32 |
155 |
+ mod->handle = LoadLibraryA(mspec); |
156 |
+#else |
157 |
+ mod->handle = dlopen(mspec, RTLD_NOW); |
158 |
+#endif |
159 |
+ |
160 |
if (mod->handle == NULL) |
161 |
goto failed; |
162 |
|
163 |
- /* Get the list of function pointers */ |
164 |
- c_get_function_list = (CK_RV (*)(CK_FUNCTION_LIST_PTR_PTR)) |
165 |
- lt_dlsym(mod->handle, "C_GetFunctionList"); |
166 |
+#ifdef WIN32 |
167 |
+ c_get_function_list = (CK_C_GetFunctionList)GetProcAddress ( |
168 |
+ mod->handle, |
169 |
+ "C_GetFunctionList" |
170 |
+ ); |
171 |
+#else |
172 |
+ { |
173 |
+ /* |
174 |
+ * Make compiler happy! |
175 |
+ */ |
176 |
+ void *p = dlsym( |
177 |
+ mod->handle, |
178 |
+ "C_GetFunctionList" |
179 |
+ ); |
180 |
+ memmove( |
181 |
+ &c_get_function_list, |
182 |
+ &p, |
183 |
+ sizeof(void *) |
184 |
+ ); |
185 |
+ } |
186 |
+#endif |
187 |
+ |
188 |
if (!c_get_function_list) |
189 |
goto failed; |
190 |
rv = c_get_function_list(funcs); |
191 |
@@ -89,13 +114,14 @@ C_UnloadModule(void *module) |
192 |
if (!mod || mod->_magic != MAGIC) |
193 |
return CKR_ARGUMENTS_BAD; |
194 |
|
195 |
- if (lt_dlclose(mod->handle) < 0) |
196 |
- return CKR_FUNCTION_FAILED; |
197 |
+#ifdef WIN32 |
198 |
+ FreeLibrary(mod->handle); |
199 |
+#else |
200 |
+ dlclose(mod->handle); |
201 |
+#endif |
202 |
|
203 |
memset(mod, 0, sizeof(*mod)); |
204 |
free(mod); |
205 |
|
206 |
- lt_dlexit(); |
207 |
- |
208 |
return CKR_OK; |
209 |
} |
210 |
-- |
211 |
1.7.6.1 |