@@ -3,31 +3,38 @@ | |||||
# Copyright 2007-2008 Jonathan Moore Liles | # Copyright 2007-2008 Jonathan Moore Liles | ||||
# This file is licencesd under version 2 of the GPL. | # This file is licencesd under version 2 of the GPL. | ||||
# config | |||||
prefix=/usr/local/ | |||||
VERSION := 1.9.1 | |||||
all: make.conf non | |||||
make.conf: configure | |||||
@ ./configure | |||||
config: | |||||
@ ./configure | |||||
-include make.conf | |||||
SYSTEM_PATH=$(prefix)/share/non-sequencer/ | SYSTEM_PATH=$(prefix)/share/non-sequencer/ | ||||
DOCUMENT_PATH=$(prefix)/share/doc/non-sequencer/ | DOCUMENT_PATH=$(prefix)/share/doc/non-sequencer/ | ||||
USE_LASH=1 | |||||
VERSION=1.9.1 | |||||
# Debugging | |||||
CFLAGS:=-O0 -ggdb -fno-omit-frame-pointer -Wall | |||||
# Production | |||||
# CFLAGS:=-O3 -fomit-frame-pointer -DNDEBUG | |||||
ifeq ($(USE_DEBUG),yes) | |||||
CXXFLAGS := -pipe -ggdb -Wall -Wextra -Wnon-virtual-dtor -Wno-missing-field-initializers -O0 -fno-rtti -fno-exceptions | |||||
else | |||||
CXXFLAGS := -pipe -O3 -fno-rtti -fno-exceptions -DNDEBUG | |||||
endif | |||||
CFLAGS+=-DVERSION=\"$(VERSION)\" \ | CFLAGS+=-DVERSION=\"$(VERSION)\" \ | ||||
-DINSTALL_PREFIX=\"$(prefix)\" \ | -DINSTALL_PREFIX=\"$(prefix)\" \ | ||||
-DSYSTEM_PATH=\"$(SYSTEM_PATH)\" \ | -DSYSTEM_PATH=\"$(SYSTEM_PATH)\" \ | ||||
-DDOCUMENT_PATH=\"$(DOCUMENT_PATH)\" | -DDOCUMENT_PATH=\"$(DOCUMENT_PATH)\" | ||||
CXXFLAGS:=$(CFLAGS) -fno-exceptions -fno-rtti `fltk-config --cxxflags` `pkg-config jack --atleast-version 0.105 || echo -DJACK_MIDI_PROTO_API` `pkg-config jack --cflags` `pkg-config --cflags sigc++-2.0` | |||||
LIBS=`pkg-config --libs jack` `fltk-config --use-images --ldflags` `pkg-config --libs sigc++-2.0` | |||||
CXXFLAGS:=$(CFLAGS) $(CXXFLAGS) $(FLTK_CFLAGS) $(sigcpp_CFLAGS) $(LASH_CFLAGS) | |||||
ifeq ($(USE_LASH),1) | |||||
LIBS+=-llash | |||||
CXXFLAGS+=-DUSE_LASH `pkg-config --cflags lash-1.0` | |||||
LIBS:=$(FLTK_LIBS) $(JACK_LIBS) $(LASH_LIBS) $(sigcpp_LIBS) | |||||
ifeq ($(JACK_MIDI_PROTO_API),yes) | |||||
CXXFLAGS+=-DJACK_MIDI_PROTO_API | |||||
endif | endif | ||||
# uncomment this line to print each playback event to the console (not RT safe) | # uncomment this line to print each playback event to the console (not RT safe) | ||||
@@ -59,31 +66,33 @@ SRCS= \ | |||||
OBJS=$(SRCS:.C=.o) | OBJS=$(SRCS:.C=.o) | ||||
.PHONEY: all clean install dist valgrind | |||||
all: non makedepend | |||||
.PHONEY: all clean install dist valgrind config | |||||
clean: | clean: | ||||
rm -f non makedepend $(OBJS) | rm -f non makedepend $(OBJS) | ||||
@ echo Done | |||||
@ echo "$(DONE)" | |||||
valgrind: | valgrind: | ||||
valgrind ./non | valgrind ./non | ||||
include scripts/colors | |||||
.C.o: | .C.o: | ||||
@ echo -n "Compiling: "; tput bold; tput setaf 3; echo $<; tput sgr0; true | |||||
@ echo "Compiling: $(BOLD)$(YELLOW)$<$(SGR0)" | |||||
@ $(CXX) $(CXXFLAGS) -c $< -o $@ | @ $(CXX) $(CXXFLAGS) -c $< -o $@ | ||||
%.C : %.fl | %.C : %.fl | ||||
@ cd gui && fluid -c ../$< | |||||
@ cd `dirname $<` && fluid -c ../$< | |||||
$(OBJS): Makefile | |||||
$(OBJS): make.conf | |||||
DONE:=$(BOLD)$(GREEN)done$(SGR0) | |||||
non: $(OBJS) | non: $(OBJS) | ||||
@ echo -n "Linking..." | @ echo -n "Linking..." | ||||
@ rm -f $@ | @ rm -f $@ | ||||
@ $(CXX) $(CXXFLAGS) $(LIBS) $(OBJS) -o $@ || (tput bold; tput setaf 1; echo Error!; tput sgr0) | |||||
@ if test -x $@; then tput bold; tput setaf 2; echo done; tput sgr0; test -x "$(prefix)/bin/$@" || echo "You must now run 'make install' (as the appropriate user) to install the executable, documentation and other support files in order for the program to function properly."; fi | |||||
@ $(CXX) $(CXXFLAGS) $(LIBS) $(OBJS) -o $@ || echo "$(BOLD)$(RED)Error!$(SGR0)" | |||||
@ if test -x $@; then echo "$(DONE)"; test -x "$(prefix)/bin/$@" || echo "You must now run 'make install' (as the appropriate user) to install the executable, documentation and other support files in order for the program to function properly."; fi | |||||
install: all | install: all | ||||
@ echo -n "Installing..." | @ echo -n "Installing..." | ||||
@@ -92,8 +101,7 @@ install: all | |||||
@ cp -r instruments "$(SYSTEM_PATH)" | @ cp -r instruments "$(SYSTEM_PATH)" | ||||
@ mkdir -p "$(DOCUMENT_PATH)" | @ mkdir -p "$(DOCUMENT_PATH)" | ||||
@ cp doc/*.html doc/*.png "$(DOCUMENT_PATH)" | @ cp doc/*.html doc/*.png "$(DOCUMENT_PATH)" | ||||
@ tput bold; tput setaf 2; echo done; tput sgr0 | |||||
# make -C doc install | |||||
@ echo "$(DONE)" | |||||
dist: | dist: | ||||
git archive --prefix=non-sequencer-$(VERSION)/ v$(VERSION) | bzip2 > non-sequencer-$(VERSION).tar.bz2 | git archive --prefix=non-sequencer-$(VERSION)/ v$(VERSION) | bzip2 > non-sequencer-$(VERSION).tar.bz2 | ||||
@@ -101,9 +109,8 @@ dist: | |||||
TAGS: $(SRCS) | TAGS: $(SRCS) | ||||
etags $(SRCS) | etags $(SRCS) | ||||
makedepend: $(SRCS) | |||||
makedepend: make.conf $(SRCS) | |||||
@ echo -n Checking dependencies... | @ echo -n Checking dependencies... | ||||
@ makedepend -f- -- $(CXXFLAGS) -- $(SRCS) > makedepend 2>/dev/null && echo done. | |||||
@ makedepend -f- -- $(CXXFLAGS) -- $(SRCS) > makedepend 2>/dev/null && echo "$(DONE)" | |||||
include makedepend | |||||
-include makedepend |
@@ -0,0 +1,27 @@ | |||||
#!/bin/sh | |||||
# | |||||
# Copyright (C) 2008 Jonathan Moore Liles | |||||
# This file is licensed under version 2 of the GPL. | |||||
. scripts/config-funcs | |||||
begin | |||||
begin_options | |||||
ask "Install prefix?" prefix /usr/local | |||||
ask "Require LASH?" USE_LASH yes | |||||
ask "Build for debugging?" USE_DEBUG no | |||||
begin_tests | |||||
require_FLTK 1.1.7 images | |||||
require_command FLUID fluid | |||||
require_package JACK 0.103.0 jack | |||||
test_version `version_of jack` -ge 0.105.0 || append "JACK_MIDI_PROTO_API=yes" | |||||
require_package sigcpp 2.0.0 sigc++-2.0 | |||||
using LASH && require_package LASH 0.5.4 lash-1.0 | |||||
end |
@@ -24,7 +24,7 @@ | |||||
// TODO: produce Save_Project events... | // TODO: produce Save_Project events... | ||||
#ifndef USE_LASH | |||||
#ifndef HAVE_LASH | |||||
Lash::Lash ( ) {} | Lash::Lash ( ) {} | ||||
bool Lash::init ( int *argc, char ***argv ) { return true; } | bool Lash::init ( int *argc, char ***argv ) { return true; } | ||||
@@ -21,14 +21,14 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#ifdef USE_LASH | |||||
#ifdef HAVE_LASH | |||||
#include <lash/lash.h> | #include <lash/lash.h> | ||||
#endif | #endif | ||||
class Lash | class Lash | ||||
{ | { | ||||
#ifdef USE_LASH | |||||
#ifdef HAVE_LASH | |||||
lash_client_t *_client; | lash_client_t *_client; | ||||
#endif | #endif | ||||
@@ -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` |
@@ -0,0 +1,203 @@ | |||||
#!/bin/sh | |||||
# | |||||
# Copyright (C) 2008 Jonathan Moore Liles | |||||
# This file is licensed under version 2 of the GPL. | |||||
. scripts/colors | |||||
# support functions for 'configure' scripts. | |||||
fatal () | |||||
{ | |||||
echo "$BOLD$RED$*$SGR0" > /dev/stderr | |||||
exit 255 | |||||
} | |||||
[ $# -gt 0 ] && fatal "This is not an autoconf script. Run it without any options and you will be prompted." | |||||
ask () | |||||
{ | |||||
local A D | |||||
D="`eval echo \\$$2`" | |||||
D=${D:-$3} | |||||
echo -n "$BLACK$BOLD::$SGR0 $1 [$BOLD${D}$SGR0] " | |||||
read A | |||||
A=${A:-$D} | |||||
if [ "$3" = yes ] || [ "$3" = no ] | |||||
then | |||||
case "$A" in | |||||
no | n | N) A=no ;; | |||||
yes | y | Y) A=yes ;; | |||||
* ) fatal "Invalid response. Must be 'yes' or 'no'" ;; | |||||
esac | |||||
fi | |||||
append "${2}=${A:-$D}" | |||||
} | |||||
ok () | |||||
{ | |||||
echo "$BOLD${GREEN}ok${SGR0}" | |||||
} | |||||
failed () | |||||
{ | |||||
echo "$BOLD${RED}failed!${SGR0}" > /dev/stderr | |||||
rm -f make.conf | |||||
} | |||||
using () | |||||
{ | |||||
[ "`eval echo \\$USE_$1`" = yes ] | |||||
return $? | |||||
} | |||||
extract_options () | |||||
{ | |||||
local line; | |||||
if [ -f make.conf ] | |||||
then | |||||
{ | |||||
while read line | |||||
do | |||||
[ "$line" = "## options" ] && break | |||||
done | |||||
while read line | |||||
do | |||||
if [ "$line" = "## libs" ] | |||||
then | |||||
break | |||||
else | |||||
eval "$line" | |||||
fi | |||||
done | |||||
} < make.conf | |||||
fi | |||||
} | |||||
begin () | |||||
{ | |||||
echo -n "Checking sanity..." | |||||
require_command pkg-config pkg-config > /dev/null | |||||
ok | |||||
} | |||||
begin_options () | |||||
{ | |||||
# get the old values | |||||
extract_options | |||||
echo > make.conf | |||||
append "# This file was automatically generated on `date`. Any changes may be lost!" | |||||
append "## options" | |||||
echo "--- Configuration required ---" | |||||
} | |||||
begin_tests () | |||||
{ | |||||
append "## libs" | |||||
extract_options | |||||
} | |||||
append () | |||||
{ | |||||
echo "$1" >> make.conf | |||||
} | |||||
end () | |||||
{ | |||||
echo "--- Configuration complete ---" | |||||
touch make.conf | |||||
} | |||||
require_command () | |||||
{ | |||||
echo -n "Checking for ${BOLD}$1${SGR0}..." | |||||
if ! [ -x "`which $2`" ] | |||||
then | |||||
failed | |||||
fatal "Command $1 not found." | |||||
else | |||||
ok | |||||
fi | |||||
} | |||||
require_package () | |||||
{ | |||||
echo -n "Checking for $BOLD$1$SGR0..." | |||||
if ! pkg-config --exists $3 | |||||
then | |||||
failed | |||||
fatal "Required package $1 doesn't appear to be installed." | |||||
elif ! pkg-config --atleast-version $2 $3 | |||||
then | |||||
failed | |||||
fatal "The installed version of $1 (`pkg-config --mod-version $3`) is too old." | |||||
fi | |||||
append "${1}_LIBS=`pkg-config --libs $3`" | |||||
append "${1}_CFLAGS=-DHAVE_${1} `pkg-config --cflags $3`" | |||||
ok | |||||
return 0 | |||||
} | |||||
_test_version () | |||||
{ | |||||
[ $1 $4 $5 ] && [ $2 $4 $6 ] && [ $3 $4 $7 ] | |||||
} | |||||
test_version () | |||||
{ | |||||
local IFS | |||||
IFS='.' | |||||
if [ $2 != -ge ] && [ $2 != -le ] | |||||
then | |||||
fatal "Syntax error" | |||||
fi | |||||
_test_version $1 $2 $3 | |||||
} | |||||
version_of () | |||||
{ | |||||
echo `pkg-config --modversion $1` | |||||
} | |||||
require_FLTK () | |||||
{ | |||||
local use | |||||
echo -n "Checking for ${BOLD}FLTK${SGR0}..." | |||||
FLTK_VERSION=`fltk-config --version` | |||||
if ! test_version $FLTK_VERSION -ge $1 | |||||
then | |||||
failed | |||||
fatal "The installed FLTK version ($FLTK_VERSION) is too old." | |||||
else | |||||
ok | |||||
fi | |||||
use= | |||||
while [ $# -gt 1 ] | |||||
do | |||||
shift 1 | |||||
use="$use --use-$1" | |||||
done | |||||
append "FLTK_LIBS=`fltk-config $use --ldflags`" | |||||
append "FLTK_CFLAGS=`fltk-config $use --cflags`" | |||||
} |