mac build: build libusb from source
fixes https://github.com/spesmilo/electrum/issues/7393
This commit is contained in:
63
contrib/make_libusb.sh
Executable file
63
contrib/make_libusb.sh
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
LIBUSB_VERSION="c6a35c56016ea2ab2f19115d2ea1e85e0edae155"
|
||||
# ^ tag v1.0.24
|
||||
|
||||
set -e
|
||||
|
||||
. $(dirname "$0")/build_tools_util.sh || (echo "Could not source build_tools_util.sh" && exit 1)
|
||||
|
||||
here=$(dirname $(realpath "$0" 2> /dev/null || grealpath "$0"))
|
||||
CONTRIB="$here"
|
||||
PROJECT_ROOT="$CONTRIB/.."
|
||||
|
||||
pkgname="libusb"
|
||||
info "Building $pkgname..."
|
||||
|
||||
(
|
||||
cd $CONTRIB
|
||||
if [ ! -d libusb ]; then
|
||||
git clone https://github.com/libusb/libusb.git
|
||||
fi
|
||||
cd libusb
|
||||
if ! $(git cat-file -e ${LIBUSB_VERSION}) ; then
|
||||
info "Could not find requested version $LIBUSB_VERSION in local clone; fetching..."
|
||||
git fetch --all
|
||||
fi
|
||||
git reset --hard
|
||||
git clean -dfxq
|
||||
git checkout "${LIBUSB_VERSION}^{commit}"
|
||||
|
||||
if [ "$BUILD_TYPE" = "wine" ] ; then
|
||||
echo "libusb_1_0_la_LDFLAGS += -Wc,-static" >> libusb/Makefile.am
|
||||
fi
|
||||
./bootstrap.sh || fail "Could not bootstrap libusb"
|
||||
if ! [ -r config.status ] ; then
|
||||
if [ "$BUILD_TYPE" = "wine" ] ; then
|
||||
# windows target
|
||||
LDFLAGS="-Wl,--no-insert-timestamp"
|
||||
elif [ $(uname) == "Darwin" ]; then
|
||||
# macos target
|
||||
LDFLAGS="-Wl -lm"
|
||||
else
|
||||
# linux target
|
||||
LDFLAGS=""
|
||||
fi
|
||||
LDFLAGS="$LDFLAGS" ./configure \
|
||||
$AUTOCONF_FLAGS \
|
||||
|| fail "Could not configure $pkgname. Please make sure you have a C compiler installed and try again."
|
||||
fi
|
||||
make -j4 || fail "Could not build $pkgname"
|
||||
make install || fail "Could not install $pkgname"
|
||||
. "$here/$pkgname/libusb/.libs/libusb-1.0.la"
|
||||
host_strip "$here/$pkgname/libusb/.libs/$dlname"
|
||||
TARGET_NAME="$dlname"
|
||||
if [ $(uname) == "Darwin" ]; then # on mac, dlname is "libusb-1.0.0.dylib"
|
||||
TARGET_NAME="libusb-1.0.dylib"
|
||||
fi
|
||||
cp -fpv "$here/$pkgname/libusb/.libs/$dlname" "$PROJECT_ROOT/electrum/$TARGET_NAME" || fail "Could not copy the $pkgname binary to its destination"
|
||||
info "$TARGET_NAME has been placed in the inner 'electrum' folder."
|
||||
if [ -n "$DLL_TARGET_DIR" ] ; then
|
||||
cp -fpv "$here/$pkgname/libusb/.libs/$dlname" "$DLL_TARGET_DIR/$TARGET_NAME" || fail "Could not copy the $pkgname binary to DLL_TARGET_DIR"
|
||||
fi
|
||||
)
|
||||
Reference in New Issue
Block a user