##
## This file is part of the sigrok-util project.
##
-## Copyright (C) 2016 Uwe Hermann <uwe@hermann-uwe.de>
+## Copyright (C) 2016-2018 Uwe Hermann <uwe@hermann-uwe.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
##
set -e
-# Build target: "i686" (32bit) or "x86_64" (64bit).
-TARGET="i686"
+# The base path prefix where the compiled packages will be installed.
+PREFIXBASE=$HOME/sr_msys2
-# The path where the compiled packages will be installed.
-PREFIX=$HOME/sr_msys2
+# The base path prefix where to download files to and where to build packages.
+BUILDBASE=./build
-# The path where to download files to and where to build packages.
-BUILDDIR=./build
-
-# The path where the libsigrok Python bindings will be installed.
-PYPATH=$PREFIX/lib/python2.7/site-packages
+# The $PREFIX subdir where the libsigrok Python bindings will be installed.
+PYBASE=lib/python2.7/site-packages
# Edit this to control verbose build output.
# V="V=1 VERBOSE=1"
# Edit this to enable/disable/modify parallel compiles.
PARALLEL="-j 2"
+# Edit this to enable/disable debug builds.
+DEBUG=0
+
# You usually don't need to change anything below this line.
# -----------------------------------------------------------------------------
-VER_SIGROK_FIRMWARE_FX2LAFW=0.1.3
+# Abort if the user runs the script in an "MSYS2 MSYS" shell.
+if [ $MSYSTEM = "MSYS" ]; then
+ echo "Building in an 'MSYS2 MSYS' shell will not work, aborting."
+ echo "Please use the 'MSYS2 MinGW 64-bit' (or 32-bit) shell."
+ exit
+fi
+
+# The build target type: "i686" (32bit) or "x86_64" (64bit).
+# This is selected based on which MSYS2 shell is being used to do the build.
+TARGET=$MSYSTEM_CARCH
+
+VER_SIGROK_FIRMWARE_FX2LAFW=0.1.6
+
+WGET="wget -c --quiet"
+GIT_CLONE="git clone --depth=1"
+
+REPO_BASE="git://sigrok.org"
+
+# Construct the build and install directory pathnames.
+if [ $TARGET = "i686" ]; then
+ SUFFIX="32"
+else
+ SUFFIX="64"
+fi
+if [ $DEBUG = 1 ]; then
+ # CFLAGS/CXXFLAGS contains "-g" per default for autotools projects.
+ BUILD_TYPE="Debug"
+ PREFIX=$PREFIXBASE"_debug_"$SUFFIX
+ BUILDDIR=$BUILDBASE"_debug_"$SUFFIX
+else
+ BUILD_TYPE="Release"
+ PREFIX=$PREFIXBASE"_release_"$SUFFIX
+ BUILDDIR=$BUILDBASE"_release_"$SUFFIX
+fi
+
+PYPATH=$PREFIX/$PYBASE
+
+# Eliminate the host Python path environment variable, if any is set.
+export PYTHONPATH=
# -----------------------------------------------------------------------------
-P="$PREFIX/lib/pkgconfig"
+P="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
C="$C --prefix=$PREFIX"
L="--disable-shared --enable-static"
W="mingw-w64-$TARGET"
-WGET="wget -c --quiet"
-GIT_CLONE="git clone --depth=1"
+mkdir -p $PYPATH
# Remove build directory contents (if any) and create a new build dir.
rm -rf $BUILDDIR
# Update package list, install/update all requirements.
pacman -Sy
pacman -S \
- autoconf automake libtool make pkg-config wget patch \
- $W-toolchain $W-glib2 $W-glibmm $W-libusb $W-check $W-boost \
+ autoconf automake autoconf-archive libtool make pkg-config wget patch \
+ $W-toolchain $W-glib2 $W-glibmm $W-libusb $W-libftdi $W-check $W-boost \
$W-libzip $W-doxygen $W-python3 $W-python3-numpy $W-python3-gobject \
- $W-python3-setuptools $W-swig $W-qt5-static $W-cmake
+ $W-python3-setuptools $W-swig $W-qt5-static $W-cmake $W-nsis \
+ $W-hidapi
exit
fi
cd ..
# libserialport
-$GIT_CLONE git://sigrok.org/libserialport
+$GIT_CLONE $REPO_BASE/libserialport
cd libserialport
./autogen.sh
mkdir build
cd ../..
# libsigrok
-mkdir -p $PYPATH
-$GIT_CLONE git://sigrok.org/libsigrok
+$GIT_CLONE $REPO_BASE/libsigrok
cd libsigrok
./autogen.sh
mkdir build
cd build
-PKG_CONFIG_PATH=$P ../configure $C $L --disable-python
+PKG_CONFIG_PATH=$P PYTHON=python3 ../configure $C $L --disable-python
$SB make $PARALLEL $V
PYTHONPATH=$PYPATH $SB make install $V
# $SB make check $V # TODO
cd ../..
# libsigrokdecode
-$GIT_CLONE git://sigrok.org/libsigrokdecode
+$GIT_CLONE $REPO_BASE/libsigrokdecode
cd libsigrokdecode
./autogen.sh
mkdir build
cd ../..
# sigrok-firmware
-$GIT_CLONE git://sigrok.org/sigrok-firmware
+$GIT_CLONE $REPO_BASE/sigrok-firmware
cd sigrok-firmware
./autogen.sh
mkdir build
# TODO: Doesn't build, libsigrokdecode linking errors.
# # sigrok-cli
-# $GIT_CLONE git://sigrok.org/sigrok-cli
+# $GIT_CLONE $REPO_BASE/sigrok-cli
# cd sigrok-cli
# ./autogen.sh
# mkdir build
# TODO: Doesn't build, various linking errors.
# PulseView
-$GIT_CLONE git://sigrok.org/pulseview
+$GIT_CLONE $REPO_BASE/pulseview
cd pulseview
mkdir build
cd build
-PKG_CONFIG_PATH=$P $SB cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DDISABLE_WERROR=y -DENABLE_TESTS=n ..
+PKG_CONFIG_PATH=$P $SB cmake \
+ -G "Unix Makefiles" \
+ -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX \
+ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
+ -DDISABLE_WERROR=y \
+ -DENABLE_TESTS=n \
+ ..
$SB make $PARALLEL $V
make install $V
# $SB make test $V # TODO
# makensis -DHOME=$HOME contrib/pulseview_cross.nsi # TODO
cd ../..
-