1VERSION=v2.4
2
3prefix=/usr/local
4
5incdir=$(prefix)/include/librtmp
6bindir=$(prefix)/bin
7libdir=$(prefix)/lib
8mandir=$(prefix)/man
9BINDIR=$(DESTDIR)$(bindir)
10INCDIR=$(DESTDIR)$(incdir)
11LIBDIR=$(DESTDIR)$(libdir)
12MANDIR=$(DESTDIR)$(mandir)
13
14CC=$(CROSS_COMPILE)gcc
15LD=$(CROSS_COMPILE)ld
16AR=$(CROSS_COMPILE)ar
17
18SYS=posix
19CRYPTO=OPENSSL
20#CRYPTO=GNUTLS
21DEF_POLARSSL=-DUSE_POLARSSL
22DEF_OPENSSL=-DUSE_OPENSSL
23DEF_GNUTLS=-DUSE_GNUTLS
24DEF_=-DNO_CRYPTO
25REQ_GNUTLS=gnutls,hogweed,nettle
26REQ_OPENSSL=libssl,libcrypto
27PUB_GNUTLS=-lgmp
28LIBZ=-lz
29LIBS_posix=
30LIBS_darwin=
31LIBS_mingw=-lws2_32 -lwinmm -lgdi32
32LIB_GNUTLS=-lgnutls -lhogweed -lnettle -lgmp $(LIBZ)
33LIB_OPENSSL=-lssl -lcrypto $(LIBZ)
34LIB_POLARSSL=-lpolarssl $(LIBZ)
35PRIVATE_LIBS=$(LIBS_$(SYS))
36CRYPTO_LIB=$(LIB_$(CRYPTO)) $(PRIVATE_LIBS)
37CRYPTO_REQ=$(REQ_$(CRYPTO))
38CRYPTO_DEF=$(DEF_$(CRYPTO))
39PUBLIC_LIBS=$(PUB_$(CRYPTO))
40
41SO_VERSION=1
42SOX_posix=so
43SOX_darwin=dylib
44SOX_mingw=dll
45SOX=$(SOX_$(SYS))
46SO_posix=.$(SOX).$(SO_VERSION)
47SO_darwin=.$(SO_VERSION).$(SOX)
48SO_mingw=-$(SO_VERSION).$(SOX)
49SO_EXT=$(SO_$(SYS))
50
51SODIR_posix=$(LIBDIR)
52SODIR_darwin=$(LIBDIR)
53SODIR_mingw=$(BINDIR)
54SODIR=$(SODIR_$(SYS))
55
56SO_LDFLAGS_posix=-shared -Wl,-soname,$@
57SO_LDFLAGS_darwin=-dynamiclib -twolevel_namespace -undefined dynamic_lookup \
58	-fno-common -headerpad_max_install_names -install_name $(libdir)/$@
59SO_LDFLAGS_mingw=-shared -Wl,--out-implib,librtmp.dll.a
60SO_LDFLAGS=$(SO_LDFLAGS_$(SYS))
61
62INSTALL_IMPLIB_posix=
63INSTALL_IMPLIB_darwin=
64INSTALL_IMPLIB_mingw=cp librtmp.dll.a $(LIBDIR)
65INSTALL_IMPLIB=$(INSTALL_IMPLIB_$(SYS))
66
67SHARED=yes
68SODEF_yes=-fPIC
69SOLIB_yes=librtmp$(SO_EXT)
70SOINST_yes=install_so
71SO_DEF=$(SODEF_$(SHARED))
72SO_LIB=$(SOLIB_$(SHARED))
73SO_INST=$(SOINST_$(SHARED))
74
75DEF=-DRTMPDUMP_VERSION=\"$(VERSION)\" $(CRYPTO_DEF) $(XDEF)
76OPT=-O2
77CFLAGS=-Wall $(XCFLAGS) $(INC) $(DEF) $(OPT) $(SO_DEF)
78LDFLAGS=$(XLDFLAGS)
79
80
81OBJS=rtmp.o log.o amf.o hashswf.o parseurl.o
82
83all:	librtmp.a $(SO_LIB)
84
85clean:
86	rm -f *.o *.a *.$(SOX) *$(SO_EXT) librtmp.pc
87
88librtmp.a: $(OBJS)
89	$(AR) rs $@ $?
90
91librtmp$(SO_EXT): $(OBJS)
92	$(CC) $(SO_LDFLAGS) $(LDFLAGS) -o $@ $^ $> $(CRYPTO_LIB)
93	ln -sf $@ librtmp.$(SOX)
94
95log.o: log.c log.h Makefile
96rtmp.o: rtmp.c rtmp.h rtmp_sys.h handshake.h dh.h log.h amf.h Makefile
97amf.o: amf.c amf.h bytes.h log.h Makefile
98hashswf.o: hashswf.c http.h rtmp.h rtmp_sys.h Makefile
99parseurl.o: parseurl.c rtmp.h rtmp_sys.h log.h Makefile
100
101librtmp.pc: librtmp.pc.in Makefile
102	sed -e "s;@prefix@;$(prefix);" -e "s;@libdir@;$(libdir);" \
103		-e "s;@VERSION@;$(VERSION);" \
104		-e "s;@CRYPTO_REQ@;$(CRYPTO_REQ);" \
105		-e "s;@PUBLIC_LIBS@;$(PUBLIC_LIBS);" \
106		-e "s;@PRIVATE_LIBS@;$(PRIVATE_LIBS);" librtmp.pc.in > $@
107
108install:	install_base $(SO_INST)
109
110install_base:	librtmp.a librtmp.pc
111	-mkdir -p $(INCDIR) $(LIBDIR)/pkgconfig $(MANDIR)/man3 $(SODIR)
112	cp amf.h http.h log.h rtmp.h $(INCDIR)
113	cp librtmp.a $(LIBDIR)
114	cp librtmp.pc $(LIBDIR)/pkgconfig
115	cp librtmp.3 $(MANDIR)/man3
116
117install_so:	librtmp$(SO_EXT)
118	cp librtmp$(SO_EXT) $(SODIR)
119	$(INSTALL_IMPLIB)
120	cd $(SODIR); ln -sf librtmp$(SO_EXT) librtmp.$(SOX)
121
122