Makefile 793 B

12345678910111213141516171819202122232425262728293031323334353637
  1. CC = clang
  2. CFLAGS = -Wall -Wextra -Werror -Iextern/BearSSL/inc -Iextern/libuv/include
  3. SRC = $(wildcard src/*.c)
  4. OBJ = $(patsubst src/%.c, obj/%.o, $(SRC))
  5. LIBRARIES = lib/libbearssl.a lib/libuv.a
  6. ifneq "$(findstring debug, $(MAKECMDGOALS))" ""
  7. CFLAGS += -g -fno-omit-frame-pointer -fsanitize=address
  8. else
  9. CFLAGS += -O3
  10. endif
  11. soulmate: $(LIBRARIES) $(OBJ)
  12. $(CC) -o $@ $^ $(CFLAGS) -Llib -luv -lbearssl
  13. obj/%.o: src/%.c
  14. @mkdir -p obj
  15. $(CC) -c -o $@ $< $(CFLAGS)
  16. debug: soulmate
  17. lib/libbearssl.a:
  18. mkdir -p lib
  19. $(MAKE) -C extern/BearSSL
  20. cp extern/BearSSL/build/libbearssl.a lib/
  21. lib/libuv.a:
  22. mkdir -p lib
  23. cd extern/libuv && sh autogen.sh && ./configure
  24. $(MAKE) -C extern/libuv
  25. cp extern/libuv/.libs/libuv.so.1.0.0 lib/libuv.a
  26. .PHONY: clean
  27. clean:
  28. rm -rf obj lib
  29. rm -f soulmate