build.mk 958 B

12345678910111213141516171819202122232425262728293031
  1. SANITIZE := -fsanitize-address-use-after-scope \
  2. -fsanitize=leak -fsanitize=undefined \
  3. -fno-omit-frame-pointer -fno-optimize-sibling-calls \
  4. -fsanitize=address,undefined,pointer-subtract,pointer-compare
  5. DEBUG_CFLAGS := -ggdb -g3 -O0
  6. RELEASE_CFLAGS := -march=native -O3 -flto -fPIC -fPIE \
  7. -freciprocal-math -fstack-protector-strong \
  8. -ftree-vectorize -funroll-loops -fno-math-errno \
  9. -fno-trapping-math -fno-math-errno -ffinite-math-only \
  10. -fno-rounding-math -fno-signed-zeros -fassociative-math
  11. RELEASE_LDFLAGS := -Wl,-O4 -Wl,--as-needed -Wl,-z,now -Wl,-z,relro
  12. RELEASE_CPPFLAGS := -D_FORTIFY_SOURCE=2
  13. .PHONY: debug
  14. debug: all
  15. debug: CFLAGS += ${DEBUG_CFLAGS}
  16. .PHONY: sanitize
  17. sanitize: debug
  18. sanitize: CFLAGS += ${SANITIZE}
  19. sanitize: LDFLAGS += ${SANITIZE}
  20. .PHONY: release
  21. release: all
  22. release: CFLAGS += ${RELEASE_CFLAGS}
  23. release: LDFLAGS += ${RELEASE_LDFLAGS}
  24. release: CPPFLAGS += ${RELEASE_CPPFLAGS}