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.

73 lines
1.3KB

  1. ifdef VERSION
  2. FLAGS += -DVERSION=$(VERSION)
  3. endif
  4. # Generate dependency files alongside the object files
  5. FLAGS += -MMD
  6. FLAGS += -g
  7. # Optimization
  8. FLAGS += -O3
  9. # Native compile flag will be used unless COMMON=true is passed as a parameter to make
  10. ifeq ($(COMMON), true)
  11. FLAGS += -march=nocona
  12. else
  13. FLAGS += -march=native
  14. endif
  15. FLAGS += -ffast-math -fno-finite-math-only
  16. FLAGS += -Wall -Wextra -Wno-unused-parameter
  17. ifneq ($(ARCH), mac)
  18. CXXFLAGS += -Wsuggest-override
  19. endif
  20. CXXFLAGS += -std=c++11
  21. ifeq ($(ARCH), lin)
  22. FLAGS += -DARCH_LIN
  23. endif
  24. ifeq ($(ARCH), mac)
  25. FLAGS += -DARCH_MAC
  26. CXXFLAGS += -stdlib=libc++
  27. LDFLAGS += -stdlib=libc++
  28. MAC_SDK_FLAGS = -mmacosx-version-min=10.7
  29. FLAGS += $(MAC_SDK_FLAGS)
  30. LDFLAGS += $(MAC_SDK_FLAGS)
  31. endif
  32. ifeq ($(ARCH), win)
  33. FLAGS += -DARCH_WIN
  34. FLAGS += -D_USE_MATH_DEFINES
  35. endif
  36. CFLAGS += $(FLAGS)
  37. CXXFLAGS += $(FLAGS)
  38. OBJECTS += $(patsubst %, build/%.o, $(SOURCES))
  39. DEPS = $(patsubst %, build/%.d, $(SOURCES))
  40. # Final targets
  41. $(TARGET): $(OBJECTS)
  42. $(CXX) -o $@ $^ $(LDFLAGS)
  43. -include $(DEPS)
  44. build/%.c.o: %.c
  45. @mkdir -p $(@D)
  46. $(CC) $(CFLAGS) -c -o $@ $<
  47. build/%.cpp.o: %.cpp
  48. @mkdir -p $(@D)
  49. $(CXX) $(CXXFLAGS) -c -o $@ $<
  50. build/%.cc.o: %.cc
  51. @mkdir -p $(@D)
  52. $(CXX) $(CXXFLAGS) -c -o $@ $<
  53. build/%.m.o: %.m
  54. @mkdir -p $(@D)
  55. $(CC) $(CFLAGS) -c -o $@ $<