Browse Source

Replace custom build system with WAF.

tags/non-daw-v1.2.0
Jonathan Moore Liles 12 years ago
parent
commit
d86b71cb2c
61 changed files with 610 additions and 1315 deletions
  1. +3
    -25
      .gitignore
  2. +0
    -1
      FL/Makefile
  3. +0
    -37
      FL/makefile.inc
  4. +0
    -1
      FL/scripts
  5. +1
    -2
      FL/util/ntk-chtheme.C
  6. +26
    -0
      FL/wscript
  7. +0
    -45
      Makefile
  8. +34
    -7
      README.build
  9. +7
    -4
      README.packagers
  10. +0
    -58
      configure
  11. +0
    -21
      lib/Makefile
  12. +1
    -1
      lib/ntk
  13. +0
    -1
      mixer/FL
  14. +0
    -1
      mixer/Makefile
  15. +0
    -40
      mixer/configure
  16. +0
    -1
      mixer/lib
  17. +0
    -45
      mixer/makefile.inc
  18. +0
    -1
      mixer/nonlib
  19. +0
    -1
      mixer/scripts
  20. +6
    -6
      mixer/src/Mixer.C
  21. +80
    -0
      mixer/wscript
  22. +0
    -1
      nonlib/Makefile
  23. +0
    -25
      nonlib/makefile.inc
  24. +0
    -1
      nonlib/scripts
  25. +27
    -0
      nonlib/wscript
  26. +0
    -127
      scripts/Makefile
  27. +0
    -40
      scripts/build_id
  28. +0
    -25
      scripts/colors
  29. +0
    -414
      scripts/config-funcs
  30. +0
    -20
      scripts/percent-complete
  31. +0
    -63
      scripts/scan-gpl
  32. +0
    -1
      sequencer/FL
  33. +0
    -1
      sequencer/Makefile
  34. +0
    -1
      sequencer/lib
  35. +0
    -57
      sequencer/makefile.inc
  36. +0
    -1
      sequencer/nonlib
  37. +0
    -1
      sequencer/scripts
  38. +5
    -5
      sequencer/src/gui/ui.fl
  39. +84
    -0
      sequencer/wscript
  40. +0
    -1
      session-manager/FL
  41. +0
    -1
      session-manager/Makefile
  42. +0
    -39
      session-manager/configure
  43. +0
    -1
      session-manager/lib
  44. +0
    -72
      session-manager/makefile.inc
  45. +0
    -1
      session-manager/nonlib
  46. +0
    -1
      session-manager/scripts
  47. +0
    -1
      session-manager/src/FL
  48. +103
    -0
      session-manager/wscript
  49. +0
    -1
      timeline/FL
  50. +0
    -1
      timeline/Makefile
  51. +0
    -47
      timeline/configure
  52. +0
    -1
      timeline/lib
  53. +0
    -57
      timeline/makefile.inc
  54. +0
    -1
      timeline/nonlib
  55. +0
    -1
      timeline/scripts
  56. +2
    -2
      timeline/src/Annotation_Region.C
  57. +2
    -2
      timeline/src/Cursor_Region.C
  58. +4
    -4
      timeline/src/TLE.fl
  59. +105
    -0
      timeline/wscript
  60. BIN
      waf
  61. +120
    -0
      wscript

+ 3
- 25
.gitignore View File

@@ -4,28 +4,6 @@
*.[ao]
TAGS
.nfs*
make.conf
.deps
.config
.files
FL/About_Dialog.C
FL/About_Dialog.H
FL/Fl_Text_Edit_Window.C
FL/Fl_Text_Edit_Window.H
FL/New_Project_Dialog.C
FL/New_Project_Dialog.H
mixer/src/mixer
sequencer/src/gui/event_edit.C
sequencer/src/gui/event_edit.H
sequencer/src/gui/ui.C
sequencer/src/gui/ui.H
sequencer/src/gui/widgets.C
sequencer/src/gui/widgets.H
sequencer/src/sequencer
session-manager/src/jackpatch
session-manager/src/nsmd
session-manager/src/send_osc
session-manager/src/session-manager
timeline/src/TLE.C
timeline/src/TLE.H
timeline/src/timeline
.waf*
build
attic

+ 0
- 1
FL/Makefile View File

@@ -1 +0,0 @@
scripts/Makefile

+ 0
- 37
FL/makefile.inc View File

@@ -1,37 +0,0 @@
# -*- mode: makefile; -*-

VERSION := 1.1.0
PACKAGE := FL

all: FL

SRCS := $(wildcard FL/*.C FL/*.fl)

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

all: FL/libfl_widgets.a util/ntk-perf

FL/libfl_widgets.a: $(OBJS)
@ ar rcs $@ $(OBJS)

.PHONEY: FL
FL: FL/libfl_widgets.a

# ntk-chtheme: ntk-chtheme.o $(FLTK_LIBS) FL/libfl_widgets.a
# @ echo -n Linking session handler.
# @ $(CXX) $(CXXFLAGS) $(FLTK_LDFLAGS) $(LIBS) $^ -o $@ -LFL -lfl_widgets && echo $(DONE)


util/ntk-perf.o: util/ntk-perf.C

util/ntk-perf: util/ntk-perf.o $(FLTK_LIBS) FL/libfl_widgets.a
@ echo -n Linking session handler.
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(FLTK_LDFLAGS) $(LIBS) -LFL -lfl_widgets && echo $(DONE)

clean:
rm -f $(OBJS) FL/libfl_widgets.a .deps

install:
@

+ 0
- 1
FL/scripts View File

@@ -1 +0,0 @@
../scripts

+ 1
- 2
FL/util/ntk-chtheme.C View File

@@ -18,8 +18,7 @@
/*******************************************************************************/

#include "FL/themes.H"
#include "FL/Fl_Theme_Chooser.C"

#include <FL/Fl_Theme_Chooser.H>

int
main ( int argc, char **argv )


+ 26
- 0
FL/wscript View File

@@ -0,0 +1,26 @@
#!/usr/bin/env python

def options(opt):
pass

def configure(conf):
pass

def build(bld):
bld.stlib(
source =
'''
About_Dialog.fl
Fl_Menu_Settings.C
Fl_Scalepack.C
Fl_Text_Edit_Window.fl
Fl_Value_SliderX.C
New_Project_Dialog.fl
event_name.C
menu_popup.C
test_press.C
''',
includes = '.',
export_incdirs = [ '.' 'FL' ],
uselib = 'NTK',
target = 'fl_widgets')

+ 0
- 45
Makefile View File

@@ -1,45 +0,0 @@

###############################################################################
# Copyright (C) 2008 Jonathan Moore Liles #
# #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the #
# Free Software Foundation; either version 2 of the License, or (at your #
# option) any later version. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with This program; see the file COPYING. If not,write to the Free Software #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
###############################################################################

include scripts/colors

SUBDIRS=nonlib FL timeline mixer session-manager sequencer

.config: configure
@ echo $(BOLD)$(YELLOW)Hey! You need to run 'configure' first.
@ echo If that fails because of NTK stuff, then you need to run 'make ntk' first.$(SGR0)
@ exit 1

all: .config
@ echo '!!! If you have any trouble here try reading README.build !!!'
@ for dir in $(SUBDIRS); do echo Building $$dir; $(MAKE) -s -C $$dir; done

ntk: lib/.built lib/ntk/configure

lib/ntk/configure:
@ git submodule update --init

lib/.built:
@ make -C lib

clean:
@ for dir in $(SUBDIRS); do $(MAKE) -s -C $$dir clean; done

install:
@ for dir in $(SUBDIRS); do $(MAKE) -s -C $$dir install; done

+ 34
- 7
README.build View File

@@ -1,12 +1,39 @@
# -*- mode: org -*-

* Non-things build instructions

This repository contains all of the non-* software.

If you don't have NTK packages installed (which isn't very likely yet)
you *MUST* begin by typing:
If you don't have NTK installed system-wide (which isn't very likely
yet) you *MUST* begin the build process by typing:

cd lib/ntk
./waf configure
./waf

Once NTK has been built you must install it system-wide before
attempting to build the non-* programs.

To install NTK type:

su -c './waf install'

** Build all projects

Typing:

./waf configure
./waf
./waf su -c './waf install'
from the base of the checkout of the Non git repository will build and
install all of the non-* programs together.

** Build a single project

Typing:

make ntk
./waf configure --project=[timline|sequencer|mixer|session-manager]
./waf
./waf su -c './waf install'

Then, run './configure' (use the '-i' option if you want to interactively
configure) Then, to build everything else, just type 'make'. Stuff will happen.
Don't make things harder on yourself by trying to build everything individually. Just
type 'make'. I'm serious. It's that simple.

+ 7
- 4
README.packagers View File

@@ -1,8 +1,10 @@
# -*- mode: org -*-

Notes to packagers: Non-Mixer, Non-DAW, and Non-Session-Manager,
although stored in the same repository, are completely independent
programs which can be built and packaged separately by descending into
their respective sub-directories.
* Notes to Packagers

Non-Mixer, Non-DAW, and Non-Session-Manager, although stored in the
same repository, are completely independent programs which can be
built and packaged separately (see README.build)

If you're having trouble adapting to Non's build system, please
contact me directly or post to one of the Non mailing lists with your
@@ -23,3 +25,4 @@ Thanks,
Jonathan Moore Liles <male@tuxfamily.net>

P.S. Furthermore, please quit listing crazy random stuff as dependencies.


+ 0
- 58
configure View File

@@ -1,58 +0,0 @@
#!/bin/sh
#
# Copyright (C) 2008 Jonathan Moore Liles
# This file is licensed under version 2 of the GPL.

. scripts/config-funcs

begin

begin_options

echo "Master configuration"

ask "Installation prefix" prefix /usr/local
ask "Build for debugging" USE_DEBUG no

begin_tests

# should require everything all of the subprojects require

require_command ar ar
require_command makedepend makedepend
require_NTK 1.3.0 images
require_package JACK 0.103.0 jack
test_version `version_of jack` 0.105.0 || append "JACK_MIDI_PROTO_API=yes"
require_package sndfile 1.0.17 sndfile
require_package lrdf 0.4.0 lrdf
require_package liblo 0.23 liblo
suggest_package XPM 2.0.0 xpm
require_package sigcpp 2.0.0 sigc++-2.0

test_version `version_of liblo` 0.26 || warn "Version $(version_of liblo) of liblo is slow to create servers. Consider upgrading to 0.26 or later"

if ! hostname_resolvable
then
echo "Your hostname \"$(hostname)\" does not resolve to a valid address."
echo "This is a broken configuration and will cause liblo (the"
echo "OSC library) to fail to function. Add the line:"
echo
echo "127.0.0.1 $(hostname)"
echo
echo "to your /etc/hosts file to fix. And consider switching to a saner distribution."
echo
fail "Invalid hostname!"
fi

end

# installing configuration
echo -n "Copying configuration to modules..."

for i in nonlib FL timeline mixer sequencer session-manager
do
echo -n "$i "
cp .config "$i"
done

echo

+ 0
- 21
lib/Makefile View File

@@ -1,21 +0,0 @@

OBJS:= ntk/lib/libntk.a ntk/lib/libntk_images.a
SRCS:= $(wildcard ntk/src/*.cxx ntk/FL/*.H)

$(SRCS): ntk/config.h
@ echo Building NTK
$(MAKE) -C ntk
@ touch .built

$(OBJS): $(SRCS)

ntk/config.h: Makefile
@ echo Configuring NTK
cd ntk && ./configure --prefix=/usr/local --enable-debug --enable-shared --disable-gl --enable-threads --enable-xft --enable-cairo --enable-cairoext --enable-xinerama
@ touch ntk/config.h
config: ntk/config.h

clean:

all: $(OBJS)

+ 1
- 1
lib/ntk

@@ -1 +1 @@
Subproject commit 9fdf8b4fd9d12d1cc88b283fe00079a2324f2055
Subproject commit a41e8769a3543ef237470482488c62dba92ded2c

+ 0
- 1
mixer/FL View File

@@ -1 +0,0 @@
../FL

+ 0
- 1
mixer/Makefile View File

@@ -1 +0,0 @@
scripts/Makefile

+ 0
- 40
mixer/configure View File

@@ -1,40 +0,0 @@
#!/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 "Installation prefix" prefix /usr/local
ask "Build for debugging" USE_DEBUG no

begin_tests

require_command ar ar
require_command makedepend makedepend
require_NTK 1.3.0 images
require_package JACK 0.103.0 jack
require_package lrdf 0.4.0 lrdf
require_package liblo 0.23 liblo
suggest_package XPM 2.0.0 xpm

test_version `version_of liblo` 0.26 || warn "Version $(version_of liblo) of liblo is slow to create servers. Consider upgrading to 0.26 or later"

if ! hostname_resolvable
then
echo "Your hostname \"$(hostname)\" does not resolve to a valid address."
echo "This is a broken configuration and will cause liblo (the"
echo "OSC library) to fail to function. Add the line:"
echo
echo "127.0.0.1 $(hostname)"
echo
echo "to your /etc/hosts file to fix. And consider switching to a saner distribution."
echo
fail "Invalid hostname!"
fi

end

+ 0
- 1
mixer/lib View File

@@ -1 +0,0 @@
../lib

+ 0
- 45
mixer/makefile.inc View File

@@ -1,45 +0,0 @@
# -*- mode: makefile; -*-

VERSION := 1.1.0
PACKAGE := MIXER
BIN_NAME := non-mixer

all: Mixer

SRCS := $(wildcard src/*.C src/*.fl src/Engine/*.C)

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

LIBS += $(FLTK_LDFLAGS) $(JACK_LIBS) $(LRDF_LIBS) $(LIBLO_LIBS) $(XPM_LIBS)

CFLAGS += $(FLTK_CFLAGS) $(JACK_CFLAGS) $(LRDF_CFLAGS) $(LIBLO_CFLAGS) $(XPM_CFLAGS)

src/mixer: $(OBJS) FL/libfl_widgets.a nonlib/libnonlib.a $(FLTK_LIBS)
@ echo -n Linking mixer...
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(LIBS) -LFL -lfl_widgets -Lnonlib -lnonlib -ldl && echo $(DONE)

Mixer: src/mixer

clean:
rm -f $(OBJS) src/mixer .deps

install: all
@ echo -n "Installing..."
@ install -Dm755 src/mixer "$(DESTDIR)$(prefix)"/bin/non-mixer
@ ln -sf "$(DESTDIR)$(prefix)"/bin/non-mixer "$(DESTDIR)$(prefix)"/bin/non-mixer-noui
@ install -d "$(DESTDIR)$(SYSTEM_PATH)"/non-mixer
@ $(MAKE) -s -C doc install
@ install -d "$(DESTDIR)$(PIXMAP_PATH)/non-mixer"
@ install -Dm644 icons/hicolor/256x256/apps/non-mixer.png "$(DESTDIR)$(PIXMAP_PATH)"/non-mixer/icon-256x256.png
@ install -d "$(DESTDIR)$(ICON_PATH)/hicolor"
@ cp -au icons/hicolor/ "$(DESTDIR)$(ICON_PATH)"
@ install -d "$(DESTDIR)$(DESKTOP_PATH)"
@ sed 's:@BIN_PATH@:$(prefix)/bin:' non-mixer.desktop.in > "$(DESTDIR)$(DESKTOP_PATH)/non-mixer.desktop"
@ echo "$(DONE)"
ifneq ($(USE_DEBUG),yes)
@ echo -n "Stripping..."
@ strip "$(DESTDIR)$(prefix)"/bin/non-mixer
@ echo "$(DONE)"
endif

+ 0
- 1
mixer/nonlib View File

@@ -1 +0,0 @@
../nonlib

+ 0
- 1
mixer/scripts View File

@@ -1 +0,0 @@
../scripts/

+ 6
- 6
mixer/src/Mixer.C View File

@@ -28,14 +28,15 @@
#include <FL/Fl_Menu_Bar.H>
#include <FL/fl_ask.H>
#include <FL/Fl.H>
#include "New_Project_Dialog.H"
#include <New_Project_Dialog.H>
#include "Engine/Engine.H"
#include "FL/Fl_Flowpack.H"
#include <Fl_Flowpack.H>
#include "Project.H"
#include "FL/Fl_Menu_Settings.H"
#include "About_Dialog.H"
#include <Fl_Menu_Settings.H>
#include <About_Dialog.H>
#include <FL/Fl_File_Chooser.H>
#include "FL/Fl_Theme_Chooser.H"
#include <FL/Fl_Theme_Chooser.H>
#include <Fl_Value_SliderX.H>

#include "file.h"

@@ -44,7 +45,6 @@
#include <unistd.h>
#include <sys/types.h>

#include "FL/Fl_Value_SliderX.H"
#include "OSC/Endpoint.H"
#include <lo/lo.h>



+ 80
- 0
mixer/wscript View File

@@ -0,0 +1,80 @@
#!/usr/bin/env python
import subprocess
import waflib.Options as Options
import string
import os

# Version of this package (even if built as a child)
PACKAGE_VERSION = '1.2.0'

# Variables for 'waf dist'
APPNAME = 'non-mixer'
VERSION = PACKAGE_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
opt.load('compiler_c')
opt.load('compiler_cxx')
opt.load('gnu_dirs')

def configure(conf):
conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('gnu_dirs')

conf.check_cfg(package='lrdf', uselib_store='LRDF',args="--cflags --libs",
atleast_version='0.4.0', mandatory=True)

conf.define('VERSION', PACKAGE_VERSION)
conf.define('SYSTEM_PATH', string.join( [ conf.env.DATADIR, APPNAME ], '/' ) )
conf.define('DOCUMENT_PATH', string.join( [ conf.env.DATADIR, 'doc' ], '/' ) )
conf.define('PIXMAP_PATH', string.join( [ conf.env.DATADIR, 'pixmaps' ], '/' ) )

conf.write_config_header('config.h', remove=False)
print('')

def build(bld):

libs = ''

bld.program( source = '''
src/Chain.C
src/Controller_Module.C
src/DPM.C
src/Engine/Engine.C
src/Gain_Module.C
src/JACK_Module.C
src/LADSPAInfo.C
src/Meter_Indicator_Module.C
src/Meter_Module.C
src/Mixer.C
src/Mixer_Strip.C
src/Module.C
src/Module_Parameter_Editor.C
src/Mono_Pan_Module.C
src/NSM.C
src/Panner.C
src/Plugin_Module.C
src/Project.C
src/main.C
''',
target = 'non-mixer',
includes = ['.', 'src', '../FL', '../nonlib'],
use = ['nonlib', 'fl_widgets'],
uselib = [ 'JACK', 'LIBLO', 'LRDF', 'XPM', 'NTK', 'NTK_IMAGES' ],
install_path = '${BINDIR}')

start_dir = bld.path.find_dir( 'icons/hicolor' )

bld.install_files('${DATADIR}/icons/hicolor', start_dir.ant_glob('**/*.png'),
cwd=start_dir, relative_trick=True)

bld.install_as('${DATADIR}/pixmaps/' + APPNAME + '/icon-256x256.png', 'icons/hicolor/256x256/apps/' + APPNAME + '.png')

bld.install_files( string.join( [ '${DATADIR}/doc', APPNAME ], '/' ), bld.path.ant_glob( 'doc/*.html doc/*.png' ) )

bld.symlink_as( '${BINDIR}/' + APPNAME + '-noui', APPNAME )

+ 0
- 1
nonlib/Makefile View File

@@ -1 +0,0 @@
scripts/Makefile

+ 0
- 25
nonlib/makefile.inc View File

@@ -1,25 +0,0 @@
# -*- mode: makefile; -*-

VERSION := 1.1.0
PACKAGE := NONLIB

SRCS := $(wildcard nonlib/*.C nonlib/JACK/*.C nonlib/LASH/*.C nonlib/OSC/*.C nonlib/NSM/*.C)

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

CFLAGS := $(SIGCPP_CFLAGS) $(LIBLO_CFLAGS) $(JACK_CFLAGS)

all: nonlib/libnonlib.a

nonlib/libnonlib.a: $(OBJS)
@ ar rcs $@ $(OBJS)

.PHONEY: nonlib
nonlib: nonlib/libnonlib.a

clean:
rm -f $(OBJS) nonlib/libnonlib.a .deps

install:
@

+ 0
- 1
nonlib/scripts View File

@@ -1 +0,0 @@
../scripts

+ 27
- 0
nonlib/wscript View File

@@ -0,0 +1,27 @@
#!/usr/bin/env python

def options(opt):
pass

def configure(conf):
pass

def build(bld):
bld.stlib(
source = '''
JACK/Client.C
JACK/Port.C
Log_Entry.C
Loggable.C
NSM/Client.C
OSC/Endpoint.C
Thread.C
debug.C
dsp.C
file.C
string_util.C
''',
includes = '.',
export_incdirs = [ '.', 'nonlib'],
uselib = 'LIBLO JACK',
target = 'nonlib')

+ 0
- 127
scripts/Makefile View File

@@ -1,127 +0,0 @@

###############################################################################
# Copyright (C) 2008 Jonathan Moore Liles #
# #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the #
# Free Software Foundation; either version 2 of the License, or (at your #
# option) any later version. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with This program; see the file COPYING. If not,write to the Free Software #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
###############################################################################

## Makefile for the Non-DAW.

##
## Do not edit this file; run `make config` instead.
##

include scripts/colors

.config: configure
@ echo $(BOLD)$(YELLOW)Hey! You need to run 'configure' first.$(SGR0)
@ exit 1
#config:
# @ echo '<<< Configuring '$(PACKAGE)
# @ ./configure

-include .config

export SYSTEM_PATH:=$(prefix)/share/
export DOCUMENT_PATH:=$(prefix)/share/doc/
export PIXMAP_PATH:=$(prefix)/share/pixmaps/
export ICON_PATH:=$(prefix)/share/icons/
export DESKTOP_PATH:=$(prefix)/share/applications/

# a bit of a hack to make sure this runs before any rules
ifneq ($(CALCULATING),yes)
TOTAL := $(shell $(MAKE) CALCULATING=yes -n 2>/dev/null | sed -n 's/^.*Compiling: \([^"]\+\)"/\1/p' > .files )
endif

ifeq ($(USE_DEBUG),yes)
CFLAGS := -pipe -ggdb -fno-inline -Wall -Wextra -O0
CXXFLAGS := -Wnon-virtual-dtor -Wno-missing-field-initializers -fno-rtti -fno-exceptions
else
CFLAGS := -pipe -O2 -DNDEBUG
CXXFLAGS := -fno-rtti -fno-exceptions
endif

# LIBS := "$(FLTK_LIBS) $(LIBS)"

INCLUDES := -I. -Iutil -IFL -Inonlib
INCLUDES += $(FLTK_CFLAGS)

# INCLUDES +=

# CFLAGS += $(FLTK_CFLAGS)

# include FL/makefile.inc
include makefile.inc

CFLAGS+=-DVERSION=\"$(VERSION)\" \
-DINSTALL_PREFIX=\"$(prefix)\" \
-DSYSTEM_PATH=\"$(SYSTEM_PATH)\" \
-DDOCUMENT_PATH=\"$(DOCUMENT_PATH)\" \
-DPIXMAP_PATH=\"$(PIXMAP_PATH)\"

CXXFLAGS := $(CFLAGS) $(CXXFLAGS)


SPACE:=" `tput cuf 20`"

ifneq ($(CALCULATING),yes)
COMPILING="$(BOLD)$(BLACK)[$(SGR0) $(PACKAGE)$(SPACE)$(SGR0)$(CYAN)`scripts/percent-complete .files "$<"` $(SGR0)$(BOLD)$(BLACK)]$(SGR0) $(BOLD)$(CYAN)$<$(SGR0)"
else
COMPILING="Compiling: $<"
endif

.C.o:
@ echo $(COMPILING)
@ $(CXX) $(INCLUDES) $(CXXFLAGS) -c $< -o $@

%.C : %.fl
@ cd `dirname $<` && $(FLUID) -c `basename $<`

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


# SRCS:=$(Timeline_SRCS)
# OBJS:=$(Timeline_OBJS)
# CXXFLAGS += $(Timeline_CFLAGS)

# FIXME: isn't there a better way?
$(OBJS): .config Makefile

TAGS: $(SRCS)
etags $(SRCS)

.deps: .config $(SRCS)
ifneq ($(CALCULATING),yes)
@ echo -n Calculating dependencies...
@ makedepend -f- -- $(CXXFLAGS) $(INCLUDES) -- $(SRCS) 2>/dev/null > .deps && echo $(DONE)
@ # gcc -M $(CXXFLAGS) $(INCLUDES) $(SRCS) > .deps && echo $(DONE)
endif

clean_deps:
@ rm -f .deps

.PHONEY: clean config depend clean_deps

dist:
git archive --prefix=${BIN_NAME}-$(VERSION)/ v$(VERSION) | bzip2 > ${BIN_NAME}-$(VERSION).tar.bz2

scan-gpl:
@ scripts/scan-gpl $(SRCS) || echo $(BOLD)$(RED)Some source files do not contain proper license information!

-include .deps

all: .config


+ 0
- 40
scripts/build_id View File

@@ -1,40 +0,0 @@
#!/bin/sh

# Copyright (C) 2008 Jonathan Moore Liles #
# #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the #
# Free Software Foundation; either version 2 of the License, or (at your #
# option) any later version. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with This program; see the file COPYING. If not,write to the Free Software #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #

if [ "$#" = 0 ]
then
echo "Usage: $0 [output_file.h] [version]"
fi

if [ -d ../.git ]
then
ID=`git log -1 --format=%h -- .`
# ID="`[ \`git rev-parse HEAD\` = \`git rev-parse v${2}\` ] || git rev-parse --short HEAD`"
if [ -n "$ID" ]
then
ID="git {$ID}"
else
ID="git"
fi
else
ID="dist"
fi

echo "/* generated file */" > "$1"
echo "const char *BUILD_ID = \"${ID}\";" >> "$1"
echo "const char *VERSION = \"${2}\";" >> "$1"

+ 0
- 25
scripts/colors View File

@@ -1,25 +0,0 @@

# 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
- 414
scripts/config-funcs View File

@@ -1,414 +0,0 @@
#!/bin/sh

# Copyright (C) 2008 Jonathan Moore Liles #
# #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the #
# Free Software Foundation; either version 2 of the License, or (at your #
# option) any later version. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with This program; see the file COPYING. If not,write to the Free Software #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
#

. scripts/colors

#####
## support functions for 'configure' scripts.

fatal ()
{
echo "$BOLD$RED$*$SGR0" > /dev/stderr
exit 255
}

HELP=no
INTERACTIVE=no

split ()
{
while [ $# -gt 0 ]
do
echo $1
shift 1
done
}

if [ $# -gt 0 ]
then
case "$1" in
--help|-h)
HELP=yes
shift 1
;;
--interactive|-i)
INTERACTIVE=yes
shift 1
;;
*)
# fatal "This is not an autoconf script. Run it without any options and you will be prompted."
;;
esac

if [ $# -gt 0 ]
then
echo "## options" > .config

split "$@" | sed '
s/--\(enable\|disable\)-\([^ =]\+\)/--\1-\U\2/g;
s/--enable-\([^ =]\+\)=\(.*\)/USE_\1=\2/g;
s/--enable-\([^ =]\+\)/USE_\1=yes/g;
s/--disable-\([^ =]\+\)/USE_\1=no/g;
s/--\([^ =]\+\)/\1/g;
' | sed -n '/^[^ =]\+=./p' >> .config
INTERACTIVE=no;
fi
fi

if [ $HELP != yes ] && [ $INTERACTIVE != no ]
then
if ! ( [ -t 0 ] && [ -t 1 ] )
then
fatal "not a terminal!"
fi
fi

ask ()
{
local A D O

D="`eval echo \\$$2`"
D=${D:-$3}

if [ $HELP = yes ]
then
if [ "$3" = yes ] || [ "$3" = no ]
then
O=`echo -n "$2" | sed s/^USE_/--enable-/ | tr '[[:upper:]]' '[[:lower:]]'`
else
O=`echo -n "--$2" | tr '[[:upper:]]' '[[:lower:]]'`
fi

printf " ${BOLD}${GREEN}%-15s${SGR0}\t%-40s (currently: ${BOLD}%s${SGR0})\n" "$O" "$1" "$D"

return
fi

echo -n "$BLACK$BOLD::$SGR0 ${1}? [$BOLD${D}$SGR0] "

if [ $INTERACTIVE = no ]
then
A="$D"
echo
else
read A
A=${A:-$D}
fi

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

eval "${2}='${A:-$D}'"
}

ok ()
{
echo ' '`tput cuf 30`"$BOLD${GREEN}ok${SGR0} ${*:+${BOLD}${BLACK}($*)${SGR0}}"
}

failed ()
{
echo ' '`tput cuf 30`"$BOLD${RED}failed!${SGR0}" > /dev/stderr
rm -f .config
}

missing ()
{
echo ' '`tput cuf 30`"$BOLD${YELLOW}missing!${SGR0}" > /dev/stderr
}

using ()
{
[ "`eval echo \\$USE_$1`" = yes ]

return $?
}

upcase ()
{
echo "$*" | tr '[[:lower:]]' '[[:upper:]]'
}

extract_options ()
{
local line name value

if [ -f .config ]
then
{
while read line
do
[ "$line" = "## options" ] && break
done

while read line
do
if [ "$line" = "## libs" ]
then
break
else
name=${line%=*}
value=${line#*=}
eval "$name='$value'"
fi
done
} < .config
fi
}

begin ()
{
echo -n "Checking sanity..."
require_command tput tput > /dev/null
require_command pkg_config pkg-config > /dev/null
require_command sed sed > /dev/null
ok
}

warn ()
{
echo " ${BOLD}${YELLOW}* ${SGR0}${BOLD}$*"
}

info ()
{
echo "${BOLD}${CYAN}--- ${SGR0}$*"
}

begin_options ()
{
# get the old values
extract_options

if [ $HELP = yes ]
then
echo
warn "This is a ${BOLD}non-configure${SGR0} script. Run with ${BOLD}--interactive${SGR0} argument and you will be prompted"
warn "with configuration choices. Alternatively, you may use the following autoconf style"
warn "arguments for non-interactive configuration."
echo
echo " Available options:"
echo
else
echo > .config
append "# This file was automatically generated on `date`. Any changes may be lost!"
append "## options"

if [ $INTERACTIVE = no ]
then
info "Non-interactively updating configuration"
else
info "Interactive configuration requested"
fi
fi
}

begin_tests ()
{
if [ $HELP = yes ]
then
echo
exit 0;
fi

append "## libs"
extract_options
}

append ()
{
echo "$1" >> .config
}

end ()
{
info "Configuration complete. You may now run 'make'"
touch .config
}

require_command ()
{
echo -n "Checking for ${BOLD}$1${SGR0}..."

local name;

if [ -x "$2" ]
then
name="$PWD/$2"
ok "$name"
elif [ -x "`which "$2"`" ]
then
name="`which "$2"`"
ok "$name"
else
failed
fatal "Command $1 not found."
fi

append "$1=$name"
eval "${1}='${name}'"
}

require_package ()
{
local name

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

name="`upcase \"$1\"`"
append "${name}_LIBS=`pkg-config --libs $3 | sed 's/,\\?--as-needed//g'`"
append "${name}_CFLAGS=-DHAVE_${1} `pkg-config --cflags $3`"

ok `pkg-config --modversion "$3"`
return 0
}

suggest_package ()
{
local name

echo -n "Checking for $BOLD$1$SGR0..."
if ! pkg-config --exists $3
then
missing
warn "Suggested package $1 doesn't appear to be installed. Some functionality may be missing from your build."
warn "Continuing without $1...\n"
return 1;
elif ! pkg-config --atleast-version $2 $3
then
missing
warn "The installed version of suggested package $1 (`pkg-config --mod-version $3`) is too old."
warn "Continuing without $1..."
return 1;
fi

name="`upcase \"$1\"`"
append "${name}_LIBS=`pkg-config --libs $3 | sed 's/,\\?--as-needed//g'`"
append "${name}_CFLAGS=-DHAVE_${1} `pkg-config --cflags $3`"

ok `pkg-config --modversion "$3"`
return 0
}

_test_version ()
{
if [ $# = 6 ]
then
[ $1 -gt $4 ] && return 0
[ $1 -eq $4 ] && [ $2 -gt $5 ] && return 0
[ $1 -eq $4 ] && [ $2 -eq $5 ] && [ $3 -gt $6 ] && return 0
[ $1 -eq $4 ] && [ $2 -eq $5 ] && [ $3 -eq $6 ] && return 0
return 1
elif [ $# = 4 ]
then
[ $1 -gt $3 ] && return 0
[ $1 -eq $3 ] && [ $2 -eq $4 ] && return 0
return 1
fi
}

# return true if #1 is greater than or equal to $2
test_version ()
{
local IFS
IFS='.'

_test_version $1 $2
}

version_of ()
{
echo `pkg-config --modversion $1`
}

hostname_resolvable ()
{
ping -c1 `hostname` >/dev/null 2>/dev/null
}

require_NTK ()
{
local use
local appendflags
local is_local

is_local=

echo -n "Checking for ${BOLD}NTK${SGR0}..."

if [ -n "`which ntk-config`" ]
then
echo "found system NTK..."
require_command ntk_config ntk-config
else
echo "no system NTK found... checking for bundled version..."
require_command ntk_config lib/ntk/ntk-config
is_local=yes
fi

FLTK_VERSION=`${ntk_config} --version`

if ! test_version $FLTK_VERSION $1
then
failed
fatal "The installed FLTK version ($FLTK_VERSION) is too old."
else
ok $FLTK_VERSION
fi

if [ "x$is_local" = "xyes" ]
then
require_command FLUID lib/ntk/fluid/ntk-fluid
else
require_command FLUID ntk-fluid
fi

use=
appendflags=

while [ $# -gt 1 ]
do
shift 1

[ "$1" = 'cairo' ] && appendflags="-DFLTK_HAVE_CAIRO=1 -DUSE_X11=1"
use="$use --use-$1"
done

append "FLTK_LIBS=`${ntk_config} $use --libs | sed 's/,\\?--as-needed//g'`"
append "FLTK_LDFLAGS=`${ntk_config} $use --ldflags | sed 's/,\\?--as-needed//g'`"
append "FLTK_CFLAGS=`${ntk_config} $use --cflags` $appendflags"
}

+ 0
- 20
scripts/percent-complete View File

@@ -1,20 +0,0 @@
#!/bin/sh

# May 2008 Jonathan Moore Liles
#
# Given the name of a file containing a list of files and a filename
# from that list, return the percentage of the distance from the
# beginning of the list.

[ $# -ne 2 ] && exit

MATCH="`grep -nFx \"$2\" \"$1\"`"
MATCH=${MATCH%%:*}
TOTAL="`cat \"$1\" | wc -l`"

if [ -z "$MATCH" ]
then
echo "0%"
else
printf "%3s%%" $(( $MATCH * 100 / $TOTAL ))
fi

+ 0
- 63
scripts/scan-gpl View File

@@ -1,63 +0,0 @@
#!/bin/sh

# Copyright (C) 2008 Jonathan Moore Liles #
# #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the #
# Free Software Foundation; either version 2 of the License, or (at your #
# option) any later version. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with This program; see the file COPYING. If not,write to the Free Software #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #

#####
## Simple script to scan source files for GPL headers.
##

R=0

for i in "$@"
do
HEAD="`head $i`"

S=

if echo "$HEAD" | grep -q Copyright
then
if echo "$HEAD" | grep -q 'GNU General Public License'
then
S="GPL"

if echo "$HEAD" | grep -q 'version 2'
then
S="${S}v2"
elif echo "$HEAD" | grep -q 'version 3'
then
S="${S}v3"
fi

if echo "$HEAD" | grep -q 'any later version'
then
S="${S}+"
fi
else
S="Not GPL!"
R=255
fi

else
S="No Copyright!"
R=255
fi

printf "%-60s %s\n" "${i}:" "$S"
done


exit $R

+ 0
- 1
sequencer/FL View File

@@ -1 +0,0 @@
../FL

+ 0
- 1
sequencer/Makefile View File

@@ -1 +0,0 @@
scripts/Makefile

+ 0
- 1
sequencer/lib View File

@@ -1 +0,0 @@
../lib

+ 0
- 57
sequencer/makefile.inc View File

@@ -1,57 +0,0 @@
# -*- mode: makefile; -*-

# Makefile for the Non Sequencer.

#
# Do not edit this file; run `make config` instead.
#

VERSION := 1.9.4
PACKAGE := SEQUENCER
BIN_NAME := non-sequencer

all: Sequencer

SRCS := $(wildcard src/*.C src/*.fl src/gui/*.C src/gui/*.fl src/NSM/*.C)

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

CFLAGS += $(CFLAGS) $(CXXFLAGS) $(FLTK_CFLAGS) $(SIGCPP_CFLAGS) $(LIBLO_CFLAGS) $(XPM_CFLAGS)

LIBS += $(FLTK_LDFLAGS) $(JACK_LIBS) $(SIGCPP_LIBS) $(LIBLO_LIBS) $(XPM_LIBS)

Sequencer: src/sequencer

clean:
rm -f src/sequencer .deps $(OBJS)

src/sequencer: $(OBJS) FL/libfl_widgets.a nonlib/libnonlib.a $(FLTK_LIBS)
@ echo -n Linking sequencer...
$(CXX) $(CXXFLAGS) $^ -o $@ $(LIBS) -LFL -lfl_widgets -Lnonlib -lnonlib -ldl && echo $(DONE)


ifeq ($(JACK_MIDI_PROTO_API),yes)
CXXFLAGS+=-DJACK_MIDI_PROTO_API
endif

install: all
@ echo -n "Installing..."
@ install -Dm755 src/sequencer "$(DESTDIR)$(prefix)"/bin/non-sequencer
@ install -d "$(DESTDIR)$(SYSTEM_PATH)/instruments"
@ install -m 644 instruments/* "$(DESTDIR)$(SYSTEM_PATH)/instruments"
@ $(MAKE) -s -C doc install
@ install -d "$(DESTDIR)$(PIXMAP_PATH)"
@ install -m 644 icons/hicolor/256x256/apps/non-sequencer.png "$(DESTDIR)$(PIXMAP_PATH)"/icon-256x256.png
@ install -d "$(DESTDIR)$(ICON_PATH)/hicolor"
@ cp -au icons/hicolor/ "$(DESTDIR)$(ICON_PATH)"
@ install -d "$(DESTDIR)$(DESKTOP_PATH)"
@ sed 's:@BIN_PATH@:$(prefix)/bin:' non-sequencer.desktop.in > "$(DESTDIR)$(DESKTOP_PATH)/non-sequencer.desktop"
@ echo "$(DONE)"
ifneq ($(USE_DEBUG),yes)
@ echo -n "Stripping..."
@ strip "$(DESTDIR)$(prefix)"/bin/non-sequencer
@ echo "$(DONE)"
endif


+ 0
- 1
sequencer/nonlib View File

@@ -1 +0,0 @@
../nonlib

+ 0
- 1
sequencer/scripts View File

@@ -1 +0,0 @@
../scripts

+ 5
- 5
sequencer/src/gui/ui.fl View File

@@ -25,7 +25,7 @@ comment {//
decl {\#include <FL/Fl_Dial.H>} {public local
}

decl {\#include "FL/About_Dialog.H"} {private local
decl {\#include <About_Dialog.H>} {private local
}

decl {class Fl_Scalepack;} {public local
@@ -34,16 +34,16 @@ decl {class Fl_Scalepack;} {public local
decl {class Fl_Sometimes_Input;} {public local
}

decl {\#include "FL/Fl_Theme_Chooser.H"} {private local
decl {\#include <FL/Fl_Theme_Chooser.H>} {private local
}

decl {\#include "FL/Fl_Scalepack.H"} {private local
decl {\#include <Fl_Scalepack.H>} {private local
}

decl {\#include "FL/Fl_Sometimes_Input.H"} {private local
decl {\#include <Fl_Sometimes_Input.H>} {private local
}

decl {\#include "FL/Fl_Menu_Settings.H"} {private local
decl {\#include <Fl_Menu_Settings.H>} {private local
}

decl {\#include <FL/Fl_Shared_Image.H>} {private local


+ 84
- 0
sequencer/wscript View File

@@ -0,0 +1,84 @@
#!/usr/bin/env python
import subprocess
import waflib.Options as Options
import string
import os

# Version of this package (even if built as a child)
PACKAGE_VERSION = '1.9.5'

# Variables for 'waf dist'
APPNAME = 'non-sequencer'
VERSION = PACKAGE_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
opt.load('compiler_c')
opt.load('compiler_cxx')
opt.load('gnu_dirs')

def configure(conf):
conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('gnu_dirs')

conf.check_cfg(package='sigc++-2.0', uselib_store='SIGCPP',
atleast_version='2.0.0', args="--cflags --libs", mandatory=True)

conf.define('VERSION', PACKAGE_VERSION)
conf.define('SYSTEM_PATH', string.join( [ conf.env.DATADIR, APPNAME ], '/' ) )
conf.define('DOCUMENT_PATH', string.join( [ conf.env.DATADIR, 'doc' ], '/' ) )
conf.define('PIXMAP_PATH', string.join( [ conf.env.DATADIR, 'pixmaps' ], '/' ) )

conf.write_config_header('config.h', remove=False)

print('')

def build(bld):

libs = ''

bld.program( source = '''
src/NSM.C
src/NSM/Client.C
src/canvas.C
src/debug.C
src/event.C
src/event_list.C
src/grid.C
src/gui/draw.C
src/gui/event_edit.fl
src/gui/input.C
src/gui/ui.fl
src/gui/widgets.fl
src/instrument.C
src/jack.C
src/main.C
src/mapping.C
src/midievent.C
src/pattern.C
src/phrase.C
src/scale.C
src/sequence.C
src/smf.C
src/transport.C
''',
target = 'non-sequencer',
includes = ['.', 'src', 'src/gui', '../FL', '../nonlib'],
use = ['nonlib', 'fl_widgets'],
uselib = [ 'JACK', 'SIGCPP', 'LIBLO', 'XPM', 'NTK', 'NTK_IMAGES'],
install_path = '${BINDIR}')

bld.install_files(string.join( [ '${DATADIR}', APPNAME, 'instruments'], '/' ), bld.path.ant_glob('instruments/*'))

start_dir = bld.path.find_dir( 'icons/hicolor' )

bld.install_files('${DATADIR}/icons/hicolor', start_dir.ant_glob('**/*.png'),
cwd=start_dir, relative_trick=True)

bld.install_as('${DATADIR}/pixmaps/' + APPNAME + '/icon-256x256.png', 'icons/hicolor/256x256/apps/' + APPNAME + '.png')

bld.install_files( string.join( [ '${DATADIR}/doc', APPNAME ], '/' ), bld.path.ant_glob( 'doc/*.html doc/*.png' ) )

+ 0
- 1
session-manager/FL View File

@@ -1 +0,0 @@
../FL

+ 0
- 1
session-manager/Makefile View File

@@ -1 +0,0 @@
scripts/Makefile

+ 0
- 39
session-manager/configure View File

@@ -1,39 +0,0 @@
#!/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 "Installation prefix" prefix /usr/local
ask "Build for debugging" USE_DEBUG no

begin_tests

require_command ar ar
require_command makedepend makedepend
require_NTK 1.3.0 images
suggest_package JACK 0.103.0 jack
require_package liblo 0.23 liblo
suggest_package XPM 2.0.0 xpm

test_version `version_of liblo` 0.26 || warn "Version $(version_of liblo) of liblo is slow to create servers. Consider upgrading to 0.26 or later"

end

if ! hostname_resolvable
then
echo "Your hostname \"$(hostname)\" does not resolve to a valid address."
echo "This is a broken configuration and will cause liblo (the"
echo "OSC library) to fail to function. Add the line:"
echo
echo "127.0.0.1 $(hostname)"
echo
echo "to your /etc/hosts file to fix. And consider switching to a saner distribution."
echo
fail "Invalid hostname!"
fi

+ 0
- 1
session-manager/lib View File

@@ -1 +0,0 @@
../lib

+ 0
- 72
session-manager/makefile.inc View File

@@ -1,72 +0,0 @@
# -*- mode: makefile; -*-

VERSION := 1.0.0
PACKAGE := SESSION_MANAGER
BIN_NAME := non-session-manager

all: Session

SRCS := $(wildcard src/*.C src/*.fl)
# SRCS += util/debug.C util/Thread.C util/file.C

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

LIBS += $(LIBLO_LIBS)
CFLAGS += $(LIBLO_CFLAGS) $(XPM_CFLAGS) $(FLTK_CFLAGS) -D_GNU_SOURCE

src/nsmd: src/nsmd.o nonlib/libnonlib.a
@ echo -n Linking session handler.
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(LIBS) -Lnonlib -lnonlib && echo $(DONE)

src/session-manager: src/session-manager.o nonlib/libnonlib.a $(FLTK_LIBS)
@ echo -n Linking session handler.
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(FLTK_LDFLAGS) $(XPM_LIBS) $(LIBS) -LFL -lfl_widgets -Lnonlib -lnonlib && echo $(DONE)

src/nsm-proxy: src/nsm-proxy.o nonlib/libnonlib.a
@ echo -n Linking NSM Proxy.
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(LIBLO_LIBS) -Lnonlib -lnonlib && echo $(DONE)

# src/NSM_Proxy_UI.o:
# @ cd src && $(FLUID) -c NSM_Proxy_UI.fl

src/nsm-proxy-gui: src/NSM_Proxy_UI.o src/nsm-proxy-gui.o $(FLTK_LIBS)
@ echo -n Linking NSM Proxy...
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(FLTK_LDFLAGS) $(XPM_LIBS) $(LIBLO_LIBS) $(FLTK_LIBS) -LFL -lfl_widgets && echo $(DONE)

src/send_osc: src/send_osc.o nonlib/libnonlib.a
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(LIBS) -Lnonlib -lnonlib && echo $(DONE)

src/jackpatch: src/jackpatch.o
@ $(CXX) $(CXXFLAGS) $^ -o $@ $(JACK_LIBS) $(LIBLO_LIBS) && echo $(DONE)


Session: src/send_osc src/nsmd src/session-manager src/jackpatch src/nsm-proxy src/nsm-proxy-gui

clean:
rm -f $(OBJS) src/nsmd src/session-manager src/jackpatch src/nsm-proxy src/nsm-proxy-gui .deps

install: all
@ echo -n "Installing..."
@ install -Dm755 src/nsmd "$(DESTDIR)$(prefix)"/bin/nsmd
@ install -Dm755 src/session-manager "$(DESTDIR)$(prefix)"/bin/non-session-manager
@ install -Dm755 src/nsm-proxy "$(DESTDIR)$(prefix)"/bin/nsm-proxy
@ install -Dm755 src/nsm-proxy-gui "$(DESTDIR)$(prefix)"/bin/nsm-proxy-gui
@ install -Dm755 src/jackpatch "$(DESTDIR)$(prefix)"/bin/jackpatch
@ install -d "$(DESTDIR)$(SYSTEM_PATH)"/non-session-manager
@ $(MAKE) -s -C doc install
@ install -d "$(DESTDIR)$(PIXMAP_PATH)/non-session-manager"
@ install -m 644 icons/hicolor/256x256/apps/non-session-manager.png "$(DESTDIR)$(PIXMAP_PATH)"/non-session-manager/icon-256x256.png
@ install -d "$(DESTDIR)$(ICON_PATH)/hicolor"
@ cp -au icons/hicolor/ "$(DESTDIR)$(ICON_PATH)"
@ install -d "$(DESTDIR)$(DESKTOP_PATH)"
@ sed 's:@BIN_PATH@:$(prefix)/bin:' non-session-manager.desktop.in > "$(DESTDIR)$(DESKTOP_PATH)/non-session-manager.desktop"
@ echo "$(DONE)"
ifneq ($(USE_DEBUG),yes)
@ echo -n "Stripping..."
@ strip "$(DESTDIR)$(prefix)"/bin/jackpatch
@ strip "$(DESTDIR)$(prefix)"/bin/nsmd
@ strip "$(DESTDIR)$(prefix)"/bin/non-session-manager
@ echo "$(DONE)"
endif

+ 0
- 1
session-manager/nonlib View File

@@ -1 +0,0 @@
../nonlib/

+ 0
- 1
session-manager/scripts View File

@@ -1 +0,0 @@
../scripts

+ 0
- 1
session-manager/src/FL View File

@@ -1 +0,0 @@
../../FL

+ 103
- 0
session-manager/wscript View File

@@ -0,0 +1,103 @@
#!/usr/bin/env python
import subprocess
import waflib.Options as Options
import string
import os

# Version of this package (even if built as a child)
PACKAGE_VERSION = '1.2.0'

# Variables for 'waf dist'
APPNAME = 'non-session-manager'
VERSION = PACKAGE_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
opt.load('compiler_c')
opt.load('compiler_cxx')
opt.load('gnu_dirs')

def configure(conf):
conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('gnu_dirs')

conf.define('VERSION', PACKAGE_VERSION)
conf.define('SYSTEM_PATH', string.join( [ conf.env.DATADIR, APPNAME ], '/' ) )
conf.define('DOCUMENT_PATH', string.join( [ conf.env.DATADIR, 'doc' ], '/' ) )
conf.define('PIXMAP_PATH', string.join( [ conf.env.DATADIR, 'pixmaps' ], '/' ) )

conf.write_config_header('config.h', remove=False)
print('')

def build(bld):

libs = ''

bld.program( source = '''
src/session-manager.C
''',
target = 'non-session-manager',
includes = ['.', 'src', '../nonlib', '../FL' ],
uselib = [ 'LIBLO', 'XPM', 'NTK', 'NTK_IMAGES' ],
use = [ 'fl_widgets', 'nonlib'],
install_path = '${BINDIR}')

bld.program( source = '''
src/nsmd.C
''',
target = 'nsmd',
includes = ['.', 'src', '../nonlib'],
uselib = [ 'LIBLO' ],
use = [ 'nonlib'],
install_path = '${BINDIR}')

bld.program( source = '''
src/nsm-proxy.C
''',
target = 'nsm-proxy',
includes = ['.', 'src', '../nonlib', '../FL' ],
uselib = [ 'LIBLO' ],
use = [ 'nonlib'],
install_path = '${BINDIR}')

bld.program( source = '''
src/nsm-proxy-gui.C
src/NSM_Proxy_UI.fl
''',
target = 'nsm-proxy-gui',
includes = ['.', 'src'],
uselib = [ 'LIBLO', 'XPM', 'NTK', 'NTK_IMAGES ' ],
install_path = '${BINDIR}')

bld.program( source = '''
src/jackpatch.c
''',
target = 'jackpatch',
includes = ['.', 'src'],
uselib = [ 'LIBLO', 'JACK' ],
install_path = '${BINDIR}')


bld.program( source = '''
src/send_osc.C
''',
target = 'send_osc',
includes = ['.', 'src', '../nonlib' ],
uselib = [ 'LIBLO' ],
use = [ 'nonlib'],
install_path = '${BINDIR}')


start_dir = bld.path.find_dir( 'icons/hicolor' )

bld.install_files('${DATADIR}/icons/hicolor', start_dir.ant_glob('**/*.png'),
cwd=start_dir, relative_trick=True)

bld.install_as('${DATADIR}/pixmaps/' + APPNAME + '/icon-256x256.png', 'icons/hicolor/256x256/apps/' + APPNAME + '.png')

bld.install_files( string.join( [ '${DATADIR}/doc', APPNAME ], '/' ), bld.path.ant_glob( 'doc/*.html doc/*.png' ) )

+ 0
- 1
timeline/FL View File

@@ -1 +0,0 @@
../FL

+ 0
- 1
timeline/Makefile View File

@@ -1 +0,0 @@
scripts/Makefile

+ 0
- 47
timeline/configure View File

@@ -1,47 +0,0 @@
#!/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 "Installation prefix" prefix /usr/local
ask "Build for debugging" USE_DEBUG no

using DEBUG &&
{
ask "Use unoptimized drawing routines" USE_UNOPTIMIZED_DRAWING no
ask "Use widget for timeline" USE_WIDGET_FOR_TIMELINE no
using WIDGET_FOR_TIMELINE || ask "Use singlebuffered timeline" USE_SINGLEBUFFERED_TIMELINE no
}

begin_tests

require_command ar ar
require_command makedepend makedepend
require_NTK 1.3.0 images
require_package JACK 0.103.0 jack
require_package sndfile 1.0.17 sndfile
require_package liblo 0.23 liblo
suggest_package XPM 2.0.0 xpm

if ! hostname_resolvable
then
echo "Your hostname \"$(hostname)\" does not resolve to a valid address."
echo "This is a broken configuration and will cause liblo (the"
echo "OSC library) to fail to function. Add the line:"
echo
echo "127.0.0.1 $(hostname)"
echo
echo "to your /etc/hosts file to fix. And consider switching to a saner distribution."
echo
fail "Invalid hostname!"
fi

test_version `version_of liblo` 0.26 || warn "Version $(version_of liblo) of liblo is slow to create servers. Consider upgrading to 0.26 or later"

end

+ 0
- 1
timeline/lib View File

@@ -1 +0,0 @@
../lib

+ 0
- 57
timeline/makefile.inc View File

@@ -1,57 +0,0 @@
# -*- mode: makefile; -*-

VERSION := 1.1.0
PACKAGE := TIMELINE
BIN_NAME := non-daw

all: Timeline

SRCS := $(wildcard src/*.C src/*.fl src/Engine/*.C)

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

LIBS += $(FLTK_LDFLAGS) $(JACK_LIBS) $(SNDFILE_LIBS) $(LIBLO_LIBS) $(SIGCPP_LIBS) $(XPM_LIBS)

CFLAGS += $(SNDFILE_CFLAGS) $(FLTK_CFLAGS) $(JACK_CFLAGS) $(SIGCPP_CFLAGS) $(XPM_CFLAGS) -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

ifeq ($(USE_UNOPTIMIZED_DRAWING),yes)
CFLAGS+=-DUSE_UNOPTIMIZED_DRAWING
endif

ifeq ($(USE_SINGLEBUFFERED_TIMELINE),yes)
CFLAGS+=-DUSE_SINGLEBUFFERED_TIMELINE
endif

ifeq ($(USE_WIDGET_FOR_TIMELINE),yes)
CFLAGS+=-DUSE_WIDGET_FOR_TIMELINE
endif


src/timeline: $(OBJS) FL/libfl_widgets.a nonlib/libnonlib.a $(FLTK_LIBS)
@ echo -n Linking timeline...
$(CXX) $(CXXFLAGS) $(INCLUDES) $^ -o $@ $(LIBS) -LFL -lfl_widgets -Lnonlib -lnonlib && echo $(DONE)

Timeline: src/timeline

clean:
rm -f $(OBJS) src/timeline .deps

install: all
@ echo -n "Installing..."
@ install -Dm755 src/timeline "$(DESTDIR)$(prefix)"/bin/non-daw
@ install -d "$(DESTDIR)$(SYSTEM_PATH)"/non-daw
@ $(MAKE) -s -C doc install
@ install -d "$(DESTDIR)$(PIXMAP_PATH)/non-daw"
@ install -Dm644 icons/hicolor/256x256/apps/non-daw.png "$(DESTDIR)$(PIXMAP_PATH)"/non-daw/icon-256x256.png
@ install -d "$(DESTDIR)$(ICON_PATH)/hicolor"
@ cp -au icons/hicolor/ "$(DESTDIR)$(ICON_PATH)"
@ install -d "$(DESTDIR)$(DESKTOP_PATH)"
@ sed 's:@BIN_PATH@:$(prefix)/bin:' non-daw.desktop.in > "$(DESTDIR)$(DESKTOP_PATH)/non-daw.desktop"
@ echo "$(DONE)"
ifneq ($(USE_DEBUG),yes)
@ echo -n "Stripping..."
@ strip "$(DESTDIR)$(prefix)"/bin/non-daw
@ echo "$(DONE)"
endif

+ 0
- 1
timeline/nonlib View File

@@ -1 +0,0 @@
../nonlib

+ 0
- 1
timeline/scripts View File

@@ -1 +0,0 @@
../scripts/

+ 2
- 2
timeline/src/Annotation_Region.C View File

@@ -91,8 +91,8 @@ Annotation_Region::draw ( void )
draw_label( _label, (Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_INSIDE | FL_ALIGN_TOP | FL_ALIGN_CLIP ) );
}

#include "FL/Fl_Text_Edit_Window.H"
#include "FL/test_press.H"
#include <Fl_Text_Edit_Window.H>
#include <test_press.H>

int
Annotation_Region::handle ( int m )


+ 2
- 2
timeline/src/Cursor_Region.C View File

@@ -119,8 +119,8 @@ Cursor_Region::draw ( void )
draw_label( _label, (Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_INSIDE | FL_ALIGN_TOP | FL_ALIGN_CLIP ) );
}

#include "FL/Fl_Text_Edit_Window.H"
#include "FL/test_press.H"
#include <Fl_Text_Edit_Window.H>
#include <test_press.H>

int
Cursor_Region::handle ( int m )


+ 4
- 4
timeline/src/TLE.fl View File

@@ -31,7 +31,7 @@ decl {class Fl_Flowpack;} {public global
decl {\#include <FL/Fl_Overlay_Window.H>} {private local
}

decl {\#include "Fl_Menu_Settings.H"} {private local
decl {\#include <Fl_Menu_Settings.H>} {private local
}

decl {\#include "Timeline.H"} {private local
@@ -49,10 +49,10 @@ decl {\#include "Project.H"} {private local
decl {\#include "Clock.H"} {public local
}

decl {\#include "FL/Fl_Flowpack.H"} {private local
decl {\#include <Fl_Flowpack.H>} {private local
}

decl {\#include "New_Project_Dialog.H"} {private local
decl {\#include <New_Project_Dialog.H>} {private local
}

decl {\#include "Track.H" // for capture_format} {private local
@@ -85,7 +85,7 @@ decl {\#include "Engine/Engine.H"} {private local
decl {\#include "Engine/Audio_File.H" // for supported formats} {private local
}

decl {\#include "FL/About_Dialog.H"} {private local
decl {\#include <About_Dialog.H>} {private local
}

decl {extern char project_display_name[256];} {private global


+ 105
- 0
timeline/wscript View File

@@ -0,0 +1,105 @@
#!/usr/bin/env python
import subprocess
import waflib.Options as Options
import string
import os;

# Version of this package (even if built as a child)
PACKAGE_VERSION = '1.2.0'

# Variables for 'waf dist'
APPNAME = 'non-daw'
VERSION = PACKAGE_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
opt.load('compiler_c')
opt.load('compiler_cxx')
opt.load('gnu_dirs')

def configure(conf):
conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('gnu_dirs')

conf.env.append_value('CFLAGS', '-D_LARGEFILE64_SOURCE')
conf.env.append_value('CFLAGS', '-D_FILE_OFFSET_BITS=64')
conf.env.append_value('CXXFLAGS', '-D_LARGEFILE64_SOURCE')
conf.env.append_value('CXXFLAGS', '-D_FILE_OFFSET_BITS=64')

conf.check_cfg(package='sndfile', uselib_store='SNDFILE',args="--cflags --libs",
atleast_version='1.0.17', mandatory=True)

conf.define('VERSION', PACKAGE_VERSION)
conf.define('SYSTEM_PATH', string.join( [ conf.env.DATADIR, APPNAME ], '/' ) )
conf.define('DOCUMENT_PATH', string.join( [ conf.env.DATADIR, 'doc' ], '/' ) )
conf.define('PIXMAP_PATH', string.join( [ conf.env.DATADIR, 'pixmaps' ], '/' ) )

conf.write_config_header('config.h', remove=False)
print('')

def build(bld):
# libs = 'LILV SUIL JACK SERD SRATOM LV2'

libs = ''

obj = bld(features = 'cxx cxxprogram',
source = '''
src/Annotation_Region.C
src/Audio_Region.C
src/Audio_Sequence.C
src/Control_Point.C
src/Control_Sequence.C
src/Cursor_Point.C
src/Cursor_Region.C
src/Cursor_Sequence.C
src/Engine/Audio_File.C
src/Engine/Audio_File_Dummy.C
src/Engine/Audio_File_SF.C
src/Engine/Audio_Region.C
src/Engine/Audio_Sequence.C
src/Engine/Control_Sequence.C
src/Engine/Disk_Stream.C
src/Engine/Engine.C
src/Engine/Peaks.C
src/Engine/Playback_DS.C
src/Engine/Record_DS.C
src/Engine/Timeline.C
src/Engine/Track.C
src/NSM.C
src/OSC_Thread.C
src/Project.C
src/Sequence.C
src/Sequence_Point.C
src/Sequence_Region.C
src/Sequence_Widget.C
src/TLE.fl
src/Tempo_Point.C
src/Tempo_Sequence.C
src/Time_Point.C
src/Time_Sequence.C
src/Timeline.C
src/Track.C
src/Transport.C
src/Waveform.C
src/main.C
''',
target = 'non-daw',
includes = ['.', 'src', '../FL', '../nonlib'],
uselib = [ 'JACK', 'LIBLO', 'SNDFILE', 'XPM', 'NTK', 'NTK_IMAGES'],
use = [ 'fl_widgets', 'nonlib'],
install_path = '${BINDIR}')

start_dir = bld.path.find_dir( 'icons/hicolor' )

bld.install_files('${DATADIR}/icons/hicolor', start_dir.ant_glob('**/*.png'),
cwd=start_dir, relative_trick=True)

bld.install_as('${DATADIR}/pixmaps/' + APPNAME + '/icon-256x256.png', 'icons/hicolor/256x256/apps/' + APPNAME + '.png')

bld.install_files( string.join( [ '${DATADIR}/doc', APPNAME ], '/' ), bld.path.ant_glob( 'doc/*.html doc/*.png' ) )

BIN
waf View File


+ 120
- 0
wscript View File

@@ -0,0 +1,120 @@
#!/usr/bin/env python
import os
import subprocess
import waflib.Logs as Logs, waflib.Options as Options
import string

VERSION = 'xxx'
APPNAME = 'non-things'

top = '.'
out = 'build'

common = [ 'nonlib', 'FL' ]
projects = [ 'timeline', 'mixer', 'sequencer', 'session-manager' ]

def options(opt):
# opt.add_option('--use-system-ntk', action='store_true', default=False,
# dest='use_system_ntk',
# help="Link to system-installed shared NTK instead of bundled version")
opt.add_option('--enable-debug', action='store_true', default=False, dest='debug',
help='Build for debugging')
opt.add_option('--project', action='store', default=False, dest='project',
help='Limit build to a single project (' + string.join( projects, ', ' ) + ')')

for i in projects:
opt.recurse(i)
def configure(conf):
conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('gnu_dirs')
conf.load('ntk_fluid')
conf.line_just = 52

optimization_flags = [
"-O3",
"-fomit-frame-pointer",
"-ffast-math",
# "-fstrength-reduce",
"-pipe"
]

debug_flags = [ '-g' ]

if Options.options.debug:
conf.env.append_value('CFLAGS', debug_flags )
conf.env.append_value('CXXFLAGS', debug_flags )
else:
conf.env.append_value('CFLAGS', optimization_flags )
conf.env.append_value('CXXFLAGS', optimization_flags )
conf.define( 'NDEBUG', 1 )

conf.env.append_value('CFLAGS',['-Wall'])
# conf.env.append_value('CXXFLAGS',['-Wall','-fno-exceptions', '-fno-rtti'])
conf.env.append_value('CXXFLAGS',['-Wall','-fno-rtti'])


# NTK_EXTRA_FLAGS=''
# if not Options.options.use_system_ntk:
# print 'Using bundled NTK'
# os.environ['PKG_CONFIG_PATH'] = 'lib/ntk/build/:' + os.environ.get('PKG_CONFIG_PATH','')
# NTK_EXTRA_FLAGS='--static'
# PWD = os.environ.get('PWD','')
# os.environ['PATH'] = PWD + '/lib/ntk/build/fluid:' + os.environ.get('PATH','')

conf.check_cfg(package='ntk', uselib_store='NTK', args='--cflags --libs',
atleast_version='1.3.0', mandatory=True)
conf.check_cfg(package='ntk_images', uselib_store='NTK_IMAGES', args=' --cflags --libs',
atleast_version='1.3.0', mandatory=True)

conf.find_program('ntk-fluid', var='NTK_FLUID')

conf.check_cfg(package='jack', uselib_store='JACK', args="--cflags --libs",
atleast_version='0.103.0', mandatory=True)

conf.check_cfg(package='xpm', uselib_store='XMP',args="--cflags --libs",
atleast_version='2.0.0', mandatory=True)

conf.check_cfg(package='liblo', uselib_store='LIBLO',args="--cflags --libs",
atleast_version='0.26', mandatory=True)

###

for i in common:
conf.recurse(i)

conf.env.PROJECT = conf.options.project

if conf.env.PROJECT:
pl = [ conf.env.PROJECT ]
else:
pl = projects;

for i in pl:
Logs.pprint('YELLOW', 'Configuring %s' % i)
conf.recurse(i);

def run(ctx):
if not Options.options.cmd:
Logs.error("missing --cmd option for run command")
return

cmd = Options.options.cmd
Logs.pprint('GREEN', 'Running %s' % cmd)

subprocess.call(cmd, shell=True, env=source_tree_env())

def build(bld):
for i in common:
bld.recurse(i)

if bld.env.PROJECT:
pl = [ bld.env.PROJECT ]
else:
pl = projects;

for i in pl:
bld.recurse(i);

Loading…
Cancel
Save