summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile241
1 files changed, 241 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..db5dc0c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,241 @@
+#
+# Makefile
+#
+# Copyright (C) 2010 Creytiv.com
+#
+#
+# Internal features:
+#
+# USE_TLS Enable SIP over TLS transport
+# USE_VIDEO Enable Video-support
+#
+
+USE_VIDEO := 1
+
+PROJECT := baresip
+VERSION := 0.4.10
+
+ifndef LIBRE_MK
+LIBRE_MK := $(shell [ -f ../re/mk/re.mk ] && \
+ echo "../re/mk/re.mk")
+ifeq ($(LIBRE_MK),)
+LIBRE_MK := $(shell [ -f ../re-$(VERSION)/mk/re.mk ] && \
+ echo "../re-$(VERSION)/mk/re.mk")
+endif
+ifeq ($(LIBRE_MK),)
+LIBRE_MK := $(shell [ -f /usr/share/re/re.mk ] && \
+ echo "/usr/share/re/re.mk")
+endif
+ifeq ($(LIBRE_MK),)
+LIBRE_MK := $(shell [ -f /usr/local/share/re/re.mk ] && \
+ echo "/usr/local/share/re/re.mk")
+endif
+endif
+
+include $(LIBRE_MK)
+include mk/modules.mk
+
+ifndef LIBREM_PATH
+LIBREM_PATH := $(shell [ -d ../rem ] && echo "../rem")
+endif
+
+
+CFLAGS += -I. -Iinclude -I$(LIBRE_INC) -I$(SYSROOT)/include
+CFLAGS += -I$(LIBREM_PATH)/include
+CFLAGS += -I$(SYSROOT)/local/include/rem -I$(SYSROOT)/include/rem
+
+CXXFLAGS += -I. -Iinclude -I$(LIBRE_INC)
+CXXFLAGS += -I$(LIBREM_PATH)/include
+CXXFLAGS += -I$(SYSROOT)/local/include/rem -I$(SYSROOT)/include/rem
+CXXFLAGS += $(EXTRA_CXXFLAGS)
+
+ifneq ($(LIBREM_PATH),)
+SPLINT_OPTIONS += -I$(LIBREM_PATH)/include
+CLANG_OPTIONS += -I$(LIBREM_PATH)/include
+endif
+
+ifeq ($(OS),win32)
+STATIC := yes
+endif
+
+
+# Optional dependencies
+ifneq ($(USE_VIDEO),)
+CFLAGS += -DUSE_VIDEO=1
+endif
+ifneq ($(STATIC),)
+CFLAGS += -DSTATIC=1
+CXXFLAGS += -DSTATIC=1
+endif
+CFLAGS += -DMODULE_CONF
+
+INSTALL := install
+ifeq ($(DESTDIR),)
+PREFIX := /usr/local
+else
+PREFIX := /usr
+endif
+BINDIR := $(PREFIX)/bin
+INCDIR := $(PREFIX)/include
+BIN := $(PROJECT)$(BIN_SUFFIX)
+SHARED := lib$(PROJECT)$(LIB_SUFFIX)
+STATICLIB := libbaresip.a
+ifeq ($(STATIC),)
+MOD_BINS:= $(patsubst %,%$(MOD_SUFFIX),$(MODULES))
+endif
+APP_MK := src/srcs.mk
+MOD_MK := $(patsubst %,modules/%/module.mk,$(MODULES))
+MOD_BLD := $(patsubst %,$(BUILD)/modules/%,$(MODULES))
+LIBDIR := $(PREFIX)/lib
+MOD_PATH := $(LIBDIR)/$(PROJECT)/modules
+SHARE_PATH := $(PREFIX)/share/$(PROJECT)
+CFLAGS += -DPREFIX=\"$(PREFIX)\"
+
+
+all: sanity $(MOD_BINS) $(BIN)
+
+.PHONY: modules
+modules: $(MOD_BINS)
+
+include $(APP_MK)
+include $(MOD_MK)
+
+OBJS := $(patsubst %.c,$(BUILD)/src/%.o,$(filter %.c,$(SRCS)))
+OBJS += $(patsubst %.m,$(BUILD)/src/%.o,$(filter %.m,$(SRCS)))
+OBJS += $(patsubst %.S,$(BUILD)/src/%.o,$(filter %.S,$(SRCS)))
+
+APP_OBJS := $(OBJS) $(patsubst %.c,$(BUILD)/src/%.o,$(APP_SRCS)) $(MOD_OBJS)
+
+ifneq ($(LIBREM_PATH),)
+LIBS += -L$(LIBREM_PATH)
+endif
+
+# Static build: include module linker-flags in binary
+ifneq ($(STATIC),)
+LIBS += $(MOD_LFLAGS)
+else
+LIBS += -L$(SYSROOT)/local/lib
+MOD_LFLAGS += -L$(SYSROOT)/local/lib
+endif
+
+LIBS += -lrem -lm
+
+
+-include $(APP_OBJS:.o=.d)
+
+sanity:
+ifeq ($(LIBRE_MK),)
+ @echo "ERROR: Missing common makefile for libre. Check LIBRE_MK"
+ @exit 2
+endif
+ifeq ($(LIBRE_INC),)
+ @echo "ERROR: Missing header files for libre. Check LIBRE_INC"
+ @exit 2
+endif
+ifeq ($(LIBRE_SO),)
+ @echo "ERROR: Missing library files for libre. Check LIBRE_SO"
+ @exit 2
+endif
+
+Makefile: mk/*.mk $(MOD_MK) $(LIBRE_MK)
+
+
+$(SHARED): $(APP_OBJS)
+ @echo " LD $@"
+ @$(LD) $(LFLAGS) $(SH_LFLAGS) $^ -L$(LIBRE_SO) -lre $(LIBS) -o $@
+
+$(STATICLIB): $(APP_OBJS)
+ @echo " AR $@"
+ @rm -f $@; $(AR) $(AFLAGS) $@ $^
+ifneq ($(RANLIB),)
+ @echo " RANLIB $@"
+ @$(RANLIB) $@
+endif
+
+# GPROF requires static linking
+$(BIN): $(APP_OBJS)
+ @echo " LD $@"
+ifneq ($(GPROF),)
+ @$(LD) $(LFLAGS) $(APP_LFLAGS) $^ ../re/libre.a $(LIBS) -o $@
+else
+ @$(LD) $(LFLAGS) $(APP_LFLAGS) $^ -L$(LIBRE_SO) -lre $(LIBS) -o $@
+endif
+
+$(BUILD)/%.o: %.c $(BUILD) Makefile $(APP_MK)
+ @echo " CC $@"
+ @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
+
+$(BUILD)/%.o: %.m $(BUILD) Makefile $(APP_MK)
+ @echo " OC $@"
+ @$(CC) $(CFLAGS) $(OBJCFLAGS) -c $< -o $@ $(DFLAGS)
+
+$(BUILD)/%.o: %.S $(BUILD) Makefile $(APP_MK)
+ @echo " AS $@"
+ @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
+
+$(BUILD): Makefile
+ @mkdir -p $(BUILD)/src $(MOD_BLD)
+ @touch $@
+
+install: $(BIN) $(MOD_BINS)
+ @mkdir -p $(DESTDIR)$(BINDIR)
+ $(INSTALL) -m 0755 $(BIN) $(DESTDIR)$(BINDIR)
+ @mkdir -p $(DESTDIR)$(MOD_PATH)
+ $(INSTALL) -m 0644 $(MOD_BINS) $(DESTDIR)$(MOD_PATH)
+ @mkdir -p $(DESTDIR)$(SHARE_PATH)
+ $(INSTALL) -m 0644 share/* $(DESTDIR)$(SHARE_PATH)
+
+install-dev: install-shared install-static
+
+install-shared: $(SHARED)
+ @mkdir -p $(DESTDIR)$(INCDIR)
+ $(INSTALL) -Cm 0644 include/baresip.h $(DESTDIR)$(INCDIR)
+ @mkdir -p $(DESTDIR)$(LIBDIR)
+ $(INSTALL) -m 0644 $(SHARED) $(DESTDIR)$(LIBDIR)
+
+install-static: $(STATICLIB)
+ @mkdir -p $(DESTDIR)$(INCDIR)
+ $(INSTALL) -Cm 0644 include/baresip.h $(DESTDIR)$(INCDIR)
+ @mkdir -p $(DESTDIR)$(LIBDIR)
+ $(INSTALL) -m 0644 $(STATICLIB) $(DESTDIR)$(LIBDIR)
+
+uninstall:
+ @rm -f $(DESTDIR)$(PREFIX)/bin/$(BIN)
+ @rm -rf $(DESTDIR)$(MOD_PATH)
+
+.PHONY: clean
+clean:
+ @rm -rf $(BIN) $(MOD_BINS) $(SHARED) $(BUILD)
+ @rm -f *stamp \
+ `find . -name "*.[od]"` \
+ `find . -name "*~"` \
+ `find . -name "\.\#*"`
+
+.PHONY: ccheck
+ccheck:
+ @ccheck.pl > /dev/null
+
+version:
+ @perl -pi -e 's/BARESIP_VERSION.*/BARESIP_VERSION \"$(VERSION)"/' \
+ include/baresip.h
+ @perl -pi -e "s/PROJECT_NUMBER = .*/\
+PROJECT_NUMBER = $(VERSION)/" \
+ mk/Doxyfile
+ @echo "updating version number to $(VERSION)"
+
+src/static.c: $(BUILD) Makefile $(APP_MK) $(MOD_MK)
+ @echo " SH $@"
+ @echo "/* static.c - autogenerated by makefile */" > $@
+ @echo "#include <re_types.h>" >> $@
+ @echo "#include <re_mod.h>" >> $@
+ @echo "" >> $@
+ @for n in $(MODULES); do \
+ echo "extern const struct mod_export exports_$${n};" >> $@ ; \
+ done
+ @echo "" >> $@
+ @echo "const struct mod_export *mod_table[] = {" >> $@
+ @for n in $(MODULES); do \
+ echo " &exports_$${n}," >> $@ ; \
+ done
+ @echo " NULL" >> $@
+ @echo "};" >> $@