161 lines
3.6 KiB
Bash
161 lines
3.6 KiB
Bash
|
#!/bin/env bash
|
||
|
set -ex
|
||
|
|
||
|
if [ ! -e "src/api/api.h" ]; then
|
||
|
echo "Please run this script from the root directory of Lite XL."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
show_help(){
|
||
|
echo
|
||
|
echo $0
|
||
|
echo
|
||
|
echo "Available options:"
|
||
|
echo
|
||
|
echo "-h --help Show this help and exits."
|
||
|
echo "-b --builddir DIRNAME Sets the name of the build dir (no path)."
|
||
|
echo " Default: 'build'."
|
||
|
echo "-n --nobuild Skips the build step, use existing files."
|
||
|
echo "-s --static Specify if building using static libraries"
|
||
|
echo " by using lhelper tool."
|
||
|
echo "-v --version VERSION Specify a version, non whitespace separated string."
|
||
|
echo
|
||
|
}
|
||
|
|
||
|
ARCH="$(uname -m)"
|
||
|
BUILD_DIR=build
|
||
|
RUN_BUILD=true
|
||
|
STATIC_BUILD=false
|
||
|
|
||
|
for i in "$@"; do
|
||
|
case $i in
|
||
|
-h|--belp)
|
||
|
show_help
|
||
|
exit 0
|
||
|
;;
|
||
|
-b|--builddir)
|
||
|
BUILD_DIR="$2"
|
||
|
shift
|
||
|
shift
|
||
|
;;
|
||
|
-n|--nobuild)
|
||
|
RUN_BUILD=false
|
||
|
shift
|
||
|
;;
|
||
|
-s|--static)
|
||
|
STATIC_BUILD=true
|
||
|
shift
|
||
|
;;
|
||
|
-v|--version)
|
||
|
VERSION="$2"
|
||
|
shift
|
||
|
shift
|
||
|
;;
|
||
|
*)
|
||
|
# unknown option
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# TODO: Versioning using git
|
||
|
#if [[ -z $VERSION && -d .git ]]; then
|
||
|
# VERSION=$(git describe --tags --long | sed 's/^v//; s/\([^-]*-g\)/r\1/; s/-/./g')
|
||
|
#fi
|
||
|
|
||
|
if [[ -n $1 ]]; then
|
||
|
show_help
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
setup_appimagetool(){
|
||
|
if ! which appimagetool > /dev/null ; then
|
||
|
if [ ! -e appimagetool ]; then
|
||
|
if ! wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${ARCH}.AppImage" ; then
|
||
|
echo "Could not download the appimagetool for the arch '${ARCH}'."
|
||
|
exit 1
|
||
|
else
|
||
|
chmod 0755 appimagetool
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
download_appimage_apprun(){
|
||
|
if [ ! -e AppRun ]; then
|
||
|
if ! wget -O AppRun "https://github.com/AppImage/AppImageKit/releases/download/continuous/AppRun-${ARCH}" ; then
|
||
|
echo "Could not download AppRun for the arch '${ARCH}'."
|
||
|
exit 1
|
||
|
else
|
||
|
chmod 0755 AppRun
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
build_litexl(){
|
||
|
if [ -e build ]; then
|
||
|
rm -rf build
|
||
|
fi
|
||
|
|
||
|
if [ -e ${BUILD_DIR} ]; then
|
||
|
rm -rf ${BUILD_DIR}
|
||
|
fi
|
||
|
|
||
|
echo "Build lite-xl..."
|
||
|
sleep 1
|
||
|
meson setup --buildtype=release --prefix /usr ${BUILD_DIR}
|
||
|
meson compile -C ${BUILD_DIR}
|
||
|
}
|
||
|
|
||
|
generate_appimage(){
|
||
|
if [ -e LiteXL.AppDir ]; then
|
||
|
rm -rf LiteXL.AppDir
|
||
|
fi
|
||
|
|
||
|
echo "Creating LiteXL.AppDir..."
|
||
|
|
||
|
DESTDIR="$(realpath LiteXL.AppDir)" meson install --skip-subprojects -C ${BUILD_DIR}
|
||
|
mv AppRun LiteXL.AppDir/
|
||
|
# These could be symlinks but it seems they doesn't work with AppimageLauncher
|
||
|
cp resources/icons/lite-xl.svg LiteXL.AppDir/
|
||
|
cp resources/linux/org.lite-xl.lite-xl.desktop LiteXL.AppDir/
|
||
|
|
||
|
if [[ $STATIC_BUILD == false ]]; then
|
||
|
echo "Copying libraries..."
|
||
|
|
||
|
mkdir -p LiteXL.AppDir/usr/lib/
|
||
|
|
||
|
local allowed_libs=(
|
||
|
libfreetype
|
||
|
libpcre2
|
||
|
libSDL2
|
||
|
libsndio
|
||
|
liblua
|
||
|
)
|
||
|
|
||
|
while read line; do
|
||
|
local libname="$(echo $line | cut -d' ' -f1)"
|
||
|
local libpath="$(echo $line | cut -d' ' -f2)"
|
||
|
for lib in "${allowed_libs[@]}" ; do
|
||
|
if echo "$libname" | grep "$lib" > /dev/null ; then
|
||
|
cp "$libpath" LiteXL.AppDir/usr/lib/
|
||
|
continue 2
|
||
|
fi
|
||
|
done
|
||
|
echo " Ignoring: $libname"
|
||
|
done < <(ldd build/src/lite-xl | awk '{print $1 " " $3}')
|
||
|
fi
|
||
|
|
||
|
echo "Generating AppImage..."
|
||
|
local version=""
|
||
|
if [ -n "$VERSION" ]; then
|
||
|
version="-$VERSION"
|
||
|
fi
|
||
|
|
||
|
./appimagetool LiteXL.AppDir LiteXL${version}-${ARCH}.AppImage
|
||
|
}
|
||
|
|
||
|
setup_appimagetool
|
||
|
download_appimage_apprun
|
||
|
if [[ $RUN_BUILD == true ]]; then build_litexl; fi
|
||
|
generate_appimage $1
|