Makefile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #!/usr/bin/make -f
  2. OPTIMIZATIONS ?= -msse -msse2 -mfpmath=sse -ffast-math -fomit-frame-pointer -O3 -fno-finite-math-only
  3. PREFIX ?= /usr/local
  4. CFLAGS ?= $(OPTIMIZATIONS) -Wall
  5. STRIP?=strip
  6. STRIPFLAGS?=-s
  7. DEBUG?=0
  8. sdenoise_VERSION?=$(shell git describe --tags HEAD 2>/dev/null | sed 's/-g.*$$//;s/^v//' || echo "LV2")
  9. ###############################################################################
  10. LIB_EXT=.so
  11. LV2DIR ?= $(PREFIX)/lib/lv2
  12. LV2NAME=sdenoise
  13. BUNDLE=sdenoise.lv2
  14. BUILDDIR=build/
  15. SRCDIR=src/
  16. TTLDIR=lv2ttl/
  17. targets=
  18. UNAME=$(shell uname)
  19. ifeq ($(UNAME),Darwin)
  20. LV2LDFLAGS=-dynamiclib
  21. LIB_EXT=.dylib
  22. EXTENDED_RE=-E
  23. STRIPFLAGS=-u -r -arch all -s lv2syms
  24. targets+=lv2syms
  25. else
  26. LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic
  27. LIB_EXT=.so
  28. EXTENDED_RE=-r
  29. endif
  30. ifneq ($(XWIN),)
  31. CC=$(XWIN)-gcc
  32. STRIP=$(XWIN)-strip
  33. LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic -Wl,--as-needed
  34. LIB_EXT=.dll
  35. override LDFLAGS += -static-libgcc -static-libstdc++
  36. endif
  37. targets+=$(BUILDDIR)$(LV2NAME)$(LIB_EXT)
  38. ###############################################################################
  39. # extract versions
  40. LV2VERSION=$(snrepel_VERSION)
  41. include git2lv2.mk
  42. # check for build-dependencies
  43. ifeq ($(shell pkg-config --exists lv2 || echo no), no)
  44. $(error "LV2 SDK was not found")
  45. endif
  46. override CFLAGS += -fPIC -std=c99
  47. override CFLAGS += `pkg-config --cflags lv2`
  48. #compiling against a static build of rnnoise
  49. ifneq ($(shell test -f rnnoise/.libs/librnnoise.a || echo no), no)
  50. LV2CFLAGS=$(CFLAGS) -Irnnoise/include
  51. LOADLIBES=rnnoise/.libs/librnnoise.a -lm
  52. else
  53. $(error "RNNoise library was not found")
  54. endif
  55. #for debug building
  56. ifeq ($(DEBUG), 1)
  57. override CFLAGS += -g3 -DDEBUG
  58. else
  59. override CFLAGS += -DNDEBUG
  60. endif
  61. # build target definitions
  62. default: all
  63. all: $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(targets)
  64. lv2syms:
  65. echo "_lv2_descriptor" > lv2syms
  66. $(BUILDDIR)manifest.ttl: $(TTLDIR)manifest.ttl.in
  67. @mkdir -p $(BUILDDIR)
  68. sed "s/@LV2NAME@/$(LV2NAME)/;s/@LIB_EXT@/$(LIB_EXT)/" \
  69. $(TTLDIR)manifest.ttl.in > $(BUILDDIR)manifest.ttl
  70. $(BUILDDIR)$(LV2NAME).ttl: $(TTLDIR)$(LV2NAME).ttl.in
  71. @mkdir -p $(BUILDDIR)
  72. sed "s/@VERSION@/lv2:microVersion $(LV2MIC) ;lv2:minorVersion $(LV2MIN) ;/g" \
  73. $(TTLDIR)$(LV2NAME).ttl.in > $(BUILDDIR)$(LV2NAME).ttl
  74. $(BUILDDIR)$(LV2NAME)$(LIB_EXT): $(SRCDIR)$(LV2NAME).c
  75. @mkdir -p $(BUILDDIR)
  76. $(CC) $(CPPFLAGS) $(CFLAGS) $(LV2CFLAGS) \
  77. -o $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(SRCDIR)$(LV2NAME).c \
  78. -shared $(LV2LDFLAGS) $(LDFLAGS) \
  79. -static -l$(LOADLIBES)
  80. ifeq ($(DEBUG), 0)
  81. $(STRIP) $(STRIPFLAGS) $(BUILDDIR)$(LV2NAME)$(LIB_EXT)
  82. endif
  83. # install/uninstall/clean target definitions
  84. install: all
  85. install -d $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  86. install -m644 $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  87. install -m644 $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  88. uninstall:
  89. rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/manifest.ttl
  90. rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(LV2NAME).ttl
  91. rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(LV2NAME)$(LIB_EXT)
  92. -rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  93. clean:
  94. rm -f $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(BUILDDIR)$(LV2NAME)$(LIB_EXT) lv2syms
  95. -test -d $(BUILDDIR) && rmdir $(BUILDDIR) || true
  96. .PHONY: clean all install uninstall