\size footnotesize
\newline
-$Date: 2008-11-16#$
+$Date:: $
\newline
-$Revision: 5272$
+$Revision$
\end_layout
\begin_layout Standard
\family sans
\series bold
-"tar -xvzf sdcc-src-yyyymmdd-rrrr.tar.bz2
+"tar -xvjf sdcc-src-yyyymmdd-rrrr.tar.bz2
\begin_inset Quotes srd
\end_inset
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
# cd $HOME
\end_layout
\begin_layout Standard
\family typewriter
-tar -xzf sdcc.src.tar.gz\InsetSpace ~
+tar -xjf sdcc-src-yyyymmdd-rrrr.tar.bz2\InsetSpace ~
# extract source to directory sdcc
\end_layout
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
# put output in sdcc.build
\end_layout
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
# configure is doing all the magic!
\end_layout
is embedded in the library file itself.
Library files created using sdcclib are used as described in the preceding
sections.
+\end_layout
+
+\begin_layout Subsection
+Using ar to Create and Manage Libraries
+\begin_inset LatexCommand index
+name "ar"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Support for ar format libraries was introduced in sdcc 2.9.0.
+ Ar is a standard archive managing utility on unices (Linux, Mac OS X, several
+ unix flavors) so it is not included in the sdcc package.
+\series bold
+
+\newline
+
+\newline
+
+\series default
+For Windows platform you can find ar utility in GNU binutils package included
+ in several projects: Cygwin at
+\begin_inset LatexCommand url
+target "http://www.cygwin.com/"
+
+\end_inset
+
+, MinGW at
+\begin_inset LatexCommand url
+target "http://www.mingw.org/"
+
+\end_inset
+
+.
+\series bold
+
+\newline
+
+\newline
+
+\series default
+Both the GNU and BSD ar format variants are suppurated by asxxxx linkers.
+ Ar doesn't understand the asxxxx object file format, so there is a special
+ version of ranlib distributed with sdcc, called asranlib, which produces
+ the ar symbol lookup table.
+\series bold
+
+\newline
+
+\newline
+
+\series default
+To create a library containing asxxxx object files, you should use the following
+ sequence:
+\series bold
+
+\newline
+
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+ar -Sq <library name>.lib <list of .rel files>
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+asranlib <library name>.lib
+\end_layout
+
+\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset
\end_inset
.
- SDCC uses an adapted version of the preprocessor
-\emph on
-cpp
-\emph default
- of the GNU Compiler Collection
+ SDCC uses an adapted version of the GNU Compiler Collection
\begin_inset LatexCommand index
name "gcc (GNU Compiler Collection)"
\end_inset
+ preprocessor
+\emph on
+cpp
+\emph default
(
\emph on
gcc
\end_inset
-), if you need more dedicated options please refer to the GCC\InsetSpace ~
-4.1.1\InsetSpace ~
+).
+ If you need more dedicated options please refer to the GCC\InsetSpace ~
CPP\InsetSpace ~
-Manual
- at
+Manual at
+
\begin_inset LatexCommand htmlurl
target "http://www.gnu.org/software/gcc/onlinedocs/"
\begin_inset LatexCommand index
-name "-L -\\/-lib-path"
+name "-L <path>"
\end_inset
\begin_layout List
\labelwidthstring 00.00.0000
+\series bold
+-v\InsetSpace ~
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-version
+\begin_inset LatexCommand index
+name "-\\/-version"
+
+\end_inset
+
+
+\begin_inset LatexCommand index
+name "-v"
+
+\end_inset
+
+
+\series default
+ displays the sdcc version.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
\series bold
-c\InsetSpace ~
-
\begin_inset LatexCommand index
-name "-c -\\/-compile-only"
+name "-c"
\end_inset
\family typewriter
printf_large.c
\family default
- does not support float (except on ds390).
- To enable this recompile it with the option
+ does not support float
+\begin_inset LatexCommand index
+name "Floating point support"
+
+\end_inset
+
+ (except on ds390), only <NO FLOAT>
+\begin_inset LatexCommand index
+name "<NO FLOAT>"
+
+\end_inset
+
+
+\begin_inset LatexCommand index
+name "printf floating point support"
+
+\end_inset
+
+ will be printed instead of the value.
+ To enable floating point output, recompile it with the option
\emph on
-
\begin_inset ERT
\emph on
-
\begin_inset ERT
-status collapsed
+status open
\begin_layout Standard
\emph default
for the mcs51 port, since this uses a lot of memory.
+ To enable float support for the pic16 targets, see
+\begin_inset LatexCommand ref
+reference "sub:pic16Libraries"
+
+\end_inset
+
+.
\end_layout
\begin_layout Standard
\begin_layout Standard
printf
\begin_inset LatexCommand index
-name "printf"
+name "printf()"
\end_inset
Before using SDCC/pic16 there are some libraries that need to be compiled.
This process is done automatically if gputils are found at SDCC's compile
time.
- Should you require to rebuild the pic16 libraries manually, these are the
- steps required to do so under Linux or Mac OS X (cygwin might work as well,
- but is untested):
+ Should you require to rebuild the pic16 libraries manually (e.g.
+ in order to enable output of float values
+\begin_inset LatexCommand index
+name "Floating point support"
+
+\end_inset
+
+ via
+\family typewriter
+printf()
+\family default
+, see below), these are the steps required to do so under Linux or Mac OS
+ X (cygwin might work as well, but is untested):
\end_layout
\begin_layout LyX-Code
su -c 'make install' # install the headers, you need the root password
\end_layout
+\begin_layout Subsubsection*
+Output of float values via printf()
+\end_layout
+
+\begin_layout Standard
+The library is normally built without support for displaying float values,
+ only <NO FLOAT>
+\begin_inset LatexCommand index
+name "<NO FLOAT>"
+
+\end_inset
+
+
+\begin_inset LatexCommand index
+name "printf floating point support"
+
+\end_inset
+
+ will appear instead of the value.
+ To change this, rebuild the library as stated above, but call
+\family typewriter
+./configure.gnu --enable-floats
+\family default
+instead of just
+\family typewriter
+./configure.gnu
+\family default
+.
+ Also make sure that at least
+\family typewriter
+libc/stdio/vfprintf.c
+\family default
+ is actually recompiled, e.g.
+ by
+\family typewriter
+touch
+\family default
+ing it after the
+\family typewriter
+configure
+\family default
+ run or deleting its
+\family typewriter
+.o
+\family default
+ file.
+\end_layout
+
+\begin_layout Standard
+The more common appraoch of compiling
+\family typewriter
+vfprintf.c
+\family default
+ manually with
+\family typewriter
+-DUSE_FLOATS=1
+\family default
+ should also work, but is untested.
+\end_layout
+
\begin_layout Subsection
Adding New Devices to the Port
\end_layout