Edinburgh Speech Tools Configuration ==================================== Contents -------- 1 How Configuration Works 2 Quick Configuration 3 Adapting The Configuration For Your System 4 Adding a New Optional Module --o--oOo--o-- 1 How Configuration Works ------------------------- The configuration for the system is set in 4 sections A system description in `config/systems/' describes the common layout for this kind of system. A compiler description in `config/compilers/' describes the options available for the compiler, how to build shared libraries etc. Configuration descriptions in `config/configs/' describe some common differences from the default configurations. Anything you put at the end of config/config. The next two sections describes some of the things you might need to set --o--oOo--o-- 2 Quick Configuration --------------------- Copy the file `config/config-dist' to `config/config'. Load `config/config' into your editor and read through it, selecting what compiler to use, which festures you wish to include in the system and so on. Run `gnumake info' in the top level speech_tools directory to see what the system thinks of your configuration. If all looks well, `gnumake' will build the system. We have tried to make it compile `out of the box' on as many systems as possible. However the idiosyncratic details of your system may mean you have to do some --o--oOo--o-- 2 Quick Configuration --------------------- Copy the file `config/config-dist' to `config/config'. Load `config/config' into your editor and read through it, selecting what compiler to use, which festures you wish to include in the system and so on. Run `gnumake info' in the top level speech_tools directory to see what the system thinks of your configuration. If all looks well, `gnumake' will build the system. We have tried to make it compile `out of the box' on as many systems as possible. However the idiosyncratic details of your system may mean you have to give some information. We have included a mechanism for noting common variations from the default configuration for a given system type. These variations can be listed in the CONFIGURATIONS line of the config file. At the moment only one generally useful variation is defined egcs_as_gcc This system has the egcs C++ compilation system installed under the names gcc and g++. If you need to give the system more detailed information about your situation, for instance where libraries are located, you will need to add definitions to the end of `config/config' as desribed in the next section. --o--oOo--o-- 3 Adapting The Configuration For Your System -------------------------------------------- We have included pre-defined configurations for a number of different types of system. Also some variants we know about are described by options which can be included in the CONFIGURATION line in the config file, as described in the previous section. However, if your system has some of the libraries or programs which the speech tools use installed in unusual locations you will need to add settings to the end of `config' to say where they are. Below are the settings you are most likely to need to fix in this way and typical values. Copy the relevant ones to the position indicted at the very end of config and customise as necessary. ########################################################################### ## Location of libraries. ########################################################################### ## Where to find Network Audio NAS_INCLUDE = /usr/X11R6/include NAS_LIB = /usr/X11R6/lib ########################################################################### ## Where to find X11 X11_INCLUDE = /usr/X11R6/include X11_LIB = /usr/X11R6/lib ########################################################################### ## TCL support TCL_INCLUDE = /usr/local/include TCL_LIB = /usr/local/lib ########################################################################### ## Efence library for malloc debugging EFENCE_LIB = /usr/local/lib ########################################################################### ## Java class path JAVA_HOME = $(pack $(shell echo "$$JAVA_HOME")) SYSTEM_JAVA_CLASSPATH = $(pack $(shell echo "$$CLASSPATH")) JAVA_INCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/solaris ########################################################################### ## Programs ## make dependancies MAKE_DEPEND = makedepend $(INCLUDES) $(TEMPLATES) $(TEMPLATE_SPECIFIC) ## Normal library building BUILD_LIB =$(AR) cruv ## library indexing INDEX_LIB = $(RANLIB) ## shrink executables STRIP = strip ## different types of awk. For our purposes gawk can be used for nawk AWK = awk NAWK = nawk ## Just in case someone has a broken test TEST = test ## Must understand -nt GNUTEST = gnutest ## Avoid clever RMs people may have on their path RM = /bin/rm ########################################################################### ## Any other command line arguments which you need to pass to your ## compiler to compiler the system. CONFIG_DEFINES = CONFIG_INCLUDES = CONFIG_TEMPLATES = CONFIG_LIBS = --o--oOo--o-- 4 Rationale ----------- It may help to know why this configuration system is how it is. Most of the pieces of software distributed in source form via the internet and similar channels are simpel tools. The aim of people getting them is to have a working system as quickly and easily as possible. For such systems having a configuration script which when run works out some combination of options and so on which will let the system compile is ideal. However, the Edinburgh Speech Tools and Festival are designed as research platforms. While many people just want to compile and go, many want to be able to change how the system is configured, what compiler to use, what facilities to include and so on easily. To support this the configuration system needs to: (a) Determine what kind of system we are on, which awk to use and so on. (b) Find out where the required third party libraries and so on are hidden on this system. (c) Allow the user to change between compilers, java development systems etc. (d) Allow the user to select compilation options (optimisation level, debugging, whether to compile shared libraries) (e) Allow the user to include and exclude the various optional sections of the system. A normal configuration script can, with various amounts of ingenuity, do (a), but for the rest it would be necessary to supply information on the command line to the script. --o--oOo--o-- 5 Adding A New Optional Module ------------------------------ If you wish to add new code to the speech tools you should, initially at least, make a new optional module. This will let you include or exclude your extension from your config file. First you must decide on a unique name for your module. There is a list of existing module names in `config/project.mak'. For the example below we'll assume this new module is called `widgets'. Create a directory for your module. Where you put it will depend on where you think it fits logically into the existing hierachy. For the example we will imagine the `widgets' module is used to manipulate some kind of representation of linguistic structures and put it under `ling_class'. mkdir ling_class/widgets In the `widgets' directory you need to create 2 files, a `Makefile' controlling the compilation of that directory and a `widgets.mak' file which describes how it fits into the speech_tools. Follow the structure of `example.Makefile' and `example.module.mak' in this directory. Once you have created your module you just need to turn it on in your `config' file. Add a line like: INCLUDE_MODULES += WIDGETS