aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2012-06-21 20:06:54 +0200
committerJay Berkenbilt <ejb@ql.org>2012-06-22 03:22:35 +0200
commitc833295a3948e914fa23042896f19f35ddd8d927 (patch)
treed2c135487757ad8ad917242e8e6c42097a016fd4
parent85d9e7dfed31cf4b9307fad920422a7b433fc35c (diff)
downloadqpdf-c833295a3948e914fa23042896f19f35ddd8d927.tar.zst
Adjust Windows built to support 32-bit and 64-bit builds
Update the build to support new external-libs layout, and autoconf options to specify windows word size. Split make_windows_releases into multiple scripts.
-rw-r--r--autoconf.mk.in4
-rwxr-xr-xconfig-mingw32 (renamed from config-mingw)2
-rw-r--r--config-mingw6410
-rwxr-xr-xconfig-msvc11
-rw-r--r--configure.ac17
-rwxr-xr-xcopy_dlls8
-rw-r--r--make/installwin.mk2
-rw-r--r--make/mingw.mk8
-rw-r--r--make/msvc.mk2
-rwxr-xr-xmake_windows_releases26
-rwxr-xr-xmake_windows_releases-finish24
-rwxr-xr-xmake_windows_releases-msvc21
12 files changed, 104 insertions, 31 deletions
diff --git a/autoconf.mk.in b/autoconf.mk.in
index 9112bad0..baf11658 100644
--- a/autoconf.mk.in
+++ b/autoconf.mk.in
@@ -20,6 +20,9 @@ CXX=@CXX@
CXXFLAGS=@CXXFLAGS@
AR=@AR@
RANLIB=@RANLIB@
+DLLTOOL=@DLLTOOL@
+STRIP=@STRIP@
+OBJDUMP=@OBJDUMP@
GENDEPS=@GENDEPS@
LIBTOOL=@LIBTOOL@
DOCBOOKX_DTD=@DOCBOOKX_DTD@
@@ -32,3 +35,4 @@ VALIDATE_DOC=@VALIDATE_DOC@
SKIP_TEST_COMPARE_IMAGES=@SKIP_TEST_COMPARE_IMAGES@
BUILDRULES=@BUILDRULES@
HAVE_LD_VERSION_SCRIPT=@HAVE_LD_VERSION_SCRIPT@
+WINDOWS_WORDSIZE=@WINDOWS_WORDSIZE@
diff --git a/config-mingw b/config-mingw32
index c6e14441..3fabdb0e 100755
--- a/config-mingw
+++ b/config-mingw32
@@ -1,2 +1,2 @@
#!/bin/sh
-./configure --disable-test-compare-images --enable-external-libs --with-buildrules=mingw
+./configure --disable-test-compare-images --enable-external-libs --with-windows-wordsize=32 --with-buildrules=mingw
diff --git a/config-mingw64 b/config-mingw64
new file mode 100644
index 00000000..92242fb2
--- /dev/null
+++ b/config-mingw64
@@ -0,0 +1,10 @@
+#!/bin/sh
+./configure --disable-test-compare-images --enable-external-libs --with-windows-wordsize=64 --with-buildrules=mingw \
+ CC=x86_64-w64-mingw32-gcc \
+ CXX=x86_64-w64-mingw32-g++ \
+ LD=x86_64-w64-mingw32-ld \
+ AR=x86_64-w64-mingw32-ar \
+ RANLIB=x86_64-w64-mingw32-ranlib \
+ DLLTOOL=x86_64-w64-mingw32-dlltool \
+ STRIP=x86_64-w64-mingw32-strip \
+ OBJDUMP=x86_64-w64-mingw32-objdump
diff --git a/config-msvc b/config-msvc
index 6a94ff16..a1bc2cec 100755
--- a/config-msvc
+++ b/config-msvc
@@ -1,2 +1,11 @@
#!/bin/sh
-CC=cl CXX="cl -TP -GR" ./configure --disable-test-compare-images --enable-external-libs --with-buildrules=msvc
+wordsize=$1
+if ! test "$wordsize" = "32" -o "$wordsize" = "64"; then
+ echo "Usage: $0 {32,64}"
+ exit 2
+fi
+objdump=
+if test "$wordsize" = "64"; then
+ objdump=OBJDUMP=x86_64-w64-mingw32-objdump
+fi
+CC=cl CXX="cl -TP -GR" ./configure --disable-test-compare-images --enable-external-libs --with-windows-wordsize=$wordsize --with-buildrules=msvc $objdump
diff --git a/configure.ac b/configure.ac
index 8f87797c..1ee57347 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,6 +31,21 @@ else
AC_MSG_RESULT(yes)
fi
+WINDOWS_WORDSIZE=
+AC_SUBST(WINDOWS_WORDSIZE)
+AC_ARG_WITH(windows-wordsize,
+ AS_HELP_STRING([--with-windows-wordsize={32,64}],
+ [Windows only: whether this is a 32-bit or 64-bit build; required if external-libs are enabled]),
+ [WINDOWS_WORDSIZE=$withval],
+ [WINDOWS_WORDSIZE=none])
+if test "$USE_EXTERNAL_LIBS" = "1"; then
+ AC_MSG_CHECKING(for windows wordsize)
+ AC_MSG_RESULT($WINDOWS_WORDSIZE)
+ if ! test "$WINDOWS_WORDSIZE" = "32" -o "$WINDOWS_WORDSIZE" = "64"; then
+ AC_MSG_ERROR(Windows wordsize of 32 or 64 must be specified if external libs are being used.)
+ fi
+fi
+
if test "$BUILD_INTERNAL_LIBS" = "0"; then
AC_CHECK_HEADER(zlib.h,,[MISSING_ZLIB_H=1; MISSING_ANY=1])
AC_SEARCH_LIBS(deflate,z zlib,,[MISSING_ZLIB=1; MISSING_ANY=1])
@@ -378,7 +393,7 @@ if test "$USE_EXTERNAL_LIBS" = "1"; then
# the user can run this and then edit autoconf.mk if they have too
# much trouble getting it to work with a different compiler.
CPPFLAGS="$CPPFLAGS -Iexternal-libs/include"
- LDFLAGS="$LDFLAGS -Lexternal-libs/lib-$BUILDRULES"
+ LDFLAGS="$LDFLAGS -Lexternal-libs/lib-$BUILDRULES$WINDOWS_WORDSIZE"
LIBS="$LIBS -lz -lpcre"
fi
diff --git a/copy_dlls b/copy_dlls
index 6cfcfe02..e93f1613 100755
--- a/copy_dlls
+++ b/copy_dlls
@@ -7,19 +7,19 @@ use File::Basename;
my $whoami = basename($0);
-usage() unless @ARGV == 2;
-my ($file, $destdir) = @ARGV;
+usage() unless @ARGV == 3;
+my ($file, $destdir, $objdump) = @ARGV;
my $filedir = dirname($file);
my %dlls = ();
-open(O, "objdump -p $file|") or die "$whoami: can't run objdump\n";
+open(O, "$objdump -p $file|") or die "$whoami: can't run objdump\n";
while (<O>)
{
if (m/^\s+DLL Name:\s+(.+\.dll)/i)
{
my $dll = $1;
$dll =~ tr/A-Z/a-z/;
- next if $dll =~ m/^(kernel32|msvcrt)\.dll$/;
+ next if $dll =~ m/^(kernel32|user32|msvcrt)\.dll$/;
$dlls{$dll} = 1;
}
}
diff --git a/make/installwin.mk b/make/installwin.mk
index 6b88efad..e3401d83 100644
--- a/make/installwin.mk
+++ b/make/installwin.mk
@@ -10,7 +10,7 @@ installwin: all
mkdir $(DEST)/doc
cp libqpdf/$(OUTPUT_DIR)/$(STATIC_LIB_NAME) $(DEST)/lib
cp libqpdf/$(OUTPUT_DIR)/qpdf*.dll $(DEST)/bin
- perl copy_dlls libqpdf/$(OUTPUT_DIR)/qpdf*.dll $(DEST)/bin
+ perl copy_dlls libqpdf/$(OUTPUT_DIR)/qpdf*.dll $(DEST)/bin $(OBJDUMP)
cp qpdf/$(OUTPUT_DIR)/qpdf.exe $(DEST)/bin
cp zlib-flate/$(OUTPUT_DIR)/zlib-flate.exe $(DEST)/bin
cp qpdf/fix-qdf $(DEST)/bin
diff --git a/make/mingw.mk b/make/mingw.mk
index e6d06f5f..00119d1a 100644
--- a/make/mingw.mk
+++ b/make/mingw.mk
@@ -62,7 +62,7 @@ endef
# 1 2 3 4 5 6 7
# Usage: $(call makelib,objs,library,ldflags,libs,current,revision,age)
define makelib
- dlltool -l $(2) -D $$(basename `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(shell expr $(5) - $(7)).dll) $(1); \
+ $(DLLTOOL) -l $(2) -D $$(basename `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(shell expr $(5) - $(7)).dll) $(1); \
$(CXX) -shared -o `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(shell expr $(5) - $(7)).dll \
$(1) $(3) $(4)
endef
@@ -75,9 +75,9 @@ endef
# Install target
-INSTALL_DIR = install-mingw
+INSTALL_DIR = install-mingw$(WINDOWS_WORDSIZE)
STATIC_LIB_NAME = libqpdf.a
include make/installwin.mk
install: installwin
- strip $(DEST)/bin/*.exe
- strip $(DEST)/bin/*.dll
+ $(STRIP) $(DEST)/bin/*.exe
+ $(STRIP) $(DEST)/bin/*.dll
diff --git a/make/msvc.mk b/make/msvc.mk
index 8ad7f589..5f3f69ad 100644
--- a/make/msvc.mk
+++ b/make/msvc.mk
@@ -101,7 +101,7 @@ endef
# Install target
-INSTALL_DIR = install-msvc
+INSTALL_DIR = install-msvc$(WINDOWS_WORDSIZE)
STATIC_LIB_NAME = qpdf.lib
include make/installwin.mk
install: installwin
diff --git a/make_windows_releases b/make_windows_releases
index 0518622a..77b3d863 100755
--- a/make_windows_releases
+++ b/make_windows_releases
@@ -9,29 +9,19 @@ set -x
cwd=`pwd`
PATH=$cwd/libqpdf/build:$PATH
-rm -rf install-mingw install-msvc
+rm -rf install-mingw* install-msvc*
-./config-mingw
+./config-mingw64
make check install
make distclean
-./config-msvc
+./config-mingw32
make check install
make distclean
-cd install-mingw
-v=`ls -d qpdf-*`
-cd ..
-
-cp -p README-windows-install.txt install-mingw/$v/README.txt
-cp -p README-windows-install.txt install-msvc/$v/README.txt
-
-cd install-mingw
-zip -r ../$v-bin-mingw.zip $v
-cd ../install-msvc
-zip -r ../$v-bin-msvc.zip $v
-cd ..
-
set +x
-echo ""
-echo "$v-bin-mingw.zip and $v-bin-msvc.zip have been created."
+echo ''
+echo 'Now run "./make_windows_releases-msvc 64" in a 64-bit MSVC environment'
+echo 'and "./make_windows_releases-msvc 32" in a 32-bit MSVC environment.'
+echo 'Then run "./make_windows_releases-msvc-finish".'
+echo ''
diff --git a/make_windows_releases-finish b/make_windows_releases-finish
new file mode 100755
index 00000000..3ab5867d
--- /dev/null
+++ b/make_windows_releases-finish
@@ -0,0 +1,24 @@
+#!/bin/sh
+if [ ! -d external-libs ]; then
+ echo "Please extract qpdf-external-libs-bin.zip and try again"
+ exit 2
+fi
+
+set -e
+set -x
+cwd=`pwd`
+PATH=$cwd/libqpdf/build:$PATH
+
+cd install-mingw32
+v=`ls -d qpdf-*`
+cd ..
+
+for i in mingw32 mingw64 msvc32 msvc64; do
+ cp -p README-windows-install.txt install-$i/$v/README.txt
+ (cd install-$i; zip -r ../$v-bin-$i.zip $v)
+done
+
+set +x
+
+echo ""
+echo "$v-bin-mingw{32,64}.zip and $v-bin-msvc{32,64}.zip have been created."
diff --git a/make_windows_releases-msvc b/make_windows_releases-msvc
new file mode 100755
index 00000000..40a39790
--- /dev/null
+++ b/make_windows_releases-msvc
@@ -0,0 +1,21 @@
+#!/bin/sh
+if [ ! -d external-libs ]; then
+ echo "Please extract qpdf-external-libs-bin.zip and try again"
+ exit 2
+fi
+
+w=$1
+
+if [ "$w" = "" ]; then
+ echo "Usage: $0 {32|64}"
+ exit 2
+fi
+
+set -e
+set -x
+cwd=`pwd`
+PATH=$cwd/libqpdf/build:$PATH
+
+./config-msvc $w
+make check install
+make distclean