summaryrefslogtreecommitdiffstats
path: root/build-scripts
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2020-10-16 17:17:42 +0200
committerJay Berkenbilt <ejb@ql.org>2020-10-16 17:19:09 +0200
commit1bcd8c1649e65e2be82a8839c857355eb4d3196b (patch)
tree6152ce0182fb89b75ded1abbf082eaf93ff6346d /build-scripts
parent807aaa46b1b26a459ac1ce44c17dbe872ad0b637 (diff)
downloadqpdf-1bcd8c1649e65e2be82a8839c857355eb4d3196b.tar.zst
Rename azure-pipelines to build-scripts
Diffstat (limited to 'build-scripts')
-rwxr-xr-xbuild-scripts/build-appimage22
-rwxr-xr-xbuild-scripts/build-fuzzer11
-rwxr-xr-xbuild-scripts/build-linux19
-rwxr-xr-xbuild-scripts/build-linux3224
-rwxr-xr-xbuild-scripts/build-mac15
-rwxr-xr-xbuild-scripts/build-windows39
-rw-r--r--build-scripts/build-windows.bat16
-rwxr-xr-xbuild-scripts/test-sanitizers17
8 files changed, 163 insertions, 0 deletions
diff --git a/build-scripts/build-appimage b/build-scripts/build-appimage
new file mode 100755
index 00000000..8a614701
--- /dev/null
+++ b/build-scripts/build-appimage
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Any extra args are passed to the docker run command before the
+# invocation of qpdfbuild. This is useful for iterating locally as
+# described in README-maintainer.
+#
+set -ex
+cd appimage
+docker build -t qpdfbuild .
+rm -rf build
+mkdir build
+cd ..
+git clone .git appimage/build/qpdf
+docker run --privileged --rm \
+ -v $PWD/appimage/build:/tmp/build ${1+"$@"} qpdfbuild
+rm -rf distribution
+mkdir distribution
+cp -p appimage/build/qpdf/appimage/build/qpdf*AppImage* distribution
+for i in distribution/*; do
+ mv $i $(echo $i | sed -e 's/\.AppImage/-ci.AppImage/')
+done
+sha256sum distribution/*
diff --git a/build-scripts/build-fuzzer b/build-scripts/build-fuzzer
new file mode 100755
index 00000000..00c1c8ac
--- /dev/null
+++ b/build-scripts/build-fuzzer
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -ex
+export WORK=$PWD/work
+export OUT=$PWD/out
+mkdir -p $WORK $OUT
+sudo apt-get update
+sudo apt-get -y install \
+ autoconf build-essential zlib1g-dev libjpeg-dev
+./fuzz/oss-fuzz-build
+ls -l out/qpdf*fuzzer
+ls -l out/
diff --git a/build-scripts/build-linux b/build-scripts/build-linux
new file mode 100755
index 00000000..266b9920
--- /dev/null
+++ b/build-scripts/build-linux
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -ex
+sudo apt-get update
+sudo apt-get -y install \
+ autoconf build-essential zlib1g-dev libjpeg-dev libgnutls28-dev \
+ libssl-dev docbook-xsl fop xsltproc libxml2-utils inkscape imagemagick
+./configure --enable-werror --enable-doc-maintenance \
+ --enable-crypto-native --enable-crypto-openssl --enable-crypto-gnutls \
+ --enable-show-failed-test-output
+make -j$(nproc) -k
+for i in $(./qpdf/build/qpdf --show-crypto); do
+ echo "*** Running tests with crypto provider $i"
+ env QPDF_CRYPTO_PROVIDER=$i make -k check
+done
+make distfiles.zip
+./make_dist --ci --no-tests
+mkdir distribution
+cp /tmp/qpdf*-ci.tar.gz distribution
+sha256sum distribution/*
diff --git a/build-scripts/build-linux32 b/build-scripts/build-linux32
new file mode 100755
index 00000000..2c516278
--- /dev/null
+++ b/build-scripts/build-linux32
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -ex
+
+# dpkg --add-architecture not needed for Ubuntu 18.04
+sudo dpkg --add-architecture i386
+
+sudo apt-get update
+
+# For Ubuntu 18.04:
+#
+# sudo apt-get -y install \
+# autoconf build-essential zlib1g-dev:i386 libjpeg-dev:i386 \
+# g++-multilib-i686-linux-gnu
+# ./configure --enable-werror --enable-show-failed-test-output \
+# CC=i686-linux-gnu-gcc CXX=i686-linux-gnu-g++
+
+sudo apt-get -y install \
+ autoconf build-essential zlib1g-dev:i386 libjpeg-dev:i386 \
+ libssl-dev:i386 g++-multilib
+./configure --enable-werror --enable-show-failed-test-output \
+ CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
+
+make -j$(nproc) -k
+make -k check
diff --git a/build-scripts/build-mac b/build-scripts/build-mac
new file mode 100755
index 00000000..96d900bb
--- /dev/null
+++ b/build-scripts/build-mac
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -ex
+curl -L https://github.com/qpdf/qpdf/raw/external-libs/jpegsrc.v9c.tar.gz -o jpegsrc.v9c.tar.gz
+tar xzf jpegsrc.v9c.tar.gz
+cd jpeg-9c
+./configure
+make -k
+sudo make install
+cd ..
+if [ -f distfiles/distfiles.zip ]; then
+ unzip distfiles/distfiles.zip
+fi
+./configure --enable-werror --enable-show-failed-test-output
+make -j$(nproc) -k
+make -k check
diff --git a/build-scripts/build-windows b/build-scripts/build-windows
new file mode 100755
index 00000000..9e902e52
--- /dev/null
+++ b/build-scripts/build-windows
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -ex
+cd $(dirname $0)/..
+wordsize=$1
+tool=$2
+
+if [[ $tool == mingw ]]; then
+ pacman -Sy --noconfirm make base-devel tar zip unzip
+ if [[ $wordsize == 64 ]]; then
+ pacman -Sy --noconfirm mingw-w64-x86_64-toolchain
+ PATH="/c/tools/msys64/mingw64/bin:$PATH"
+ else
+ pacman -Sy --noconfirm mingw-w64-i686-toolchain
+ PATH="/c/tools/msys64/mingw32/bin:$PATH"
+ fi
+ g++ -v
+elif [[ $tool == msvc ]]; then
+ cl
+fi
+if [ -f distfiles/distfiles.zip ]; then
+ unzip distfiles/distfiles.zip
+fi
+curl -L https://github.com/qpdf/qpdf/raw/external-libs/qpdf-external-libs-bin.zip -o qpdf-external-libs-bin.zip
+unzip qpdf-external-libs-bin.zip
+cwd=`pwd`
+PATH=$cwd/libqpdf/build:$PATH
+
+installdir=install-$tool$wordsize
+rm -rf $installdir
+./config-$tool --enable-show-failed-test-output --disable-crypto-gnutls --disable-crypto-openssl
+make -j$(nproc) -k
+make -k check
+make install
+
+v=`(cd $installdir; ls -d qpdf-*)`
+cp -p README-windows-install.txt $installdir/$v/README.txt
+mkdir distribution
+(cd $installdir; zip -r ../distribution/$v-bin-$tool$wordsize-ci.zip $v)
+sha256sum distribution/*
diff --git a/build-scripts/build-windows.bat b/build-scripts/build-windows.bat
new file mode 100644
index 00000000..8be269e9
--- /dev/null
+++ b/build-scripts/build-windows.bat
@@ -0,0 +1,16 @@
+@echo on
+@rem Usage: build-windows {32|64} {msvc|mingw}
+if %2 == msvc (
+ if %1 == 64 (
+ call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ ) else (
+ call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
+ )
+ choco install zip
+ bash ./build-scripts/build-windows %1 %2
+) else (
+ @rem The vs2017-win2016 pool has an ancient 64-bit-only mingw.
+ @rem Install msys2 so we can get current gcc toolchains.
+ choco install msys2
+ C:\tools\msys64\usr\bin\env.exe MSYSTEM=MINGW64 /bin/bash -l %CD%/build-scripts/build-windows %1 %2
+)
diff --git a/build-scripts/test-sanitizers b/build-scripts/test-sanitizers
new file mode 100755
index 00000000..476f198a
--- /dev/null
+++ b/build-scripts/test-sanitizers
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -e
+sudo apt-get update
+sudo apt-get -y install \
+ autoconf build-essential zlib1g-dev libjpeg-dev libgnutls28-dev libssl-dev
+./configure \
+ CFLAGS="-fsanitize=address -fsanitize=undefined -g" \
+ CXXFLAGS="-fsanitize=address -fsanitize=undefined -g" \
+ LDFLAGS="-fsanitize=address -fsanitize=undefined" \
+ CC=clang CXX="clang++ --std=c++11" \
+ --enable-crypto-native --enable-crypto-openssl --enable-crypto-gnutls \
+ --enable-werror --disable-shared --enable-show-failed-test-output
+make -j$(nproc) -k
+for i in $(./qpdf/build/qpdf --show-crypto); do
+ echo "*** Running tests with crypto provider $i"
+ env QPDF_CRYPTO_PROVIDER=$i make -k check
+done