#!/usr/bin/env bash
#
# ToscoConf 0.04
# Copyright (c) 2003-2004 Leandro Pereira <leandro@linuxmag.com.br>
# All rights reserved.
#
# This script is in the Tosco Public License. It may be copied and/or
# modified, in whole or in part, provided that all copies must retain the
# above copyright notice, this condition and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
#
# (yes, I did a copy&paste from the BSD license, eat me)
#
# ---------------------------------------------------------------------------
# Some defaults
DISABLE_NLS=0
IGNORE_LSPCI=0
# ---------------------------------------------------------------------------
PACKAGE=`basename ${PWD} | cut -d"-" -f1`;
VERSION=`basename ${PWD} | cut -d"-" -f2`;
echo "ToscoConf (version 0.04) for $PACKAGE version $VERSION"
# ---------------------------------------------------------------------------
# Damn-cool command line argument parsing. Yay.
while [ "$1" != "" ]; do
case $1 in
--disable-lspci)
echo "Disabling lspci"
IGNORE_LSPCI=1;;
--disable-nls)
echo "NLS disabled."
DISABLE_NLS=1 ;;
--help)
echo ""
echo " --disable-nls Don't use i18n."
echo " --disable-lspci Disable lspci."
echo ""
echo " --help This help screen."
exit 1;;
*)
echo "Please use the --help switch."
exit 1;;
esac
shift
done
# ---------------------------------------------------------------------------
echo -n "Running: "
OS=`uname`
echo -n $OS
case $OS in
Linux)
echo -n " (OK) " ;;
*)
echo " (not supported, yet!)"
exit ;;
esac
PROC=`uname -m`
case $PROC in
i?86)
ARCH="ARCH_i386" ;;
ppc)
ARCH="ARCH_PPC" ;;
x86_64)
ARCH="ARCH_x86_64" ;;
mips*)
ARCH="ARCH_MIPS" ;;
parisc*)
ARCH="ARCH_PARISC" ;;
ia64)
ARCH="ARCH_IA64" ;;
*)
# uname -m on m68k doesn't return anything useful :/
cat /proc/cpuinfo | grep "680?0" >/dev/null
if [ "$?" == "0" ]; then
ARCH="ARCH_m68k"
else
echo "Architeture \"$ARCH\" not supported."
exit
fi
;;
esac
echo "$PROC ($ARCH)"
# ---------------------------------------------------------------------------
echo -n "Checking for lspci... "
LSPCIPATH="`which lspci` /sbin/lspci /usr/sbin/lspci /bin/lspci /usr/bin/lspci"
for i in $LSPCIPATH; do
if [ -x "$i" ]; then
USE_LSPCI=1
LSPCI=$i
break;
fi
done
if [ -e "$LSPCI" ]; then
echo $LSPCI
else
if [ -e "/proc/pci" ]; then
echo "not found, will parse /proc/pci"
else
echo "no lspci, no /proc/pci..."
echo "Are you sure you're running Linux?"
exit
fi
fi
if [ "$IGNORE_LSPCI" -eq 1 ]; then
echo "Ignoring lspci (as requested)..."
LSPCI=""
USE_LSPCI=0
fi
# ---------------------------------------------------------------------------
GTK2=-1
MIN_VERSION="2.2.0"
echo -n "Checking for GTK ${MIN_VERSION}... "
for i in `which pkg-config`; do
pkg-config --errors-to-stdout gtk+-2.0 \
--atleast-version=$MIN_VERSION > /dev/null
case $? in
0)
GTK_FLAGS=`pkg-config gtk+-2.0 --cflags`
GTK_LIBS=`pkg-config gtk+-2.0 --libs`
echo "OK (pkgconfig)"
GTK2=1 ;;
*)
echo "not found." ;;
esac
done
# If the user doesn't have GTK2, try to compile with GTK1.2 :)
# GTK 1.2 is no longer supported
# --------------------------------------------------------------------------
if [ $GTK2 -eq -1 ]; then
echo -e "\nYou need the GTK libraries, including the development stuff."
echo "If you're using Debian, running the command as root:"
echo -e "\n\tapt-get install libgtk2.0-dev\n"
echo "Will do the trick."
exit
fi
# --------------------------------------------------------------------------
echo -e "\nWriting config.h..."
rm -f config.h
echo -e "#ifndef __CONFIG_H__\n#define __CONFIG_H__\n" > config.h
echo "#define VERSION \"$VERSION\"" >> config.h
if [ "$LSPCI" ]; then
echo "#define USE_LSPCI" >> config.h
echo "#define LSPCI \"$LSPCI -v\"" >> config.h
fi
echo "#define GTK2" >> config.h
if [ "$DISABLE_NLS" != "1" ]; then
echo "#define ENABLE_NLS" >> config.h
fi
echo "#define $ARCH" >> config.h
echo "#define PLATFORM \"`uname`\"" >> config.h
echo "#define KERNEL \"`uname -r`\"" >> config.h
echo "#define HOSTNAME \"`hostname`\"" >> config.h
echo -e "\n#endif /* __CONFIG_H__ */" >> config.h
echo "Writing Makefile..."
rm -f Makefile
echo "TARGET = GTK2" > Makefile
echo "GTK_LIBS = ${GTK_LIBS}" >> Makefile
echo "GTK_CFLAGS = ${GTK_FLAGS}" >> Makefile
echo "PACKAGE = `basename ${PWD}`" >> Makefile
cat Makefile.in >> Makefile
echo -e "\nDone. Type \"make\" to compile the program.\n"
echo "If you get errors, probably you don't have the right libraries,"
echo "includes or utilities. However, if you're sure this is a bug in my"
echo -e "code, please send a patch (use \"diff -u\") to <leandro@linuxmag.com.br>.\n"