mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-21 14:49:18 +02:00
Installing binaries and scheme source to separate share/lib dirs.
Also explicitly listing files in install and uninstall to avoid unwanted nested copying and rm -rf.
This commit is contained in:
parent
1cec98193e
commit
b5bc2749d7
1 changed files with 105 additions and 52 deletions
157
Makefile
157
Makefile
|
@ -6,6 +6,18 @@
|
|||
# install configuration
|
||||
|
||||
CC ?= cc
|
||||
CD ?= cd
|
||||
RM ?= rm
|
||||
LS ?= ls
|
||||
INSTALL ?= install
|
||||
MKDIR ?= $(INSTALL) -d
|
||||
RMDIR ?= rmdir
|
||||
TAR ?= tar
|
||||
DIFF ?= diff
|
||||
GREP ?= grep
|
||||
FIND ?= find
|
||||
SYMLINK ?= ln -s
|
||||
|
||||
PREFIX ?= /usr/local
|
||||
BINDIR ?= $(PREFIX)/bin
|
||||
LIBDIR ?= $(PREFIX)/lib
|
||||
|
@ -122,18 +134,23 @@ all: chibi-scheme$(EXE) libs lib/chibi/ast$(SO)
|
|||
|
||||
CHIBI ?= LD_LIBRARY_PATH=".:$(LD_LIBRARY_PATH)" ./chibi-scheme$(EXE)
|
||||
|
||||
COMPILED_LIBS := lib/srfi/18/threads$(SO) lib/srfi/27/rand$(SO) \
|
||||
lib/srfi/33/bit$(SO) lib/srfi/39/param$(SO) lib/srfi/69/hash$(SO) \
|
||||
lib/srfi/95/qsort$(SO) lib/srfi/98/env$(SO) lib/chibi/net$(SO) \
|
||||
lib/chibi/filesystem$(SO) lib/chibi/process$(SO) lib/chibi/time$(SO) \
|
||||
lib/chibi/system$(SO) lib/chibi/io/io$(SO) lib/chibi/stty$(SO) \
|
||||
CHIBI_COMPILED_LIBS := lib/chibi/filesystem$(SO) lib/chibi/process$(SO) \
|
||||
lib/chibi/time$(SO) lib/chibi/system$(SO) lib/chibi/stty$(SO) \
|
||||
lib/chibi/weak$(SO) lib/chibi/heap-stats$(SO) lib/chibi/disasm$(SO) \
|
||||
lib/chibi/optimize/rest$(SO) lib/chibi/optimize/profile$(SO) \
|
||||
lib/chibi/net$(SO)
|
||||
CHIBI_IO_COMPILED_LIBS := lib/chibi/io/io$(SO)
|
||||
CHIBI_OPT_COMPILED_LIBS := lib/chibi/optimize/rest$(SO) \
|
||||
lib/chibi/optimize/profile$(SO)
|
||||
COMPILED_LIBS := $(CHIBI_COMPILED_LIBS) $(CHIBI_IO_COMPILED_LIBS) \
|
||||
$(CHIBI_OPT_COMPILED_LIBS) lib/srfi/18/threads$(SO) \
|
||||
lib/srfi/27/rand$(SO) lib/srfi/33/bit$(SO) lib/srfi/39/param$(SO) \
|
||||
lib/srfi/69/hash$(SO) lib/srfi/95/qsort$(SO) lib/srfi/98/env$(SO) \
|
||||
lib/scheme/time$(SO)
|
||||
|
||||
libs: $(COMPILED_LIBS)
|
||||
|
||||
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/install.h: Makefile
|
||||
echo '#define sexp_so_extension "'$(SO)'"' > $@
|
||||
|
@ -142,16 +159,16 @@ include/chibi/install.h: Makefile
|
|||
echo '#define sexp_version "'`cat VERSION`'"' >> $@
|
||||
echo '#define sexp_release_name "'`cat RELEASE`'"' >> $@
|
||||
|
||||
sexp.o: sexp.c gc.c opt/bignum.c $(INCLUDES) Makefile
|
||||
sexp.o: sexp.c gc.c opt/bignum.c $(BASE_INCLUDES) Makefile
|
||||
$(CC) -c $(XCPPFLAGS) $(XCFLAGS) $(CLIBFLAGS) -o $@ $<
|
||||
|
||||
sexp-ulimit.o: sexp.c gc.c opt/bignum.c $(INCLUDES) Makefile
|
||||
sexp-ulimit.o: sexp.c gc.c opt/bignum.c $(BASE_INCLUDES) Makefile
|
||||
$(CC) -c $(XCPPFLAGS) $(XCFLAGS) $(CLIBFLAGS) -DSEXP_USE_LIMITED_MALLOC -o $@ $<
|
||||
|
||||
eval.o: eval.c opcodes.c vm.c opt/simplify.c $(INCLUDES) include/chibi/eval.h Makefile
|
||||
eval.o: eval.c opcodes.c vm.c opt/simplify.c $(INCLUDES) Makefile
|
||||
$(CC) -c $(XCPPFLAGS) $(XCFLAGS) $(CLIBFLAGS) -o $@ $<
|
||||
|
||||
main.o: main.c $(INCLUDES) include/chibi/eval.h Makefile
|
||||
main.o: main.c $(INCLUDES) Makefile
|
||||
$(CC) -c $(XCPPFLAGS) $(XCFLAGS) -o $@ $<
|
||||
|
||||
libchibi-sexp$(SO): sexp.o
|
||||
|
@ -175,6 +192,8 @@ clibs.c: $(GENSTATIC) lib lib/chibi lib/srfi chibi-scheme$(EXE) libs
|
|||
%.c: %.stub $(GENSTUBS) chibi-scheme$(EXE)
|
||||
-$(CHIBI) $(GENSTUBS) $<
|
||||
|
||||
# A special case, this needs to be linked with the LDFLAGS in case
|
||||
# we're using Boehm.
|
||||
lib/chibi/ast$(SO): lib/chibi/ast.c $(INCLUDES)
|
||||
-$(CC) $(CLIBFLAGS) $(XCPPFLAGS) $(XCFLAGS) -o $@ $< $(XLDFLAGS) -L. -lchibi-scheme
|
||||
|
||||
|
@ -194,19 +213,19 @@ MODULE_DOCS := ast disasm equiv filesystem generic heap-stats io loop \
|
|||
doc: doc/chibi.html $(MODULE_DOCS:%=doc/lib/chibi/%.html)
|
||||
|
||||
clean:
|
||||
rm -f *.o *.i *.s *.8
|
||||
rm -f tests/basic/*.out tests/basic/*.err
|
||||
$(RM) -f *.o *.i *.s *.8
|
||||
$(RM) -f tests/basic/*.out tests/basic/*.err
|
||||
|
||||
cleaner: clean
|
||||
rm -f chibi-scheme$(EXE) chibi-scheme-static$(EXE) libchibi-scheme$(SO) *.a include/chibi/install.h
|
||||
find lib -name \*$(SO) -exec rm -rf '{}' \;
|
||||
$(RM) -f chibi-scheme$(EXE) chibi-scheme-static$(EXE) chibi-scheme-ulimit$(EXE) libchibi-scheme$(SO) *.a include/chibi/install.h
|
||||
$(FIND) lib -name \*$(SO) -exec $(RM) -rf '{}' \;
|
||||
|
||||
dist-clean: cleaner
|
||||
for f in `find lib -name \*.stub`; do rm -f $${f%.stub}.c; done
|
||||
for f in `find lib -name \*.stub`; do $(RM) -f $${f%.stub}.c; done
|
||||
|
||||
checkdefs:
|
||||
@for d in $(D); do \
|
||||
if ! grep -q " SEXP_USE_$${d%%=*} " include/chibi/features.h; then \
|
||||
if ! $(GREP) -q " SEXP_USE_$${d%%=*} " include/chibi/features.h; then \
|
||||
echo "WARNING: unknown definition $$d"; \
|
||||
fi; \
|
||||
done
|
||||
|
@ -214,7 +233,7 @@ checkdefs:
|
|||
test-basic: chibi-scheme$(EXE)
|
||||
@for f in tests/basic/*.scm; do \
|
||||
$(CHIBI) $$f >$${f%.scm}.out 2>$${f%.scm}.err; \
|
||||
if diff -q $(DIFFOPTS) $${f%.scm}.out $${f%.scm}.res; then \
|
||||
if $(DIFF) -q $(DIFFOPTS) $${f%.scm}.out $${f%.scm}.res; then \
|
||||
echo "[PASS] $${f%.scm}"; \
|
||||
else \
|
||||
echo "[FAIL] $${f%.scm}"; \
|
||||
|
@ -264,44 +283,78 @@ test: chibi-scheme$(EXE)
|
|||
$(CHIBI) tests/r5rs-tests.scm
|
||||
|
||||
install: all
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
cp chibi-scheme$(EXE) $(DESTDIR)$(BINDIR)/
|
||||
cp tools/chibi-ffi $(DESTDIR)$(BINDIR)/
|
||||
cp tools/chibi-doc $(DESTDIR)$(BINDIR)/
|
||||
mkdir -p $(DESTDIR)$(MODDIR)/chibi
|
||||
mkdir -p $(DESTDIR)$(MODDIR)/scheme
|
||||
mkdir -p $(DESTDIR)$(MODDIR)/srfi
|
||||
cp -r lib/* $(DESTDIR)$(MODDIR)/
|
||||
mkdir -p $(DESTDIR)$(INCDIR)
|
||||
cp $(INCLUDES) include/chibi/eval.h $(DESTDIR)$(INCDIR)/
|
||||
mkdir -p $(DESTDIR)$(LIBDIR)
|
||||
mkdir -p $(DESTDIR)$(SOLIBDIR)
|
||||
cp libchibi-scheme$(SO) $(DESTDIR)$(SOLIBDIR)/
|
||||
cp libchibi-scheme$(SO) $(DESTDIR)$(SOLIBDIR)/
|
||||
-cp libchibi-scheme.a $(DESTDIR)$(LIBDIR)/
|
||||
mkdir -p $(DESTDIR)$(MANDIR)
|
||||
cp doc/chibi-scheme.1 $(DESTDIR)$(MANDIR)/
|
||||
$(MKDIR) $(DESTDIR)$(BINDIR)
|
||||
$(INSTALL) chibi-scheme$(EXE) $(DESTDIR)$(BINDIR)/
|
||||
$(INSTALL) tools/chibi-ffi $(DESTDIR)$(BINDIR)/
|
||||
$(INSTALL) tools/chibi-doc $(DESTDIR)$(BINDIR)/
|
||||
$(MKDIR) $(DESTDIR)$(MODDIR)/chibi/io $(DESTDIR)$(MODDIR)/chibi/loop $(DESTDIR)$(MODDIR)/chibi/match $(DESTDIR)$(MODDIR)/chibi/net $(DESTDIR)$(MODDIR)/chibi/optimize $(DESTDIR)$(MODDIR)/chibi/term
|
||||
$(MKDIR) $(DESTDIR)$(MODDIR)/scheme/char
|
||||
$(MKDIR) $(DESTDIR)$(MODDIR)/srfi/1 $(DESTDIR)$(MODDIR)/srfi/18 $(DESTDIR)$(MODDIR)/srfi/27 $(DESTDIR)$(MODDIR)/srfi/33 $(DESTDIR)$(MODDIR)/srfi/39 $(DESTDIR)$(MODDIR)/srfi/69 $(DESTDIR)$(MODDIR)/srfi/95 $(DESTDIR)$(MODDIR)/srfi/99 $(DESTDIR)$(MODDIR)/srfi/99/records
|
||||
$(INSTALL) lib/*.sld lib/*.scm $(DESTDIR)$(MODDIR)/
|
||||
$(INSTALL) lib/chibi/*.sld lib/chibi/*.scm $(DESTDIR)$(MODDIR)/chibi/
|
||||
$(INSTALL) lib/chibi/io/*.scm $(DESTDIR)$(MODDIR)/chibi/io/
|
||||
$(INSTALL) lib/chibi/loop/*.scm $(DESTDIR)$(MODDIR)/chibi/loop/
|
||||
$(INSTALL) lib/chibi/match/*.scm $(DESTDIR)$(MODDIR)/chibi/match/
|
||||
$(INSTALL) lib/chibi/net/*.sld lib/chibi/net/*.scm $(DESTDIR)$(MODDIR)/chibi/net/
|
||||
$(INSTALL) lib/chibi/optimize/*.sld lib/chibi/optimize/*.scm $(DESTDIR)$(MODDIR)/chibi/optimize/
|
||||
$(INSTALL) lib/chibi/term/*.sld lib/chibi/term/*.scm $(DESTDIR)$(MODDIR)/chibi/term/
|
||||
$(INSTALL) lib/scheme/*.sld lib/scheme/*.scm $(DESTDIR)$(MODDIR)/scheme/
|
||||
$(INSTALL) lib/scheme/char/*.sld $(DESTDIR)$(MODDIR)/scheme/char/
|
||||
$(INSTALL) lib/srfi/*.sld lib/srfi/*.scm $(DESTDIR)$(MODDIR)/srfi/
|
||||
$(INSTALL) lib/srfi/1/*.scm $(DESTDIR)$(MODDIR)/srfi/1/
|
||||
$(INSTALL) lib/srfi/18/*.scm $(DESTDIR)$(MODDIR)/srfi/18/
|
||||
$(INSTALL) lib/srfi/27/*.scm $(DESTDIR)$(MODDIR)/srfi/27/
|
||||
$(INSTALL) lib/srfi/33/*.scm $(DESTDIR)$(MODDIR)/srfi/33/
|
||||
$(INSTALL) lib/srfi/39/*.scm $(DESTDIR)$(MODDIR)/srfi/39/
|
||||
$(INSTALL) lib/srfi/69/*.scm $(DESTDIR)$(MODDIR)/srfi/69/
|
||||
$(INSTALL) lib/srfi/95/*.scm $(DESTDIR)$(MODDIR)/srfi/95/
|
||||
$(INSTALL) lib/srfi/99/*.sld $(DESTDIR)$(MODDIR)/srfi/99/
|
||||
$(INSTALL) lib/srfi/99/records/*.sld lib/srfi/99/records/*.scm $(DESTDIR)$(MODDIR)/srfi/99/records/
|
||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/chibi/io/
|
||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/chibi/optimize/
|
||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/scheme/
|
||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/srfi/18 $(DESTDIR)$(BINMODDIR)/srfi/27 $(DESTDIR)$(BINMODDIR)/srfi/33 $(DESTDIR)$(BINMODDIR)/srfi/39 $(DESTDIR)$(BINMODDIR)/srfi/69 $(DESTDIR)$(BINMODDIR)/srfi/95 $(DESTDIR)$(BINMODDIR)/srfi/98
|
||||
$(INSTALL) $(CHIBI_COMPILED_LIBS) lib/chibi/ast$(SO) $(DESTDIR)$(BINMODDIR)/chibi/
|
||||
$(INSTALL) $(CHIBI_IO_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/io/
|
||||
$(INSTALL) $(CHIBI_OPT_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/optimize/
|
||||
$(INSTALL) lib/scheme/time$(SO) $(DESTDIR)$(BINMODDIR)/scheme/
|
||||
$(INSTALL) lib/srfi/18/threads$(SO) $(DESTDIR)$(BINMODDIR)/srfi/18
|
||||
$(INSTALL) lib/srfi/27/rand$(SO) $(DESTDIR)$(BINMODDIR)/srfi/27
|
||||
$(INSTALL) lib/srfi/33/bit$(SO) $(DESTDIR)$(BINMODDIR)/srfi/33
|
||||
$(INSTALL) lib/srfi/39/param$(SO) $(DESTDIR)$(BINMODDIR)/srfi/39
|
||||
$(INSTALL) lib/srfi/69/hash$(SO) $(DESTDIR)$(BINMODDIR)/srfi/69
|
||||
$(INSTALL) lib/srfi/95/qsort$(SO) $(DESTDIR)$(BINMODDIR)/srfi/95
|
||||
$(INSTALL) lib/srfi/98/env$(SO) $(DESTDIR)$(BINMODDIR)/srfi/98
|
||||
$(MKDIR) $(DESTDIR)$(INCDIR)
|
||||
$(INSTALL) $(INCLUDES) $(DESTDIR)$(INCDIR)/
|
||||
$(MKDIR) $(DESTDIR)$(LIBDIR)
|
||||
$(MKDIR) $(DESTDIR)$(SOLIBDIR)
|
||||
$(INSTALL) libchibi-scheme$(SO) $(DESTDIR)$(SOLIBDIR)/
|
||||
-$(INSTALL) libchibi-scheme.a $(DESTDIR)$(SOLIBDIR)/
|
||||
$(MKDIR) $(DESTDIR)$(MANDIR)
|
||||
$(INSTALL) doc/chibi-scheme.1 $(DESTDIR)$(MANDIR)/
|
||||
-if type ldconfig >/dev/null 2>/dev/null; then ldconfig; fi
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE)
|
||||
rm -f $(DESTDIR)$(BINDIR)/chibi-scheme-static$(EXE)
|
||||
rm -f $(DESTDIR)$(SOLIBDIR)/libchibi-scheme$(SO)
|
||||
rm -f $(DESTDIR)$(LIBDIR)/libchibi-scheme$(SO).a
|
||||
cd $(DESTDIR)$(INCDIR) && rm -f $(INCLUDES) include/chibi/eval.h
|
||||
rm -rf $(DESTDIR)$(MODDIR)
|
||||
rm -rf $(DESTDIR)$(BINMODDIR)
|
||||
$(RM) -f $(DESTDIR)$(BINDIR)/chibi-scheme$(EXE)
|
||||
$(RM) -f $(DESTDIR)$(BINDIR)/chibi-scheme-static$(EXE)
|
||||
$(RM) -f $(DESTDIR)$(SOLIBDIR)/libchibi-scheme$(SO)
|
||||
$(RM) -f $(DESTDIR)$(LIBDIR)/libchibi-scheme$(SO).a
|
||||
$(CD) $(DESTDIR)$(INCDIR) && rm -f $(INCLUDES)
|
||||
$(RM) -f $(DESTDIR)$(MODDIR)/*.{sld,scm} $(DESTDIR)$(MODDIR)/*/*.{sld,scm} $(DESTDIR)$(MODDIR)/*/*/*.{sld,scm}
|
||||
$(CD) $(DESTDIR)$(BINMODDIR) && $(RM) -f $(COMPILED_LIBS:lib/%=%) chibi/ast$(SO)
|
||||
-if [ -d $(DESTDIR)$(BINMODDIR) ] && ! $(LS) -A $(DESTDIR)$(BINMODDIR) | $(GREP) -q -E .; then $(RMDIR) -f $(DESTDIR)$(BINMODDIR); fi
|
||||
|
||||
dist: dist-clean
|
||||
rm -f chibi-scheme-`cat VERSION`.tgz
|
||||
mkdir chibi-scheme-`cat VERSION`
|
||||
for f in `hg manifest`; do mkdir -p chibi-scheme-`cat VERSION`/`dirname $$f`; ln -s `pwd`/$$f chibi-scheme-`cat VERSION`/$$f; done
|
||||
tar cphzvf chibi-scheme-`cat VERSION`.tgz chibi-scheme-`cat VERSION`
|
||||
rm -rf chibi-scheme-`cat VERSION`
|
||||
$(RM) -f chibi-scheme-`cat VERSION`.tgz
|
||||
$(MKDIR) chibi-scheme-`cat VERSION`
|
||||
@for f in `hg manifest`; do $(MKDIR) chibi-scheme-`cat VERSION`/`dirname $$f`; $(SYMLINK) `pwd`/$$f chibi-scheme-`cat VERSION`/$$f; done
|
||||
$(TAR) cphzvf chibi-scheme-`cat VERSION`.tgz chibi-scheme-`cat VERSION`
|
||||
$(RM) -rf chibi-scheme-`cat VERSION`
|
||||
|
||||
mips-dist: dist-clean
|
||||
rm -f chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`.tgz
|
||||
mkdir chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`
|
||||
for f in `hg manifest`; do mkdir -p chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`/`dirname $$f`; ln -s `pwd`/$$f chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`/$$f; done
|
||||
tar cphzvf chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`.tgz chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`
|
||||
rm -rf chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`
|
||||
$(RM) -f chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`.tgz
|
||||
$(MKDIR) chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`
|
||||
@for f in `hg manifest`; do $(MKDIR) chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`/`dirname $$f`; $(SYMLINK) `pwd`/$$f chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`/$$f; done
|
||||
$(TAR) cphzvf chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`.tgz chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`
|
||||
$(RM) -rf chibi-scheme-`date +%Y%m%d`-`hg tags|head -1|sed -n 's/.* \([0-9]*\):.*/\1/p'`
|
||||
|
|
Loading…
Add table
Reference in a new issue