#!/bin/bash set -eux src=${EMACS_SRC:-.} build=${EMACS_BUILD:-.} config_h=${build}/src/config.h make="make -j$(nproc --all)" configure_flags=( --with-cairo --with-sqlite3 --with-xinput2 ) is-rolling-distro () { ( . /etc/os-release case "${ID}" in opensuse-tumbleweed) return 0;; esac return 1 ) } if ! is-rolling-distro then cachedir=${XDG_CACHE_HOME:-~/.cache}/emacs test -d "${cachedir}" || mkdir -p "${cachedir}" builddesc=${PWD} builddesc=${builddesc#~} builddesc=${builddesc//\//,} cachefile=${cachedir}/config${builddesc} configure_flags=(--cache-file="${cachefile}" "${configure_flags[@]}") fi if ! test -f "${src}"/Makefile then ${make} -C "${src}" configure fi check-config () { if ! test -f "${config_h}" then return 1 fi local pattern="#define EMACS_CONFIG_OPTIONS \"${configure_flags[@]}\"" grep "${pattern}" "${config_h}" } cd "${build}" if ! check-config then "${src}"/configure "${configure_flags[@]}" fi ${make} "$@"