From 8443acf570d3582c1897d858c0f370518b995f4a Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Fri, 16 May 2008 14:12:52 -0500 Subject: [PATCH] Improve the build/configure system. --- Makefile | 37 +++++++++++++------ Timeline/LASH_Client.C | 30 ++++++++++++++-- Timeline/makefile.inc | 6 ++-- configure | 80 ++++++++++++++++++++++++++++++++++++++++++ scripts/colors | 25 +++++++++++++ 5 files changed, 162 insertions(+), 16 deletions(-) create mode 100755 configure create mode 100644 scripts/colors diff --git a/Makefile b/Makefile index 6a30249..9f925b2 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,38 @@ -prefix := /usr/local +# Makefile for the Non-DAW. +# Copyright 2008 Jonathan Moore Liles +# This file is licencesd under version 2 of the GPL. + +# +# Do not edit this file; run `make config` instead. +# + +include scripts/colors VERSION := 0.5.0 -FLTK_LIBS := `fltk-config --use-images --ldflags` -JACK_LIBS := `pkg-config --libs jack` -SNDFILE_LIBS := `pkg-config --libs sndfile` -LASH_LIBS := `pkg-config --libs lash-1.0` +all: make.conf makedepend FL Timeline Mixer -LASH_CFLAGS := `pkg-config --cflags lash-1.0` +make.conf: configure + @ ./configure -CXXFLAGS := $(LASH_CFLAGS) -DINSTALL_PREFIX=\"$(prefix)\" -DVERSION=\"$(VERSION)\" -ggdb -Wextra -Wno-missing-field-initializers -O0 -fno-rtti -fno-exceptions +include make.conf -all: makedepend FL Timeline Mixer +ifeq (($MAINTAINER_MODE),yes) + CXXFLAGS := -ggdb -Wextra -Wno-missing-field-initializers -O0 -fno-rtti -fno-exceptions +else + CXXFLAGS := -O3 -fno-rtti -fno-exceptions -DNDEBUG +endif + +CXXFLAGS += $(LASH_CFLAGS) -DINSTALL_PREFIX=\"$(prefix)\" -DVERSION=\"$(VERSION)\" .C.o: - @ echo -n "Compiling: "; tput bold; tput setaf 3; echo $<; tput sgr0; true + @ echo -n "Compiling: "; echo $(BOLD)$(YELLOW)$<$(SGR0); true @ $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ %.C : %.fl @ cd `dirname $<` && fluid -c ../$< - include FL/makefile.inc include Timeline/makefile.inc include Mixer/makefile.inc @@ -35,6 +46,12 @@ makedepend: $(SRCS) Makefile @ echo -n Checking dependencies... @ makedepend -f- -- $(CXXFLAGS) -- $(SRCS) > makedepend 2>/dev/null && echo done. +.PHONEY: clean config + clean: FL_clean Timeline_clean Mixer_clean +config: + @ rm -f make.conf + @ $(MAKE) -s + include makedepend diff --git a/Timeline/LASH_Client.C b/Timeline/LASH_Client.C index 014b776..deeba02 100644 --- a/Timeline/LASH_Client.C +++ b/Timeline/LASH_Client.C @@ -19,9 +19,6 @@ #include "LASH_Client.H" -#include - -#define _client (static_cast(_void)) #include "debug.h" @@ -35,6 +32,12 @@ LASH_Client::~LASH_Client ( ) /* TODO: anything? */ } +#ifdef USE_LASH + +#include + +#define _client (static_cast(_void)) + bool LASH_Client::init ( const char *jack_name, const char *long_name, int *argc, char ***argv ) { @@ -97,3 +100,24 @@ LASH_Client::poll ( void ) lash_event_destroy( e ); } } + +#else + +bool +LASH_Client::init ( const char *jack_name, const char *long_name, int *argc, char ***argv ) +{ + return true; +} + +bool +LASH_Client::enabled ( void ) +{ + return false; +} + +void +LASH_Client::poll ( void ) +{ +} + +#endif diff --git a/Timeline/makefile.inc b/Timeline/makefile.inc index acecfe6..7ad44a8 100644 --- a/Timeline/makefile.inc +++ b/Timeline/makefile.inc @@ -3,8 +3,6 @@ Timeline_VERSION := 0.5.0 Timeline_SRCS= \ -Timeline/LASH.C \ -Timeline/LASH_Client.C \ Timeline/Annotation_Region.C \ Timeline/Audio_File.C \ Timeline/Audio_File_SF.C \ @@ -15,6 +13,8 @@ Timeline/Control_Sequence.C \ Timeline/Disk_Stream.C \ Timeline/Engine.C \ Timeline/Fl_Menu_Settings.C \ +Timeline/LASH.C \ +Timeline/LASH_Client.C \ Timeline/Loggable.C \ Timeline/Peaks.C \ Timeline/Playback_DS.C \ @@ -36,7 +36,7 @@ Timeline/Transport.C \ Timeline/Waveform.C \ Timeline/dsp.C \ Timeline/main.C \ -debug.C \ +debug.C Timeline_OBJS:=$(Timeline_SRCS:.C=.o) diff --git a/configure b/configure new file mode 100755 index 0000000..0068e5e --- /dev/null +++ b/configure @@ -0,0 +1,80 @@ +#!/bin/sh +# +# Copyright (C) 2008 Jonathan Moore Liles +# + +. scripts/colors + +fatal () +{ + echo "$BOLD$RED$*$SGR0" + exit 255 +} + +ask () +{ + echo -n "$1 [$BOLD$GREEN$3$SGR0] " + read R + echo "$2 := ${R:-$3}" >> make.conf +} + +ok () +{ + echo "$BOLD${GREEN}ok$SGR0." +} + +failed () +{ + echo "$BOLD${RED}failed!$SGR0" +} + +echo "# This is a generated file. Any changes may be lost!" > make.conf + +ask "Install prefix?" prefix /usr/local +ask "Use LASH?" USE_LASH yes +ask "Build for debugging?" MAINTAINER_MODE no + +# tests + +echo -n "Checking for ${BOLD}FLTK${SGR0}..." + +FLTK_VERSION=`fltk-config --version` + +FLTK_VERSION_MAJOR=`echo $FLTK_VERSION | cut -d'.' -f1` +FLTK_VERSION_MINOR=`echo $FLTK_VERSION | cut -d'.' -f2` +FLTK_VERSION_PATCH=`echo $FLTK_VERSION | cut -d'.' -f3` + +if ! ( [ $FLTK_VERSION_MAJOR -ge 1 ] && [ $FLTK_VERSION_MINOR -ge 1 ] && [ $FLTK_VERSION_PATCH -ge 8 ] ) +then + failed + fatal "The installed FLTK version ($FLTK_VERSION) is too old." +else + ok +fi + +echo "FLTK_LIBS := `fltk-config --use-images --ldflags`" >> make.conf + +# + +check () +{ + echo -n "Checking for $BOLD$1$SGR0..." + if ! pkg-config --atleast-version $2 $3 + then + failed + fatal "$1 not installed or too old." + fi + + ok + return 0 +} + +check JACK 0.103.0 jack && echo "JACK_LIBS := `pkg-config --libs jack`" >> make.conf +check libSNDFILE 1.0.17 sndfile && echo "SNDFILE_LIBS := `pkg-config --libs sndfile`" >> make.conf + +grep -q 'USE_LASH := yes' make.conf && +check LASH 0.5.4 lash-1.0 && +( echo "LASH_LIBS := `pkg-config --libs lash-1.0`" >> make.conf + echo "LASH_CFLAGS := -DUSE_LASH `pkg-config --cflags lash-1.0`" >> make.conf ) + +echo "-- Configuration complete." diff --git a/scripts/colors b/scripts/colors new file mode 100644 index 0000000..a167f78 --- /dev/null +++ b/scripts/colors @@ -0,0 +1,25 @@ + +# Include this file to use terminal colors from shell scripts and +# makefiles. +# john moore liles - 12/30/2002 + +BLACK=`tput setaf 0` +RED=`tput setaf 1` +GREEN=`tput setaf 2` +YELLOW=`tput setaf 3` +BLUE=`tput setaf 4` +MAGENTA=`tput setaf 5` +CYAN=`tput setaf 6` +WHITE=`tput setaf 7` + +BG_BLACK=`tput setab 0` +BG_RED=`tput setab 1` +BG_GREEN=`tput setab 2` +BG_YELLOW=`tput setab 3` +BG_BLUE=`tput setab 4` +BG_MAGENTA=`tput setab 5` +BG_CYAN=`tput setab 6` +BG_WHITE=`tput setab 7` + +BOLD=`tput bold` +SGR0=`tput sgr0`