Skip to content
Permalink
Browse files

builder: mingw improvements + misc.

- default ENABLE_NLS to ON except for vcpkg, broken in e2f0621

- update zlib URL

- use openssl 1.1.1c instead of 1.0.2p, parallel build works now!

- add osslsigncode for mingw to codesign windows binaries, and
  automatically sign in `build_project()`

- add curl (for osslsigncode, which needs libcurl)

- use current master for wxwidgets instead of 3.1.2

- make the `translations.zip` in `build_project()` for windows

- on mac, unlock the login keychain before codesigning (this is
necessary if using e.g. ssh.)

- do not fail if the user does not have codesigning or gpg keys

- fix wxwidgets configure options on mac (need to append to
  `DIST_CONFIGURE_OVERRIDES` instead of `DIST_ARGS`.)

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
  • Loading branch information
rkitover committed Aug 19, 2019
1 parent 3923b28 commit 2958af01caff6c5ce8077b166749f8592092c35d
Showing with 48 additions and 20 deletions.
  1. +6 −0 CMakeLists.txt
  2. +31 −18 tools/builder/core.sh
  3. +10 −1 tools/builder/mingw.sh
  4. +1 −1 tools/osx/builder
@@ -357,6 +357,12 @@ if(NOT ENABLE_ASM_CORE)
add_definitions(-DC_CORE)
endif()

set(NLS_DEFAULT OFF)

if(NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
set(NLS_DEFAULT ON)
endif()

option(ENABLE_NLS "Enable translations" ${NLS_DEFAULT})

# Enable internationalization
@@ -105,10 +105,11 @@ DISTS=$DISTS'
bzip2 https://github.com/nemequ/bzip2/releases/download/v1.0.6/bzip2-1.0.6.tar.gz lib/libbz2.a
xz https://tukaani.org/xz/xz-5.2.3.tar.gz lib/liblzma.a
unzip https://downloads.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz bin/unzip
zlib https://zlib.net/zlib-1.2.11.tar.gz lib/libz.a
zlib https://www.zlib.net/zlib-1.2.11.tar.gz lib/libz.a
ccache https://www.samba.org/ftp/ccache/ccache-3.4.3.tar.xz bin/ccache
zip https://downloads.sourceforge.net/project/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz bin/zip
openssl https://www.openssl.org/source/openssl-1.0.2p.tar.gz lib/libssl.a
openssl https://www.openssl.org/source/openssl-1.1.1c.tar.gz lib/libssl.a
curl https://curl.haxx.se/download/curl-7.65.3.tar.xz lib/libcurl.a
cmake https://cmake.org/files/v3.13/cmake-3.13.0-rc1.tar.gz bin/cmake
m4 http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz bin/m4
autoconf https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz bin/autoconf
@@ -182,7 +183,7 @@ DISTS=$DISTS'
harfbuzz https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.7.5.tar.bz2 lib/libharfbuzz.a
sfml https://github.com/SFML/SFML/archive/013d053277c980946bc7761a2a088f1cbb788f8c.tar.gz lib/libsfml-system-s.a
shared-mime-info http://freedesktop.org/~hadess/shared-mime-info-1.9.tar.xz bin/update-mime-database
wxwidgets https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2 lib/libwx_baseu-3.1*.a
wxwidgets https://github.com/wxWidgets/wxWidgets/archive/bcca16911d917a39d86a183ec976d9f4759e56d0.tar.gz lib/libwx_baseu-3.1*.a
graphite2 https://github.com/silnrsi/graphite/releases/download/1.3.10/graphite2-1.3.10.tgz lib/libgraphite2.a
xvidcore http://downloads.xvid.org/downloads/xvidcore-1.3.4.tar.bz2 lib/libxvidcore.a
fribidi https://github.com/fribidi/fribidi/releases/download/v1.0.1/fribidi-1.0.1.tar.bz2 lib/libfribidi.a
@@ -269,7 +270,6 @@ DIST_RELOCATION_TYPES="$DIST_RELOCATION_TYPES

DIST_PRE_BUILD="$DIST_PRE_BUILD
# xz mkdir -p build-aux; touch build-aux/config.rpath; mkdir -p po; touch po/Makefile.in.in; sed -i.bak 's/ po / /g' Makefile.am;
openssl sed -E -i.bak '/^build_all:/{; s/ build_tests / /; }' Makefile.org;
getopt sed -i.bak 's/\\\$(LDFLAGS)\\(.*\\)\$/\\1 \$(LDFLAGS)/' Makefile;
libicu cd source;
# flex-2.6.3 sed -i.bak '/^'\"\$TAB\"'tests \\\\\$/d' Makefile.am;
@@ -319,15 +319,6 @@ DIST_POST_BUILD="$DIST_POST_BUILD
sed -i.bak \"s|/usr/share/fonts|\$BUILD_ROOT/root/share/fonts|g\" \"\$BUILD_ROOT/root/etc/fonts/fonts.conf\";
"

DIST_POST_CONFIGURE="$DIST_POST_CONFIGURE
#
# I tried to use this to make openssl build in parallel, but it fails unpredictably.
#
#openssl sed -E -i.bak ' \
# s/^(\\t+)([^\\t]+\\\$\\((BUILD_ONE_CMD|RECURSIVE_BUILD_CMD|RECURSIVE_MAKE)\\))/\1+ \2/ \
#' \$(find . -name Makefile);
"

DIST_CONFIGURE_OVERRIDES="$DIST_CONFIGURE_OVERRIDES
openssl ./config no-shared --prefix=/usr --openssldir=/etc/ssl
cmake ./configure --prefix=/usr --no-qt-gui --parallel=\$NUM_CPUS --enable-ccache
@@ -364,6 +355,7 @@ DIST_ARGS="$DIST_ARGS
libicu --disable-extras --disable-tools --disable-tests --disable-samples
gettext --with-included-gettext --with-included-glib --with-included-libcroco --with-included-libunistring --with-included-libxml --disable-curses CPPFLAGS=\"\$CPPFLAGS -DLIBXML_STATIC\"
pkgconfig --with-internal-glib --with-libiconv=gnu
curl --with-ssl
pcre --enable-utf8 --enable-pcre8 --enable-pcre16 --enable-pcre32 --enable-unicode-properties --enable-pcregrep-libz --enable-pcregrep-libbz2 --enable-jit
libxslt --without-python --without-crypto
libgd --without-xpm
@@ -405,9 +397,8 @@ export DIST_BARE_MAKE_ARGS='CC="$CC"'

export ALL_MAKE_ARGS='V=1 VERBOSE=1'

# have to disable ccache for openssl
DIST_MAKE_ARGS="$DIST_MAKE_ARGS
openssl CC=\"\$CC\" CXX=\"\$CXX\" LDFLAGS=\"\$LDFLAGS\" -j1
openssl CC=\"\$CC\"
getopt LDFLAGS=\"\$LDFLAGS -lintl -liconv\" CFLAGS=\"\$CFLAGS\"
bzip2 libbz2.a bzip2 bzip2recover CFLAGS=\"\$CFLAGS\" LDFLAGS=\"\$LDFLAGS\"
unzip generic2
@@ -2626,32 +2617,54 @@ build_project() {
mkdir -p "$BUILD_ROOT/project"
cd "$BUILD_ROOT/project"

rm -f visualboyadvance-m.exe

# FIXME: turn LTO back on when everything works
echo_eval_run cmake "'$CHECKOUT'" $REQUIRED_CMAKE_ARGS -DVBAM_STATIC=ON -DENABLE_LTO=OFF $CMAKE_BASE_ARGS $PROJECT_ARGS $@
echo_eval_run cmake "'$CHECKOUT'" $REQUIRED_CMAKE_ARGS -DVBAM_STATIC=ON -DENABLE_LTO=ON $CMAKE_BASE_ARGS $PROJECT_ARGS $@
echo_run make -j$NUM_CPUS VERBOSE=1

if [ "$target_os" = mac ]; then
$STRIP visualboyadvance-m.app/Contents/MacOS/visualboyadvance-m

# unlock keychain for codesigning certificate
security -v unlock-keychain ~/Library/Keychains/login.keychain* || :

codesign -s "Developer ID Application" --deep ./visualboyadvance-m.app || :

zip=./visualboyadvance-m-Mac-${target_bits:-$bits}bit.zip

rm -f $zip
zip -9r $zip ./visualboyadvance-m.app

gpg --detach-sign -a $zip
rm -f $zip.asc
gpg --detach-sign -a $zip || :
elif [ "$target_os" != windows ] && path_exists visualboyadvance-m; then
$STRIP visualboyadvance-m
elif [ "$target_os" = windows ] && path_exists visualboyadvance-m.exe; then
$STRIP visualboyadvance-m.exe

mv visualboyadvance-m.exe visualboyadvance-m-unsigned.exe

osslsigncode sign -pkcs12 ~/.codesign/windows_comodo.pkcs12 -pass "$(pass vbam-windows-codesign-cert)" \
-n visualboyadvance-m -i https://github.com/visualboyadvance-m/visualboyadvance-m \
-in visualboyadvance-m-unsigned.exe -out visualboyadvance-m.exe || cp visualboyadvance-m-unsigned.exe visualboyadvance-m.exe

zip=./visualboyadvance-m-Win-${target_bits:-$bits}bit.zip

rm -f $zip
zip -9 $zip ./visualboyadvance-m.exe

gpg --detach-sign -a $zip
rm -f translations.zip

make install DESTDIR=./destdir
cd destdir/usr/local/share/locale
zip -9r ../../../../../translations.zip *
cd ../../../../..

rm -f $zip.asc translations.zip.asc

gpg --detach-sign -a $zip || :
gpg --detach-sign -a translations.zip || :
fi

dist_post_build project
@@ -59,8 +59,17 @@ ln -sf "$BUILD_ROOT/target" "$BUILD_ROOT/root"
perl_dists="$perl_dists XML-NamespaceSupport XML-SAX-Base XML-SAX"
perl_dists=$(list_remove_duplicates $perl_dists)

# to codesign windows binary
table_insert_after DISTS pkgconfig '
osslsigncode https://github.com/mtrojnar/osslsigncode/archive/18810b7e0bb1d8e0d25b6c2565a065cf66bce5d7.tar.gz bin/osslsigncode
'

table_line_append DIST_CONFIGURE_OVERRIDES osslsigncode 'sh autogen.sh && ./configure --prefix=/usr'

table_line_append DIST_EXTRA_LIBS osslsigncode '-lz -lssl -lcrypto -ldl'

host_dists="$host_dists autoconf autoconf-archive automake m4 gsed bison \
flex-2.6.3 flex c2man docbook2x ccache ninja"
flex-2.6.3 flex c2man docbook2x ccache ninja curl osslsigncode"
host_dists=$(list_remove_duplicates $host_dists)

both_dists="$both_dists openssl zlib bzip2 libiconv"
@@ -103,7 +103,7 @@ table_line_append DIST_PRE_BUILD libmodplug " \
table_line_append DIST_PRE_BUILD libzmq "sed -i.bak 's/-lstdc++/-lc++/g' src/libzmq.pc.in"
table_line_append DIST_PRE_BUILD ffmpeg "sed -i.bak 's/-lstdc++/-lc++/g' configure"

table_line_append DIST_ARGS wxwidgets "--with-macosx-version-min=\$MACOSX_DEPLOYMENT_TARGET LDFLAGS=\"\$LDFLAGS -stdlib=libc++\""
table_line_append DIST_CONFIGURE_OVERRIDES wxwidgets "--with-macosx-version-min=\$MACOSX_DEPLOYMENT_TARGET LDFLAGS=\"\$LDFLAGS -stdlib=libc++\""
table_line_append DIST_ARGS ffmpeg "--disable-videotoolbox --extra-ldflags='-framework CoreText'"
table_line_append DIST_ARGS libmodplug "CC=clang++ CXX=clang++"

0 comments on commit 2958af0

Please sign in to comment.
You can’t perform that action at this time.