Clean up Makefile and add install target
This commit is contained in:
parent
5b3a7e870b
commit
b3b56c8e44
93
Makefile
93
Makefile
@ -4,41 +4,44 @@ TARGET = kuroko
|
||||
OBJS = $(patsubst %.c, %.o, $(filter-out src/module_% src/rline.c src/kuroko.c,$(sort $(wildcard src/*.c))))
|
||||
MODULES = $(patsubst src/module_%.c, modules/%.so, $(sort $(wildcard src/module_*.c)))
|
||||
HEADERS = $(wildcard src/*.h)
|
||||
VERSION = $(shell ./kuroko --version | sed 's/.* //')
|
||||
SONAME = libkuroko-$(VERSION).so
|
||||
KRKMODS = $(wildcard modules/*.krk modules/*/*.krk modules/*/*/*.krk)
|
||||
|
||||
ifndef KRK_ENABLE_STATIC
|
||||
CFLAGS += -fPIC
|
||||
ifeq (,$(findstring mingw,$(CC)))
|
||||
LDFLAGS += -Wl,-rpath -Wl,'$$ORIGIN' -L.
|
||||
LDLIBS += -ldl -lkuroko
|
||||
CFLAGS += -fPIC
|
||||
ifeq (,$(findstring mingw,$(CC)))
|
||||
LDFLAGS += -Wl,-rpath -Wl,'$$ORIGIN' -L.
|
||||
LDLIBS += -ldl -lkuroko
|
||||
else
|
||||
CFLAGS += -Wno-format
|
||||
LDLIBS += libkuroko.so
|
||||
endif
|
||||
all: ${TARGET} ${MODULES}
|
||||
KUROKO_LIBS = libkuroko.so
|
||||
else
|
||||
CFLAGS += -Wno-format
|
||||
LDLIBS += libkuroko.so
|
||||
endif
|
||||
all: ${TARGET} ${MODULES}
|
||||
KUROKO_LIBS = libkuroko.so
|
||||
else
|
||||
CFLAGS +=-DSTATIC_ONLY
|
||||
LDFLAGS += -static
|
||||
all: ${TARGET}
|
||||
OBJS += src/kuroko.o
|
||||
KUROKO_LIBS = ${OBJS}
|
||||
CFLAGS +=-DSTATIC_ONLY
|
||||
LDFLAGS += -static
|
||||
all: ${TARGET}
|
||||
OBJS += src/kuroko.o
|
||||
KUROKO_LIBS = ${OBJS}
|
||||
endif
|
||||
|
||||
ifndef KRK_DISABLE_RLINE
|
||||
KUROKO_LIBS += src/rline.o
|
||||
KUROKO_LIBS += src/rline.o
|
||||
else
|
||||
CFLAGS += -DNO_RLINE
|
||||
CFLAGS += -DNO_RLINE
|
||||
endif
|
||||
|
||||
ifndef KRK_DISABLE_DEBUG
|
||||
CFLAGS += -DDEBUG
|
||||
CFLAGS += -DDEBUG
|
||||
endif
|
||||
|
||||
ifdef KRK_ENABLE_BUNDLE
|
||||
MODULES =
|
||||
KUROKO_LIBS += $(patsubst %.c,%.o,$(sort $(wildcard src/module_*.c)))
|
||||
CFLAGS += -DBUNDLE_LIBS=1
|
||||
LDLIBS += -lm
|
||||
MODULES =
|
||||
KUROKO_LIBS += $(patsubst %.c,%.o,$(sort $(wildcard src/module_*.c)))
|
||||
CFLAGS += -DBUNDLE_LIBS=1
|
||||
LDLIBS += -lm
|
||||
endif
|
||||
|
||||
.PHONY: help
|
||||
@ -81,6 +84,50 @@ stress-test:
|
||||
@for i in test/*.krk; do echo $$i; KUROKO_TEST_ENV=1 valgrind ./kuroko -g $$i > $$i.expect; done
|
||||
@git diff --exit-code test/*.expect
|
||||
|
||||
LIBCARCH ?= $(shell gcc -print-multiarch)
|
||||
prefix ?= /usr/local
|
||||
exec_prefix ?= $(prefix)
|
||||
includedir ?= $(prefix)/include
|
||||
bindir ?= $(exec_prefix)/bin
|
||||
libdir ?= $(exec_prefix)/lib/$(LIBCARCH)
|
||||
INSTALL = install
|
||||
INSTALL_PROGRAM=$(INSTALL)
|
||||
INSTALL_DATA=$(INSTALL) -m 644
|
||||
|
||||
.PHONY: install
|
||||
install: kuroko libkuroko.so ${HEADERS} $(KRKMODS) $(MODULES)
|
||||
$(INSTALL) -d $(DESTDIR)$(includedir)/kuroko
|
||||
$(INSTALL) -d $(DESTDIR)$(bindir)
|
||||
$(INSTALL) -d $(DESTDIR)$(libdir)
|
||||
$(INSTALL) -d $(DESTDIR)$(bindir)/../lib/kuroko
|
||||
$(INSTALL) -d $(DESTDIR)$(bindir)/../lib/kuroko/syntax
|
||||
$(INSTALL) -d $(DESTDIR)$(bindir)/../lib/kuroko/foo/bar
|
||||
$(INSTALL_DATA) ${HEADERS} $(DESTDIR)$(includedir)/kuroko/
|
||||
$(INSTALL_PROGRAM) kuroko $(DESTDIR)$(bindir)/kuroko
|
||||
$(INSTALL_PROGRAM) libkuroko.so $(DESTDIR)$(libdir)/$(SONAME)
|
||||
ln -s -f $(SONAME) $(DESTDIR)$(libdir)/libkuroko.so
|
||||
$(INSTALL_DATA) modules/*.krk $(DESTDIR)$(bindir)/../lib/kuroko/
|
||||
$(INSTALL_DATA) modules/foo/*.krk $(DESTDIR)$(bindir)/../lib/kuroko/foo/
|
||||
$(INSTALL_DATA) modules/foo/bar/*.krk $(DESTDIR)$(bindir)/../lib/kuroko/foo/bar/
|
||||
$(INSTALL_DATA) modules/syntax/*.krk $(DESTDIR)$(bindir)/../lib/kuroko/syntax/
|
||||
$(INSTALL_PROGRAM) $(MODULES) $(DESTDIR)$(bindir)/../lib/kuroko/
|
||||
|
||||
install-strip: all
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
|
||||
|
||||
.PHONY: deb
|
||||
deb: kuroko libkuroko.so
|
||||
$(MAKE) -f Makefile.install
|
||||
$(eval DESTDIR := $(shell mktemp -d))
|
||||
$(MAKE) prefix=/usr DESTDIR='$(DESTDIR)' install-strip
|
||||
fpm -s dir -C $(DESTDIR) -t deb \
|
||||
-n "kuroko" \
|
||||
-m "K. Lange <klange@toaruos.org>" \
|
||||
--description "Bytecode-compiled interpreted dynamic programming language." \
|
||||
--url "https://kuroko-lang.github.io/" \
|
||||
--license "ISC" \
|
||||
--category "devel" \
|
||||
-d 'libc6 (>= 2.14)' \
|
||||
--version $(VERSION) \
|
||||
--iteration 0 \
|
||||
--directories $(libdir)/kuroko
|
||||
rm -r $(DESTDIR)
|
||||
|
@ -1,39 +0,0 @@
|
||||
REVISION ?= 0
|
||||
BASEDIR ?= /tmp/kuroko-pkg-build
|
||||
LIBCARCH ?= $(shell gcc -print-multiarch)
|
||||
DEBARCH ?= $(shell dpkg --print-architecture)
|
||||
VERSION ?= $(shell ./kuroko --version | sed 's/.* //')
|
||||
TARGET ?= kuroko_$(VERSION)-$(REVISION)_$(DEBARCH).deb
|
||||
|
||||
MAINTAINER ?= 'K. Lange <klange@toaruos.org>'
|
||||
GLIBCDEP ?= 'libc6 (>= 2.14)'
|
||||
DESC ?= "Bytecode-compiled interpreted dynamic programming language."
|
||||
URL ?= 'https://kuroko-lang.github.io/'
|
||||
|
||||
DESTDIR ?= /tmp/kuroko-pkg-build
|
||||
prefix ?= /usr
|
||||
includedir ?= $(prefix)/include
|
||||
bindir ?= $(prefix)/bin
|
||||
libdir ?= $(prefix)/lib
|
||||
|
||||
$(TARGET):
|
||||
# Install headers to target path.
|
||||
-rm -rf $(DESTDIR)
|
||||
mkdir -p $(DESTDIR)$(includedir)/kuroko
|
||||
cp src/*.h $(DESTDIR)$(includedir)/kuroko/
|
||||
# Install interpreter and strip
|
||||
mkdir -p $(DESTDIR)$(bindir)
|
||||
cp kuroko $(DESTDIR)$(bindir)/
|
||||
strip $(DESTDIR)$(bindir)/kuroko
|
||||
# Install libkuroko.so and strip
|
||||
mkdir -p $(DESTDIR)$(libdir)/$(LIBCARCH)
|
||||
cp libkuroko.so $(DESTDIR)$(libdir)/$(LIBCARCH)/libkuroko.so.$(VERSION)
|
||||
ln -s libkuroko.so.$(VERSION) $(DESTDIR)$(libdir)/$(LIBCARCH)/libkuroko.so
|
||||
strip $(DESTDIR)$(libdir)/$(LIBCARCH)/libkuroko.so.$(VERSION)
|
||||
# Install modules and strip
|
||||
mkdir -p $(DESTDIR)$(libdir)/kuroko
|
||||
cp -r modules/* $(DESTDIR)$(libdir)/kuroko/
|
||||
strip $(DESTDIR)$(libdir)/kuroko/*.so
|
||||
# Build package
|
||||
echo "Should build $(TARGET)"
|
||||
fpm -s dir -C $(DESTDIR) -t deb -n kuroko --license ISC --category devel -d $(GLIBCDEP) --version $(VERSION) --iteration $(REVISION) --directories $(libdir)/kuroko -m $(MAINTAINER) --description $(DESC) --url $(URL)
|
Loading…
x
Reference in New Issue
Block a user