automate cross compile for windows in win32. use the power of the opensc build script
git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@772 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = src m4 doc
|
||||
SUBDIRS = src m4 doc win32
|
||||
|
||||
EXTRA_DIST = libnpa.pc.in apdus
|
||||
|
||||
@@ -15,74 +15,14 @@ do_subst = $(SED) \
|
||||
-e 's,[@]OPENSC_LIBS[@],$(OPENSC_LIBS),g' \
|
||||
-e 's,[@]top_srcdir[@],$(top_srcdir),g'
|
||||
|
||||
do_export = cp $(abs_srcdir)/Makefile.am.opensc src/libopensc/Makefile.am
|
||||
|
||||
opensc_img = $(abs_srcdir)/src/opensc/win32/build/image
|
||||
opensc_root = $(opensc_img)/opensc
|
||||
|
||||
fixup_la = find "$(opensc_img)" -name '*.la' | while read f; do \
|
||||
top="$$(dirname "$$(dirname "$$(echo "$${f}")")" | $(SED) 's\#//\#/\#g')" \
|
||||
$(SED) 's\#//\#'"$${top}"'/\#g' "$${f}" > "$${f}.tmp"; \
|
||||
mv "$${f}.tmp" "$${f}"; \
|
||||
done
|
||||
restore_la = find "$(opensc_img)" -name '*.la' | while read f; do \
|
||||
x="$$(echo "$(opensc_img)" | $(SED) 's\#/$$\#\#')" \
|
||||
$(SED) 's\#'"$${x}"'/[^/]*/lib\#//lib\#g' "$${f}" > "$${f}.tmp"; \
|
||||
mv "$${f}.tmp" "$${f}"; \
|
||||
done
|
||||
|
||||
$(opensc_root)/lib/libopensc.la:
|
||||
cd $(top_srcdir)/src/opensc && \
|
||||
./bootstrap && \
|
||||
./configure --disable-doc && \
|
||||
EXTRA_OPENSC_CONFIG="`$(do_export)`" \
|
||||
ZLIB_VERSION="1.2.6" \
|
||||
OPENSSL_VERSION="1.0.1_with_openpace-0.7" \
|
||||
OPENSSL_URL="http://www2.informatik.hu-berlin.de/~morgner/openssl-1.0.1_with_openpace-0.7.tar.gz" \
|
||||
EXTRA_OPENSSL_CONFIG="experimental-pace" \
|
||||
win32/installer_from_build.sh
|
||||
|
||||
$(opensc_root)/lib/libnpa.la: $(opensc_root)/lib/libopensc.la
|
||||
$(fixup_la)
|
||||
export ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes; ./configure \
|
||||
--sbindir=/bin \
|
||||
--prefix=/ \
|
||||
--host=i586-mingw32msvc \
|
||||
--build=$(shell gcc -dumpmachine) \
|
||||
--program-prefix='' \
|
||||
LIBS="-lws2_32" \
|
||||
PKG_CONFIG_PATH="$(opensc_root)/lib/pkgconfig" \
|
||||
PKG_CONFIG_SYSROOT_DIR="$(opensc_root)" \
|
||||
OPENSC_LIBS="-L$(opensc_root)/lib -lopensc" || ($(restore_la) && false)
|
||||
make install DESTDIR="$(opensc_root)" || ($(restore_la) && false)
|
||||
$(restore_la)
|
||||
|
||||
win-opensc: $(opensc_root)/lib/libopensc.la
|
||||
|
||||
win: $(opensc_root)/lib/libnpa.la
|
||||
mkdir -p $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32
|
||||
for i in \
|
||||
$(opensc_root)/bin/*npa*.dll \
|
||||
$(opensc_root)/bin/*opensc*.dll \
|
||||
$(opensc_root)/bin/*eay*.dll \
|
||||
$(opensc_root)/bin/*ltdl*.dll \
|
||||
$(opensc_root)/bin/*zlib*.dll \
|
||||
$(opensc_root)/bin/npa-tool.exe \
|
||||
; do cp $${i} $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32; done
|
||||
mkdir -p $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32/include
|
||||
for i in \
|
||||
$(opensc_root)/include/openssl \
|
||||
$(opensc_root)/include/npa \
|
||||
; do cp -r $${i} $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32/include; done
|
||||
mkdir -p $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32/include/libopensc
|
||||
cp $(srcdir)/src/opensc/src/libopensc/*.h $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32/include/libopensc
|
||||
rm -f $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32/*pkcs* $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32/include/libopensc/*internal*.h
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libnpa.pc
|
||||
libnpa.pc:
|
||||
$(do_subst) < $(srcdir)/libnpa.pc.in > libnpa.pc
|
||||
|
||||
win:
|
||||
make -C win32 $@
|
||||
|
||||
clean-local:
|
||||
rm -f libnpa.pc
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
include $(top_srcdir)/win32/ltrc.inc
|
||||
|
||||
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
|
||||
|
||||
EXTRA_DIST = Makefile.mak
|
||||
|
||||
lib_LTLIBRARIES = libopensc.la
|
||||
noinst_HEADERS = cards.h ctbcs.h internal.h esteid.h muscle.h muscle-filesystem.h \
|
||||
internal-winscard.h p15card-helper.h \
|
||||
opensc.h pkcs15.h \
|
||||
cardctl.h asn1.h log.h \
|
||||
errors.h types.h compression.h itacns.h iso7816.h \
|
||||
authentic.h iasecc.h iasecc-sdo.h
|
||||
|
||||
AM_CPPFLAGS = -DOPENSC_CONF_PATH=\"$(sysconfdir)/opensc.conf\"
|
||||
AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_OPENCT_CFLAGS) \
|
||||
$(OPTIONAL_PCSC_CFLAGS) $(OPTIONAL_ZLIB_CFLAGS) \
|
||||
$(LTLIB_CFLAGS)
|
||||
INCLUDES = -I$(top_srcdir)/src
|
||||
|
||||
libopensc_la_SOURCES = \
|
||||
sc.c ctx.c log.c errors.c \
|
||||
asn1.c base64.c sec.c card.c iso7816.c dir.c ef-atr.c padding.c apdu.c \
|
||||
\
|
||||
pkcs15.c pkcs15-cert.c pkcs15-data.c pkcs15-pin.c \
|
||||
pkcs15-prkey.c pkcs15-pubkey.c pkcs15-sec.c \
|
||||
pkcs15-algo.c pkcs15-cache.c pkcs15-syn.c \
|
||||
\
|
||||
muscle.c muscle-filesystem.c \
|
||||
\
|
||||
ctbcs.c reader-ctapi.c reader-pcsc.c reader-openct.c \
|
||||
\
|
||||
card-setcos.c card-miocos.c card-flex.c card-gpk.c \
|
||||
card-cardos.c card-tcos.c card-default.c card-npa.c \
|
||||
card-mcrd.c card-starcos.c card-openpgp.c card-jcop.c \
|
||||
card-oberthur.c card-belpic.c card-atrust-acos.c card-entersafe.c \
|
||||
card-incrypto34.c card-piv.c card-muscle.c card-acos5.c \
|
||||
card-asepcos.c card-akis.c card-gemsafeV1.c card-rutoken.c \
|
||||
card-rtecp.c card-westcos.c card-myeid.c card-ias.c \
|
||||
card-javacard.c card-itacns.c card-authentic.c \
|
||||
card-iasecc.c iasecc-sdo.c \
|
||||
\
|
||||
pkcs15-openpgp.c pkcs15-infocamere.c pkcs15-starcert.c \
|
||||
pkcs15-tcos.c pkcs15-esteid.c pkcs15-postecert.c pkcs15-gemsafeGPK.c \
|
||||
pkcs15-actalis.c pkcs15-atrust-acos.c pkcs15-tccardos.c pkcs15-piv.c \
|
||||
pkcs15-esinit.c pkcs15-westcos.c pkcs15-pteid.c pkcs15-oberthur.c \
|
||||
pkcs15-itacns.c pkcs15-gemsafeV1.c \
|
||||
compression.c p15card-helper.c
|
||||
if WIN32
|
||||
libopensc_la_SOURCES += $(top_builddir)/win32/versioninfo.rc
|
||||
endif
|
||||
libopensc_la_LIBADD = $(OPTIONAL_OPENSSL_LIBS) $(OPTIONAL_OPENCT_LIBS) \
|
||||
$(OPTIONAL_ZLIB_LIBS) $(LTLIB_LIBS) \
|
||||
$(top_builddir)/src/pkcs15init/libpkcs15init.la \
|
||||
$(top_builddir)/src/scconf/libscconf.la \
|
||||
$(top_builddir)/src/common/libcompat.la
|
||||
if WIN32
|
||||
libopensc_la_LIBADD += -lws2_32
|
||||
endif
|
||||
libopensc_la_LDFLAGS = $(AM_LDFLAGS) \
|
||||
-version-info @OPENSC_LT_CURRENT@:@OPENSC_LT_REVISION@:@OPENSC_LT_AGE@ \
|
||||
-no-undefined
|
||||
|
||||
if WIN32
|
||||
# def file required for MS users to build library
|
||||
mylibdir=$(libdir)
|
||||
mylib_DATA=.libs/@WIN_LIBPREFIX@opensc-@OPENSC_LT_OLDEST@.dll.def
|
||||
.libs/@WIN_LIBPREFIX@opensc-@OPENSC_LT_OLDEST@.dll.def: libopensc.la
|
||||
endif
|
||||
@@ -110,6 +110,7 @@ AC_CONFIG_FILES([
|
||||
Makefile
|
||||
m4/Makefile
|
||||
src/Makefile
|
||||
win32/Makefile
|
||||
doc/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
||||
55
npa/win32/Makefile.am
Normal file
55
npa/win32/Makefile.am
Normal file
@@ -0,0 +1,55 @@
|
||||
EXTRA_DIST = build_fix_zlib.patch build_npa.patch
|
||||
|
||||
|
||||
all-local:
|
||||
echo "Use \`make win\` to cross compile for Windows"
|
||||
|
||||
|
||||
OPENSC ?= $(abs_builddir)/opensc
|
||||
$(OPENSC)/configure.ac:
|
||||
git clone git://github.com/frankmorgner/OpenSC.git $(OPENSC)
|
||||
true cp Makefile.am.opensc.libopensc $(OPENSC)/src/libopensc/Makefile.am
|
||||
|
||||
OPENSC_TAR_GZ=$(OPENSC)/opensc-0.12.3-pre1.tar.gz
|
||||
$(OPENSC_TAR_GZ): $(OPENSC)/configure.ac
|
||||
cd $(OPENSC) && ./bootstrap && ./configure --disable-doc
|
||||
make -C $(OPENSC) dist
|
||||
|
||||
NPA_TAR_GZ=$(abs_top_builddir)/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz
|
||||
$(NPA_TAR_GZ):
|
||||
make -C $(abs_top_builddir) dist
|
||||
|
||||
BUILD=$(abs_builddir)/build
|
||||
$(BUILD)/build: $(OPENSC_TAR_GZ) $(NPA_TAR_GZ)
|
||||
svn co -r123 http://www.opensc-project.org/svn/build/trunk $(BUILD)
|
||||
patch -p1 -d $(BUILD) < build_fix_zlib.patch
|
||||
patch -p1 -d $(BUILD) < build_npa.patch
|
||||
mkdir -p $(BUILD)/sources
|
||||
cp $(OPENSC_TAR_GZ) $(BUILD)/sources
|
||||
cp $(NPA_TAR_GZ) $(BUILD)/sources
|
||||
|
||||
|
||||
MINGW ?= i586-mingw32msvc
|
||||
IMAGE=$(BUILD)/image/opensc
|
||||
NPA_TOOL_EXE=$(IMAGE)/bin/npa-tool.exe
|
||||
$(NPA_TOOL_EXE): $(BUILD)/build
|
||||
cd $(BUILD) && \
|
||||
export ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes; \
|
||||
CHOST=$(MINGW) CBUILD=`gcc -dumpmachine` \
|
||||
ZLIB_VERSION="1.2.6" \
|
||||
./build
|
||||
|
||||
|
||||
WIN32_DIR=$(abs_top_builddir)/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_win32
|
||||
win: $(NPA_TOOL_EXE)
|
||||
mv $(IMAGE) $(WIN32_DIR)
|
||||
$(INSTALL) -d $(WIN32_DIR)/include/libopensc
|
||||
$(INSTALL_DATA) -t $(WIN32_DIR)/include/libopensc \
|
||||
$(OPENSC)/src/libopensc/*.h
|
||||
rm -f $(WIN32_DIR)/include/libopensc/*internal*.h
|
||||
|
||||
clean-local:
|
||||
rm -rf $(IMAGE) $(WIN32_DIR)
|
||||
|
||||
distclean-local:
|
||||
rm -rf $(OPENSC) $(BUILD)
|
||||
13
npa/win32/build_fix_zlib.patch
Normal file
13
npa/win32/build_fix_zlib.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
Index: build/build
|
||||
===================================================================
|
||||
--- build.orig/build 2012-04-15 20:42:56.183646915 +0200
|
||||
+++ build/build 2012-04-15 20:43:06.951700312 +0200
|
||||
@@ -419,7 +419,7 @@
|
||||
OPENSC_COMPONENTS="pcsc"
|
||||
export PKG_CONFIG="true"
|
||||
export MAN2HTML="true"
|
||||
- export ZLIB_LIBS="-L${OPENSC_ROOT}/lib -lzdll"
|
||||
+ #export ZLIB_LIBS="-L${OPENSC_ROOT}/lib -lzdll"
|
||||
export ICONV_CFLAGS="-I${OPENSC_ROOT}/include"
|
||||
export ICONV_LIBS="-L${OPENSC_ROOT}/lib -liconv"
|
||||
fi
|
||||
107
npa/win32/build_npa.patch
Normal file
107
npa/win32/build_npa.patch
Normal file
@@ -0,0 +1,107 @@
|
||||
Index: build/build
|
||||
===================================================================
|
||||
--- build.orig/build 2012-04-15 21:55:56.517367834 +0200
|
||||
+++ build/build 2012-04-15 22:08:45.505181046 +0200
|
||||
@@ -92,12 +92,13 @@
|
||||
for url in \
|
||||
${ZLIB_URL} ${LZO_URL} ${LIBTOOL_URL} ${ICONV_URL} \
|
||||
${OPENSSL_URL} ${OPENCT_URL} ${OPENSC_URL} ${LIBP11_URL} \
|
||||
- ${ENGINE_PKCS11_URL} ${PKCS11_HELPER_URL} ${OPENVPN_URL}; \
|
||||
+ ${ENGINE_PKCS11_URL} ${PKCS11_HELPER_URL} ${OPENVPN_URL} \
|
||||
+ ${NPA_URL}; \
|
||||
do
|
||||
download1 "${url}"
|
||||
done
|
||||
|
||||
- if [ "$(ls "${SOURCESROOT}" | wc -l | sed 's/[ \t]//g')" != 11 ]; then
|
||||
+ if [ "$(ls "${SOURCESROOT}" | wc -l | sed 's/[ \t]//g')" != 12 ]; then
|
||||
die "sources is unclean."
|
||||
fi
|
||||
}
|
||||
@@ -201,6 +202,7 @@
|
||||
zlib-dynamic ${ZLIB_CFLAGS} \
|
||||
no-capieng \
|
||||
--openssldir=/etc/ssl \
|
||||
+ experimental-pace \
|
||||
${EXTRA_OPENSSL_CONFIG} \
|
||||
|| die "Configure openssl"
|
||||
[ -n "${BUILD_FOR_WINDOWS}" ] && perl util/mkdef.pl crypto ssl NT update
|
||||
@@ -244,7 +246,24 @@
|
||||
CFLAGS="${CFLAGS} --include=cardmod-mingw-compat.h -I${SCRIPTROOT}/include" \
|
||||
--enable-openssl --enable-zlib ${extra_opensc} --enable-doc \
|
||||
|| die "Configure opensc"
|
||||
- ${MAKE} ${MAKEOPTS} ${MAKE_AUTOCONF_INSTALL_TARGET} DESTDIR="${OPENSC_ROOT}" || die "make opensc"
|
||||
+ ${MAKE} ${MAKEOPTS} ${MAKE_AUTOCONF_INSTALL_TARGET} DESTDIR="${OPENSC_ROOT}" \
|
||||
+ || test -x ${OPENSC_ROOT}/bin/libopensc-3.dll || die "make opensc"
|
||||
+
|
||||
+ fixup_la
|
||||
+
|
||||
+ cd "${SCRIPTROOT}"
|
||||
+ restore_la
|
||||
+}
|
||||
+
|
||||
+build_npa() {
|
||||
+ fixup_la
|
||||
+
|
||||
+ echo "Build npa"
|
||||
+ cd "${BUILDROOT}/npa"* || die "cd npa"
|
||||
+ ./configure ${CONFIGOPTS} ${EXTRA_NPA_CONFIG} \
|
||||
+ CFLAGS="${CFLAGS} -I${SCRIPTROOT}/include" LIBS="${LIBS} -lws2_32" \
|
||||
+ || die "Configure npa"
|
||||
+ ${MAKE} ${MAKEOPTS} ${MAKE_AUTOCONF_INSTALL_TARGET} DESTDIR="${OPENSC_ROOT}" || die "make npa"
|
||||
|
||||
fixup_la
|
||||
|
||||
@@ -410,6 +429,8 @@
|
||||
export LZO_LIBS="-L${OPENVPN_ROOT}/lib -llzo2"
|
||||
export PKCS11_HELPER_CFLAGS="-I${OPENVPN_ROOT}/include"
|
||||
export PKCS11_HELPER_LIBS="-L${OPENVPN_ROOT}/lib -lpkcs11-helper"
|
||||
+export OPENSC_CFLAGS="-I${OPENSC_ROOT}/include"
|
||||
+export OPENSC_LIBS="-L${OPENSC_ROOT}/lib -lopensc"
|
||||
|
||||
if [ -n "${BUILD_FOR_WINDOWS}" ]; then
|
||||
CONFIGOPTS=" \
|
||||
@@ -430,6 +451,7 @@
|
||||
fixup_win64_libtool
|
||||
build_dep
|
||||
build_opensc
|
||||
+build_npa
|
||||
build_engine_pkcs11
|
||||
build_openvpn
|
||||
copy_docs
|
||||
Index: build/build.vars
|
||||
===================================================================
|
||||
--- build.orig/build.vars 2012-04-15 21:55:32.361248035 +0200
|
||||
+++ build/build.vars 2012-04-15 21:56:04.533407557 +0200
|
||||
@@ -4,7 +4,7 @@
|
||||
ZLIB_VERSION="${ZLIB_VERSION:-1.2.5}"
|
||||
LIBTOOL_VERSION="${LIBTOOL_VERSION:-2.4}"
|
||||
ICONV_VERSION="${ICONV_VERSION:-1.14}"
|
||||
-OPENSSL_VERSION="${OPENSSL_VERSION:-1.0.0e}"
|
||||
+OPENSSL_VERSION="${OPENSSL_VERSION:-1.0.1_with_openpace-0.7}"
|
||||
OPENCT_VERSION="${OPENCT_VERSION:-0.6.20}"
|
||||
OPENSC_VERSION="${OPENSC_VERSION:-0.12.2}"
|
||||
LIBP11_VERSION="${LIBP11_VERSION:-0.2.8}"
|
||||
@@ -12,12 +12,13 @@
|
||||
PKCS11_HELPER_VERSION="${PKCS11_HELPER_VERSION:-1.09}"
|
||||
LZO_VERSION="${LZO_VERSION:-2.05}"
|
||||
OPENVPN_VERSION="${OPENVPN_VERSION:-2.2.1}"
|
||||
+NPA_VERSION="${NPA_VERSION:-0.4}"
|
||||
OPENSC_COMPONENTS="openct"
|
||||
|
||||
ZLIB_URL="${ZLIB_URL:-http://www.zlib.net/zlib-${ZLIB_VERSION}.tar.gz}"
|
||||
LIBTOOL_URL="${LIBTOOL_URL:-http://ftp.gnu.org/gnu/libtool/libtool-${LIBTOOL_VERSION}.tar.gz}"
|
||||
ICONV_URL="${ICONV_URL:-http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz}"
|
||||
-OPENSSL_URL="${OPENSSL_URL:-http://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz}"
|
||||
+OPENSSL_URL="${OPENSSL_URL:-http://www2.informatik.hu-berlin.de/~morgner/openssl-${OPENSSL_VERSION}.tar.gz}"
|
||||
OPENCT_URL="${OPENCT_URL:-http://www.opensc-project.org/files/openct/openct-${OPENCT_VERSION}.tar.gz}"
|
||||
OPENSC_URL="${OPENSC_URL:-http://www.opensc-project.org/files/opensc/opensc-${OPENSC_VERSION}.tar.gz}"
|
||||
LIBP11_URL="${LIBP11_URL:-http://www.opensc-project.org/files/libp11/libp11-${LIBP11_VERSION}.tar.gz}"
|
||||
@@ -25,6 +26,7 @@
|
||||
PKCS11_HELPER_URL="${PKCS11_HELPER_URL:-http://www.opensc-project.org/files/pkcs11-helper/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.bz2}"
|
||||
LZO_URL="${LZO_URL:-http://www.oberhumer.com/opensource/lzo/download/lzo-${LZO_VERSION}.tar.gz}"
|
||||
OPENVPN_URL="${OPENVPN_URL:-http://swupdate.openvpn.net/community/releases/openvpn-${OPENVPN_VERSION}.tar.gz}"
|
||||
+NPA_URL="${NPA_URL:-http://downloads.sourceforge.net/project/vsmartcard/npa/npa-${NPA_VERSION}.tar.gz}"
|
||||
|
||||
#CHOST
|
||||
#CTARGET
|
||||
Reference in New Issue
Block a user