mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 13:19:18 +02:00
110 lines
3.5 KiB
Text
110 lines
3.5 KiB
Text
Using the Makefile.libs File To Build and Install Libraries
|
|
-----------------------------------------------------------
|
|
|
|
The Makefile.libs file distributed with the Chibi Scheme sources
|
|
can facilitate building and installing Chibi Scheme libraries written
|
|
in C or Scheme. To use it, follow these instructions:
|
|
|
|
1. Copy the Makefile.libs and Makefile.detect files from the Chibi
|
|
Scheme source directory to the library source top-level directory.
|
|
|
|
2. Place the library source in the subdirectory "lib" of the library
|
|
source top-level directory. For example,
|
|
|
|
lib/foo/bar.c
|
|
lib/foo/bar.h
|
|
lib/foo/bar.sld
|
|
lib/foo/bar.scm
|
|
|
|
3. In the Makefile in the library source top-level directory, define
|
|
the following targets:
|
|
|
|
all
|
|
doc
|
|
install
|
|
uninstall
|
|
clean
|
|
dist-clean
|
|
|
|
These should depend on the corresponding "-libs" target, but
|
|
can include additional commands. For example:
|
|
|
|
all: all-libs
|
|
install: install-libs
|
|
cp -r doc $(PREFIX)/share/chibi/
|
|
uninstall: uninstall-libs
|
|
doc: doc-libs
|
|
clean: clean-libs
|
|
dist-clean: dist-clean-libs
|
|
|
|
The all target should be the first target in the Makefile.
|
|
|
|
The all-libs target makes the shared libraries in the library.
|
|
The doc-libs target generates HTML files for the library. The
|
|
install-libs and uninstall-libs targets install and uninstall
|
|
the library under the prefix. The clean-libs target removes the
|
|
shared libraries and generated HTML files. The dist-clean-libs
|
|
removes any .c files generated from .stub files and also performs
|
|
a clean-libs.
|
|
|
|
4. In the Makefile in the library source top-level directory, define
|
|
the following variables:
|
|
|
|
COMPILED_LIBS: Any shared libraries that should be built and
|
|
installed. The shared library is build from the corresponding
|
|
.c or .stub file. The $(SO) variable should be used for the
|
|
shared-library suffix; in order for this to work COMPILED_LIBS
|
|
should be defined as a recursively-expanded variable (with
|
|
=) rather than a simply-expanded variable (with :=).
|
|
|
|
INCLUDES: Any other files on which the shared libraries depend.
|
|
|
|
SCM_LIBS: Any Scheme source files that should be installed.
|
|
|
|
HTML_LIBS: Any HTML files that should be generated. The HTML
|
|
files are generated from the corresponding .sld files using
|
|
chibi-doc.
|
|
|
|
For example,
|
|
|
|
COMPILED_LIBS = lib/foo/bar$(SO)
|
|
INCLUDES = lib/foo/bar.h
|
|
SCM_LIBS = lib/foo/bar.sld lib/foo/bar.scm
|
|
HTML_LIBS = doc/lib/foo/bar.html
|
|
|
|
5. Add additional flags as necessary to XCPPFLAGS, XCFLAGS, and XLIBS.
|
|
These flags are passed to the compiler and linker when they
|
|
generate the shared library. These should probably be defined at
|
|
minimum as:
|
|
|
|
XCPPFLAGS += -I$(PREFIX)/include
|
|
XCFLAGS += -L$(PREFIX)/lib
|
|
XLIBS +=
|
|
|
|
These additions will ensure that the compiler and linker can
|
|
find the Chibi Scheme include and library files, even if they
|
|
are installed under a non-standard prefix.
|
|
|
|
6. Include the common Makefile using:
|
|
|
|
include Makefile.libs
|
|
|
|
A complete example is:
|
|
|
|
all: all-libs
|
|
install: install-libs
|
|
uninstall: uninstall-libs
|
|
doc: doc-libs
|
|
clean: clean-libs
|
|
dist-clean: dist-clean-libs
|
|
|
|
COMPILED_LIBS = lib/foo/bar$(SO)
|
|
INCLUDES = lib/foo/bar.h
|
|
SCM_LIBS = lib/foo/bar.sld lib/foo/bar.scm
|
|
HTML_LIBS = doc/lib/foo/bar.html
|
|
|
|
XCPPFLAGS += -I$(PREFIX)/include
|
|
XCFLAGS += -L$(PREFIX)/lib
|
|
XLIBS += -lpthread
|
|
|
|
include Makefile.libs
|