Installation
\layout Subsection
-Install paths
+Configure Options
\layout Standard
-The install paths and default search paths are defined when running 'configure'.
- The defaults can be overriden by
+The install paths, search paths and other options are defined when running
+ 'configure'.
+ The defaults can be overriden by:
+\layout List
+\labelwidthstring 00.00.0000
+
+---prefix see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+---exec_prefix see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+---bindir see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+---datadir see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+docdir environment variable, see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+include_dir_suffix environment variable, see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+lib_dir_suffix environment variable, see tabel below
+\layout List
+\labelwidthstring 00.00.0000
+
+sdccconf_h_dir_separator environment variable, either / or
+\backslash
+
+\backslash
+ makes sense here.
+ This character will only be used in sdccconf.h; don't forget it's a C-header,
+ therefore a double-backslash is needed there.
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-mcs51-port Excludes the Intel mcs51 port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-gbz80-port Excludes the Gameboy gbz80 port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-z80-port Excludes the z80 port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-avr-port Excludes the AVR port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-ds390-port Excludes the DS390 port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-pic-port Excludes the PIC port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-xa51-port Excludes the XA51 port
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-ucsim Disables configuring and building of ucsim
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-device-lib-build Disables automatically building device libraries
+\layout List
+\labelwidthstring 00.00.0000
+
+---disable-packihx Disables building packihx
+\layout List
+\labelwidthstring 00.00.0000
+
+---enable-libgc Use the Bohem memory allocator.
+ Lower runtime footprint.
\layout Standard
-...
- TBA
+Furthermore the environment variables CC, CFLAGS, ...
+ the tools and their arguments can be influenced.
+ Please see `configure ---help` and the man/info pages of `configure` for
+ details.
+\newline
+
+\newline
+The names of the standard libraries STD_LIB, STD_INT_LIB, STD_LONG_LIB,
+ STD_FP_LIB, STD_DS390_LIB, STD_XA51_LIB and the environment variables SDCC_DIR_
+NAME, SDCC_INCLUDE_NAME, SDCC_LIB_NAME are defined by `configure` too.
+ At the moment it's not possible to change the default settings (it was
+ simply never required.
\newline
\newline
-These configure variables are compiled into the binaries, and can only be
+These configure options are compiled into the binaries, and can only be
changed by rerunning 'configure' and recompiling SDCC.
- The configure variables are written in
+ The configure options are written in
\emph on
italics
\emph default
- to distinguish them from run time variables (see next section).
+ to distinguish them from run time environment variables (see section search
+ paths).
\newline
\newline
-The defaults are:
+The settings for
+\begin_inset Quotes sld
+\end_inset
+
+Win32 builds
+\begin_inset Quotes srd
+\end_inset
+
+ are used by the SDCC team to build the official Win32 binaries.
+ The SDCC team uses Mingw32 to build the official Windows binaries, because
+ it's
+\layout Enumerate
+
+open source,
+\layout Enumerate
+
+a gcc compiler and last but not least
+\layout Enumerate
+
+the binaries can be built by cross compiling on Sourceforge's compile farm.
+\layout Standard
+
+See the examples, how to pass the Win32 settings to 'configure'.
+ The other Win32 builds using Borland, VC or whatever don't use 'configure',
+ but a header file sdcc_vc_in.h is the same as sdccconf.h built by 'configure'
+ for Win32.
+\newline
+
+\newline
+These defaults are:
\newline
\newline
\begin_inset Tabular
-<lyxtabular version="3" rows="7" columns="3">
+<lyxtabular version="3" rows="8" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\emph on
-DATADIR
+EXEC_PREFIX
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\emph on
$PREFIX
-\emph default
-/share/sdcc
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\emph on
-BIN_DIR_SUFFIX
+BINDIR
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\layout Standard
-bin
+
+\emph on
+$EXECPREFIX
+\emph default
+/bin
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
+
+\emph on
+$EXECPREFIX
+\emph default
+
+\backslash
bin
\end_inset
</cell>
\emph on
-SEARCH_SUFFIX
+DATADIR
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\layout Standard
-share/sdcc
+
+\emph on
+$PREFIX
+\emph default
+/share
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+
+\emph on
+$PREFIX
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+
+\emph on
+DOCDIR
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+
+\emph on
+$DATADIR
+\emph default
+/sdcc/doc
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
+
+\emph on
+$DATADIR
+\emph default
+
+\backslash
+doc
\end_inset
</cell>
</row>
\layout Standard
-include
+sdcc/include
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
+sdcc/lib
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
lib
\end_inset
</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\newline
+
+\newline
+
+\newline
+'configure' also computes relative paths.
+ This is needed for full relocatability of a binary package and to complete
+ search paths (see section search paths below):
+\newline
+
+\newline
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="3">
+<features>
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+Variable (computed)
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+default
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+Win32 builds
+\end_inset
+</cell>
+</row>
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+
+\emph on
+BIN2DATA_DIR
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+../share
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+..
+\backslash
+
+\end_inset
+</cell>
+</row>
+<row bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+
+\emph on
+PREFIX2BIN_DIR
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+bin
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+bin
+\end_inset
+</cell>
+</row>
+<row bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+
+\emph on
+PREFIX2DATA_DIR
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+share/sdcc
+\end_inset
+</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
-\layout Standard
+\layout Standard
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\newline
+
+\newline
+Examples:
+\layout LyX-Code
+
+./configure
+\layout LyX-Code
+
+./configure ---prefix=
+\begin_inset Quotes srd
+\end_inset
+
+/usr/bin
+\begin_inset Quotes srd
+\end_inset
+
+ ---datadir=
+\begin_inset Quotes srd
+\end_inset
+
+/usr/share
+\begin_inset Quotes srd
+\end_inset
+
+
+\layout LyX-Code
+
+./configure ---disable-avr-port ---disable-xa51-port
+\layout Standard
+
+To crosscompile on linux for Mingw32 (see also 'sdcc/support/scripts/sdcc_mingw3
+2'):
+\layout LyX-Code
+
+./configure
+\backslash
+
+\layout LyX-Code
+
+ CC=
+\begin_inset Quotes srd
+\end_inset
+
+i586-mingw32msvc-gcc
+\begin_inset Quotes srd
+\end_inset
+
+ CXX=
+\begin_inset Quotes srd
+\end_inset
+
+i586-mingw32msvc-g++
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ RANLIB=
+\begin_inset Quotes srd
+\end_inset
+
+i586-mingw32msvc-ranlib
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ STRIP=
+\begin_inset Quotes srd
+\end_inset
+
+i586-mingw32msvc-strip
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ ---prefix=
+\begin_inset Quotes srd
+\end_inset
+
+/sdcc
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ ---datadir=
+\begin_inset Quotes srd
+\end_inset
+
+/sdcc
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ docdir=
+\begin_inset Quotes srd
+\end_inset
+
+/sdcc/doc
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ include_dir_suffix=
+\begin_inset Quotes srd
+\end_inset
+
+include
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ lib_dir_suffix=
+\begin_inset Quotes srd
+\end_inset
+
+lib
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ sdccconf_h_dir_separator=
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\backslash
+
+\backslash
+
+\backslash
+
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ ---disable-device-lib-build
+\backslash
+
+\layout LyX-Code
+
+ ---disable-ucsim
+\backslash
+
+\layout LyX-Code
+
+ ---host=i586-mingw32msvc ---build=unknown-unknown-linux-gnu
+\layout Standard
+
+To
+\begin_inset Quotes sld
+\end_inset
+
+cross
+\begin_inset Quotes srd
+\end_inset
+
+compile on Cygwin for Mingw32(see also sdcc/support/scripts/sdcc_cygwin_mingw32)
+:
+\layout LyX-Code
+
+./configure -C
+\backslash
+
+\layout LyX-Code
+
+ CFLAGS=
+\begin_inset Quotes srd
+\end_inset
+
+-mno-cygwin -O2
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ LDFLAGS=
+\begin_inset Quotes srd
+\end_inset
+
+-mno-cygwin
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ ---prefix=
+\begin_inset Quotes srd
+\end_inset
+
+/sdcc
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ ---datadir=
+\begin_inset Quotes srd
+\end_inset
+
+/sdcc
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ docdir=
+\begin_inset Quotes srd
+\end_inset
+
+/sdcc/doc
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ include_dir_suffix=
+\begin_inset Quotes srd
+\end_inset
+
+include
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
+
+ lib_dir_suffix=
+\begin_inset Quotes srd
+\end_inset
+
+lib
+\begin_inset Quotes srd
+\end_inset
+
+
+\backslash
+
+\layout LyX-Code
-lib
+ sdccconf_h_dir_separator=
+\begin_inset Quotes srd
\end_inset
-</cell>
-</row>
-</lyxtabular>
-\end_inset
+\backslash
-\newline
+\backslash
-\newline
-Cygwin is handled like a *nix, Mingw32 however belongs to the Win32 builds.
- The SDCC team uses Mingw32 to build the official Windows binaries, because
- it's
-\layout Enumerate
+\backslash
-open source,
-\layout Enumerate
+\backslash
-a gcc compiler and last but not least
-\layout Enumerate
+\begin_inset Quotes srd
+\end_inset
-the binaries can be built by cross compiling on Sourceforge's compile farm.
+
+\backslash
+
+\layout LyX-Code
+
+ ---disable-ucsim
\layout Standard
-The other Win32 builds using Borland, VC or whatever don't use 'configure',
- but they (hopefully) use the default Win32 paths.
-\newline
+'configure' is quite slow on Cygwin (at least on windows before Win2000/XP).
+ The option '--C' turns on caching, which gives a little bit extra speed.
+ However if options are changed, it can be necessary to delete the config.cache
+ file.
+\layout Subsection
+
+Install paths
+\layout Standard
-\newline
1.
Binary files (preprocessor, assembler and linker)
\layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\emph on
-$PREFIX/$BIN_DIR_SUFFIX
+$EXEC_PREFIX
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="1.6in">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="block" valignment="top" leftline="true" width="1.6in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="center" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\emph on
-$DATADIR/
-\emph default
-doc
+$DOCDIR
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\end_inset
+\newline
+
+\newline
+The install paths can still be changed during `make install` with e.g.:
+\layout LyX-Code
+
+make install prefix=$(HOME)/local/sdcc
+\layout Standard
+
+Of course this doesn't change the search paths compiled into the binaries.
\layout Subsection
-Search paths
+Search Paths
\layout Standard
Some search paths or parts of them are determined by configure variables
italics
\emph default
, see section above).
- Other search paths are determined by environment variables during runtime.
+ Further search paths are determined by environment variables during runtime.
\newline
The paths searched when running the compiler are as follows (the first catch
\begin_inset Tabular
<lyxtabular version="3" rows="4" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" width="0pt">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" width="0in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
$SDCC_HOME/
\emph on
-$BIN_DIR_SUFFIX
+$PPREFIX2BIN_DIR
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Tabular
<lyxtabular version="3" rows="6" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="1.5in">
-<column alignment="left" valignment="top" leftline="true" width="1.5in">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="block" valignment="top" leftline="true" width="1.5in">
+<column alignment="block" valignment="top" leftline="true" width="1.5in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\layout Standard
-$SDCC_INCLUDE_PATH
+$SDCC_INCLUDE
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\layout Standard
-$SDCC_INCLUDE_PATH
+$SDCC_INCLUDE
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-$SDCC_INCLUDE_PATH
+$SDCC_INCLUDE
\end_inset
</cell>
</row>
\newline
\emph on
-$SEARCH_SUFFIX/
+$PREFIX2DATA_DIR/
\newline
$INCLUDE_DIR_SUFFIX
\end_inset
\layout Standard
-$SDCC_HOME/
+$SDCC_ HOME/
\newline
share/sdcc/
\newline
\layout Standard
-path(argv[0])/../
+path(argv[0])/
\newline
\emph on
-$SEARCH_SUFFIX/
+$BIN2DATADIR/
\emph default
\newline
\layout Standard
-(not on *nix)
+path(argv[0])/
+\newline
+../sdcc/include
+\newline
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+\SpecialChar ~
+
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Tabular
<lyxtabular version="3" rows="6" columns="3">
<features>
-<column alignment="left" valignment="top" leftline="true" width="1.7in">
+<column alignment="block" valignment="top" leftline="true" width="1.7in">
<column alignment="left" valignment="top" leftline="true" width="1.2in">
-<column alignment="left" valignment="top" leftline="true" rightline="true" width="1.2in">
+<column alignment="block" valignment="top" leftline="true" rightline="true" width="1.2in">
<row topline="true" bottomline="true">
<cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
-*nix default
+default
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\layout Standard
-Win32 default
+Win32 builds
\end_inset
</cell>
</row>
\layout Standard
-$SDCC_LIB_PATH/
+$SDCC_LIB/
\newline
\emph on
\layout Standard
-$SDCC_LIB_PATH/
+$SDCC_LIB/
\newline
\emph on
\layout Standard
-$SDCC_LIB_PATH
+$SDCC_LIB
\backslash
\newline
\newline
\emph on
-$SEARCH_SUFFIX/
+$PREFIX2DATA_DIR/
\newline
$LIB_DIR_SUFFIX/<model>
\end_inset
\layout Standard
-path(argv[0]/../
+path(argv[0])/
\newline
\emph on
-$SEARCH_SUFFIX/
+$BIN2DATADIR/
+\emph default
+
\newline
+
+\emph on
$LIB_DIR_SUFFIX/<model>
\end_inset
</cell>
\layout Standard
-(not on *nix)
+path(argv[0])/
+\newline
+../sdcc/lib/
+\emph on
+<model>
\newline
\SpecialChar ~
\SpecialChar ~
\SpecialChar ~
\SpecialChar ~
\SpecialChar ~
+\SpecialChar ~
\end_inset
</cell>
\layout Standard
-path(argv[0]
+path(argv[0])
\backslash
+
+\newline
..
\backslash
lib
\backslash
\emph on
-
-\newline
<model>
\newline
-
-\emph default
-\SpecialChar ~
-\SpecialChar ~
\SpecialChar ~
\SpecialChar ~
\SpecialChar ~
\layout Comment
-Don't delete any of the stray spaces in the table line 5 without checking
+Don't delete any of the stray spaces in the table above without checking
the HTML output (last line)!
\layout Standard
The option ---nostdlib disables the last two search paths.
\layout Subsection
-Linux and other gcc-based systems (cygwin, mingw32, osx)
+Building SDCC
+\layout Subsubsection
+
+Building SDCC on Linux
\layout Enumerate
\series default
This copies the binary executables, the include files, the libraries and
the documentation to the install directories.
-\layout Subsection
+\layout Subsubsection
-Windows
+Building SDCC on OSX 2.x
+\layout Standard
+
+Follow the instruction for Linux.
+\newline
+
+\newline
+On OSX 2.x it was reported, that the default gcc (version 3.1 20020420 (prerelease
+)) fails to compile SDCC.
+ Fortunately there's also gcc 2.9.x installed, which works fine.
+ This compiler can be selected by running 'configure' with:
+\layout LyX-Code
+
+./configure CC=gcc2 CXX=g++2
+\layout Subsubsection
+
+Crosscompiling SDCC on Linux for Windows
+\layout Standard
+
+With the Mingw32 gcc crosscompiler it's easy to compile SDCC for Win32.
+ See section 'Configure Options'.
+\layout Subsubsection
+
+Building SDCC on Windows
+\layout Standard
+
+With the exception of Cygwin the SDCC binaries uCsim and sdcdb can't be
+ built on Windows.
+ They use Unix-sockets, which are not available on Win32.
\layout Subsubsection
Windows Install Using a Binary Package
An example directory structure after unpacking the mingw32 package is:
c:
\backslash
-usr
-\backslash
-local
+sdcc
\backslash
bin for the executables, c:
\backslash
-usr
-\backslash
-local
-\backslash
-share
-\backslash
sdcc
\backslash
include and c:
\backslash
-usr
-\backslash
-local
-\backslash
-share
-\backslash
sdcc
\backslash
lib for the include and libraries.
directory or start sdcc using the full path.
\layout Subsubsection
-Windows Install Using Cygwin and Mingw32
+Building SDCC using Cygwin and Mingw32
\layout Standard
-Follow the instruction in
-\series bold
-Linux and other gcc-based systems
-\series default
+For building and installing a Cygwin executable follow the instructions
+ for Linux.
+\newline
+
+\newline
+On Cygwin a
+\begin_inset Quotes sld
+\end_inset
+
+native
+\begin_inset Quotes srd
+\end_inset
+
+ Win32-binary can be built, which will not need the Cygwin-DLL.
+ For the necessary 'configure' options see section 'configure options' or
+ the script 'sdcc/support/scripts/sdcc_cygwinmingw32'.
+\newline
+
+\newline
+In order to install Cygwin on Windows download setup.exe from
+\begin_inset LatexCommand \url[www.cygwin.com]{http://www.cygwin.com/}
+
+\end_inset
+
.
+ Run it, set the
+\begin_inset Quotes sld
+\end_inset
+
+default text file type
+\begin_inset Quotes srd
+\end_inset
+
+ to
+\begin_inset Quotes sld
+\end_inset
+
+unix
+\begin_inset Quotes srd
+\end_inset
+
+ and download/install at least the following packages.
+ Some packages are selected by default, others will be automatically selected
+ because of dependencies with the manually selected packages.
+ Never deselect these packages!
+\layout Itemize
+
+flex
+\layout Itemize
+
+bison
+\layout Itemize
+
+gcc ; version 3.x is fine, no need to use the old 2.9x
+\layout Itemize
+
+binutils ; selected with gcc
+\layout Itemize
+
+make
+\layout Itemize
+
+rxvt ; a nice console, which makes life much easier under windoze (see below)
+\layout Itemize
+
+man ; not really needed for building SDCC, but you'll miss it sooner or
+ later
+\layout Itemize
+
+less ; not really needed for building SDCC, but you'll miss it sooner or
+ later
+\layout Itemize
+
+cvs ; only if you use CVS access
+\layout Standard
+
+If you want to develop something you'll need:
+\layout Itemize
+
+python ; for the regression tests
+\layout Itemize
+
+gdb ; the gnu debugger, together with the nice GUI
+\begin_inset Quotes sld
+\end_inset
+
+insight
+\begin_inset Quotes srd
+\end_inset
+
+
+\layout Itemize
+
+openssh ; to access the CF or commit changes
+\layout Itemize
+
+autoconf and autoconf-devel ; if you want to fight with 'configure', don't
+ use autoconf-stable!
+\layout Standard
+
+rxvt is a nice console with history.
+ Replace in your cygwin.bat the line
+\layout LyX-Code
+
+bash --login -i
+\layout Standard
+
+with (one line):
+\layout LyX-Code
+
+rxvt -sl 1000 -fn "Lucida Console-12" -sr -cr red
+\layout LyX-Code
+
+ -bg black -fg white -geometry 100x65 -e bash --login
+\layout Standard
+
+Text selected with the mouse is automatically copied to the clipboard, pasting
+ works with shift-insert.
+\newline
+
+\newline
+The other good tip is to make sure you have no //c/-style paths anywhere,
+ use /cygdrive/c/ instead.
+ Using // invokes a network lookup which is very slow.
+ If you think
+\begin_inset Quotes sld
+\end_inset
+
+cygdrive
+\begin_inset Quotes srd
+\end_inset
+
+ is too long, you can change it with e.g.
+\layout LyX-Code
+
+mount -s -u -c /mnt
+\layout Standard
+
+SDCC sources use the unix line ending LF.
+ Life is much easier, if you store the source tree on a drive, which is
+ mount in binary mode.
+ And use an editor which can handle LF-only line endings.
+ Make sure not to commit files with windows line endings.
\layout Subsubsection
Windows Install Using Microsoft Visual C++ 6.0/NET
from the sdcc directory.
\layout Subsection
+Building the Documentation
+\layout Standard
+
+...
+ coming soon
+\layout Subsection
+
Testing out the SDCC Compiler
\layout Standard
A thing to try is starting from scratch by unpacking the .tgz source package
again in an empty directory.
- Confure it like:
+ Configure it like:
\newline
\newline
---i-code-in-asm
\series default
Include i-codes in the asm file.
- Looks like noise but is most helpfull for debugging the compiler itself.
+ Sounds like noise but is most helpfull for debugging the compiler itself.
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+---less-pedantic
+\series default
+ Disable some of the more pedantic warnings (jwk burps: please be more specific
+ here, please!)
\layout Subsubsection
Intermediate Dump Options
\series bold
-(coming\SpecialChar ~
-soon:\SpecialChar ~
-SDCC_BIN_PATH)
-\series default
- Path, see
-\begin_inset Quotes sld
-\end_inset
-
-2.1 Install and search paths
-\begin_inset Quotes srd
-\end_inset
-
-.
-\layout List
-\labelwidthstring 00.00.0000
-
-
-\series bold
-(coming\SpecialChar ~
-soon:\SpecialChar ~
-SDCC_INCLUDE_PATH)
+SDCC_HOME
\series default
Path, see
\begin_inset Quotes sld
\end_inset
-2.1 Install and search paths
+2.3 Install and search paths
\begin_inset Quotes srd
\end_inset
\series bold
-(coming\SpecialChar ~
-soon:\SpecialChar ~
-SDCC_LIB_PATH)
+SDCC_INCLUDE
\series default
Path, see
\begin_inset Quotes sld
\end_inset
-2.1 Install and search paths
+2.3 Install and search paths
\begin_inset Quotes srd
\end_inset
\series bold
-SDCCDIR\SpecialChar ~
-(soon\SpecialChar ~
-replaced\SpecialChar ~
-by:\SpecialChar ~
-SDCCPATH)
+SDCC_LIB
\series default
Path, see
\begin_inset Quotes sld
\end_inset
-2.1 Install and search paths
+2.3 Install and search paths
\begin_inset Quotes srd
\end_inset
\begin_inset Tabular
<lyxtabular version="3" rows="6" columns="3">
<features>
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
+<column alignment="center" valignment="top" leftline="true" width="0in">
+<column alignment="center" valignment="top" leftline="true" width="0in">
+<column alignment="center" valignment="top" leftline="true" rightline="true" width="0in">
<row topline="true" bottomline="true">
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\layout Standard
SDCC supports the following #pragma directives.
- This directives are applicable only at a function level.
\layout Itemize
-SAVE - this will save all the current options.
+SAVE - this will save all current options to the SAVE/RESTORE stack.
+ See RESTORE.
\layout Itemize
-RESTORE - will restore the saved options from the last save.
- Note that SAVES & RESTOREs cannot be nested.
- SDCC uses the same buffer to save the options each time a SAVE is called.
+RESTORE - will restore saved options from the last save.
+ SAVEs & RESTOREs can be nested.
+ SDCC uses a SAVE/RESTORE stack: SAVE pushes current options to the stack,
+ RESTORE pulls current options from the stack.
+ See SAVE.
\layout Itemize
NOGCSE - will stop global subexpression elimination.
of a function.
\layout Itemize
+LESS_PEDANTIC - the compiler will not warn you anymore for obvious mistakes,
+ you'r on your own now ;-(
+\layout Itemize
+
NOLOOPREVERSE - Will not do loop reversal optimization
\layout Itemize
uses a caller saves convention for register saving across function calls,
however this can cause unneccessary register pushing & popping when calling
small functions from larger functions.
- This option can be used to switch the register saving convention for the
- function names specified.
+ This option can be used to switch off the register saving convention for
+ the function names specified.
The compiler will not save registers when calling these functions, extra
- code will be generated at the entry & exit for these functions to save
- & restore the registers used by these functions, this can SUBSTANTIALLY
+ code need to be manually inserted at the entry & exit for these functions
+ to save & restore the registers used by these functions, this can SUBSTANTIALLY
reduce code & improve run time performance of the generated code.
- In future the compiler (with interprocedural analysis) will be able to
- determine the appropriate scheme to use for each function call.
+ In the future the compiler (with interprocedural analysis) may be able
+ to determine the appropriate scheme to use for each function call.
If ---callee-saves command line option is used, the function names specified
in #pragma\SpecialChar ~
-CALLEE-SAVES is appended to the list of functions specified inthe
- command line.
+CALLEE-SAVES is appended to the list of functions specified in
+ the command line.
\layout Standard
The pragma's are intended to be used to turn-off certain optimizations which