Fast IFS using RPN notation
python
c
x86-64
nasm
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. CC=gcc
  2. NASM=nasm
  3. LD=ld
  4. ifeq ($(DEBUG), 1)
  5. CFLAGS=-ggdb -fPIC -Wall -DDEBUG
  6. LDFLAGS=-g
  7. NASMCFLAGS=-g -f elf64
  8. #PYTHON=python3dm
  9. PYTHON=python3-dbg
  10. else
  11. CFLAGS=-fPIC -Wall -Werror
  12. LDFLAGS=-s
  13. NASMCFLAGS=-f elf64
  14. PYTHON=python3
  15. endif
  16. PYTHON_CONFIG=$(PYTHON)-config
  17. PYTHON_CFLAGS=`$(PYTHON_CONFIG) --includes` `$(PYTHON_CONFIG) --cflags`
  18. PYTHON_LDFLAGS=-shared -fPIC `$(PYTHON_CONFIG) --libs` `$(PYTHON_CONFIG) --ldflags|cut -d' ' -f1,2`
  19. C_SOURCES=$(wildcard *.c)
  20. C_OBJS=$(patsubst %.c,%.o,$(C_SOURCES))
  21. HEADERS=$(wildcard *.h)
  22. ASM_SOURCES=$(wildcard *.asm)
  23. ASM_OBJS=$(patsubst %.asm,%.o,$(ASM_SOURCES))
  24. OBJS=$(ASM_OBJS) $(C_OBJS)
  25. LIB=pyrpn.so
  26. all: .deps pyrpn.so
  27. $(C_OBJS): %.o: %.c $(HEADERS)
  28. $(CC) $(PYTHON_CFLAGS) $(CFLAGS) -c -o $@ $<
  29. $(ASM_OBJS): %.o: %.asm $(HEADERS)
  30. $(NASM) $(NASMCFLAGS) -o $@ $<
  31. $(LIB): $(OBJS)
  32. $(LD) $(LDFLAGS) $(PYTHON_LDFLAGS) -o $@ $^
  33. # Doxygen documentation
  34. doc: doc/.doxygen.stamp
  35. Doxyfile: Doxyfile.mk
  36. echo "PROJECT_NUMBER = `cat VERSION`_rev:`git rev-parse --short HEAD`" > $@
  37. cat $< >> $@
  38. doc/.doxygen.stamp: $(wildcard *.c) $(wildcard *.h) Doxyfile
  39. touch doc/.doxygen.stamp
  40. doxygen 1>/dev/null
  41. echo "Documentation in file://`pwd`/doc/html/index.html"
  42. # Dependencies checking
  43. .deps: check_deps.sh
  44. sh check_deps.sh "$(CC)" "$(LD)" "$(NASM)" "$(PYTHON)" "$(PYTHON_CONFIG)" && touch .deps
  45. .PHONY: clean distclean checks runtest unittest benchmark
  46. checks: runtest unittest benchmark
  47. benchmark: $(LIB)
  48. PYTHONPATH=`pwd` $(PYTHON) tests/benchmark.py 0x500 0x2000; \
  49. PYTHONPATH=`pwd` $(PYTHON) tests/benchmark.py 0x500 0x4000;
  50. unittest: $(LIB)
  51. PYTHONPATH=`pwd` $(PYTHON) -m unittest -v -f
  52. runtest:
  53. make -C tests
  54. clean:
  55. -rm -fv $(OBJS) $(LIB) test;\
  56. rm -fRv doc/.doxygen.stamp doc/* Doxyfile;\
  57. make -C tests clean
  58. distclean: clean
  59. -rm -vf .deps;\
  60. rm -Rvf tests/__pycache__;