Makefile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. GIT_SHA=$(shell git rev-parse --short HEAD)
  2. DISABLED_WARNINGS=-Wno-switch -Wno-macro-redefined -Wno-unused-value
  3. LDFLAGS=-pthread -lm -lstdc++
  4. CFLAGS=-std=c++14 -DGIT_SHA=\"$(GIT_SHA)\"
  5. CFLAGS:=$(CFLAGS) -DODIN_VERSION_RAW=\"dev-$(shell date +"%Y-%m")\"
  6. CC=clang
  7. OS=$(shell uname)
  8. ifeq ($(OS), Darwin)
  9. ARCH=$(shell uname -m)
  10. LLVM_CONFIG=llvm-config
  11. # allow for arm only llvm's with version 13
  12. ifeq ($(ARCH), arm64)
  13. LLVM_VERSIONS = "13.%.%"
  14. else
  15. # allow for x86 / amd64 all llvm versions begining from 11
  16. LLVM_VERSIONS = "13.%.%" "12.0.1" "11.1.0"
  17. endif
  18. LLVM_VERSION_PATTERN_SEPERATOR = )|(
  19. LLVM_VERSION_PATTERNS_ESCAPED_DOT = $(subst .,\.,$(LLVM_VERSIONS))
  20. LLVM_VERSION_PATTERNS_REPLACE_PERCENT = $(subst %,.*,$(LLVM_VERSION_PATTERNS_ESCAPED_DOT))
  21. LLVM_VERSION_PATTERN_REMOVE_ELEMENTS = $(subst " ",$(LLVM_VERSION_PATTERN_SEPERATOR),$(LLVM_VERSION_PATTERNS_REPLACE_PERCENT))
  22. LLMV_VERSION_PATTERN_REMOVE_SINGLE_STR = $(subst ",,$(LLVM_VERSION_PATTERN_REMOVE_ELEMENTS))
  23. LLVM_VERSION_PATTERN = "^(($(LLMV_VERSION_PATTERN_REMOVE_SINGLE_STR)))"
  24. ifeq ($(shell $(LLVM_CONFIG) --version | grep -E $(LLVM_VERSION_PATTERN)),)
  25. ifeq ($(ARCH), arm64)
  26. $(error "Requirement: llvm-config must be base version 13 for arm64")
  27. else
  28. $(error "Requirement: llvm-config must be base version greater than 11 for amd64/x86")
  29. endif
  30. endif
  31. LDFLAGS:=$(LDFLAGS) -liconv -ldl
  32. CFLAGS:=$(CFLAGS) $(shell $(LLVM_CONFIG) --cxxflags --ldflags)
  33. LDFLAGS:=$(LDFLAGS) -lLLVM-C
  34. endif
  35. ifeq ($(OS), Linux)
  36. LLVM_CONFIG=llvm-config-11
  37. ifneq ($(shell which llvm-config-11 2>/dev/null),)
  38. LLVM_CONFIG=llvm-config-11
  39. else ifneq ($(shell which llvm-config-11-64 2>/dev/null),)
  40. LLVM_CONFIG=llvm-config-11-64
  41. else
  42. ifeq ($(shell $(LLVM_CONFIG) --version | grep '^11\.'),)
  43. $(error "Requirement: llvm-config must be version 11")
  44. endif
  45. endif
  46. LDFLAGS:=$(LDFLAGS) -ldl
  47. CFLAGS:=$(CFLAGS) $(shell $(LLVM_CONFIG) --cxxflags --ldflags)
  48. LDFLAGS:=$(LDFLAGS) $(shell $(LLVM_CONFIG) --libs core native --system-libs)
  49. endif
  50. ifeq ($(OS), OpenBSD)
  51. LLVM_CONFIG=/usr/local/bin/llvm-config
  52. LDFLAGS:=$(LDFLAGS) -liconv
  53. CFLAGS:=$(CFLAGS) $(shell $(LLVM_CONFIG) --cxxflags --ldflags)
  54. LDFLAGS:=$(LDFLAGS) $(shell $(LLVM_CONFIG) --libs core native --system-libs)
  55. endif
  56. all: debug demo
  57. demo:
  58. ./odin run examples/demo/demo.odin
  59. report:
  60. ./odin report
  61. debug:
  62. $(CC) src/main.cpp src/libtommath.cpp $(DISABLED_WARNINGS) $(CFLAGS) -g $(LDFLAGS) -o odin
  63. release:
  64. $(CC) src/main.cpp src/libtommath.cpp $(DISABLED_WARNINGS) $(CFLAGS) -O3 $(LDFLAGS) -o odin
  65. release_native:
  66. $(CC) src/main.cpp src/libtommath.cpp $(DISABLED_WARNINGS) $(CFLAGS) -O3 -march=native $(LDFLAGS) -o odin
  67. nightly:
  68. $(CC) src/main.cpp src/libtommath.cpp $(DISABLED_WARNINGS) $(CFLAGS) -DNIGHTLY -O3 $(LDFLAGS) -o odin