1# $Id: Makefile,v 1.31.2.2 2012/11/05 07:01:21 jmaggard Exp $
2# MiniDLNA project
3# http://sourceforge.net/projects/minidlna/
4# (c) 2008-2009 Justin Maggard
5# for use with GNU Make
6# To install use :
7# $ DESTDIR=/dummyinstalldir make install
8# or :
9# $ INSTALLPREFIX=/usr/local make install
10# or :
11# $ make install
12#
13#CFLAGS = -Wall -O -D_GNU_SOURCE -g -DDEBUG
14#CFLAGS = -Wall -g -Os -D_GNU_SOURCE
15
16include ../common.mak
17
18LDFLAGS = -ffunction-sections -fdata-sections -Wl,--gc-sections
19
20#CFLAGS = -Wall -g -O3 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 \
21
22CFLAGS = -Wall -g -Os -D_GNU_SOURCE $(EXTRACFLAGS) -D_FILE_OFFSET_BITS=64 \
23	-ffunction-sections -fdata-sections \
24	-I$(TOP)/ffmpeg/libavutil -I$(TOP)/ffmpeg/libavcodec -I$(TOP)/ffmpeg/libavformat \
25	-I$(TOP)/ffmpeg/libswscale -I$(TOP)/ffmpeg \
26	-I$(TOP)/flac/include -I$(TOP)/sqlite -I$(TOP)/jpeg \
27	-I$(TOP)/libexif -I$(TOP)/libid3tag -I$(TOP)/libogg/include \
28	-I$(TOP)/libvorbis/include \
29
30ifneq ($(STATIC),1)
31LDFLAGS += -L$(TOP)/zlib -L$(TOP)/sqlite/.libs -L$(TOP)/jpeg -L$(TOP)/libvorbis/lib/.libs \
32	-L$(TOP)/libogg/src/.libs -L$(TOP)/libexif/libexif/.libs -L$(TOP)/flac/src/libFLAC/.libs \
33	-L$(TOP)/ffmpeg/libavutil -L$(TOP)/ffmpeg/libavcodec -L$(TOP)/ffmpeg/libavformat \
34	-L$(TOP)/libid3tag/.libs
35else
36LDFLAGS += -static
37endif
38
39#STATIC_LINKING: CFLAGS += -DSTATIC
40#STATIC_LINKING: LDFLAGS = -static
41#CC = gcc
42RM = rm -f
43INSTALL = install
44
45CFLAGS += -I$(TOP)/shared
46
47include $(SRCBASE)/.config
48
49ifeq ($(RTN65U), y)
50	CFLAGS += -DRTN56U
51endif
52
53INSTALLPREFIX ?= $(DESTDIR)/usr
54SBININSTALLDIR = $(INSTALLPREFIX)/sbin
55ETCINSTALLDIR = $(DESTDIR)/etc
56
57BASEOBJS = minidlna.o upnphttp.o upnpdescgen.o upnpsoap.o \
58	   upnpreplyparse.o minixml.o \
59	   getifaddr.o process.o upnpglobalvars.o \
60	   options.o minissdp.o uuid.o upnpevents.o \
61	   sql.o utils.o metadata.o scanner.o inotify.o \
62	   tivo_utils.o tivo_beacon.o tivo_commands.o \
63	   containers.o \
64	   tagutils/tagutils.o \
65	   playlist.o image_utils.o albumart.o log.o clients.o
66
67ALLOBJS = $(BASEOBJS) $(LNXOBJS)
68
69#LIBS = -lpthread -lexif -ljpeg -lsqlite3 -lavformat -lavutil -lavcodec -lid3tag -lFLAC -logg -lvorbis
70#STATIC_LINKING: LIBS = -lvorbis -logg -lm -lsqlite3 -lpthread -lexif -ljpeg -lFLAC -lm -lid3tag -lz -lavformat -lavutil -lavcodec -lm
71
72ifeq ($(STATIC),1)
73LIBS = -lpthread -ldl -lm \
74	$(TOP)/libvorbis/lib/.libs/libvorbis.a \
75	$(TOP)/libogg/src/.libs/libogg.a \
76	$(TOP)/sqlite/.libs/libsqlite3.a \
77	$(TOP)/libexif/libexif/.libs/libexif.a \
78	$(TOP)/jpeg/libjpeg.a \
79	$(TOP)/flac/src/libFLAC/.libs/libFLAC.a \
80	$(TOP)/libid3tag/.libs/libid3tag.a \
81	$(TOP)/zlib/libz.a \
82	$(TOP)/ffmpeg/libavformat/libavformat.a \
83	$(TOP)/ffmpeg/libavcodec/libavcodec.a \
84	$(TOP)/ffmpeg/libavutil/libavutil.a
85else
86LIBS += -lpthread -ldl -lm -lvorbis -logg -lsqlite3 -lexif -ljpeg -lFLAC -lid3tag -lz -lavformat -lavcodec -lavutil
87endif
88
89TESTUPNPDESCGENOBJS = testupnpdescgen.o upnpdescgen.o
90
91EXECUTABLES = minidlna testupnpdescgen
92
93.PHONY:	all clean distclean install depend
94
95all:	$(EXECUTABLES)
96
97clean:
98	$(RM) $(ALLOBJS)
99	$(RM) $(EXECUTABLES)
100	$(RM) testupnpdescgen.o
101	$(RM) osver.h
102
103distclean: clean
104#	$(RM) config.h
105
106install-conf:
107	$(INSTALL) -d $(ETCINSTALLDIR)
108	$(INSTALL) --mode=0644 minidlna.conf $(ETCINSTALLDIR)
109
110install:	minidlna
111	$(INSTALL) -D minidlna $(INSTALLDIR)/usr/sbin/minidlna
112	$(STRIP) $(INSTALLDIR)/usr/sbin/minidlna
113
114minidlna:	$(BASEOBJS) $(LNXOBJS)
115	@echo Linking $@
116	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BASEOBJS) $(LNXOBJS) $(LIBS)
117
118
119testupnpdescgen:	$(TESTUPNPDESCGENOBJS)
120	@echo Linking $@
121	@$(CC) $(CFLAGS) -o $@ $(TESTUPNPDESCGENOBJS)
122
123config.h:	genconfig.sh
124#	./genconfig.sh
125
126depend:	config.h
127	makedepend -f$(MAKEFILE_LIST) -Y \
128	$(ALLOBJS:.o=.c) $(TESTUPNPDESCGENOBJS:.o=.c) 2>/dev/null
129
130# DO NOT DELETE
131
132minidlna.o: config.h upnpglobalvars.h minidlnatypes.h
133minidlna.o: upnphttp.h upnpdescgen.h minidlnapath.h getifaddr.h upnpsoap.h
134minidlna.o: options.h minissdp.h process.h upnpevents.h log.h
135upnphttp.o: config.h upnphttp.h upnpdescgen.h minidlnapath.h upnpsoap.h
136upnphttp.o: upnpevents.h image_utils.h sql.h log.h sendfile.h icons.c
137upnpdescgen.o: config.h upnpdescgen.h minidlnapath.h upnpglobalvars.h upnpdescstrings.h
138upnpdescgen.o: minidlnatypes.h upnpdescstrings.h log.h
139upnpsoap.o: config.h upnpglobalvars.h minidlnatypes.h log.h utils.h sql.h
140upnpsoap.o: upnphttp.h upnpsoap.h upnpreplyparse.h getifaddr.h log.h
141upnpreplyparse.o: upnpreplyparse.h minixml.h log.h
142minixml.o: minixml.h
143getifaddr.o: getifaddr.h log.h
144process.o: process.h config.h log.h
145upnpglobalvars.o: config.h upnpglobalvars.h upnpdescstrings.h
146upnpglobalvars.o: minidlnatypes.h
147options.o: options.h config.h upnpglobalvars.h
148options.o: minidlnatypes.h
149minissdp.o: config.h upnpdescstrings.h minidlnapath.h upnphttp.h
150minissdp.o: upnpglobalvars.h minidlnatypes.h minissdp.h log.h
151upnpevents.o: config.h upnpevents.h minidlnapath.h upnpglobalvars.h
152upnpevents.o: minidlnatypes.h upnpdescgen.h log.h uuid.h
153uuid.o: uuid.h
154testupnpdescgen.o: config.h upnpdescgen.h
155scanner.o: upnpglobalvars.h metadata.h utils.h sql.h scanner.h log.h playlist.h scanner_sqlite.h
156metadata.o: upnpglobalvars.h metadata.h albumart.h utils.h sql.h log.h
157albumart.o: upnpglobalvars.h albumart.h utils.h image_utils.h sql.h log.h
158containers.o: containers.h
159tagutils/tagutils.o: tagutils/tagutils-asf.c tagutils/tagutils-flc.c tagutils/tagutils-plist.c
160tagutils/tagutils.o: tagutils/tagutils-aac.c tagutils/tagutils-asf.h tagutils/tagutils-flc.h tagutils/tagutils-mp3.c tagutils/tagutils-wav.c
161tagutils/tagutils.o: tagutils/tagutils-ogg.c tagutils/tagutils-aac.h tagutils/tagutils.h tagutils/tagutils-mp3.h tagutils/tagutils-ogg.h log.h
162playlist.o: playlist.h
163inotify.o: inotify.h playlist.h
164image_utils.o: image_utils.h
165tivo_utils.o: config.h tivo_utils.h
166tivo_beacon.o: config.h tivo_beacon.h tivo_utils.h
167tivo_commands.o: config.h tivo_commands.h tivo_utils.h utils.h
168utils.o: utils.h
169sql.o: sql.h
170log.o: log.h
171clients.o: clients.h
172
173.SUFFIXES: .c .o
174
175.c.o:
176	@echo Compiling $*.c
177	@$(CC) $(CFLAGS) -o $@ -c $< && exit 0;\
178		echo "The following command failed:" 1>&2;\
179		echo "$(CC) $(CFLAGS) -o $@ -c $<";\
180		$(CC) $(CFLAGS) -o $@ -c $< &>/dev/null
181