1#! /bin/sh 2# $Id: genconfig.sh,v 1.17 2010/07/17 00:47:48 jmaggard Exp $ 3# MiniDLNA project 4# http://sourceforge.net/projects/minidlna/ 5# (c) 2008-2009 Justin Maggard 6# This software is subject to the conditions detailed in the 7# LICENCE file provided within the distribution 8 9RM="rm -f" 10CONFIGFILE="config.h" 11CONFIGMACRO="__CONFIG_H__" 12 13# Database path 14DB_PATH="/tmp/minidlna" 15 16# detecting the OS name and version 17OS_NAME=`uname -s` 18OS_VERSION=`uname -r` 19TIVO="/*#define TIVO_SUPPORT*/" 20NETGEAR="/*#define NETGEAR*/" 21READYNAS="/*#define READYNAS*/" 22 23${RM} ${CONFIGFILE} 24 25# Detect if there are missing headers 26# NOTE: This check only works with a normal distro 27[ ! -e "/usr/include/sqlite3.h" ] && MISSING="libsqlite3 $MISSING" 28[ ! -e "/usr/include/jpeglib.h" ] && MISSING="libjpeg $MISSING" 29[ ! -e "/usr/include/libexif/exif-loader.h" ] && MISSING="libexif $MISSING" 30[ ! -e "/usr/include/id3tag.h" ] && MISSING="libid3tag $MISSING" 31[ ! -e "/usr/include/ogg/ogg.h" ] && MISSING="libogg $MISSING" 32[ ! -e "/usr/include/vorbis/codec.h" ] && MISSING="libvorbis $MISSING" 33[ ! -e "/usr/include/FLAC/metadata.h" ] && MISSING="libflac $MISSING" 34[ ! -e "/usr/include/ffmpeg/avutil.h" -a \ 35 ! -e "/usr/include/libavutil/avutil.h" -a \ 36 ! -e "/usr/include/ffmpeg/libavutil/avutil.h" ] && MISSING="libavutil $MISSING" 37[ ! -e "/usr/include/ffmpeg/avformat.h" -a \ 38 ! -e "/usr/include/libavformat/avformat.h" -a \ 39 ! -e "/usr/include/ffmpeg/libavformat/avformat.h" ] && MISSING="libavformat $MISSING" 40[ ! -e "/usr/include/ffmpeg/avcodec.h" -a \ 41 ! -e "/usr/include/libavcodec/avcodec.h" -a \ 42 ! -e "/usr/include/ffmpeg/libavcodec/avcodec.h" ] && MISSING="libavcodec $MISSING" 43if [ -n "$MISSING" ]; then 44 echo -e "\nERROR! Cannot continue." 45 echo -e "The following required libraries are either missing, or are missing development headers:\n" 46 echo -e "$MISSING\n" 47 exit 1 48fi 49 50echo "/* MiniDLNA Project" >> ${CONFIGFILE} 51echo " * http://sourceforge.net/projects/minidlna/" >> ${CONFIGFILE} 52echo " * (c) 2008-2009 Justin Maggard" >> ${CONFIGFILE} 53echo " * generated by $0 on `date` */" >> ${CONFIGFILE} 54echo "#ifndef $CONFIGMACRO" >> ${CONFIGFILE} 55echo "#define $CONFIGMACRO" >> ${CONFIGFILE} 56echo "" >> ${CONFIGFILE} 57 58# OS Specific stuff 59case $OS_NAME in 60 OpenBSD) 61 MAJORVER=`echo $OS_VERSION | cut -d. -f1` 62 MINORVER=`echo $OS_VERSION | cut -d. -f2` 63 #echo "OpenBSD majorversion=$MAJORVER minorversion=$MINORVER" 64 # rtableid was introduced in OpenBSD 4.0 65 if [ $MAJORVER -ge 4 ]; then 66 echo "#define PFRULE_HAS_RTABLEID" >> ${CONFIGFILE} 67 fi 68 # from the 3.8 version, packets and bytes counters are double : in/out 69 if [ \( $MAJORVER -ge 4 \) -o \( $MAJORVER -eq 3 -a $MINORVER -ge 8 \) ]; then 70 echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE} 71 fi 72 OS_URL=http://www.openbsd.org/ 73 ;; 74 FreeBSD) 75 VER=`grep '#define __FreeBSD_version' /usr/include/sys/param.h | awk '{print $3}'` 76 if [ $VER -ge 700049 ]; then 77 echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE} 78 fi 79 OS_URL=http://www.freebsd.org/ 80 ;; 81 pfSense) 82 # we need to detect if PFRULE_INOUT_COUNTS macro is needed 83 OS_URL=http://www.pfsense.com/ 84 ;; 85 NetBSD) 86 OS_URL=http://www.netbsd.org/ 87 ;; 88 SunOS) 89 echo "#define USE_IPF 1" >> ${CONFIGFILE} 90 echo "#define LOG_PERROR 0" >> ${CONFIGFILE} 91 echo "#define SOLARIS_KSTATS 1" >> ${CONFIGFILE} 92 echo "typedef uint64_t u_int64_t;" >> ${CONFIGFILE} 93 echo "typedef uint32_t u_int32_t;" >> ${CONFIGFILE} 94 echo "typedef uint16_t u_int16_t;" >> ${CONFIGFILE} 95 echo "typedef uint8_t u_int8_t;" >> ${CONFIGFILE} 96 OS_URL=http://www.sun.com/solaris/ 97 ;; 98 Linux) 99 OS_URL=http://www.kernel.org/ 100 KERNVERA=`echo $OS_VERSION | awk -F. '{print $1}'` 101 KERNVERB=`echo $OS_VERSION | awk -F. '{print $2}'` 102 KERNVERC=`echo $OS_VERSION | awk -F. '{print $3}'` 103 KERNVERD=`echo $OS_VERSION | awk -F. '{print $4}'` 104 #echo "$KERNVERA.$KERNVERB.$KERNVERC.$KERNVERD" 105 # NETGEAR ReadyNAS special case 106 if [ -f /etc/raidiator_version ]; then 107 OS_NAME=$(awk -F'!!|=' '{ print $1 }' /etc/raidiator_version) 108 OS_VERSION=$(awk -F'!!|[=,.]' '{ print $3"."$4 }' /etc/raidiator_version) 109 OS_URL="http://www.readynas.com/" 110 DB_PATH="/var/cache/minidlna" 111 TIVO="#define TIVO_SUPPORT" 112 NETGEAR="#define NETGEAR" 113 READYNAS="#define READYNAS" 114 # Debian GNU/Linux special case 115 elif [ -f /etc/debian_version ]; then 116 OS_NAME=Debian 117 OS_VERSION=`cat /etc/debian_version` 118 OS_URL=http://www.debian.org/ 119 # use lsb_release (Linux Standard Base) when available 120 LSB_RELEASE=`which lsb_release 2>/dev/null` 121 if [ 0 -eq $? ]; then 122 OS_NAME=`${LSB_RELEASE} -i -s` 123 OS_VERSION=`${LSB_RELEASE} -r -s` 124 fi 125 else 126 # use lsb_release (Linux Standard Base) when available 127 LSB_RELEASE=`which lsb_release 2>/dev/null` 128 if [ 0 -eq $? ]; then 129 OS_NAME=`${LSB_RELEASE} -i -s` 130 OS_VERSION=`${LSB_RELEASE} -r -s` 131 fi 132 fi 133 ;; 134 *) 135 echo "Unknown OS : $OS_NAME" 136 exit 1 137 ;; 138esac 139 140echo "#define OS_NAME \"$OS_NAME\"" >> ${CONFIGFILE} 141echo "#define OS_VERSION \"$OS_NAME/$OS_VERSION\"" >> ${CONFIGFILE} 142echo "#define OS_URL \"${OS_URL}\"" >> ${CONFIGFILE} 143echo "" >> ${CONFIGFILE} 144 145echo "/* full path of the file database */" >> ${CONFIGFILE} 146echo "#define DEFAULT_DB_PATH \"${DB_PATH}\"" >> ${CONFIGFILE} 147echo "" >> ${CONFIGFILE} 148 149echo "/* Comment the following line to use home made daemonize() func instead" >> ${CONFIGFILE} 150echo " * of BSD daemon() */" >> ${CONFIGFILE} 151echo "#define USE_DAEMON" >> ${CONFIGFILE} 152echo "" >> ${CONFIGFILE} 153 154echo "/* Enable if the system inotify.h exists. Otherwise our own inotify.h will be used. */" >> ${CONFIGFILE} 155if [ -f /usr/include/sys/inotify.h ]; then 156echo "#define HAVE_INOTIFY_H" >> ${CONFIGFILE} 157else 158echo "/*#define HAVE_INOTIFY_H*/" >> ${CONFIGFILE} 159fi 160echo "" >> ${CONFIGFILE} 161 162echo "/* Enable if the system iconv.h exists. ID3 tag reading in various character sets will not work properly otherwise. */" >> ${CONFIGFILE} 163if [ -f /usr/include/iconv.h ]; then 164echo "#define HAVE_ICONV_H" >> ${CONFIGFILE} 165else 166echo -e "\nWARNING!! Iconv support not found. ID3 tag reading may not work." 167echo "/*#define HAVE_ICONV_H*/" >> ${CONFIGFILE} 168fi 169echo "" >> ${CONFIGFILE} 170 171echo "/* Enable if the system libintl.h exists for NLS support. */" >> ${CONFIGFILE} 172if [ -f /usr/include/libintl.h ]; then 173echo "#define ENABLE_NLS" >> ${CONFIGFILE} 174else 175echo "/*#define ENABLE_NLS*/" >> ${CONFIGFILE} 176fi 177echo "" >> ${CONFIGFILE} 178 179echo "/* Enable NETGEAR-specific tweaks. */" >> ${CONFIGFILE} 180echo "${NETGEAR}" >> ${CONFIGFILE} 181echo "/* Enable ReadyNAS-specific tweaks. */" >> ${CONFIGFILE} 182echo "${READYNAS}" >> ${CONFIGFILE} 183echo "/* Compile in TiVo support. */" >> ${CONFIGFILE} 184echo "${TIVO}" >> ${CONFIGFILE} 185echo "" >> ${CONFIGFILE} 186 187echo "#endif" >> ${CONFIGFILE} 188 189exit 0 190