Makefile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. LDFLAGS= -lm
  13. LV2NAME=sdenoise
  14. BUNDLE=sdenoise.lv2
  15. BUILDDIR=build/
  16. SRCDIR=src/
  17. TTLDIR=lv2ttl/
  18. targets=
  19. UNAME=$(shell uname)
  20. ifeq ($(UNAME),Darwin)
  21. LV2LDFLAGS=-dynamiclib
  22. LIB_EXT=.dylib
  23. EXTENDED_RE=-E
  24. STRIPFLAGS=-u -r -arch all -s lv2syms
  25. targets+=lv2syms
  26. else
  27. LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic
  28. LIB_EXT=.so
  29. EXTENDED_RE=-r
  30. endif
  31. ifneq ($(XWIN),)
  32. CC=$(XWIN)-gcc
  33. STRIP=$(XWIN)-strip
  34. LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic -Wl,--as-needed
  35. LIB_EXT=.dll
  36. override LDFLAGS += -static-libgcc -static-libstdc++
  37. endif
  38. targets+=$(BUILDDIR)$(LV2NAME)$(LIB_EXT)
  39. ###############################################################################
  40. # extract versions
  41. LV2VERSION=$(snrepel_VERSION)
  42. include git2lv2.mk
  43. # check for build-dependencies
  44. ifeq ($(shell pkg-config --exists lv2 || echo no), no)
  45. $(error "LV2 SDK was not found")
  46. endif
  47. override CFLAGS += -fPIC -std=c99
  48. override CFLAGS += `pkg-config --cflags lv2`
  49. #compiling against a static build of rnnoise
  50. ifneq ($(shell test -f ./rnnoise/.libs/librnnoise.a || echo no), no)
  51. LV2CFLAGS= -I./rnnoise/include
  52. LOADLIBES=./rnnoise/.libs/librnnoise.a
  53. else
  54. $(error "RNNoise library was not found")
  55. endif
  56. #for debug building
  57. ifeq ($(DEBUG), 1)
  58. override CFLAGS += -g3 -DDEBUG
  59. else
  60. override CFLAGS += -DNDEBUG
  61. endif
  62. # build target definitions
  63. default: all
  64. all: $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(targets)
  65. lv2syms:
  66. echo "_lv2_descriptor" > lv2syms
  67. $(BUILDDIR)manifest.ttl: $(TTLDIR)manifest.ttl.in
  68. @mkdir -p $(BUILDDIR)
  69. sed "s/@LV2NAME@/$(LV2NAME)/;s/@LIB_EXT@/$(LIB_EXT)/" \
  70. $(TTLDIR)manifest.ttl.in > $(BUILDDIR)manifest.ttl
  71. $(BUILDDIR)$(LV2NAME).ttl: $(TTLDIR)$(LV2NAME).ttl.in
  72. @mkdir -p $(BUILDDIR)
  73. sed "s/@VERSION@/lv2:microVersion $(LV2MIC) ;lv2:minorVersion $(LV2MIN) ;/g" \
  74. $(TTLDIR)$(LV2NAME).ttl.in > $(BUILDDIR)$(LV2NAME).ttl
  75. $(BUILDDIR)$(LV2NAME)$(LIB_EXT): $(SRCDIR)$(LV2NAME).c
  76. @mkdir -p $(BUILDDIR)
  77. $(CC) $(CFLAGS) $(LV2CFLAGS) \
  78. -o $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(SRCDIR)$(LV2NAME).c \
  79. -shared $(LV2LDFLAGS) $(LDFLAGS) $(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