mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 05:39:18 +02:00
clarifying in README that GNU make is used, movign all extensions to Makefile.detect (issue #642)
This commit is contained in:
parent
61f2983fad
commit
62ef654817
3 changed files with 76 additions and 65 deletions
58
Makefile
58
Makefile
|
@ -22,27 +22,12 @@ SNOW_CHIBI ?= tools/snow-chibi
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
# Choose compiled library on MSYS
|
|
||||||
ifeq ($(OS), Windows_NT)
|
|
||||||
ifeq ($(PLATFORM),msys)
|
|
||||||
EXCLUDE_WIN32_LIBS=1
|
|
||||||
else
|
|
||||||
ifeq ($(shell uname -o),Cygwin)
|
|
||||||
EXCLUDE_WIN32_LIBS=1
|
|
||||||
else
|
|
||||||
EXCLUDE_POSIX_LIBS=1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
|
|
||||||
CHIBI_COMPILED_LIBS = lib/chibi/filesystem$(SO) lib/chibi/weak$(SO) \
|
CHIBI_COMPILED_LIBS = lib/chibi/filesystem$(SO) lib/chibi/weak$(SO) \
|
||||||
lib/chibi/heap-stats$(SO) lib/chibi/disasm$(SO) lib/chibi/ast$(SO) \
|
lib/chibi/heap-stats$(SO) lib/chibi/disasm$(SO) lib/chibi/ast$(SO) \
|
||||||
lib/chibi/json$(SO) lib/chibi/emscripten$(SO)
|
lib/chibi/json$(SO) lib/chibi/emscripten$(SO)
|
||||||
CHIBI_POSIX_COMPILED_LIBS = lib/chibi/process$(SO) lib/chibi/time$(SO) \
|
CHIBI_POSIX_COMPILED_LIBS = lib/chibi/process$(SO) lib/chibi/time$(SO) \
|
||||||
lib/chibi/system$(SO) lib/chibi/stty$(SO) lib/chibi/pty$(SO) \
|
lib/chibi/system$(SO) lib/chibi/stty$(SO) lib/chibi/pty$(SO) \
|
||||||
lib/chibi/net$(SO)
|
lib/chibi/net$(SO) lib/srfi/18/threads$(SO)
|
||||||
CHIBI_WIN32_COMPILED_LIBS = lib/chibi/win32/process-win32$(SO)
|
CHIBI_WIN32_COMPILED_LIBS = lib/chibi/win32/process-win32$(SO)
|
||||||
CHIBI_CRYPTO_COMPILED_LIBS = lib/chibi/crypto/crypto$(SO)
|
CHIBI_CRYPTO_COMPILED_LIBS = lib/chibi/crypto/crypto$(SO)
|
||||||
CHIBI_IO_COMPILED_LIBS = lib/chibi/io/io$(SO)
|
CHIBI_IO_COMPILED_LIBS = lib/chibi/io/io$(SO)
|
||||||
|
@ -50,12 +35,6 @@ CHIBI_OPT_COMPILED_LIBS = lib/chibi/optimize/rest$(SO) \
|
||||||
lib/chibi/optimize/profile$(SO)
|
lib/chibi/optimize/profile$(SO)
|
||||||
EXTRA_COMPILED_LIBS ?=
|
EXTRA_COMPILED_LIBS ?=
|
||||||
|
|
||||||
ifndef EXCLUDE_POSIX_LIBS
|
|
||||||
CHIBI_COMPILED_LIBS += $(CHIBI_POSIX_COMPILED_LIBS)
|
|
||||||
else
|
|
||||||
CHIBI_COMPILED_LIBS += $(CHIBI_WIN32_COMPILED_LIBS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
COMPILED_LIBS = $(CHIBI_COMPILED_LIBS) $(CHIBI_IO_COMPILED_LIBS) \
|
COMPILED_LIBS = $(CHIBI_COMPILED_LIBS) $(CHIBI_IO_COMPILED_LIBS) \
|
||||||
$(CHIBI_OPT_COMPILED_LIBS) $(CHIBI_CRYPTO_COMPILED_LIBS) \
|
$(CHIBI_OPT_COMPILED_LIBS) $(CHIBI_CRYPTO_COMPILED_LIBS) \
|
||||||
$(EXTRA_COMPILED_LIBS) \
|
$(EXTRA_COMPILED_LIBS) \
|
||||||
|
@ -64,10 +43,6 @@ COMPILED_LIBS = $(CHIBI_COMPILED_LIBS) $(CHIBI_IO_COMPILED_LIBS) \
|
||||||
lib/srfi/98/env$(SO) lib/srfi/144/math$(SO) lib/srfi/160/uvprims$(SO) \
|
lib/srfi/98/env$(SO) lib/srfi/144/math$(SO) lib/srfi/160/uvprims$(SO) \
|
||||||
lib/scheme/time$(SO)
|
lib/scheme/time$(SO)
|
||||||
|
|
||||||
ifndef EXCLUDE_POSIX_LIBS
|
|
||||||
COMPILED_LIBS += lib/srfi/18/threads$(SO)
|
|
||||||
endif
|
|
||||||
|
|
||||||
BASE_INCLUDES = include/chibi/sexp.h include/chibi/features.h include/chibi/install.h include/chibi/bignum.h
|
BASE_INCLUDES = include/chibi/sexp.h include/chibi/features.h include/chibi/install.h include/chibi/bignum.h
|
||||||
INCLUDES = $(BASE_INCLUDES) include/chibi/eval.h include/chibi/gc_heap.h
|
INCLUDES = $(BASE_INCLUDES) include/chibi/eval.h include/chibi/gc_heap.h
|
||||||
|
|
||||||
|
@ -83,38 +58,11 @@ HTML_LIBS = $(MODULE_DOCS:%=doc/lib/chibi/%.html)
|
||||||
META_FILES = lib/.chibi.meta lib/.srfi.meta lib/.scheme.meta
|
META_FILES = lib/.chibi.meta lib/.srfi.meta lib/.scheme.meta
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# This includes the rules to build optional libraries.
|
||||||
|
# It also pulls in Makefile.detect for platform detection.
|
||||||
|
|
||||||
include Makefile.libs
|
include Makefile.libs
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# Library config.
|
|
||||||
#
|
|
||||||
# This is to allow "make SEXP_USE_BOEHM=1" and "make SEXP_USE_DL=0" to
|
|
||||||
# automatically include the necessary compiler and linker flags in
|
|
||||||
# addition to setting those features. If not using GNU make just
|
|
||||||
# comment out the ifs and use the else branches for the defaults.
|
|
||||||
|
|
||||||
ifeq ($(SEXP_USE_BOEHM),1)
|
|
||||||
GCLDFLAGS := -lgc
|
|
||||||
XCPPFLAGS := $(CPPFLAGS) -Iinclude $(D:%=-DSEXP_USE_%) -DSEXP_USE_BOEHM=1
|
|
||||||
else
|
|
||||||
GCLDFLAGS :=
|
|
||||||
XCPPFLAGS := $(CPPFLAGS) -Iinclude $(D:%=-DSEXP_USE_%)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(SEXP_USE_DL),0)
|
|
||||||
XLDFLAGS := $(LDFLAGS) $(RLDFLAGS) $(GCLDFLAGS) -lm
|
|
||||||
XCFLAGS := -Wall -DSEXP_USE_DL=0 -g -g3 -O3 $(CFLAGS)
|
|
||||||
else
|
|
||||||
XLDFLAGS := $(LDFLAGS) $(RLDFLAGS) $(GCLDFLAGS) $(LIBDL) -lm
|
|
||||||
XCFLAGS := -Wall -g -g3 -O3 $(CFLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(PLATFORM),solaris)
|
|
||||||
XLDFLAGS += -lsocket
|
|
||||||
XCPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS
|
|
||||||
endif
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
all: chibi-scheme$(EXE) all-libs chibi-scheme.pc $(META_FILES)
|
all: chibi-scheme$(EXE) all-libs chibi-scheme.pc $(META_FILES)
|
||||||
|
|
|
@ -131,6 +131,59 @@ ifeq ($(PLATFORM),unix)
|
||||||
RLDFLAGS=-Wl,-R$(LIBDIR)
|
RLDFLAGS=-Wl,-R$(LIBDIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Library config.
|
||||||
|
#
|
||||||
|
# This is to allow "make SEXP_USE_BOEHM=1" and "make SEXP_USE_DL=0" to
|
||||||
|
# automatically include the necessary compiler and linker flags in
|
||||||
|
# addition to setting those features. If not using GNU make just
|
||||||
|
# comment out the ifs and use the else branches for the defaults.
|
||||||
|
|
||||||
|
ifeq ($(SEXP_USE_BOEHM),1)
|
||||||
|
GCLDFLAGS := -lgc
|
||||||
|
XCPPFLAGS := $(CPPFLAGS) -Iinclude $(D:%=-DSEXP_USE_%) -DSEXP_USE_BOEHM=1
|
||||||
|
else
|
||||||
|
GCLDFLAGS :=
|
||||||
|
XCPPFLAGS := $(CPPFLAGS) -Iinclude $(D:%=-DSEXP_USE_%)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SEXP_USE_DL),0)
|
||||||
|
XLDFLAGS := $(LDFLAGS) $(RLDFLAGS) $(GCLDFLAGS) -lm
|
||||||
|
XCFLAGS := -Wall -DSEXP_USE_DL=0 -g -g3 -O3 $(CFLAGS)
|
||||||
|
else
|
||||||
|
XLDFLAGS := $(LDFLAGS) $(RLDFLAGS) $(GCLDFLAGS) $(LIBDL) -lm
|
||||||
|
XCFLAGS := -Wall -g -g3 -O3 $(CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),solaris)
|
||||||
|
XLDFLAGS += -lsocket
|
||||||
|
XCPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Choose compiled library on MSYS
|
||||||
|
ifeq ($(OS), Windows_NT)
|
||||||
|
ifeq ($(PLATFORM),msys)
|
||||||
|
EXCLUDE_WIN32_LIBS=1
|
||||||
|
else
|
||||||
|
ifeq ($(shell uname -o),Cygwin)
|
||||||
|
EXCLUDE_WIN32_LIBS=1
|
||||||
|
else
|
||||||
|
EXCLUDE_POSIX_LIBS=1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
CHIBI_POSIX_COMPILED_LIBS = lib/chibi/process$(SO) lib/chibi/time$(SO) \
|
||||||
|
lib/chibi/system$(SO) lib/chibi/stty$(SO) lib/chibi/pty$(SO) \
|
||||||
|
lib/chibi/net$(SO) lib/srfi/18/threads$(SO)
|
||||||
|
CHIBI_WIN32_COMPILED_LIBS = lib/chibi/win32/process-win32$(SO)
|
||||||
|
|
||||||
|
ifndef EXCLUDE_POSIX_LIBS
|
||||||
|
COMPILED_LIBS += $(CHIBI_POSIX_COMPILED_LIBS)
|
||||||
|
else
|
||||||
|
COMPILED_LIBS += $(CHIBI_WIN32_COMPILED_LIBS)
|
||||||
|
endif
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Check for headers (who needs autoconf?)
|
# Check for headers (who needs autoconf?)
|
||||||
|
|
||||||
|
|
30
README.md
30
README.md
|
@ -12,22 +12,32 @@ allowing multiple VMs to run simultaneously in different OS threads.
|
||||||
There are no external dependencies so is relatively easy to drop into
|
There are no external dependencies so is relatively easy to drop into
|
||||||
any project.
|
any project.
|
||||||
|
|
||||||
The default repl language contains all bindings from
|
Despite the small size, Chibi-Scheme attempts to do The Right Thing.
|
||||||
[R7RS small](http://trac.sacrideo.us/wg/wiki/R7RSHomePage),
|
The default settings include:
|
||||||
available explicitly as the `(scheme small)` library. The
|
|
||||||
language is built in layers, however - see the manual for
|
* a full numeric tower, with rational and complex numbers
|
||||||
instructions on compiling with fewer features or requesting
|
* full and seemless Unicode support
|
||||||
a smaller language on startup.
|
* low-level and high-level hygienic macros
|
||||||
|
* an extensible module system
|
||||||
|
|
||||||
|
Specifically, the default repl language contains all bindings from
|
||||||
|
[R7RS small](https://small.r7rs.org/), available explicitly as the
|
||||||
|
`(scheme small)` library. The language is built in layers, however -
|
||||||
|
see the manual for instructions on compiling with fewer features or
|
||||||
|
requesting a smaller language on startup.
|
||||||
|
|
||||||
Chibi-Scheme is known to work on **32** and **64-bit** Linux, FreeBSD,
|
Chibi-Scheme is known to work on **32** and **64-bit** Linux, FreeBSD,
|
||||||
NetBSD, OpenBSD and OS X, Plan 9, Windows (using Cygwin), iOS, Android,
|
NetBSD, OpenBSD and OS X, Plan 9, Windows, iOS, Android,
|
||||||
ARM and [Emscripten](https://kripken.github.io/emscripten-site). Basic
|
ARM and [Emscripten](https://kripken.github.io/emscripten-site). Basic
|
||||||
support for native Windows desktop also exists. See README-win32.md
|
support for native Windows desktop also exists. See README-win32.md
|
||||||
for details and build instructions.
|
for details and build instructions.
|
||||||
|
|
||||||
To build on most platforms just run `make && make test`. This will
|
To build on most platforms just run `make && make test`. This has a
|
||||||
provide a shared library *libchibi-scheme*, as well as a sample
|
few conditionals assuming GNU make. If using another make, there are
|
||||||
*chibi-scheme* command-line repl. You can then run
|
a few parameters in Makefile.detect you need to set by hand.
|
||||||
|
|
||||||
|
This will provide a shared library *libchibi-scheme*, as well as a
|
||||||
|
sample *chibi-scheme* command-line repl. You can then run
|
||||||
|
|
||||||
sudo make install
|
sudo make install
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue