Makefile 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. endif
  53. #for debug building
  54. ifeq ($(DEBUG), 1)
  55. override CFLAGS += -g3 -DDEBUG
  56. else
  57. override CFLAGS += -DNDEBUG
  58. endif
  59. # build target definitions
  60. default: all
  61. all: $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(targets)
  62. lv2syms:
  63. echo "_lv2_descriptor" > lv2syms
  64. $(BUILDDIR)manifest.ttl: $(TTLDIR)manifest.ttl.in
  65. @mkdir -p $(BUILDDIR)
  66. sed "s/@LV2NAME@/$(LV2NAME)/;s/@LIB_EXT@/$(LIB_EXT)/" \
  67. $(TTLDIR)manifest.ttl.in > $(BUILDDIR)manifest.ttl
  68. $(BUILDDIR)$(LV2NAME).ttl: $(TTLDIR)$(LV2NAME).ttl.in
  69. @mkdir -p $(BUILDDIR)
  70. sed "s/@VERSION@/lv2:microVersion $(LV2MIC) ;lv2:minorVersion $(LV2MIN) ;/g" \
  71. $(TTLDIR)$(LV2NAME).ttl.in > $(BUILDDIR)$(LV2NAME).ttl
  72. $(BUILDDIR)$(LV2NAME)$(LIB_EXT): $(SRCDIR)$(LV2NAME).c
  73. @mkdir -p $(BUILDDIR)
  74. $(CC) $(CPPFLAGS) $(CFLAGS) $(LV2CFLAGS) \
  75. -o $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(SRCDIR)$(LV2NAME).c \
  76. -shared $(LV2LDFLAGS) $(LDFLAGS) $(LOADLIBES)
  77. ifeq ($(DEBUG), 0)
  78. $(STRIP) $(STRIPFLAGS) $(BUILDDIR)$(LV2NAME)$(LIB_EXT)
  79. endif
  80. # install/uninstall/clean target definitions
  81. install: all
  82. install -d $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  83. install -m644 $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  84. install -m644 $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  85. uninstall:
  86. rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/manifest.ttl
  87. rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(LV2NAME).ttl
  88. rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(LV2NAME)$(LIB_EXT)
  89. -rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE)
  90. clean:
  91. rm -f $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(BUILDDIR)$(LV2NAME)$(LIB_EXT) lv2syms
  92. -test -d $(BUILDDIR) && rmdir $(BUILDDIR) || true
  93. .PHONY: clean all install uninstall