1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
#!/bin/bash
# Simple configure script for pqiv
# Running this script before make'ing is optional but recommended
OPTIONS=( "no-sorting" "Disable sorting of loaded files" "-DNO_SORTING" "lib/strnatcmp.c"
"no-compositing" "Disable support for transparent windows" "-DNO_COMPOSITING" ""
"no-fading" "Disable support for fading images" "-DNO_FADING" ""
"no-commands" "Disable support for external command execution" "-DNO_COMMANDS" ""
"no-config-file" "Disable support for a configuration file" "-DNO_CONFIG_FILE" ""
"no-inotify" "Disable support for file monitoring" "-DNO_INOTIFY" ""
"no-animations" "Disable support for animations" "-DNO_ANIMATIONS" ""
)
# Load settings from Makefile
eval $(head -n 10 Makefile | grep -E '^[A-Z_]+=' | sed -re 's/=(.+)/="\1"/')
# Handle parameters
help() {
cat <<EOF
pqiv configuration
options:
--prefix=.. Set the prefix for installed files
--destdir=.. Set the destdir for installed files (for package maintainers)
--binary-name=.. Rename the binary (default: qiv)
EOF
for INDEX in $(seq 0 4 $[${#OPTIONS[*]} - 1]); do
echo -n " --${OPTIONS[$INDEX]}"
for n in $(seq $[20 - ${#OPTIONS[$INDEX]}]); do
echo -n " "
done
echo ${OPTIONS[$[$INDEX + 1]]}
done
echo
exit
}
POSSIBLES=""
for INDEX in $(seq 0 4 ${#OPTIONS[*]}); do
POSSIBLES="${POSSIBLES},${OPTIONS[$INDEX]}"
done
PARAMETERS=$(getopt -q -l "prefix:,binary-name:,destdir:,help${POSSIBLES}" -o "h" -- "$@")
eval set -- ${PARAMETERS//\//\\/}
CHANGES=""
OPTIONFLAGS=""
for INDEX in $(seq 0 4 ${#OPTIONS[*]}); do
if echo "$@" | grep -q -- "--${OPTIONS[$INDEX]}"; then
OPTIONFLAGS="${OPTIONFLAGS} ${OPTIONS[$[$INDEX + 2]]}"
else
OPTIONFLAGS="${OPTIONFLAGS} ${OPTIONS[$[$INDEX + 3]]}"
fi
done
while [ $# -gt 0 ]; do
PARAMETER=$1;
case ${PARAMETER} in
--prefix)
if [ "${2:0:2}" != "\/" ]; then
echo "PREFIX must be an absolute pathname"
exit 1
fi
CHANGES="${CHANGES} -e 's/^PREFIX=.*/PREFIX=\"$2\"/'"
shift
;;
--destdir)
if [ "${2:0:2}" != "\/" ]; then
echo "DESTDIR must be an absolute pathname"
exit 1
fi
CHANGES="${CHANGES} -e 's/^DESTDIR=.*/DESTDIR=\"$2\"/'"
shift
;;
--binary-name)
CHANGES="${CHANGES} -e 's/^BINARY_NAME=.*/BINARY_NAME=\"$2\"/'"
shift
;;
--)
break
;;
-h)
help
;;
--help)
help
;;
esac
shift
done
# Check for inotify support
echo -n "Checking for inotify... "
TEST_INOTIFY=$(tempfile -s .c)
TEST_INOTIFY_EXEC=$(tempfile)
cat > ${TEST_INOTIFY} <<EOF
#include <sys/inotify.h>
int main(int argc, char* argv[]) { inotify_init(); return 0; }
EOF
if cc -o ${TEST_INOTIFY_EXEC} ${TEST_INOTIFY} > /dev/null 2>&1; then
echo "ok"
else
echo "unsupported. Enforcing --no-inotify"
if echo "${OPTIONFLAGS}" | grep -vq "NO_INOTIFY"; then
OPTIONFLAGS+="-DNO_INOTIFY"
fi
fi
rm -f ${TEST_INOTIFY} ${TEST_INOTIFY_EXEC}
# Check tools
for TOOL in install pkg-config; do
echo -n "Checking for ${TOOL}..."
for n in $(seq $[15 - ${#TOOL}]); do echo -n " "; done
which ${TOOL} &>/dev/null
if [ $? == 0 ]; then
echo "ok"
else
echo "failed"
echo
echo "Please install ${TOOL}"
exit 1
fi
done
# Check dependencies
for PACKAGE in ${REQUIRED_PACKAGES}; do
echo -n "Checking for ${PACKAGE}..."
for n in $(seq $[15 - ${#PACKAGE}]); do echo -n " "; done
pkg-config ${PACKAGE}
if [ $? == 0 ]; then
echo "ok"
else
echo "failed"
echo
pkg-config --print-errors ${PACKAGE}
exit 1
fi
done
# Check headers
echo -n "Checking for headers... "
TEST_INCLUDES=$(tempfile -s .c)
TEST_INCLUDES_EXEC=$(tempfile)
TEST_ERROR_FILE=$(tempfile)
sed -e '/}}}/q' pqiv.c > ${TEST_INCLUDES}
cat >> ${TEST_INCLUDES} <<EOF
int main(int argc, char* argv[]) { return 0; }
EOF
if
(
cc "-I$(pwd)" ${CFLAGS} $(pkg-config --libs --cflags ${REQUIRED_PACKAGES}) ${OPTIONFLAGS} -o ${TEST_INCLUDES_EXEC} ${TEST_INCLUDES} 2>&1 && \
${TEST_INCLUDES_EXEC} 2>&1
) > ${TEST_ERROR_FILE}
then
echo "ok"
else
echo "failed"
echo
echo "Error message:"
cat ${TEST_ERROR_FILE}
rm -f ${TEST_INCLUDES} ${TEST_INCLUDES_EXEC} ${TEST_ERROR_FILE}
exit 1
fi
rm -f ${TEST_INCLUDES} ${TEST_INCLUDES_EXEC} ${TEST_ERROR_FILE}
# Change stuff in Makefile
if [ "${CHANGES}" != "" ]; then
echo -n "Updating Makefile... "
eval sed -i -r ${CHANGES} Makefile &>/dev/null
if [ "$?" == 0 ]; then
echo "ok"
else
echo "failed"
echo
echo "Please update Makefile manually and report this as a bug!"
exit 1
fi
fi
sed -i -r "s#^OPTIONFLAGS=.*#OPTIONFLAGS=${OPTIONFLAGS}#" Makefile #&>/dev/null
# Reload settings and output
eval $(head -n 10 Makefile | egrep '^[A-Z_]+=' | sed -re 's/=(.+)/="\1"/')
echo
echo "Destdir: ${DESTDIR}"
echo "Prefix: ${PREFIX}"
echo "Binary-name: ${BINARY_NAME}"
echo
echo -e "Done. Run \033[1mmake all install\033[22m to install pqiv."
exit 0
|