vhdl-project-alist

vhdl-project-alist is a variable defined in `vhdl-mode.el'.
Its value is shown below.

Documentation:
List of projects and their properties.
Name : name used in option `vhdl-project' to choose project
Title : title of project (single-line string)
Default directory: default project directory (absolute path)
Sources : a) source files : path + "/" + file name
b) directory : path + "/"
c) directory tree: "-r " + path + "/"
Exclude regexp : matches file/directory names to be excluded as sources
Compile options : project-specific options for each compiler
Compiler name : name of compiler for which these options are valid
Compile options: project-specific compiler options
("\1" inserts library name, "\2" default options)
Make options: project-specific make options
("\1" inserts Makefile name, "\2" default options)
Exceptions : file-specific exceptions
File name regexp: matches file names for which exceptions are valid
- Options : file-specific compiler options string
("\1" inserts library name, "\2" default options,
"\3" project-specific options)
- Do not compile: do not compile this file (in Makefile)
Compile directory: where compilation is run and the Makefile is placed
("\1" inserts compiler ID string)
Library name : name of library (default is "work")
Library directory: path to library ("\1" inserts compiler ID string)
Makefile name : name of Makefile
("\1" inserts compiler ID string, "\2" library name)
Description : description of project (multi-line string)

Project title and description are used to insert into the file header (see
option `vhdl-file-header').

The default directory must have an absolute path (use `M-TAB' for completion).
All other paths can be absolute or relative to the default directory. All
paths must end with '/'.

The design units found in the sources (files and directories) are shown in the
hierarchy browser. Path and file name can contain wildcards `*' and `?' as
well as "./" and "../" ("sh" syntax). Paths can also be absolute.
Environment variables (e.g. "$EXAMPLE2") are resolved. If no sources are
specified, the default directory is taken as source directory. Otherwise,
the default directory is only taken as source directory if there is a sources
entry with the empty string or "./". Exclude regexp allows you to filter
out specific file and directory names from the list of sources (e.g. CVS
directories).

Files are compiled in the compile directory. Makefiles are also placed into
the compile directory. Library directory specifies which directory the
compiler compiles into (used to generate the Makefile).

Since different compile/library directories and Makefiles may exist for
different compilers within one project, these paths and names allow the
insertion of a compiler-dependent ID string (defined in `vhdl-compiler-alist').
Compile options, compile directory, library directory, and Makefile name
overwrite the settings of the current compiler.

File-specific compiler options (highest priority) overwrite project-specific
options which overwrite default options (lowest priority). Lower priority
options can be inserted in higher priority options. This allows you to reuse
default options (e.g. "-file") in project- or file-specific options (e.g.
"-93 -file").

NOTE: Reflect the new setting in the choice list of option `vhdl-project'
by restarting Emacs.

You can customize this variable.

Value:

(("Example 1" "Source files in two directories, custom library name, VHDL'87" "~/example1/" ("src/system/" "src/components/") "" (("ModelSim" "-87 \\2" "-f \\1 top_level" nil) ("Synopsys" "-vhdl87 \\2" "-f \\1 top_level" ((".*/datapath/.*" . "-optimize \\3") (".*_tb\\.vhd")))) "lib/" "example3_lib" "lib/example3/" "Makefile_\\2" "") ("Example 2" "Individual source files, multiple compilers in different directories" "$EXAMPLE2/" ("vhdl/system.vhd" "vhdl/component_*.vhd") "" nil "\\1/" "work" "\\1/work/" "Makefile" "") ("Example 3" "Source files in a directory tree, multiple compilers in same directory" "/home/me/example3/" ("-r ./*/vhdl/") "/CVS/" nil "./" "work" "work-\\1/" "Makefile-\\1" "-------------------------------------------------------------------------------\n-- This is a multi-line project description\n-- that can be used as a project dependent part of the file header.\n"))