Last active
June 28, 2021 07:29
-
-
Save rwg0/eb7cc465f11e779af808 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash.exe | |
set -ex | |
if [ ! -d /mingw ]; then | |
echo "/mingw not mounted, assuming it lives at c:\\mingw" | |
mount c:/mingw /mingw | |
fi | |
if [ ! -d /c/Python27 ]; then | |
echo "You need to install python 2.7.x to c:\\Python27 and make sure it is added to the path" | |
echo "Start a new MinGW shell when you have done this" | |
exit 1 | |
fi | |
# get wget | |
mingw-get update | |
if [ ! -e /bin/wget.exe ]; then | |
mingw-get install msys-wget | |
fi | |
if [ ! -e /bin/unzip.exe ]; then | |
mingw-get install msys-unzip | |
fi | |
if [ ! -e /mingw/bin/curl ]; then | |
# now use wget to fetch curl and install it | |
wget http://curl.haxx.se/download/curl-7.20.0.tar.gz | |
tar -zxvf curl-7.20.0.tar.gz | |
cd curl-7.20.0 | |
./configure --prefix=/mingw | |
make | |
make install | |
cd .. | |
fi | |
# and we're off - zlib first | |
if [ ! -e /mingw/lib/libz.a ]; then | |
wget -nc http://zlib.net/zlib-1.2.8.tar.xz | |
tar xvf zlib-1.2.8.tar.xz | |
pushd zlib-1.2.8 | |
make -f win32/Makefile.gcc BINARY_PATH=/mingw/bin INCLUDE_PATH=/mingw/include LIBRARY_PATH=/mingw/lib SHARED_MODE=1 install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libffi.a ]; then | |
wget -nc ftp://sourceware.org/pub/libffi/libffi-3.0.13.tar.gz | |
tar xvf libffi-3.0.13.tar.gz | |
pushd libffi-3.0.13 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/bin/pkg-config.exe ]; then | |
wget -c http://ingar.satgnu.net/devenv/mingw32/files/msys-pkg-config-0.26-static.zip | |
unzip msys-pkg-config-0.26-static.zip | |
cp pkg-config.exe /mingw/bin | |
fi | |
if [ ! -e gettext-0.18.3.1/gettext-tools/gnulib-lib/.libs/libgettextlib.dll.a ]; then | |
wget -nc http://ftp.jaist.ac.jp/pub/GNU/gettext/gettext-0.18.3.1.tar.gz | |
tar xvf gettext-0.18.3.1.tar.gz | |
pushd gettext-0.18.3.1 | |
CPPFLAGS="-DGNULIB_defined_struct_timespec=1" ./configure --prefix=/mingw | |
#sed -i 's/struct timespec/struct timespecX/g' gettext-runtime/gnulib-lib/time.h | |
#sed -i 's/struct timespec/struct timespecX/g' gettext-tools/gnulib-lib/sys/time.h | |
#sed -i 's/struct timespec/struct timespecX/g' gettext-tools/gnulib-lib/time.h | |
#sed -i 's/struct timespec/struct timespecX/g' gettext-tools/libgettextpo/time.h | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libgio-2.0.la ]; then | |
wget --no-check-certificate http://download.gnome.org/sources/glib/2.39/glib-2.39.1.tar.xz | |
tar xvf glib-2.39.1.tar.xz | |
pushd glib-2.39.1 | |
sed -i 's$rand_s...seed....;$seed[i]=rand();$g' glib/grand.c | |
CFLAGS="-Wall -Ofast" ./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libpng.a ]; then | |
wget -nc http://download.sourceforge.net/libpng/libpng-1.6.7.tar.xz | |
tar xvf libpng-1.6.7.tar.xz | |
pushd libpng-1.6.7 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libjpeg.a ]; then | |
wget -nc http://www.ijg.org/files/jpegsrc.v9.tar.gz | |
tar xvf jpegsrc.v9.tar.gz | |
pushd jpeg-9 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/bin/xz.exe ]; then | |
wget -nc http://tukaani.org/xz/xz-5.0.5.tar.xz | |
tar xvf xz-5.0.5.tar.xz | |
pushd xz-5.0.5 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libtiff.a ]; then | |
wget -nc http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz | |
tar xvf tiff-4.0.3.tar.gz | |
pushd tiff-4.0.3 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/liblcms2.a ]; then | |
wget -nc http://download.sourceforge.net/lcms/lcms2-2.5.tar.gz | |
tar xvf lcms2-2.5.tar.gz | |
pushd lcms2-2.5 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libopenjpeg.a ]; then | |
wget -nc http://openjpeg.googlecode.com/files/openjpeg-1.5.1.tar.gz | |
tar xvf openjpeg-1.5.1.tar.gz | |
pushd openjpeg-1.5.1 | |
sed -i s/HANDLE/HINSTANCE/g libopenjpeg/openjpeg.c | |
./configure --prefix=/mingw --enable-mj2 --enable-jpwl | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libfreetype.a ]; then | |
wget -nc http://download.sourceforge.net/freetype/freetype-2.5.0.1.tar.bz2 | |
tar xvf freetype-2.5.0.1.tar.bz2 | |
pushd freetype-2.5.0.1 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libopenjpeg.a ]; then | |
wget -nc http://jaist.dl.sourceforge.jp/nkf/53171/nkf-2.1.2.tar.gz | |
tar xvf nkf-2.1.2.tar.gz | |
pushd nkf-2.1.2 | |
make | |
make prefix=/mingw install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libxml2.a ]; then | |
wget -nc ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz | |
tar xvf libxml2-2.9.1.tar.gz | |
pushd libxml2-2.9.1 | |
./configure --prefix=/mingw --without-python | |
make | |
make install | |
popd | |
fi | |
export LIBXML2_CFLAGS=-I/mingw/include/libxml2 | |
export LIBXML2_LIBS=-lxml2 | |
export FREETYPE_CFLAGS=-I/mingw/include/freetype2 | |
export FREETYPE_LIBS=-lfreetype | |
if [ ! -e /mingw/lib/libfontconfig.a ]; then | |
wget -nc http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.0.tar.bz2 | |
tar xvf fontconfig-2.11.0.tar.bz2 | |
pushd fontconfig-2.11.0 | |
./configure --prefix=/mingw --enable-libxml2 | |
sed -i 's/#ifdef MemoryBarrier/#if 0/g' src/fcatomic.h | |
echo "void main() {}" > test/test-migration.c | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libpixman-1.a ]; then | |
wget -nc http://cairographics.org/releases/pixman-0.32.4.tar.gz | |
tar xvf pixman-0.32.4.tar.gz | |
pushd pixman-0.32.4 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libcairo.a ]; then | |
wget -nc http://cairographics.org/releases/cairo-1.12.16.tar.xz | |
tar xvf cairo-1.12.16.tar.xz | |
pushd cairo-1.12.16 | |
./configure --prefix=/mingw | |
sed -i 's/typedef SSIZE_T ssize_t;//g' util/cairo-missing/cairo-missing.h | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libssl.a ]; then | |
wget -nc http://www.openssl.org/source/openssl-1.0.1e.tar.gz | |
tar xvf openssl-1.0.1e.tar.gz | |
pushd openssl-1.0.1e | |
./config --prefix=/mingw shared | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libssh2.a ]; then | |
wget -nc http://www.libssh2.org/download/libssh2-1.4.3.tar.gz | |
tar xvf libssh2-1.4.3.tar.gz | |
pushd libssh2-1.4.3 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e curl-7.33.0/src/curl.exe ]; then | |
wget -nc http://curl.haxx.se/download/curl-7.33.0.tar.bz2 | |
tar xvf curl-7.33.0.tar.bz2 | |
pushd curl-7.33.0 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ `/mingw/bin/pkg-config --version` != "0.28" ]; then | |
wget -nc http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz | |
tar xvf pkg-config-0.28.tar.gz | |
pushd pkg-config-0.28 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libpoppler.a ]; then | |
wget -nc http://poppler.freedesktop.org/poppler-0.24.3.tar.xz | |
tar xvf poppler-0.24.3.tar.xz | |
pushd poppler-0.24.3 | |
LIBOPENJPEG_CFLAGS="`pkg-config --cflags libopenjpeg`" LIBOPENJPEG_LIBS="`pkg-config --libs libopenjpeg`" ./configure --prefix=/mingw --with-font-configuration=fontconfig --enable-xpdf-headers --enable-zlib --enable-libcurl --enable-poppler-glib --disable-gtk-test --disable-poppler-qt5 | |
echo '#undef WINVER' >> config.h | |
echo '#define WINVER 0x0500' >> config.h | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libpango-1.0.la ]; then | |
wget -nc --no-check-certificate http://download.gnome.org/sources/pango/1.35/pango-1.35.0.tar.xz | |
tar xvf pango-1.35.0.tar.xz | |
pushd pango-1.35.0 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libplibc.la ]; then | |
wget -nc http://download.sourceforge.net/plibc/plibc-0.1.7-src.tar.gz | |
tar xvf plibc-0.1.7-src.tar.gz | |
pushd PlibC-0.1.7 | |
./configure --prefix=/mingw | |
make | |
make install | |
popd | |
fi | |
if [ ! -e /mingw/lib/libfontforge.a ]; then | |
wget -nc --no-check-certificate -O fontforge-fontforge.tar.gz https://github.com/fontforge/fontforge/tarball/master || true | |
tar xvf fontforge-fontforge.tar.gz || true | |
pushd fontforge-fontforge* | |
export CPPFLAGS="$CPPFLAGS -DWINDOWS -D_WIN32_IE=0x0501" | |
./bootstrap | |
PYTHON_LIBS="/c/Python27/lib" PYTHON_CFLAGS="-I /c/Python27/include" ./configure --prefix=/mingw --disable-python-extension --disable-python-scripting | |
cp fontforge/noprefs.c fontforge/noprefs.c.safe | |
sed -i 's/HAVE_LANGINFO_H/NOHAVE_ANY_LANGINFO_H/g' fontforge/noprefs.c | |
echo '#undef small' >> fontforge/ffglib.h | |
cat > patch << EOF | |
--- fontforge/woff.c | |
+++ fontforge/woff.c | |
@@ -520,3 +520,50 @@ | |
} | |
#endif /* ! _NO_LIBPNG */ | |
+ | |
+#include <windows.h> | |
+#include <io.h> | |
+ | |
+ FILE * | |
+tmpfile (void) | |
+{ | |
+ DWORD path_len; | |
+ WCHAR path_name[MAX_PATH + 1]; | |
+ WCHAR file_name[MAX_PATH + 1]; | |
+ HANDLE handle; | |
+ int fd; | |
+ FILE *fp; | |
+ | |
+ path_len = GetTempPathW (MAX_PATH, path_name); | |
+ if (path_len <= 0 || path_len >= MAX_PATH) | |
+ return NULL; | |
+ | |
+ if (GetTempFileNameW (path_name, L"ps_", 0, file_name) == 0) | |
+ return NULL; | |
+ | |
+ handle = CreateFileW (file_name, | |
+ GENERIC_READ | GENERIC_WRITE, | |
+ 0, | |
+ NULL, | |
+ CREATE_ALWAYS, | |
+ FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, | |
+ NULL); | |
+ if (handle == INVALID_HANDLE_VALUE) { | |
+ DeleteFileW (file_name); | |
+ return NULL; | |
+ } | |
+ | |
+ fd = _open_osfhandle((intptr_t) handle, 0); | |
+ if (fd < 0) { | |
+ CloseHandle (handle); | |
+ return NULL; | |
+ } | |
+ | |
+ fp = fdopen(fd, "w+b"); | |
+ if (fp == NULL) { | |
+ _close(fd); | |
+ return NULL; | |
+ } | |
+ | |
+ return fp; | |
+} | |
\ No newline at end of file | |
EOF | |
patch -N -u -p0 < patch | |
make | |
make install | |
popd | |
fi | |
if [ ! -e ttfautohint-0.97/lib/ttfautohint.o ]; then | |
wget -nc http://download.sourceforge.net/freetype/ttfautohint-0.97.tar.gz | |
tar xvf ttfautohint-0.97.tar.gz | |
pushd ttfautohint-0.97 | |
./configure --prefix=/mingw --with-qt=no | |
pushd lib | |
make | |
make install | |
popd | |
popd | |
fi | |
if [ ! -d /share/cmake ]; then | |
wget http://www.cmake.org/files/v3.1/cmake-3.1.1-win32-x86.zip | |
unzip -d /share cmake-3.1.1-win32-x86.zip | |
mv /share/cmake-3.1.1-win32-x86 /share/cmake | |
fi | |
export PATH=/share/cmake/bin:$PATH | |
wget -nc --no-check-certificate -O coolwanglu-pdf2htmlEX.tar.gz https://github.com/coolwanglu/pdf2htmlEX/tarball/master || true | |
tar xvf coolwanglu-pdf2htmlEX.tar.gz | |
cd coolwanglu-pdf2htmlEX* | |
rm -rf build | |
mkdir build; cd build | |
sed -i 's/CDECL//g' /mingw/include/poppler/Error.h | |
cat > patch << EOF | |
--- ../CMakeLists.txt | |
+++ ../CMakeLists.txt | |
@@ -77,6 +77,9 @@ | |
link_directories(\${FONTFORGE_LIBRARY_DIRS}) | |
set(PDF2HTMLEX_LIBS \${PDF2HTMLEX_LIBS} \${FONTFORGE_LIBRARIES}) | |
+# Add additional dependencies | |
+set(PDF2HTMLEX_LIBS \${PDF2HTMLEX_LIBS} intl iconv gettextlib gettextpo gutils png jpeg openjpeg glib-2.0.dll z xml2 tiff gio-2.0.dll ltdl plibc.dll) | |
+ | |
# debug build flags (overwrite default cmake debug flags) | |
set(CMAKE_C_FLAGS_DEBUG "-ggdb -pg") | |
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -pg") | |
EOF | |
patch -N -u -p0 < patch | |
cmake .. -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=/mingw -DENABLE_SVG=ON | |
sed -i 's/#ifndef __STRICT_ANSI__/#ifndef X__STRICT_ANSI__/g' /mingw/include/math.h | |
sed -i 's/#ifndef __STRICT_ANSI__/#ifndef X__STRICT_ANSI__/g' /mingw/include/string.h | |
make | |
make install | |
INSTALLDIR=~/pdf2htmlEX.Install | |
if [ -d $INSTALLDIR ]; then | |
rm -rf $INSTALLDIR/* | |
fi | |
mkdir -p $INSTALLDIR | |
cd $INSTALLDIR | |
mkdir data | |
cp -r /mingw/share/pdf2htmlEX/* data | |
cp /mingw/bin/pdf2htmlEX . | |
cp /mingw/bin/libcairo-2.dll . | |
cp /mingw/bin/libcurl-4.dll . | |
cp /mingw/bin/libeay32.dll . | |
cp /mingw/bin/libffi-6.dll . | |
cp /mingw/bin/libfontconfig-1.dll . | |
cp /mingw/bin/libfontforge-2.dll . | |
cp /mingw/bin/libfreetype-6.dll . | |
cp /mingw/bin/libgcc_s_dw2-1.dll . | |
cp /mingw/bin/libgio-2.0-0.dll . | |
cp /mingw/bin/libglib-2.0-0.dll . | |
cp /mingw/bin/libgmodule-2.0-0.dll . | |
cp /mingw/bin/libgobject-2.0-0.dll . | |
cp /mingw/bin/libgunicode-4.dll . | |
cp /mingw/bin/libgutils-2.dll . | |
cp /mingw/bin/libiconv-2.dll . | |
cp /mingw/bin/libintl-8.dll . | |
cp /mingw/bin/libjpeg-9.dll . | |
cp /mingw/bin/liblcms2-2.dll . | |
cp /mingw/bin/libltdl-7.dll . | |
cp /mingw/bin/liblzma-5.dll . | |
cp /mingw/bin/libopenjpeg-1.dll . | |
cp /mingw/bin/libpixman-1-0.dll . | |
cp /mingw/bin/libpng16-16.dll . | |
cp /mingw/bin/libpoppler-43.dll . | |
cp /mingw/bin/libssh2-1.dll . | |
cp /mingw/bin/libstdc++-6.dll . | |
cp /mingw/bin/libtiff-5.dll . | |
cp /mingw/bin/libxml2-2.dll . | |
cp /mingw/bin/ssleay32.dll . | |
cp /mingw/bin/zlib1.dll . | |
strip -g *.dll |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://curl.se/download/curl-7.20.0.tar.gz
curl is no longer available in the link