summaryrefslogtreecommitdiff
path: root/mcast/client/Makefile
blob: 0c799699d79b835be86d713547a006f4bf9662f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#Comment this out to disable debugging output
#DEBUG=1
#VERBOSE=1
#WIN32=1
#API_SOCK=1
#VERBOSE=1
#BACKTRACE=1

ifdef RBMINI
  ARMEL=1
endif

ARCH ?= $(shell $(CC) -dumpmachine)
APPLE_DARWIN = $(shell echo $(ARCH) | grep -q 'apple-darwin' && echo "1" || echo "0")
CYGWIN = $(shell echo $(ARCH) | grep -q 'cygwin' && echo "1" || echo "0")
MIPSEL = $(shell echo $(ARCH) | grep -q 'mipsel' && echo "1" || echo "0")

DEFS=-DCLIENT -DLIBRARY -D_REENTRANT -D_GNU_SOURCE

ifeq ($(CYGWIN), 1)
WIN32=1
else
API_SOCK=1
endif

ifeq ($(APPLE_DARWIN), 1)
DEFS:=$(DEFS) -I../common/darwin/include/ -DAPPLE
APPLE=1
endif

VDRDIR=../../../../..
-include $(VDRDIR)/Make.config

ifdef ARMEL
  CROSS = arm-linux-gnueabi-
else
ifeq ($(MIPSEL),1)
DEFS:=$(DEFS) -DMIPSEL
else
LIBRARY_PATH=/usr/lib
endif
endif
ifeq ($(APPLE_DARWIN), 1)
CFLAGS:= $(CFLAGS) -fPIC -fno-common -Wall -I../common $(DEFS)
else
CFLAGS:= $(CFLAGS) -fPIC -Wall -I../common $(DEFS)
endif

ifdef BACKTRACE
CFLAGS:= $(CFLAGS) -DBACKTRACE -g
endif

ifdef API_SHM
LDFLAGS:= $(LDFLAGS) -lrt
CFLAGS:= $(CFLAGS) -DAPI_SHM
endif
ifdef API_SOCK
CFLAGS:= $(CFLAGS) -DAPI_SOCK
endif

ifdef VERBOSE
CFLAGS:= $(CFLAGS) -DDEBUG
DEBUG=1
endif

ifdef WIN32
CFLAGS:= -Iwin32/include $(CFLAGS) -mno-cygwin -fPIC -DWIN32
LDFLAGS:= -Lwin32/lib $(LDFLAGS) -mno-cygwin
LDLIBS:= -lpthreadGC2 -lxml2 -lz -lws2_32 -liphlpapi 
else
CFLAGS:= $(CFLAGS)  -I../dvbloop $(XML_INC)
LDFLAGS:=$(LDFLAGS)
LDLIBS:=$(XML_LIB) -lpthread -lz -lm
endif

ifdef DEBUG
LDFLAGS:= $(LDFLAGS) -g -rdynamic
CFLAGS:= $(CFLAGS) -g -O0
else
CFLAGS:= $(CFLAGS) -O3
endif

MCLI = mcli

MCLI_OBJS= mld_common.o mld_client.o mld_reporter.o mcast.o recv_tv.o recv_ccpp.o tools.o tca_handler.o tra_handler.o satlists.o interfaces.o api_server.o ciparser.o ci_handler.o mmi_handler.o
ifdef WIN32
MCLI_OBJS := $(MCLI_OBJS) inet_pton.o inet_ntop.o inet_aton.o
else
MCLI_OBJS := $(MCLI_OBJS)
endif

MCLI_SOBJS = main.o
ifdef WIN32
MCLI_SOBJS := $(MCLI_SOBJS) dummy_client.o
else
ifdef APPLE
MCLI_SOBJS := $(MCLI_SOBJS) dummy_client.o input.o
else
MCLI_SOBJS := $(MCLI_SOBJS) dvblo_handler.o input.o
endif 
endif

all: 
	$(MAKE) lib$(MCLI)
	$(MAKE) $(MCLI)-shared
	$(MAKE) mcli

static: $(MCLI)-static


MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
	$(MAKEDEP) $(CFLAGS) $(MCLI_OBJS:%.o=%.c) > $@

-include $(DEPFILE)


$(MCLI): $(MCLI_OBJS) $(MCLI_SOBJS) libmcli.so
	$(CC) $(LDFLAGS) -o $@ $(MCLI_OBJS) $(MCLI_SOBJS) $(LDLIBS)
ifndef DEBUG
ifndef WIN32
	strip $(MCLI)
endif
endif

lib$(MCLI): $(MCLI_OBJS)
ifdef WIN32
	$(CC) $(LDFLAGS) -shared -o $@.dll $(MCLI_OBJS) $(LDLIBS) -Wl,--out-implib,$@.a -Wl,--output-def,$@.def
	lib /def:$@.def /machine:x86 /out:..\\common\\win32\\lib\\$@.lib
#	dlltool -k --dllname $@.dll --output-lib win32/lib/$@.lib --def $@.def
	cp -a $@.dll win32/lib/
	cp -a $@.a win32/lib/
	cp -a $@.def win32/lib/
endif
ifdef APPLE
	$(CC) $(LDFLAGS) -dynamiclib -o $@.dylib $(MCLI_OBJS) $(LDLIBS)
	$(AR) $(ARFLAGS) $@.a $(MCLI_OBJS)
else
	$(CC) $(LDFLAGS) -shared -o $@.so $(MCLI_OBJS) $(LDLIBS)
	$(AR) $(ARFLAGS) $@.a $(MCLI_OBJS)
endif


$(MCLI)-shared: lib$(MCLI)
	$(CC) -c $(CFLAGS) -ULIBRARY -o main.o main.c
ifdef WIN32
	$(CC) -c $(CFLAGS) -ULIBRARY -o dummy_client.o dummy_client.c
else
ifdef APPLE
	$(CC) -c $(CFLAGS) -ULIBRARY -o input.o input.c
	$(CC) -c $(CFLAGS) -ULIBRARY -o dummy_client.o dummy_client.c
else 
	$(CC) -c $(CFLAGS) -ULIBRARY -o input.o input.c
	$(CC) -c $(CFLAGS) -ULIBRARY -o dvblo_handler.o dvblo_handler.c
endif
endif
	$(CC) $(LDFLAGS) -o $@ $(MCLI_SOBJS) $(LDLIBS) -L. -lmcli

$(MCLI)-static: $(MCLI_OBJS) $(MCLI_SOBJS)
	$(CC) $(LDFLAGS) -static -static-libgcc -o $@ $(MCLI_OBJS) $(MCLI_SOBJS) $(LDLIBS) $(LIBRARY_PATH)/libxml2.a $(LIBRARY_PATH)/libz.a $(LIBRARY_PATH)/libm.a $(LIBRARY_PATH)/libpthread.a
ifndef DEBUG 
ifndef WIN32
	strip $(MCLI)-static
endif
endif

api_shm_test.o: api_shm_test.c
	$(CC) -c $(CFLAGS) -DUSE_SHM_API -o $@ $<
	
api_sock_test.o:api_sock_test.c
	$(CC) -c $(CFLAGS) -DUSE_SOCK_API -o $@ $<
	
$(MCLI)-shmtest: api_shm_test.o
	$(CC) $(LDFLAGS) -o $@ api_shm_test.o $(LDLIBS) -lrt

$(MCLI)-socktest: api_sock_test.o
	$(CC) $(LDFLAGS) -o $@ api_sock_test.o 
	
install: mcli
	install -p $< /usr/sbin/$<

install-lib: libmcli.la
	libtool --mode=install install $< /usr/local/lib/	

install-shared: mcli-shared
	libtool --mode=install install $< /usr/local/bin

depend: .dependencies
	#makedepend -Y -- $(CFLAGS)  -- *c >/dev/null 2>&1

clean:
	rm -f $(MCLI) $(MCLI)-* *.elf *.gdb *.o *.lo *.la *~ *.so *.a *.def *.dll *.dylib out.ts

mingw32:
	rm -rf mingw/*.c mingw/*.h mingw/win32
	cp *.c *.h mingw/
	mkdir mingw/win32
	cp -a win32/lib mingw/win32/
	cp -a win32/include mingw/win32/
	@echo "Created mingw directory - now ready to rumble... (call build.cmd)"
        
%.o: %.c
	$(CC) -c $(CFLAGS) -o $@ $<

%.lo: %.c
	$(CC) -c $(CFLAGS) -o $@ $<