#!/usr/bin/env bash # Load the shell functions needed for the rest of this script. BASH_BASED_CONFIGURE=./scripts/bash-based-configure REQUIRED_CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I." RECOMMENDED_CFLAGS="-O2 -fomit-frame-pointer -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation" DEBUG_CFLAGS="-ggdb -Wall" if [ "$CLI_ONLY" = 1 ]; then REQUIRED_CFLAGS="-DCLI $REQUIRED_CFLAGS" echo '#define FLAVOR CLI' > build.h else echo '#define FLAVOR GUI' > build.h fi CFG_USE_CYGWIN="no" # do not change if test -e $BASH_BASED_CONFIGURE; then source $BASH_BASED_CONFIGURE else echo "Could not find $BASH_BASED_CONFIGURE" echo "You're probably not in the right directory." exit 1 fi # Set the package name and version PACKAGE dvdisaster 0.79.6 CFG_HAVE_OPTIONS="$CFG_HAVE_OPTIONS -DHAVE_UNSTABLE_RELEASE" # Check for some essential tools. REQUIRE_GMAKE REQUIRE_GCC # Find out and verify the basedir of the source installation, # and where to install the binary. GET_SRCDIR GNUmakefile.template GET_PKGNAME GET_PREFIX /usr/local GET_BINDIR GET_MANDIR GET_DOCDIR /usr/share/doc GET_DIR "$PKGNAME" docsub "Documentation sub"\ " put documentation into this subdirectory\n under \$DOCDIR " GET_LOCALEDIR /usr/share/locale GET_BUILDROOT GET_BUILDTMP # Look for required libraries PRINT_MESSAGE "\nLooking for includes and libraries:" REQUIRE_GLIB2 2 32 0 if [ "$CLI_ONLY" != 1 ]; then REQUIRE_GTK2 2 6 0 WITH_THREADS fi echo if ! CHECK_INCLUDE locale.h locale || ! CHECK_INCLUDE libintl.h intl ; then echo " [previous test forces -with-nls=no]" cfg_force_with_nls=no fi if CHECK_INCLUDE cpuid.h cpuid; then CFG_HAVE_OPTIONS="$CFG_HAVE_OPTIONS -DHAVE_CPUID" fi CHECK_LIBRARY intl gettext intl CHECK_LIBRARY cam cam_open_device cam # Look for required functions PRINT_MESSAGE "\nChecking for functions and symbols..." CHECK_FUNCTION mmap if ! CHECK_FUNCTION getopt_long ; then if ! test -e getopt.h || ! test -e getopt.c ; then echo " * getopt_long is missing. You can provide one by simply" echo " * copying getopt.c, getopt1.c and getopt.h from the GNU" echo " * C library into this directory." exit 1 fi fi if ! CHECK_FUNCTION gettext ; then echo " [previous test forces -with-nls=no]" cfg_force_with_nls=no fi CHECK_FUNCTION round SAVE_CFLAGS=$CFG_CFLAGS CFG_CFLAGS="$CFG_CFLAGS -D_LARGEFILE64_SOURCE" CHECK_SYMBOL fcntl.h O_LARGEFILE CFG_CFLAGS=$SAVE_CFLAGS # Machine specific echo CHECK_ENDIAN CHECK_BITNESS CHECK_SSE2 CHECK_ALTIVEC # Look for required tools PRINT_MESSAGE "\nChecking for additional tools..." if ! EXECUTE_PROGRAM "xgettext --help" xgettext \ ||! EXECUTE_PROGRAM "msgmerge --help" msgmerge \ ||! EXECUTE_PROGRAM "msgfmt --help" msgfmt ; then echo "* You need to install the GNU gettext tools" echo "* for localization support." echo " [previous test forces -with-nls=no]" cfg_force_with_nls=no fi if [ "$CLI_ONLY" != 1 ]; then if ! EXECUTE_PROGRAM "gdk-pixbuf-csource --help" gdk_pixbuf_csource ; then echo "* gdk-pixbuf not installed" echo "* or path to gdk-pixbuf-csource is missing." exit 1 fi fi # Evaluate the --with* customization options PRINT_MESSAGE "\nAdditional configuration options:" WITH_OPTION nls yes "[yes | no]" WITH_OPTION embedded-src-path yes "[yes | no]" PRINT_MESSAGE "\nDebugging options (do not use in production system):" WITH_OPTION memdebug no "[no | yes]" if test "$cfg_with_efence" == "yes"; then if ! CHECK_LIBRARY efence malloc efence; then exit 1; fi fi # -------------- end of manual configuration -------------------- # Do not proceed further if in --help mode if test -n "$cfg_help_mode"; then FINALIZE_HELP exit 0 fi # Fetch the source files and build the CFILES/OFILES list PRINT_MESSAGE "\nCollecting source files:" rm -f conftest.c method-link.c cfiles="method-link.c" ofiles="$BUILDTMP/method-link.o" for cfile in *.c; do if [ "$CLI_ONLY" = 1 ]; then grep -q 'DVDISASTER_GUI_FILE' "$cfile" && continue fi cfile_prefix=`echo $cfile | sed -e 's/\.c//'` cfiles="$cfiles $cfile" ofiles="$ofiles $BUILDTMP/$cfile_prefix.o" echo -n " $cfile_prefix" done echo echo -e "\nCFG_CFILES = $cfiles" >> Makefile.config echo "CFG_OFILES = $ofiles" >> Makefile.config if [ "$CLI_ONLY" != 1 ]; then echo "ICONS = inlined-icons.h" >> Makefile.config fi # Create the method wrapper PRINT_MESSAGE "\nCollecting methods:" cat >> method-link.c <> method-link.c done echo >> method-link.c for method in $method_prefix; do echo " register_${method}();" >> method-link.c done echo "}" >> method-link.c echo # Okay, hopefully we've got everything together now. (cd locale; bash create-makefile) CREATE_MAKEFILES GNUmakefile # Okay, tell the user we're done and how to proceed. echo echo "Configuration is complete." echo "Type 'make show' to verify the settings," echo "or enter 'make' to start the build immediately." echo if test -n "$CFLAGS"; then echo "* Note that your \$CFLAGS=$CFLAGS" echo "* have been included into the configuration." echo "* It is recommended not to specify additional \$CFLAGS," echo "* but feel free to continue at your own risk." echo fi if test -n "$LDFLAGS"; then echo "* Note that your \$LDFLAGS=$LDFLAGS" echo "* have been included into the configuration." echo "* It is recommended not to specify additional \$LDFLAGS," echo "* but feel free to continue at your own risk." echo fi if test -n "$BUILDROOT"; then echo "* Note that installation will be done relative to" echo "* \$BUILDROOT=$BUILDROOT." echo "* This is okay if you want to create packages like rpm or" echo "* debian archives." echo "* Normal installs will be broken by setting --buildroot." echo fi id_binary="id" if test `$id_binary -u` -eq 0; then echo "* WARNING: Compiling the project as ROOT USER is not recommended" echo "* and may cause unexpected problems. If compilation fails" echo "* please delete the source archive, unpack it anew and" echo "* try again as ordinary user." echo "* Installing the package as root is okay, of course." fi