94 lines
2.2 KiB
Makefile
94 lines
2.2 KiB
Makefile
CC=gcc
|
|
NASM=nasm
|
|
LD=ld
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CFLAGS=-ggdb -fPIC -Wall -DDEBUG
|
|
LDFLAGS=-g
|
|
NASMCFLAGS=-g -f elf64
|
|
#PYTHON=python3dm
|
|
PYTHON=python3-dbg
|
|
else
|
|
CFLAGS=-fPIC -Wall -Werror
|
|
LDFLAGS=-s
|
|
NASMCFLAGS=-f elf64
|
|
PYTHON=python3
|
|
endif
|
|
|
|
PYTHON_CONFIG=$(PYTHON)-config
|
|
PYTHON_CFLAGS=`$(PYTHON_CONFIG) --includes` `$(PYTHON_CONFIG) --cflags`
|
|
PYTHON_LDFLAGS=-shared -fPIC `$(PYTHON_CONFIG) --libs` `$(PYTHON_CONFIG) --ldflags|cut -d' ' -f1,2`
|
|
|
|
all: .deps pyrpn.so
|
|
|
|
pyrpn.so: python_pyrpn.o python_rpnexpr.o rpn_lib.o rpn_jit.o rpn_parse.o rpn_mutation.o rpn_if.o rpn_if_default.o
|
|
$(LD) $(LDFLAGS) $(PYTHON_LDFLAGS) -o $@ $^
|
|
|
|
python_pyrpn.o: python_pyrpn.c python_rpnexpr.h python_rpnexpr.o rpn_jit.o
|
|
$(CC) $(PYTHON_CFLAGS) $(CFLAGS) -c $<
|
|
|
|
python_rpnexpr.o: python_rpnexpr.c python_rpnexpr.h rpn_jit.o
|
|
$(CC) $(PYTHON_CFLAGS) $(CFLAGS) -c $<
|
|
|
|
rpn_jit.o: rpn_jit.c rpn_jit.h rpn_parse.o rpn_lib.o
|
|
$(CC) $(CFLAGS) -c $<
|
|
|
|
rpn_parse.o: rpn_parse.c rpn_parse.h rpn_lib.o
|
|
$(CC) $(CFLAGS) -c $<
|
|
|
|
rpn_mutation.o: rpn_mutation.c rpn_mutation.h rpn_parse.o
|
|
$(CC) $(CFLAGS) -c $<
|
|
|
|
rpn_if.o: rpn_if.c rpn_if.h rpn_jit.o
|
|
$(CC) $(CFLAGS) -c $<
|
|
|
|
rpn_if_default.o: rpn_if_default.c rpn_if_default.h rpn_if.o
|
|
$(CC) $(CFLAGS) -c $<
|
|
|
|
rpn_lib.o: rpn_lib.asm rpn_lib.h
|
|
$(NASM) $(NASMCFLAGS) -o $@ $<
|
|
|
|
# Dirty & quick tests
|
|
test: test.o rpn_lib.o rpn_jit.o rpn_parse.o
|
|
$(CC) $(CFLAGS) -o $@ $^
|
|
|
|
test.o: test.c
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
# Doxygen documentation
|
|
doc: doc/.doxygen.stamp
|
|
|
|
Doxyfile: Doxyfile.mk
|
|
echo "PROJECT_NUMBER = `cat VERSION`_rev:`git rev-parse --short HEAD`" > $@
|
|
cat $< >> $@
|
|
|
|
doc/.doxygen.stamp: $(wildcard *.c) $(wildcard *.h) Doxyfile
|
|
touch doc/.doxygen.stamp
|
|
doxygen 1>/dev/null
|
|
echo "Documentation in file://`pwd`/doc/html/index.html"
|
|
|
|
# Dependencies checking
|
|
.deps: check_deps.sh
|
|
sh check_deps.sh "$(CC)" "$(LD)" "$(NASM)" "$(PYTHON)" "$(PYTHON_CONFIG)" && touch .deps
|
|
|
|
.PHONY: clean distclean checks runtest unittest benchmark
|
|
|
|
checks: runtest unittest benchmark
|
|
|
|
benchmark: pyrpn.so
|
|
PYTHONPATH=`pwd` $(PYTHON) tests/benchmark.py 0x200 0x3000
|
|
|
|
unittest: pyrpn.so
|
|
PYTHONPATH=`pwd` $(PYTHON) -m unittest
|
|
|
|
runtest: test
|
|
./test
|
|
|
|
clean:
|
|
-rm -fv *.o pyrpn.so test
|
|
-rm -fRv doc/.doxygen.stamp doc/* Doxyfile
|
|
|
|
distclean: clean
|
|
-rm -vf .deps
|
|
-rm -Rvf tests/__pycache__
|
|
|