Browse Source

Bring build system improvements over from Non-DAW.

tags/non-sequencer-v1.9.4
Jonathan Moore Liles 17 years ago
parent
commit
e78b3f14e7
6 changed files with 294 additions and 32 deletions
  1. +36
    -29
      Makefile
  2. +27
    -0
      configure
  3. +1
    -1
      lash.C
  4. +2
    -2
      lash.H
  5. +25
    -0
      scripts/colors
  6. +203
    -0
      scripts/config-funcs

+ 36
- 29
Makefile View File

@@ -3,31 +3,38 @@
# Copyright 2007-2008 Jonathan Moore Liles
# 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/
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)\" \
-DINSTALL_PREFIX=\"$(prefix)\" \
-DSYSTEM_PATH=\"$(SYSTEM_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

# uncomment this line to print each playback event to the console (not RT safe)
@@ -59,31 +66,33 @@ SRCS= \

OBJS=$(SRCS:.C=.o)

.PHONEY: all clean install dist valgrind

all: non makedepend
.PHONEY: all clean install dist valgrind config

clean:
rm -f non makedepend $(OBJS)
@ echo Done
@ echo "$(DONE)"

valgrind:
valgrind ./non

include scripts/colors

.C.o:
@ echo -n "Compiling: "; tput bold; tput setaf 3; echo $<; tput sgr0; true
@ echo "Compiling: $(BOLD)$(YELLOW)$<$(SGR0)"
@ $(CXX) $(CXXFLAGS) -c $< -o $@

%.C : %.fl
@ cd gui && fluid -c ../$<
@ cd `dirname $<` && fluid -c ../$<

$(OBJS): Makefile
$(OBJS): make.conf

DONE:=$(BOLD)$(GREEN)done$(SGR0)

non: $(OBJS)
@ echo -n "Linking..."
@ 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
@ echo -n "Installing..."
@@ -92,8 +101,7 @@ install: all
@ cp -r instruments "$(SYSTEM_PATH)"
@ mkdir -p "$(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:
git archive --prefix=non-sequencer-$(VERSION)/ v$(VERSION) | bzip2 > non-sequencer-$(VERSION).tar.bz2
@@ -101,9 +109,8 @@ dist:
TAGS: $(SRCS)
etags $(SRCS)

makedepend: $(SRCS)
makedepend: make.conf $(SRCS)
@ 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

+ 27
- 0
configure View File

@@ -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

+ 1
- 1
lash.C View File

@@ -24,7 +24,7 @@

// TODO: produce Save_Project events...

#ifndef USE_LASH
#ifndef HAVE_LASH

Lash::Lash ( ) {}
bool Lash::init ( int *argc, char ***argv ) { return true; }


+ 2
- 2
lash.H View File

@@ -21,14 +21,14 @@

#include "config.h"

#ifdef USE_LASH
#ifdef HAVE_LASH
#include <lash/lash.h>
#endif

class Lash
{

#ifdef USE_LASH
#ifdef HAVE_LASH
lash_client_t *_client;
#endif



+ 25
- 0
scripts/colors View File

@@ -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`

+ 203
- 0
scripts/config-funcs View File

@@ -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`"
}

Loading…
Cancel
Save