Makefile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. VERSION = v0.14.005
  2. ifndef DESTDIR
  3. DESTDIR =
  4. endif
  5. ifndef PREFIX
  6. PREFIX = /usr/local
  7. endif
  8. BINDIR = ./bin
  9. DATADIR = ./share/loopidity
  10. ASSETSDIR = ../assets
  11. INSTALLDIR = $(DESTDIR)$(PREFIX)
  12. ifeq (${MSYSTEM},MINGW32)
  13. MINGW = 1
  14. SYSBIN_DIR = /usr/bin
  15. endif
  16. CC = gcc
  17. CXX = g++
  18. AR = ar
  19. LD = g++
  20. CFLAGS = -std=gnu++0x -Wall -MMD -DVERSION=$(VERSION)
  21. ifeq ($(CONFIG),debug)
  22. CFLAGS += -g -DDEBUG=1
  23. LDFLAGS =
  24. OBJDIR = ./obj/Debug/__/src
  25. TARGET = loopidity-dbg
  26. else
  27. CFLAGS += -O3
  28. LDFLAGS = -s
  29. OBJDIR = ./obj/Release/__/src
  30. TARGET = loopidity
  31. CONFIG = 'release'
  32. endif
  33. ifdef MINGW
  34. CFLAGS += -I/usr/include -I/usr/include/SDL -D_GNU_SOURCE=1 -Dmain=SDL_main
  35. LDFLAGS += -L/usr/lib -lmingw32 -lSDLmain -lSDL -mwindows /usr/lib/libjack.lib /usr/lib/libSDL_gfx.dll.a /usr/lib/SDL_ttf.lib
  36. else
  37. CFLAGS += `sdl-config --cflags`
  38. LDFLAGS += `sdl-config --libs` `pkg-config x11 --libs` `pkg-config SDL_ttf --libs` `pkg-config SDL_gfx --libs` `pkg-config jack --libs`
  39. endif
  40. OBJECTS = $(OBJDIR)/jack_io.o \
  41. $(OBJDIR)/loopidity.o \
  42. $(OBJDIR)/loopidity_sdl.o \
  43. $(OBJDIR)/main.o \
  44. $(OBJDIR)/scene.o \
  45. $(OBJDIR)/scene_sdl.o \
  46. $(OBJDIR)/trace.o
  47. ASSETS = $(ASSETSDIR)/histogram_gradient.bmp \
  48. $(ASSETSDIR)/loop_gradient.argb.bmp \
  49. $(ASSETSDIR)/scope_gradient.bmp \
  50. $(ASSETSDIR)/Purisa.ttf
  51. all: before out after
  52. before:
  53. @echo "building $(CONFIG) configuration"
  54. @test -d $(BINDIR) || mkdir -p $(BINDIR)
  55. @test -d $(DATADIR) || mkdir -p $(DATADIR)
  56. @test -d $(OBJDIR) || mkdir -p $(OBJDIR)
  57. out: before $(OBJECTS)
  58. @echo "linking $(CONFIG) binary"
  59. @$(LD) -o $(BINDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS)
  60. $(OBJECTS): $(OBJDIR)/%.o: ../src/%.cpp
  61. @echo " -> compiling $*.cpp"
  62. @$(CXX) $(CFLAGS) -c $< -o $@
  63. after: before out $(ASSETS)
  64. @echo "copying assets to data directory"
  65. @cp --no-clobber $(ASSETS) $(DATADIR)/
  66. clean:
  67. @echo "cleaning $(CONFIG) configuration"
  68. @rm -rf $(BINDIR)
  69. @rm -rf $(DATADIR)
  70. @rm -rf $(OBJDIR)/*.o
  71. assert-writable:
  72. @mkdir -p $(INSTALLDIR)/bin
  73. @mkdir -p $(INSTALLDIR)/share/loopidity
  74. @touch $(INSTALLDIR)/bin/$(TARGET) 2> /dev/null || \
  75. (echo '\nsuperuser privileges required - exiting\n' && exit 255)
  76. install: all assert-writable
  77. @echo installing loopidity
  78. @install -Dm 755 $(BINDIR)/$(TARGET) $(INSTALLDIR)/bin/
  79. @install -Dm 644 $(ASSETS) $(INSTALLDIR)/share/loopidity/
  80. uninstall: assert-writable
  81. @echo uninstalling loopidity
  82. @rm $(INSTALLDIR)/bin/$(TARGET) 2> /dev/null
  83. @rm -rf $(INSTALLDIR)/share/loopidity/ 2> /dev/null
  84. -include $(OBJECTS:%.o=%.d)