No subject


Mon Jun 7 11:20:31 CEST 2010


e.g. under Windows
	build win pd msvc
or under unix with
	bash build.sh lnx pd gcc

When you run it for the first time, one or more configuration files will be created 
from templates - you will get a message on the console. 
You should edit the files to adapt it to your system.

Then install flext with (under Windows)
	build win pd msvc install
or (under unix)
	bash build.sh lnx pd gcc install


1.2) Building externals
=======================

The flext build system can be used to compile flext-based externals or also
native PD and Max/MSP externals, provided there is a package.txt file in the project folder.

In the shell, change to the project folder.
Then, simply run the flext build script, 

e.g. under Windows
	..\flext\build win pd msvc
Then install your newly built external with
	..\flext\build win pd msvc install

or under unix with
	bash ../flext/build.sh lnx pd gcc
Then install your external with
	bash ../flext/build.sh lnx pd gcc install


----------------------------------------------------------------------------

2) Using autoconf
=================

Thanks to Tim Blechmann, flext can also be built using autoconf.
This only works under unix shells.

When starting from a fresh cvs-based copy of flext first run
./bootstrap.sh

then you can run
./configure --help 
to get a page of options.

You need to pass the path to the PD source files to the ./configure script, e.g. with
./configure --with-sysdir=/usr/local/src/pd/src

Then build flext with
make
and install it with
su -c "make install"

----------------------------------------------------------------------------

3) Other ways to compile flext and flext-based externals
========================================================

- Windows - Microsoft Visual Studio projects (.vcproj files)

Please have a look at the projects delivered with flext and flext-based externals.


- MacOSX - Apple Xcode projects (.xcode bundles)

Please have a look at the projects delivered with flext and flext-based externals.


- MacOSX - Metrowerks Codewarrior (.mcp files)

You should have the following "Source Trees" (CW preferences, not project specific!) defined:
"OS X Volume" - Pointing to your OSX boot drive
"flext" - Pointing to the flext main directory
"Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support

With your project using flext use the prefix file "flcwmax-x.h" or, 
alternatively "flcwmax-x-thr.h" for threading support.


- MacOS9 - Metrowerks Codewarrior (.mcp files)

You should have the following "Source Trees" (CW preferences, not project specific!) defined:
"flext" - Pointing to the flext main directory
"Cycling74" - Pointing to the Cycling 74 SDK
"MP SDK" - Pointing to the Multiprocessing SDK (for threading support)

With your project using flext use the prefix file "flcwmax.h" or, 
alternatively "flcwmax-thr.h" for threading support.

Index: AUTHORS
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/AUTHORS,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** AUTHORS	28 Oct 2004 04:01:37 -0000	1.1
--- AUTHORS	5 Jan 2005 05:04:07 -0000	1.2
***************
*** 1 ****
! Thomas Grill
\ No newline at end of file
--- 1 ----
! Thomas Grill (gr at grrrr.org)

Index: flext.doxy
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/flext.doxy,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** flext.doxy	26 Sep 2004 22:55:14 -0000	1.11
--- flext.doxy	5 Jan 2005 05:04:07 -0000	1.12
***************
*** 5,10 ****
  #---------------------------------------------------------------------------
  PROJECT_NAME           = flext
! PROJECT_NUMBER         = "version 0.4.7"
! OUTPUT_DIRECTORY       = c:/data/prog/max/flext/doc/
  OUTPUT_LANGUAGE        = English
  USE_WINDOWS_ENCODING   = YES
--- 5,10 ----
  #---------------------------------------------------------------------------
  PROJECT_NAME           = flext
! PROJECT_NUMBER         = "version 0.5.0"
! OUTPUT_DIRECTORY       = c:/data/pdmax/flext/doc/
  OUTPUT_LANGUAGE        = English
  USE_WINDOWS_ENCODING   = YES
***************
*** 63,67 ****
  # configuration options related to the input files
  #---------------------------------------------------------------------------
! INPUT                  = F:/prog/max/flext/source/
  FILE_PATTERNS          = 
  RECURSIVE              = NO
--- 63,67 ----
  # configuration options related to the input files
  #---------------------------------------------------------------------------
! INPUT                  = c:/data/pdmax/flext/source/
  FILE_PATTERNS          = 
  RECURSIVE              = NO

Index: configure.ac
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/configure.ac,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** configure.ac	28 Oct 2004 04:01:37 -0000	1.2
--- configure.ac	5 Jan 2005 05:04:07 -0000	1.3
***************
*** 7,11 ****
  API_VERSION=0:0:0
  
! AC_INIT([flext],[0.4.7],[gr at grrrr.org],[flext])
  AM_INIT_AUTOMAKE(1.8)
  
--- 7,11 ----
  API_VERSION=0:0:0
  
! AC_INIT([flext],[0.5.0],[gr at grrrr.org],[flext])
  AM_INIT_AUTOMAKE(1.8)
  

Index: INSTALL
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/INSTALL,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** INSTALL	28 Oct 2004 04:01:37 -0000	1.1
--- INSTALL	5 Jan 2005 05:04:07 -0000	1.2
***************
*** 1,2 ****
--- 1,7 ----
+ These are instructions for the autoconf building system.
+ For the native flext build system, please see the build.txt document.
+ 
+ -----------------------------------------------------------------------
+ 
  Basic Installation
  ==================

Index: package.txt
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/package.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** package.txt	4 Jan 2005 04:58:51 -0000	1.3
--- package.txt	5 Jan 2005 05:04:07 -0000	1.4
***************
*** 1,29 ****
! NAME=flext
! 
! BUILDCLASS=flext
! BUILDMODE=all
! BUILDTYPE=all
  
  SRCDIR=source
  
! PRECOMPILE=flext.h
! 
! SRCS= \
! 	flbase.cpp flext.cpp flbuf.cpp fldsp.cpp fllib.cpp \
! 	flxlet.cpp flattr.cpp flattr_ed.cpp flsupport.cpp \
! 	flutil.cpp flatom.cpp flatom_pr.cpp flthr.cpp fltimer.cpp flsimd.cpp flout.cpp \
! 	flatom_app.cpp flatom_part.cpp flitem.cpp flmeth.cpp flmsg.cpp \
! 	flproxy.cpp flqueue.cpp flbind.cpp
! HDRS= \
! 	flprefix.h flstdc.h flbase.h flclass.h flext.h flsupport.h flmap.h fldsp.h flinternal.h \
! 	fldefs.h fldefs_hdr.h fldefs_setup.h \
! 	fldefs_methcb.h fldefs_meththr.h fldefs_methadd.h fldefs_methbind.h fldefs_methcall.h \
! 	fldefs_attrcb.h fldefs_attrvar.h fldefs_attradd.h
! 
! 
! SRCS_SNDOBJ=flsndobj.cpp
! HDRS_SNDOBJ=flsndobj.h
! 
! SRCS_STK=flstk.cpp
! 
! HDRS_STK=flstk.h
--- 1,45 ----
! #
! # flext - C++ layer for Max/MSP and pd (pure data) externals
! #
! # Copyright (c) 2001-2005 Thomas Grill (gr at grrrr.org)
! # For information on usage and redistribution, and for a DISCLAIMER OF ALL
! # WARRANTIES, see the file, "license.txt," in this distribution.  
! #
! # more information on http://grrrr.org/ext
! # ------------------------------------------------------------------------
! #
! # This file contains information for the building process
! #
! # DO NOT EDIT!!
! #
! # ------------------------------------------------------------------------
! 
! NAME=flext
! 
! BUILDCLASS=flext
! BUILDMODE=all
! BUILDTYPE=all
  
  SRCDIR=source
  
! PRECOMPILE=flext.h
! 
! SRCS= \
! 	flbase.cpp flext.cpp flbuf.cpp fldsp.cpp fllib.cpp \
! 	flxlet.cpp flattr.cpp flattr_ed.cpp flsupport.cpp \
! 	flutil.cpp flatom.cpp flatom_pr.cpp flthr.cpp fltimer.cpp flsimd.cpp flout.cpp \
! 	flatom_app.cpp flatom_part.cpp flitem.cpp flmeth.cpp flmsg.cpp \
! 	flproxy.cpp flqueue.cpp flbind.cpp
! HDRS= \
! 	flprefix.h flstdc.h flbase.h flclass.h flext.h flsupport.h flmap.h fldsp.h flinternal.h \
! 	fldefs.h fldefs_hdr.h fldefs_setup.h \
! 	fldefs_methcb.h fldefs_meththr.h fldefs_methadd.h fldefs_methbind.h fldefs_methcall.h \
! 	fldefs_attrcb.h fldefs_attrvar.h fldefs_attradd.h
! 
! 
! SRCS_SNDOBJ=flsndobj.cpp
! HDRS_SNDOBJ=flsndobj.h
! 
! SRCS_STK=flstk.cpp
! 
! HDRS_STK=flstk.h

Index: NEWS
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/NEWS,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** NEWS	28 Oct 2004 04:01:37 -0000	1.1
--- NEWS	5 Jan 2005 05:04:07 -0000	1.2
***************
*** 0 ****
--- 1 ----
+ see changes.txt

Index: build.sh
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/build.sh,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** build.sh	3 Jan 2005 05:00:25 -0000	1.2
--- build.sh	5 Jan 2005 05:04:07 -0000	1.3
***************
*** 1,2 ****
--- 1,18 ----
+ #! /bin/bash
+ 
+ # flext - C++ layer for Max/MSP and pd (pure data) externals
+ #
+ # Copyright (c) 2001-2005 Thomas Grill (gr at grrrr.org)
+ # For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ # WARRANTIES, see the file, "license.txt," in this distribution.  
+ #
+ # more information on http://grrrr.org/ext
+ # ------------------------------------------------------------------------
+ #
+ # To build flext or flext-based externals simply run this script.
+ # Running it without arguments will print some help to the console.
+ #
+ # ------------------------------------------------------------------------
+ 
  flext=${0%/*}/
  if [ "$flext" = "$0"/ ]; then flext=./ ; fi
***************
*** 19,23 ****
  	[ -n "$platform" -a -n "$rtsys" -a -n "$compiler" -a -f $subbatch ]
  then 
! 	sh $subbatch $platform $rtsys $target $5 $6 $7 $8 $9
  else
  	echo 
--- 35,39 ----
  	[ -n "$platform" -a -n "$rtsys" -a -n "$compiler" -a -f $subbatch ]
  then 
! 	bash $subbatch $platform $rtsys $target $5 $6 $7 $8 $9
  else
  	echo 
***************
*** 30,33 ****
--- 46,50 ----
  	echo Please make sure that your make program and compiler can be accessed with the
  	echo system path and that all relevant environment variables are properly set.
+ 	echo
  fi
  

Index: license.txt
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/license.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** license.txt	1 Jan 2003 04:32:04 -0000	1.2
--- license.txt	5 Jan 2005 05:04:07 -0000	1.3
***************
*** 1,4 ****
  flext - C++ layer for Max/MSP and pd (pure data) externals
! Copyright (C) 2001-2003 Thomas Grill
  
  This program is free software; you can redistribute it and/or
--- 1,4 ----
  flext - C++ layer for Max/MSP and pd (pure data) externals
! Copyright (C) 2001-2005 Thomas Grill
  
  This program is free software; you can redistribute it and/or
***************
*** 17,49 ****
  
  In the official flext distribution, the GNU General Public License is
! in the file gpl.txt
! 
! ---------------------------------------------------------
! 
!              OTHER COPYRIGHT NOTICES
! 
! ---------------------------------------------------------
! This package uses a lot of code from GEM by Mark Danks 
! See the license text below:
! 
! --- GEM --------------------------------------
! GEM - Graphics Environment for Multimedia
! Copyright (C) 1997-2000 Mark Danks
! 
! 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; if not, write to the Free Software
! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
! 
! In the official GEM distribution, the GNU General Public License is
! in the file GnuGPL.LICENSE
! 
--- 17,19 ----
  
  In the official flext distribution, the GNU General Public License is
! in the file gpl.txt
\ No newline at end of file

Index: readme.txt
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/readme.txt,v
retrieving revision 1.47
retrieving revision 1.48
diff -C2 -d -r1.47 -r1.48
*** readme.txt	24 Aug 2004 02:34:30 -0000	1.47
--- readme.txt	5 Jan 2005 05:04:07 -0000	1.48
***************
*** 1,5 ****
  flext - C++ layer for Max/MSP and pd (pure data) externals
  
! Copyright (c) 2001-2004 Thomas Grill (xovo at gmx.net)
  For information on usage and redistribution, and for a DISCLAIMER OF ALL
  WARRANTIES, see the file, "license.txt," in this distribution.  
--- 1,5 ----
  flext - C++ layer for Max/MSP and pd (pure data) externals
  
! Copyright (c) 2001-2005 Thomas Grill (gr at grrrr.org)
  For information on usage and redistribution, and for a DISCLAIMER OF ALL
  WARRANTIES, see the file, "license.txt," in this distribution.  
***************
*** 9,150 ****
  
  Donations for further development of the package are highly appreciated.
! Visit https://www.paypal.com/xclick/business=t.grill%40gmx.net&item_name=flext&no_note=1&tax=0&currency_code=EUR
  
  ----------------------------------------------------------------------------
  
! o for PD you need the pd source code (which is most likely part of the distribution)
!   download from: http://www-crca.ucsd.edu/~msp/software.html
  
! o for Max/MSP you will also need the Max/MSP SDK for OS9 (http://www.cycling74.com/products/dlmaxmsp.html) 
!   or OSX (http://www.cycling74.com/products/dlxmax.html)
!   and for threading the Multiprocessing library (download at http://developer.apple.com/sdk/)
  
! o if you choose to compile with SndObj support you will need the respective library
!   download from: http://www.may.ie/academic/music/musictec/SndObj/main.html
  
! o if you choose to compile with STK support you will need the respective package and build a library
!   download from: http://ccrma-www.stanford.edu/software/stk/
!   For linking it may preferable to use a library of all the STK objects.
!   Under linux you can create one from the STK directory with something like
!   "g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o"
  
  ----------------------------------------------------------------------------
  
  
! BUILDING & INSTALLING:
! ======================
! 
! 
! pd - Windows:
! -------------
! o Microsoft Visual C++ 6 or 7: 
! 	edit "config-pd-msvc.txt"
! 	start a dos-shell (cmd.exe) and set the compiler environment (vcvars32.bat)
! 	run "build-pd-msvc.bat" 
! 
! o Borland C++ 5.5 (free): 
! 	edit "config-pd-bcc.txt" and run "build-pd-bcc.bat" 
! 	BCC++ currently supports non-threaded static flext libraries only
! 
! o Cygwin: edit "config-pd-cygwin.txt" & run "sh build-pd-cygwin.sh" 
! 	additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-cygwin
! 
! o MinGW: edit "config-pd-mingw.txt" & run "build-pd-mingw.bat" 
! 	the MinGW binaries have to be in the PATH
! 	additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-mingw
! 	MinGW currently supports non-threaded static flext libraries only
! 	
! 
! With your project using flext, be sure to define "FLEXT_SYS=2".
! 
! 
! pd - linux:
! -----------
! o GCC,ICC: edit "config-pd-linux.txt" & run "sh build-pd-linux.sh" 
! 	additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-linux
! 
! Several variations of the flext library will be built: release and debug version of single-threaded and multi-threaded static libraries and of a multi-threaded shared library, respectively.
! These will be installed into the flext directory given in config-pd-linux.txt. For the shared libraries to be found, be sure to specify the flext folder in the /etc/ld.so.conf.
! 
! 
! With your project using flext, be sure to define "FLEXT_SYS=2".
! 
! 
! pd - MacOSX:
! -----------
! o GCC: edit "config-pd-darwin.txt" & run "sh build-pd-darwin.sh" 
! 	additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-darwin
! 
! 
! With your project using flext, be sure to define "FLEXT_SYS=2".
! 
! 
! Max/MSP - Windows:
! ------------------
! o Microsoft Visual C++ 6 or 7: edit "config-max-msvc.txt" & run "build-max-msvc.bat" 
! 
! 
! With your project using flext, be sure to define "FLEXT_SYS=1".
! 
! 
! Max/MSP - MacOS 9:
! ------------------
! o Metrowerks CodeWarrior: edit & use the "flext.cw" project file
! 
! You must have the following "Source Trees" (CW preferences, not project specific!) defined:
! "flext" - Pointing to the flext main directory
! "Cycling74" - Pointing to the Cycling 74 SDK
! "MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
! 
! 
! With your project using flext, be sure to define "FLEXT_SYS=1" 
! - alternatively use the prefix file "flcwmax.h" or "flcwmax-thr.h" for threading support.
! 
! 
! Max/MSP - MacOSX:
! ------------------
! o Metrowerks CodeWarrior: edit & use the "flext.cw" project file
  
! Be sure to have the latest Max/MSK SDK downloadable from http://www.cycling74.com
! You should use "version 4.5 headers" rather than "version 4.3 headers".
  
! You must have the following "Source Trees" (CW preferences, not project specific!) defined:
! "OS X Volume" - Pointing to your OSX boot drive
! "flext" - Pointing to the flext main directory
! "Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support
! "MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
  
! Note: Some parts of the Max/MSP SDK may not be compliant to the C standard. 
! If you get errors for lines like
! #endif _MOTO_
! You should changes all of these to
! #endif /* _MOTO_ */
  
  
! o GCC: edit "config-max-darwin.txt" & run "sh build-max-darwin.sh" 
! 	additional settings (e.g. target processor, compiler flags) can be made in makefile.max-darwin
  
  
! With your project using flext, be sure to define "FLEXT_SYS=1" 
! - alternatively use the prefix file "flcwmax-x.h" or "flcwmax-x-thr.h" for threading support.
  
  
  ----------------------------------------------------------------------------
  
! Goals/features of the package:
  
! pros:
! - better readability of code compared to straight C externals
! - faster development, more robust coding
! - sharing of common methods and data by using base classes
! - any input to any inlet (with the exception of signal streams)
! - transparent use of threads for methods
! - libraries of externals in MaxMSP
! - more than 3 typed creation arguments possible for MaxMSP
  
! cons:
! - introduces a small overhead to speed of message handling 
! - overhead in object size (due to possibly unneeded code)
  
! see flext.h, fldefs.h and flclass.h for the documented base definitions and classes
  
--- 9,85 ----
  
  Donations for further development of the package are highly appreciated.
! https://www.paypal.com/xclick/business=t.grill%40gmx.net&item_name=flext&no_note=1&tax=0&currency_code=EUR
  
  ----------------------------------------------------------------------------
  
! Abstract:
  
! flext seeks to represent a uniform programming interface for extending the most common
! modular real-time audio systems Max/MSP and Pure Data (PD) with external modules, or
! short externals. These modules provide a way to tailor such a system for one’s 
! special needs and supply additional functionality. 
  
! Source code based on flext is able to exploit nearly all features of the 
! respective real-time framework while staying completely independent of the
! actual host system and platform (hardware and operating system). 
  
! flext currently supports development for PD under Linux, Windows and OSX as well as 
! Max/MSP under OS9, OSX and Windows with various programming environments.
  
  ----------------------------------------------------------------------------
  
+ Goals/features of the package:
  
! pros:
! - better readability of code compared to straight C externals
! - faster development, more robust coding
! - sharing of common methods and data by using base classes
! - any input to any inlet (with the exception of signal streams)
! - transparent use of threads for methods
! - libraries of externals in Max/MSP
! - more than 3 typed creation arguments possible for Max/MSP
  
! cons:
! - introduces a small overhead to speed of message and signal handling 
! - overhead in object size (due to possibly unneeded code)
  
! ----------------------------------------------------------------------------
  
! Prerequisites:
  
+ o --- PD ---
+   You need the pd source code which is most likely part of the distribution.
+   Otherwise download from: http://www-crca.ucsd.edu/~msp/software.html
  
! o --- Max/MSP ---
!   You will need the latest Max/MSP SDK 
!   for Windows (http://synthesisters.com/pluggo3/downloadMaxWinSDK.php)
!   for OSX (http://www.synthesisters.com/sdk/max.php)
!   or for OS9 (ask Cycling'74 where to find that)
  
+   For OS9 threading support you'll also need the Multiprocessing library 
+   (download at http://developer.apple.com/sdk/)
  
! o --- SndObj ---
!   If you choose to compile with SndObj support you will need the respective library
!   download from: http://www.may.ie/academic/music/musictec/SndObj/main.html
  
+ o --- STK ---
+   If you choose to compile with STK support you will need the respective package 
+   and build a library.
+   download from: http://ccrma-www.stanford.edu/software/stk/
+   For linking it may preferable to use a library of all the STK objects.
+   Under linux you can create one from the STK directory with something like
+   "g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o"
  
  ----------------------------------------------------------------------------
  
! Building and installing of flext and flext-based externals:
  
!   Read the build.txt document
  
! ----------------------------------------------------------------------------
  
! History of changes:
  
+   Read the changes.txt document





More information about the Pd-cvs mailing list