1# 2# Makefile 3# 4# Copyright (C) 2010 Creytiv.com 5# 6 7# Master version number 8VER_MAJOR := 0 9VER_MINOR := 5 10VER_PATCH := 8 11 12PROJECT := re 13VERSION := 0.5.8 14 15MK := mk/re.mk 16 17include $(MK) 18 19# List of modules 20MODULES += sip sipevent sipreg sipsess 21MODULES += uri http httpauth msg websock 22MODULES += stun turn ice 23MODULES += natbd 24MODULES += rtp sdp jbuf telev 25MODULES += dns 26MODULES += md5 crc32 sha hmac base64 27MODULES += udp sa net tcp tls 28MODULES += list mbuf hash 29MODULES += fmt tmr main mem dbg sys lock mqueue 30MODULES += mod conf 31MODULES += bfcp 32MODULES += aes srtp 33MODULES += odict 34MODULES += json 35 36INSTALL := install 37ifeq ($(DESTDIR),) 38PREFIX ?= /usr/local 39else 40PREFIX ?= /usr 41endif 42ifeq ($(LIBDIR),) 43LIBDIR := $(PREFIX)/lib 44endif 45INCDIR := $(PREFIX)/include/re 46MKDIR := $(PREFIX)/share/re 47CFLAGS += -Iinclude 48 49MODMKS := $(patsubst %,src/%/mod.mk,$(MODULES)) 50SHARED := libre$(LIB_SUFFIX) 51STATIC := libre.a 52 53include $(MODMKS) 54 55 56OBJS ?= $(patsubst %.c,$(BUILD)/%.o,$(SRCS)) 57 58 59all: $(SHARED) $(STATIC) 60 61 62-include $(OBJS:.o=.d) 63 64 65$(SHARED): $(OBJS) 66 @echo " LD $@" 67 @$(LD) $(LFLAGS) $(SH_LFLAGS) $^ $(LIBS) -o $@ 68 69 70$(STATIC): $(OBJS) 71 @echo " AR $@" 72 @$(AR) $(AFLAGS) $@ $^ 73ifneq ($(RANLIB),) 74 @$(RANLIB) $@ 75endif 76 77libre.pc: 78 @echo 'prefix='$(PREFIX) > libre.pc 79 @echo 'exec_prefix=$${prefix}' >> libre.pc 80 @echo 'libdir=$${prefix}/lib' >> libre.pc 81 @echo 'includedir=$${prefix}/include/re' >> libre.pc 82 @echo '' >> libre.pc 83 @echo 'Name: libre' >> libre.pc 84 @echo 'Description: ' >> libre.pc 85 @echo 'Version: '$(VERSION) >> libre.pc 86 @echo 'URL: http://creytiv.com/re.html' >> libre.pc 87 @echo 'Libs: -L$${libdir} -lre' >> libre.pc 88 @echo 'Libs.private: -L$${libdir} -lre ${LIBS}' >> libre.pc 89 @echo 'Cflags: -I$${includedir}' >> libre.pc 90 91$(BUILD)/%.o: src/%.c $(BUILD) Makefile $(MK) $(MODMKS) 92 @echo " CC $@" 93 @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS) 94 95 96$(BUILD): Makefile $(MK) $(MODMKS) 97 @mkdir -p $(patsubst %,$(BUILD)/%,$(sort $(dir $(SRCS)))) 98 @touch $@ 99 100 101.PHONY: clean 102clean: 103 @rm -rf $(SHARED) $(STATIC) libre.pc test.d test.o test $(BUILD) 104 105 106install: $(SHARED) $(STATIC) libre.pc 107 @mkdir -p $(DESTDIR)$(LIBDIR) $(DESTDIR)$(LIBDIR)/pkgconfig \ 108 $(DESTDIR)$(INCDIR) $(DESTDIR)$(MKDIR) 109 $(INSTALL) -m 0644 $(shell find include -name "*.h") \ 110 $(DESTDIR)$(INCDIR) 111 $(INSTALL) -m 0755 $(SHARED) $(DESTDIR)$(LIBDIR) 112 $(INSTALL) -m 0755 $(STATIC) $(DESTDIR)$(LIBDIR) 113 $(INSTALL) -m 0644 libre.pc $(DESTDIR)$(LIBDIR)/pkgconfig 114 $(INSTALL) -m 0644 $(MK) $(DESTDIR)$(MKDIR) 115 116uninstall: 117 @rm -rf $(DESTDIR)$(INCDIR) 118 @rm -rf $(DESTDIR)$(MKDIR) 119 @rm -f $(DESTDIR)$(LIBDIR)/$(SHARED) 120 @rm -f $(DESTDIR)$(LIBDIR)/$(STATIC) 121 @rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/libre.pc 122 123-include test.d 124 125test.o: test.c Makefile $(MK) 126 @echo " CC $@" 127 @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS) 128 129test$(BIN_SUFFIX): test.o $(SHARED) $(STATIC) 130 @echo " LD $@" 131 @$(LD) $(LFLAGS) $< -L. -lre $(LIBS) -o $@ 132 133sym: $(SHARED) 134 @nm $(SHARED) | grep " U " | perl -pe 's/\s*U\s+(.*)/$${1}/' \ 135 > docs/symbols.txt 136 @echo "$(SHARED) is using `cat docs/symbols.txt | wc -l ` symbols" 137