Skip to content

Commit

Permalink
Updated build scripts for subtree-based libararies
Browse files Browse the repository at this point in the history
  • Loading branch information
lukego committed Sep 14, 2015
1 parent be03ff5 commit 401932e
Show file tree
Hide file tree
Showing 11 changed files with 33 additions and 90 deletions.
56 changes: 14 additions & 42 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,57 +3,29 @@ LUAOBJ = $(LUASRC:.lua=.o)
CSRC = $(wildcard src/c/*.c)
COBJ = $(CSRC:.c=.o)

LUAJIT := deps/luajit.vsn
SYSCALL := deps/syscall.vsn
PFLUA := deps/pflua.vsn

LUAJIT_CFLAGS := -include $(CURDIR)/gcc-preinclude.h

all: $(LUAJIT) $(SYSCALL) $(PFLUA)
@echo "Building snabbswitch"
# LuaJIT
@(cd lib/luajit && \
$(MAKE) PREFIX=`pwd`/usr/local \
CFLAGS="$(LUAJIT_CFLAGS)" && \
$(MAKE) DESTDIR=`pwd` install)
(cd lib/luajit/usr/local/bin; ln -fs luajit-2.1.0-beta1 luajit)
# ljsyscall
@mkdir -p src/syscall/linux
@cp -p lib/ljsyscall/syscall.lua src/
@cp -p lib/ljsyscall/syscall/*.lua src/syscall/
@cp -p lib/ljsyscall/syscall/linux/*.lua src/syscall/linux/
@cp -pr lib/ljsyscall/syscall/linux/x64 src/syscall/linux/
@cp -pr lib/ljsyscall/syscall/shared src/syscall/
cd src && $(MAKE)

install: all
install -D src/snabb ${PREFIX}/usr/local/bin/snabb

$(LUAJIT):
@if [ ! -f deps/luajit/Makefile ]; then \
echo "Initializing LuaJIT submodule.."; \
git submodule update --init deps/luajit; \
fi
@echo 'Building LuaJIT'
@(cd deps/luajit && \
$(MAKE) PREFIX=`pwd`/usr/local \
CFLAGS="$(LUAJIT_CFLAGS)" && \
$(MAKE) DESTDIR=`pwd` install && \
git describe > ../luajit.vsn)
(cd deps/luajit/usr/local/bin; ln -fs luajit-2.1.0-alpha luajit)

$(PFLUA): $(LUAJIT)
@if [ ! -f deps/pflua/src/pf.lua ]; then \
echo "Initializing pflua submodule.."; \
git submodule update --init deps/pflua; \
fi
# pflua has no tags at time of writing, so use raw commit id
@(cd deps/pflua && git rev-parse HEAD > ../pflua.vsn)

$(SYSCALL): $(PFLUA)
@if [ ! -f deps/ljsyscall/syscall.lua ]; then \
echo "Initializing ljsyscall submodule.."; \
git submodule update --init deps/ljsyscall; \
fi
@echo 'Copying ljsyscall components'
@mkdir -p src/syscall/linux
@cp -p deps/ljsyscall/syscall.lua src/
@cp -p deps/ljsyscall/syscall/*.lua src/syscall/
@cp -p deps/ljsyscall/syscall/linux/*.lua src/syscall/linux/
@cp -pr deps/ljsyscall/syscall/linux/x64 src/syscall/linux/
@cp -pr deps/ljsyscall/syscall/shared src/syscall/
@(cd deps/ljsyscall; git describe > ../ljsyscall.vsn)

clean:
(cd deps/luajit && $(MAKE) clean)
(cd lib/luajit && $(MAKE) clean)
(cd src; $(MAKE) clean; rm -rf syscall.lua syscall)
(rm deps/*.vsn)

.SERIAL: all
49 changes: 10 additions & 39 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,13 @@ E= @echo
#Q=
#E= @:

# Required submodule versions.
# Defined here to detect version mismatches at build time.
LUAJIT_VSN := "v2.0.4-330-g5feb63a"
LJSYSCALL_VSN := "v0.10-65-g7081d97"
PFLUA_VSN := "5e2c56baa0cf1ec471719bac83e2a99c4e2d5495"

TEST_SKIPPED="43"

SRCDIR = $(shell find . -type d -not -regex './obj.*' -printf '%P ')
OBJDIR = $(patsubst %,obj/%,$(SRCDIR))

LUASRC = $(shell find . -regex '[^\#]*\.lua' -printf '%P ')
PFLUASRC = $(shell cd ../deps/pflua/src && \
PFLUASRC = $(shell cd ../lib/pflua/src && \
find . -regex '[^\#]*\.lua' -printf '%P ')
CSRC = $(shell find . -regex '[^\#]*\.c' -not -regex './arch/.*' -printf '%P ')
CHDR = $(shell find . -regex '[^\#]*\.h' -printf '%P ')
Expand Down Expand Up @@ -52,35 +46,12 @@ TESTMODS = $(shell find . -regex '[^\#]*\.lua' -printf '%P ' | \
# for each executable selftext.sh script in src.
TESTSCRIPTS = $(shell find . -name "selftest.sh" -executable | xargs)

PATH := ../deps/luajit/usr/local/bin:$(PATH)
PATH := ../lib/luajit/usr/local/bin:$(PATH)

snabb: $(LUAOBJ) $(PFLUAOBJ) $(HOBJ) $(COBJ) $(ARCHOBJ) $(ASMOBJ) $(INCOBJ) $(LUAJIT_A)
$(E) "SUBMODULES"
@if test ! -f ../deps/luajit.vsn || \
test ! -f ../deps/ljsyscall.vsn || \
test ! -f ../deps/pflua.vsn || \
grep -vqF $(LJSYSCALL_VSN) ../deps/ljsyscall.vsn || \
grep -vqF $(LUAJIT_VSN) ../deps/luajit.vsn || \
grep -vqF $(PFLUA_VSN) ../deps/pflua.vsn; then \
echo "Error: Submodule version mismatch" >&2; \
echo "luajit:" >&2; \
echo " require: $(LUAJIT_VSN)" >&2; \
echo " found: $(shell cat ../deps/luajit.vsn)" >&2; \
echo "ljsyscall:" >&2; \
echo " require: $(LJSYSCALL_VSN)" >&2; \
echo " found: $(shell cat ../deps/ljsyscall.vsn) " >&2; \
echo "pflua:" >&2; \
echo " require: $(PFLUA_VSN)" >&2; \
echo " found: $(shell cat ../deps/pflua.vsn) " >&2; \
echo "" >&2; \
echo "Please update your submodules like this:" >&2; \
echo " make submods" >&2; \
echo "" >&2; \
exit 1; \
fi
$(E) "LINK $@"
$(Q) gcc $(DEBUG) -Wl,--no-as-needed -Wl,-E -Werror -Wall -o $@ $^ \
../deps/luajit/src/libluajit.a \
../lib/luajit/src/libluajit.a \
-lrt -lc -ldl -lm -lpthread
@echo -n "BINARY "
@ln -fs snabb snabbswitch
Expand Down Expand Up @@ -145,22 +116,22 @@ $(LUAOBJ): obj/%_lua.o: %.lua Makefile | $(OBJDIR)
$(E) "LUA $@"
$(Q) luajit -bg -n $(subst /,.,$*) $< $@

$(PFLUAOBJ): obj/%_lua.o: ../deps/pflua/src/%.lua Makefile
$(PFLUAOBJ): obj/%_lua.o: ../lib/pflua/src/%.lua Makefile
$(E) "LUA $@"
$(Q) mkdir -p $(dir $@)
$(Q) luajit -bg -n $(subst /,.,$*) $< $@

$(COBJ): obj/%_c.o: %.c $(CHDR) Makefile | $(OBJDIR)
$(E) "C $@"
$(Q) gcc $(DEBUG) -Wl,-E -I ../deps/luajit/src -I . -include $(CURDIR)/../gcc-preinclude.h -c -Wall -Werror -o $@ $<
$(Q) gcc $(DEBUG) -Wl,-E -I ../lib/luajit/src -I . -include $(CURDIR)/../gcc-preinclude.h -c -Wall -Werror -o $@ $<

obj/arch/avx2_c.o: arch/avx2.c Makefile
$(E) "C(AVX2) $@"
$(Q) gcc -O2 -mavx2 $(DEBUG) -Wl,-E -I ../deps/luajit/src -I . -include $(CURDIR)/../gcc-preinclude.h -c -Wall -Werror -o $@ $<
$(Q) gcc -O2 -mavx2 $(DEBUG) -Wl,-E -I ../lib/luajit/src -I . -include $(CURDIR)/../gcc-preinclude.h -c -Wall -Werror -o $@ $<

obj/arch/sse2_c.o: arch/sse2.c Makefile
$(E) "C(SSE2) $@"
$(Q) gcc -O2 -msse2 $(DEBUG) -Wl,-E -I ../deps/luajit/src -I . -include $(CURDIR)/../gcc-preinclude.h -c -Wall -Werror -o $@ $<
$(Q) gcc -O2 -msse2 $(DEBUG) -Wl,-E -I ../lib/luajit/src -I . -include $(CURDIR)/../gcc-preinclude.h -c -Wall -Werror -o $@ $<

$(HOBJ): obj/%_h.o: %.h Makefile | $(OBJDIR)
$(E) "H $@"
Expand All @@ -174,7 +145,7 @@ $(ASMOBJ): obj/%_dasl.o: %.dasl $(CHDR) Makefile | $(OBJDIR)
$(Q) luajit dynasm.lua -o $@.gen $<
$(Q) luajit -bg -n $(subst /,.,$*) $@.gen $@

$(JITOBJS): obj/jit_%.o: ../deps/luajit/src/jit/%.lua $(OBJDIR)
$(JITOBJS): obj/jit_%.o: ../lib/luajit/src/jit/%.lua $(OBJDIR)
$(E) "LUA $@"
$(Q) luajit -bg -n $(patsubst obj/jit_%.o, jit.%, $@) $< $@

Expand Down Expand Up @@ -207,7 +178,7 @@ obj/jit_tprof.o: extra/tprof.lua | $(OBJDIR)

obj/jit_vmprof.o: extra/vmprof.c | $(OBJDIR)
$(E) "C $@"
$(Q) gcc $(DEBUG) -Wl,-E -O2 -I ../deps/luajit/src -c -Wall -Werror -o $@ $<
$(Q) gcc $(DEBUG) -Wl,-E -O2 -I ../lib/luajit/src -c -Wall -Werror -o $@ $<

book: doc/snabbswitch.pdf doc/snabbswitch.html doc/snabbswitch.epub

Expand All @@ -226,7 +197,7 @@ doc/snabbswitch.epub: doc/snabbswitch.md
$(E) "PANDOC $@"
$(Q) (cd doc; pandoc --self-contained --css="style.css" -S -s --toc --chapters -o snabbswitch.epub snabbswitch.md)

CLEAN = snabb snabbswitch obj bin doc/snabbswitch.* doc/.images/* testlog deps/*.vsn programs.inc
CLEAN = snabb snabbswitch obj bin doc/snabbswitch.* doc/.images/* testlog programs.inc

clean:
$(E) "RM $(CLEAN)"
Expand Down
2 changes: 1 addition & 1 deletion src/jit/bc.lua
2 changes: 1 addition & 1 deletion src/jit/bcsave.lua
2 changes: 1 addition & 1 deletion src/jit/dis_x64.lua
2 changes: 1 addition & 1 deletion src/jit/dis_x86.lua
2 changes: 1 addition & 1 deletion src/jit/dump.lua
2 changes: 1 addition & 1 deletion src/jit/p.lua
2 changes: 1 addition & 1 deletion src/jit/v.lua
2 changes: 1 addition & 1 deletion src/jit/vmdef.lua
2 changes: 1 addition & 1 deletion src/jit/zone.lua

0 comments on commit 401932e

Please sign in to comment.