1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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`
-
- C_SOURCES=$(wildcard *.c)
- C_OBJS=$(patsubst %.c,%.o,$(C_SOURCES))
- HEADERS=$(wildcard *.h)
- ASM_SOURCES=$(wildcard *.asm)
- ASM_OBJS=$(patsubst %.asm,%.o,$(ASM_SOURCES))
- OBJS=$(ASM_OBJS) $(C_OBJS)
- LIB=pyrpn.so
-
- all: .deps pyrpn.so
-
- $(C_OBJS): %.o: %.c $(HEADERS)
- $(CC) $(PYTHON_CFLAGS) $(CFLAGS) -c -o $@ $<
-
- $(ASM_OBJS): %.o: %.asm $(HEADERS)
- $(NASM) $(NASMCFLAGS) -o $@ $<
-
- $(LIB): $(OBJS)
- $(LD) $(LDFLAGS) $(PYTHON_LDFLAGS) -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: $(LIB)
- PYTHONPATH=`pwd` $(PYTHON) tests/benchmark.py 0x500 0x2000; \
- PYTHONPATH=`pwd` $(PYTHON) tests/benchmark.py 0x500 0x4000;
-
-
- unittest: $(LIB)
- PYTHONPATH=`pwd` $(PYTHON) -m unittest -v -f
-
- runtest:
- make -C tests
-
- clean:
- -rm -fv $(OBJS) $(LIB) test;\
- rm -fRv doc/.doxygen.stamp doc/* Doxyfile;\
- make -C tests clean
-
- distclean: clean
- -rm -vf .deps;\
- rm -Rvf tests/__pycache__;
|