From d86b71cb2c6d8585c95c944be0b748d22c162d36 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Wed, 14 Nov 2012 01:54:03 -0800 Subject: [PATCH] Replace custom build system with WAF. --- .gitignore | 28 +-- FL/Makefile | 1 - FL/makefile.inc | 37 --- FL/scripts | 1 - FL/util/ntk-chtheme.C | 3 +- FL/wscript | 26 ++ Makefile | 45 ---- README.build | 41 ++- README.packagers | 11 +- configure | 58 ----- lib/Makefile | 21 -- lib/ntk | 2 +- mixer/FL | 1 - mixer/Makefile | 1 - mixer/configure | 40 --- mixer/lib | 1 - mixer/makefile.inc | 45 ---- mixer/nonlib | 1 - mixer/scripts | 1 - mixer/src/Mixer.C | 12 +- mixer/wscript | 80 ++++++ nonlib/Makefile | 1 - nonlib/makefile.inc | 25 -- nonlib/scripts | 1 - nonlib/wscript | 27 ++ scripts/Makefile | 127 ---------- scripts/build_id | 40 --- scripts/colors | 25 -- scripts/config-funcs | 414 ------------------------------- scripts/percent-complete | 20 -- scripts/scan-gpl | 63 ----- sequencer/FL | 1 - sequencer/Makefile | 1 - sequencer/lib | 1 - sequencer/makefile.inc | 57 ----- sequencer/nonlib | 1 - sequencer/scripts | 1 - sequencer/src/gui/ui.fl | 10 +- sequencer/wscript | 84 +++++++ session-manager/FL | 1 - session-manager/Makefile | 1 - session-manager/configure | 39 --- session-manager/lib | 1 - session-manager/makefile.inc | 72 ------ session-manager/nonlib | 1 - session-manager/scripts | 1 - session-manager/src/FL | 1 - session-manager/wscript | 103 ++++++++ timeline/FL | 1 - timeline/Makefile | 1 - timeline/configure | 47 ---- timeline/lib | 1 - timeline/makefile.inc | 57 ----- timeline/nonlib | 1 - timeline/scripts | 1 - timeline/src/Annotation_Region.C | 4 +- timeline/src/Cursor_Region.C | 4 +- timeline/src/TLE.fl | 8 +- timeline/wscript | 105 ++++++++ waf | Bin 0 -> 88303 bytes wscript | 120 +++++++++ 61 files changed, 610 insertions(+), 1315 deletions(-) delete mode 120000 FL/Makefile delete mode 100644 FL/makefile.inc delete mode 120000 FL/scripts create mode 100644 FL/wscript delete mode 100644 Makefile delete mode 100755 configure delete mode 100644 lib/Makefile delete mode 120000 mixer/FL delete mode 120000 mixer/Makefile delete mode 100755 mixer/configure delete mode 120000 mixer/lib delete mode 100644 mixer/makefile.inc delete mode 120000 mixer/nonlib delete mode 120000 mixer/scripts create mode 100644 mixer/wscript delete mode 120000 nonlib/Makefile delete mode 100644 nonlib/makefile.inc delete mode 120000 nonlib/scripts create mode 100644 nonlib/wscript delete mode 100644 scripts/Makefile delete mode 100755 scripts/build_id delete mode 100644 scripts/colors delete mode 100644 scripts/config-funcs delete mode 100755 scripts/percent-complete delete mode 100755 scripts/scan-gpl delete mode 120000 sequencer/FL delete mode 120000 sequencer/Makefile delete mode 120000 sequencer/lib delete mode 100644 sequencer/makefile.inc delete mode 120000 sequencer/nonlib delete mode 120000 sequencer/scripts create mode 100644 sequencer/wscript delete mode 120000 session-manager/FL delete mode 120000 session-manager/Makefile delete mode 100755 session-manager/configure delete mode 120000 session-manager/lib delete mode 100644 session-manager/makefile.inc delete mode 120000 session-manager/nonlib delete mode 120000 session-manager/scripts delete mode 120000 session-manager/src/FL create mode 100644 session-manager/wscript delete mode 120000 timeline/FL delete mode 120000 timeline/Makefile delete mode 100755 timeline/configure delete mode 120000 timeline/lib delete mode 100644 timeline/makefile.inc delete mode 120000 timeline/nonlib delete mode 120000 timeline/scripts create mode 100644 timeline/wscript create mode 100755 waf create mode 100644 wscript diff --git a/.gitignore b/.gitignore index 7b7d7d9..6225460 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/FL/Makefile b/FL/Makefile deleted file mode 120000 index c259b75..0000000 --- a/FL/Makefile +++ /dev/null @@ -1 +0,0 @@ -scripts/Makefile \ No newline at end of file diff --git a/FL/makefile.inc b/FL/makefile.inc deleted file mode 100644 index 1ddaa25..0000000 --- a/FL/makefile.inc +++ /dev/null @@ -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: - @ diff --git a/FL/scripts b/FL/scripts deleted file mode 120000 index a339954..0000000 --- a/FL/scripts +++ /dev/null @@ -1 +0,0 @@ -../scripts \ No newline at end of file diff --git a/FL/util/ntk-chtheme.C b/FL/util/ntk-chtheme.C index 7f9e232..8daa6f4 100644 --- a/FL/util/ntk-chtheme.C +++ b/FL/util/ntk-chtheme.C @@ -18,8 +18,7 @@ /*******************************************************************************/ #include "FL/themes.H" -#include "FL/Fl_Theme_Chooser.C" - +#include int main ( int argc, char **argv ) diff --git a/FL/wscript b/FL/wscript new file mode 100644 index 0000000..eda72a2 --- /dev/null +++ b/FL/wscript @@ -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') diff --git a/Makefile b/Makefile deleted file mode 100644 index 3509870..0000000 --- a/Makefile +++ /dev/null @@ -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 diff --git a/README.build b/README.build index c3f7276..5cf5224 100644 --- a/README.build +++ b/README.build @@ -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: - make ntk + 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: + + ./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. diff --git a/README.packagers b/README.packagers index 6589c19..eea4ae0 100644 --- a/README.packagers +++ b/README.packagers @@ -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 P.S. Furthermore, please quit listing crazy random stuff as dependencies. + diff --git a/configure b/configure deleted file mode 100755 index 700fc79..0000000 --- a/configure +++ /dev/null @@ -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 diff --git a/lib/Makefile b/lib/Makefile deleted file mode 100644 index f832e50..0000000 --- a/lib/Makefile +++ /dev/null @@ -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) diff --git a/lib/ntk b/lib/ntk index 9fdf8b4..a41e876 160000 --- a/lib/ntk +++ b/lib/ntk @@ -1 +1 @@ -Subproject commit 9fdf8b4fd9d12d1cc88b283fe00079a2324f2055 +Subproject commit a41e8769a3543ef237470482488c62dba92ded2c diff --git a/mixer/FL b/mixer/FL deleted file mode 120000 index d025fc7..0000000 --- a/mixer/FL +++ /dev/null @@ -1 +0,0 @@ -../FL \ No newline at end of file diff --git a/mixer/Makefile b/mixer/Makefile deleted file mode 120000 index c259b75..0000000 --- a/mixer/Makefile +++ /dev/null @@ -1 +0,0 @@ -scripts/Makefile \ No newline at end of file diff --git a/mixer/configure b/mixer/configure deleted file mode 100755 index b2f6e20..0000000 --- a/mixer/configure +++ /dev/null @@ -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 diff --git a/mixer/lib b/mixer/lib deleted file mode 120000 index dc598c5..0000000 --- a/mixer/lib +++ /dev/null @@ -1 +0,0 @@ -../lib \ No newline at end of file diff --git a/mixer/makefile.inc b/mixer/makefile.inc deleted file mode 100644 index 81b6d3d..0000000 --- a/mixer/makefile.inc +++ /dev/null @@ -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 diff --git a/mixer/nonlib b/mixer/nonlib deleted file mode 120000 index bff0245..0000000 --- a/mixer/nonlib +++ /dev/null @@ -1 +0,0 @@ -../nonlib \ No newline at end of file diff --git a/mixer/scripts b/mixer/scripts deleted file mode 120000 index adb0a1d..0000000 --- a/mixer/scripts +++ /dev/null @@ -1 +0,0 @@ -../scripts/ \ No newline at end of file diff --git a/mixer/src/Mixer.C b/mixer/src/Mixer.C index 5273969..4ec1b1c 100644 --- a/mixer/src/Mixer.C +++ b/mixer/src/Mixer.C @@ -28,14 +28,15 @@ #include #include #include -#include "New_Project_Dialog.H" +#include #include "Engine/Engine.H" -#include "FL/Fl_Flowpack.H" +#include #include "Project.H" -#include "FL/Fl_Menu_Settings.H" -#include "About_Dialog.H" +#include +#include #include -#include "FL/Fl_Theme_Chooser.H" +#include +#include #include "file.h" @@ -44,7 +45,6 @@ #include #include -#include "FL/Fl_Value_SliderX.H" #include "OSC/Endpoint.H" #include diff --git a/mixer/wscript b/mixer/wscript new file mode 100644 index 0000000..d855c53 --- /dev/null +++ b/mixer/wscript @@ -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 ) diff --git a/nonlib/Makefile b/nonlib/Makefile deleted file mode 120000 index c259b75..0000000 --- a/nonlib/Makefile +++ /dev/null @@ -1 +0,0 @@ -scripts/Makefile \ No newline at end of file diff --git a/nonlib/makefile.inc b/nonlib/makefile.inc deleted file mode 100644 index 2f6a0cd..0000000 --- a/nonlib/makefile.inc +++ /dev/null @@ -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: - @ \ No newline at end of file diff --git a/nonlib/scripts b/nonlib/scripts deleted file mode 120000 index a339954..0000000 --- a/nonlib/scripts +++ /dev/null @@ -1 +0,0 @@ -../scripts \ No newline at end of file diff --git a/nonlib/wscript b/nonlib/wscript new file mode 100644 index 0000000..50e5366 --- /dev/null +++ b/nonlib/wscript @@ -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') diff --git a/scripts/Makefile b/scripts/Makefile deleted file mode 100644 index 5a916bd..0000000 --- a/scripts/Makefile +++ /dev/null @@ -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 - diff --git a/scripts/build_id b/scripts/build_id deleted file mode 100755 index 1c0fc71..0000000 --- a/scripts/build_id +++ /dev/null @@ -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" diff --git a/scripts/colors b/scripts/colors deleted file mode 100644 index a167f78..0000000 --- a/scripts/colors +++ /dev/null @@ -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` diff --git a/scripts/config-funcs b/scripts/config-funcs deleted file mode 100644 index 92da239..0000000 --- a/scripts/config-funcs +++ /dev/null @@ -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" -} diff --git a/scripts/percent-complete b/scripts/percent-complete deleted file mode 100755 index 31b2c6c..0000000 --- a/scripts/percent-complete +++ /dev/null @@ -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 \ No newline at end of file diff --git a/scripts/scan-gpl b/scripts/scan-gpl deleted file mode 100755 index 911d712..0000000 --- a/scripts/scan-gpl +++ /dev/null @@ -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 \ No newline at end of file diff --git a/sequencer/FL b/sequencer/FL deleted file mode 120000 index d025fc7..0000000 --- a/sequencer/FL +++ /dev/null @@ -1 +0,0 @@ -../FL \ No newline at end of file diff --git a/sequencer/Makefile b/sequencer/Makefile deleted file mode 120000 index c259b75..0000000 --- a/sequencer/Makefile +++ /dev/null @@ -1 +0,0 @@ -scripts/Makefile \ No newline at end of file diff --git a/sequencer/lib b/sequencer/lib deleted file mode 120000 index dc598c5..0000000 --- a/sequencer/lib +++ /dev/null @@ -1 +0,0 @@ -../lib \ No newline at end of file diff --git a/sequencer/makefile.inc b/sequencer/makefile.inc deleted file mode 100644 index fd5e18c..0000000 --- a/sequencer/makefile.inc +++ /dev/null @@ -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 - diff --git a/sequencer/nonlib b/sequencer/nonlib deleted file mode 120000 index bff0245..0000000 --- a/sequencer/nonlib +++ /dev/null @@ -1 +0,0 @@ -../nonlib \ No newline at end of file diff --git a/sequencer/scripts b/sequencer/scripts deleted file mode 120000 index a339954..0000000 --- a/sequencer/scripts +++ /dev/null @@ -1 +0,0 @@ -../scripts \ No newline at end of file diff --git a/sequencer/src/gui/ui.fl b/sequencer/src/gui/ui.fl index bb0f5ea..65244c7 100644 --- a/sequencer/src/gui/ui.fl +++ b/sequencer/src/gui/ui.fl @@ -25,7 +25,7 @@ comment {// decl {\#include } {public local } -decl {\#include "FL/About_Dialog.H"} {private local +decl {\#include } {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 } {private local } -decl {\#include "FL/Fl_Scalepack.H"} {private local +decl {\#include } {private local } -decl {\#include "FL/Fl_Sometimes_Input.H"} {private local +decl {\#include } {private local } -decl {\#include "FL/Fl_Menu_Settings.H"} {private local +decl {\#include } {private local } decl {\#include } {private local diff --git a/sequencer/wscript b/sequencer/wscript new file mode 100644 index 0000000..8a461c9 --- /dev/null +++ b/sequencer/wscript @@ -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' ) ) diff --git a/session-manager/FL b/session-manager/FL deleted file mode 120000 index d025fc7..0000000 --- a/session-manager/FL +++ /dev/null @@ -1 +0,0 @@ -../FL \ No newline at end of file diff --git a/session-manager/Makefile b/session-manager/Makefile deleted file mode 120000 index c259b75..0000000 --- a/session-manager/Makefile +++ /dev/null @@ -1 +0,0 @@ -scripts/Makefile \ No newline at end of file diff --git a/session-manager/configure b/session-manager/configure deleted file mode 100755 index 88f424e..0000000 --- a/session-manager/configure +++ /dev/null @@ -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 diff --git a/session-manager/lib b/session-manager/lib deleted file mode 120000 index dc598c5..0000000 --- a/session-manager/lib +++ /dev/null @@ -1 +0,0 @@ -../lib \ No newline at end of file diff --git a/session-manager/makefile.inc b/session-manager/makefile.inc deleted file mode 100644 index 7026f05..0000000 --- a/session-manager/makefile.inc +++ /dev/null @@ -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 diff --git a/session-manager/nonlib b/session-manager/nonlib deleted file mode 120000 index 1737b4f..0000000 --- a/session-manager/nonlib +++ /dev/null @@ -1 +0,0 @@ -../nonlib/ \ No newline at end of file diff --git a/session-manager/scripts b/session-manager/scripts deleted file mode 120000 index a339954..0000000 --- a/session-manager/scripts +++ /dev/null @@ -1 +0,0 @@ -../scripts \ No newline at end of file diff --git a/session-manager/src/FL b/session-manager/src/FL deleted file mode 120000 index 46ae6eb..0000000 --- a/session-manager/src/FL +++ /dev/null @@ -1 +0,0 @@ -../../FL \ No newline at end of file diff --git a/session-manager/wscript b/session-manager/wscript new file mode 100644 index 0000000..1902251 --- /dev/null +++ b/session-manager/wscript @@ -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' ) ) diff --git a/timeline/FL b/timeline/FL deleted file mode 120000 index d025fc7..0000000 --- a/timeline/FL +++ /dev/null @@ -1 +0,0 @@ -../FL \ No newline at end of file diff --git a/timeline/Makefile b/timeline/Makefile deleted file mode 120000 index c259b75..0000000 --- a/timeline/Makefile +++ /dev/null @@ -1 +0,0 @@ -scripts/Makefile \ No newline at end of file diff --git a/timeline/configure b/timeline/configure deleted file mode 100755 index d0bfb27..0000000 --- a/timeline/configure +++ /dev/null @@ -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 diff --git a/timeline/lib b/timeline/lib deleted file mode 120000 index dc598c5..0000000 --- a/timeline/lib +++ /dev/null @@ -1 +0,0 @@ -../lib \ No newline at end of file diff --git a/timeline/makefile.inc b/timeline/makefile.inc deleted file mode 100644 index 132b8fd..0000000 --- a/timeline/makefile.inc +++ /dev/null @@ -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 diff --git a/timeline/nonlib b/timeline/nonlib deleted file mode 120000 index bff0245..0000000 --- a/timeline/nonlib +++ /dev/null @@ -1 +0,0 @@ -../nonlib \ No newline at end of file diff --git a/timeline/scripts b/timeline/scripts deleted file mode 120000 index adb0a1d..0000000 --- a/timeline/scripts +++ /dev/null @@ -1 +0,0 @@ -../scripts/ \ No newline at end of file diff --git a/timeline/src/Annotation_Region.C b/timeline/src/Annotation_Region.C index 73df324..7e30b5a 100644 --- a/timeline/src/Annotation_Region.C +++ b/timeline/src/Annotation_Region.C @@ -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 +#include int Annotation_Region::handle ( int m ) diff --git a/timeline/src/Cursor_Region.C b/timeline/src/Cursor_Region.C index 3fcbcd1..d4f3177 100644 --- a/timeline/src/Cursor_Region.C +++ b/timeline/src/Cursor_Region.C @@ -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 +#include int Cursor_Region::handle ( int m ) diff --git a/timeline/src/TLE.fl b/timeline/src/TLE.fl index e91ec1d..043fa0f 100644 --- a/timeline/src/TLE.fl +++ b/timeline/src/TLE.fl @@ -31,7 +31,7 @@ decl {class Fl_Flowpack;} {public global decl {\#include } {private local } -decl {\#include "Fl_Menu_Settings.H"} {private local +decl {\#include } {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 } {private local } -decl {\#include "New_Project_Dialog.H"} {private local +decl {\#include } {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 } {private local } decl {extern char project_display_name[256];} {private global diff --git a/timeline/wscript b/timeline/wscript new file mode 100644 index 0000000..05b5bf7 --- /dev/null +++ b/timeline/wscript @@ -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' ) ) + diff --git a/waf b/waf new file mode 100755 index 0000000000000000000000000000000000000000..3b0bf001abde790b6e62aa6f35ee8ad65c5655a1 GIT binary patch literal 88303 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