12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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 rpn_ifs.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_ifs.o: rpn_ifs.c rpn_ifs.h rpn_if.o
- $(CC) $(CFLAGS) -c $<
-
- rpn_lib.o: rpn_lib.asm rpn_lib.h
- $(NASM) $(NASMCFLAGS) -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:
- make -C tests
-
- clean:
- -rm -fv *.o pyrpn.so test;\
- rm -fRv doc/.doxygen.stamp doc/* Doxyfile;\
- make -C tests clean
-
- distclean: clean
- -rm -vf .deps;\
- rm -Rvf tests/__pycache__;
|