xpp: Don't generate .depends if there's no libusb
[dahdi/tools.git] / xpp / Makefile
1 PEDANTIC        = -ansi -pedantic -std=c99
2
3 INSTALL         = install
4 INSTALL_DATA    = install -m 644
5
6 #
7 # Ugly hack to find kernel directories before/after the split
8 # to kernel/user-space.
9 #
10 # These variables should be passed to us. But until then...
11 #
12 DAHDI_TOOLSDIR  ?= ..
13 DAHDI_KERNELDIR =
14
15 -include $(DAHDI_TOOLSDIR)/makeopts
16
17 INSTALL_DATA    = $(INSTALL) -m 644
18
19 # In 1.4 those are provided by autoconf through makeopts
20 prefix          ?= /usr
21 datadir         ?= $(prefix)/share
22 mandir          ?= $(datadir)/man
23 sysconfdir      ?= $(prefix)/etc
24 udevrulesdir    ?= $(sysconfdir)/udev/rules.d
25 INSTALL         ?= install
26
27 INSTALL_DATA    = $(INSTALL) -m 644
28
29 SBINDIR         = $(prefix)/sbin
30 DATADIR         = $(datadir)/dahdi
31 MANDIR          = $(mandir)/man8
32 HOTPLUG_USB_DIR = $(sysconfdir)/hotplug/usb
33 PERLLIBDIR      := $(shell eval `perl -V:sitelib`; echo "$$sitelib")
34 PERL_DIRS       := $(shell cd perl_modules; find * -name '[A-Z]*' -type d| xargs)
35 PERL_MODS_PAT   := *.pm $(PERL_DIRS:%=%/*.pm)
36 PERL_MODS       := $(shell cd perl_modules; echo $(PERL_MODS_PAT))
37
38 # Variables that should be defined above, but need sane defaults:
39 # FIXME: Are those values really sane?
40 HOSTCC          ?= $(CC)
41
42 USE_OCTASIC     := yes
43 OCTASIC_DIR     := oct612x
44
45 ifneq (no,$(USE_OCTASIC))
46
47 OCT_OBJS        = $(shell $(OCTASIC_DIR)/octasic-helper objects $(OCTASIC_DIR))
48 OCT_SRCS        = $(shell echo $(OCT_OBJS) | tr -s ' ' '\n' | sed 's/\.o$$/.c/g')
49 OCT_HERE_OBJS   = $(shell echo $(OCT_OBJS) | tr -s ' ' '\n' | sed 's,^.*/,,')
50 OCT_CFLAGS      = $(shell $(OCTASIC_DIR)/octasic-helper cflags $(OCTASIC_DIR))
51 OCT_DEFINES     = \
52         -DPTR_TYPE=uint32_t     \
53         -DcOCT6100_INTERNAL_SUPER_ARRAY_SIZE=1024       \
54         -DcOCT6100_MAX_ECHO_CHANNELS=672                \
55         -DcOCT6100_MAX_MIXER_EVENTS=1344
56
57 ECHO_LOADER_SRC = echo_loader.c
58 ECHO_LOADER     = $(ECHO_LOADER_SRC:.c=.o)
59 endif
60
61 %.8: %
62         pod2man --section 8 $^ > $@ || $(RM) $@
63 PERL_SCRIPTS    =       \
64                 dahdi_registration      \
65                 xpp_sync        \
66                 lsdahdi         \
67                 xpp_blink       \
68                 dahdi_genconf   \
69                 dahdi_hardware  \
70                 twinstar        \
71                 #
72
73 PERL_MANS       = $(PERL_SCRIPTS:%=%.8)
74
75 # List all our sources
76 XUSB_SRCS               = xtalk/xusb.c xtalk/xlist.c xtalk/debug.c
77 XTALK_SRCS              = xtalk/xtalk.c
78 MPPTALK_SRCS            = mpptalk.c
79 ASTRIBANK_SRCS          = astribank_usb.c
80 ABHEXLOAD_SRCS          = astribank_hexload.c hexfile.c pic_loader.c
81 ABTOOL_SRCS             = astribank_tool.c
82 ABALLOW_SRCS            = astribank_allow.c astribank_license.c
83
84 SRCS    = \
85         $(XUSB_SRCS)    \
86         $(XTALK_SRCS)   \
87         $(MPPTALK_SRCS) \
88         $(ASTRIBANK_SRCS)       \
89         $(ABHEXLOAD_SRCS)       \
90         $(ABTOOL_SRCS)  \
91         $(ABALLOW_SRCS) \
92         $(ECHO_LOADER_SRC)
93
94 # Derive object files from source list
95 XUSB_OBJS               = $(XUSB_SRCS:.c=.o)
96 XTALK_OBJS              = $(XTALK_SRCS:.c=.o) $(XUSB_OBJS)
97 MPPTALK_OBJS            = $(MPPTALK_SRCS:.c=.o) $(XTALK_OBJS)
98 ASTRIBANK_OBJS          = $(ASTRIBANK_SRCS:.c=.o) $(MPPTALK_OBJS)
99 ABHEXLOAD_OBJS          = $(ABHEXLOAD_SRCS:.c=.o) $(ASTRIBANK_OBJS) $(ECHO_LOADER) $(OCT_HERE_OBJS)
100 ABTOOL_OBJS             = $(ABTOOL_SRCS:.c=.o) $(ASTRIBANK_OBJS)
101 ABALLOW_OBJS            = $(ABALLOW_SRCS:.c=.o) $(ASTRIBANK_OBJS)
102
103 TARGETS = .perlcheck astribank_is_starting
104 PROG_INSTALL    = astribank_is_starting
105 MAN_INSTALL     = $(PROG_INSTALL:%=%.8)
106 ifeq    (1,$(PBX_USB))
107 TARGETS += \
108            astribank_tool       \
109            astribank_hexload    \
110            astribank_allow      \
111            test_parse
112 PROG_INSTALL    += astribank_tool astribank_hexload astribank_allow
113 endif
114 ifneq   (,$(PERLLIBDIR))
115 PROG_INSTALL    += $(PERL_SCRIPTS)
116 TARGETS         += $(PERL_MANS)
117 endif
118
119 all: $(TARGETS)
120
121 docs: $(PERL_MANS)
122
123 install: all
124         $(INSTALL) -d $(DESTDIR)$(SBINDIR)
125         $(INSTALL) $(PROG_INSTALL) $(DESTDIR)$(SBINDIR)/
126         $(INSTALL) -d $(DESTDIR)$(DATADIR)
127         $(INSTALL) xpp_fxloader astribank_hook $(DESTDIR)$(DATADIR)/
128         $(INSTALL) waitfor_xpds $(DESTDIR)$(DATADIR)/
129         $(INSTALL) -d $(DESTDIR)$(udevrulesdir)
130         $(INSTALL_DATA) xpp.rules $(DESTDIR)$(udevrulesdir)/
131         $(INSTALL) -d $(DESTDIR)$(MANDIR)
132         $(INSTALL_DATA) $(MAN_INSTALL) $(DESTDIR)$(MANDIR)/
133         $(INSTALL) -d $(DESTDIR)$(HOTPLUG_USB_DIR)
134         $(INSTALL_DATA) xpp_fxloader.usermap $(DESTDIR)$(HOTPLUG_USB_DIR)/
135         # for backward compatibility and for hotplug users:
136         ln -sf $(DATADIR)/xpp_fxloader $(DESTDIR)$(HOTPLUG_USB_DIR)/
137 ifneq   (,$(PERLLIBDIR))
138         $(INSTALL) -d $(DESTDIR)$(PERLLIBDIR)
139         for i in $(PERL_DIRS); \
140         do \
141                 $(INSTALL) -d "$(DESTDIR)$(PERLLIBDIR)/$$i"; \
142         done
143         for i in $(PERL_MODS); \
144         do \
145                 $(INSTALL_DATA) "perl_modules/$$i" "$(DESTDIR)$(PERLLIBDIR)/$$i"; \
146         done
147 endif
148
149 CFLAGS          += -I. -Ixtalk -Wall -Werror
150
151 astribank_hexload: $(ABHEXLOAD_OBJS)
152 astribank_hexload: LIBS+=$(EXTRA_LIBS) $(USB_LIB)
153 astribank_hexload: CFLAGS+=$(OCT_CFLAGS)
154
155 astribank_tool: $(ABTOOL_OBJS)
156 astribank_tool: LIBS+=$(EXTRA_LIBS) $(USB_LIB)
157
158 astribank_allow: $(ABALLOW_OBJS)
159 astribank_allow: LIBS+=$(EXTRA_LIBS) $(USB_LIB)
160
161 astribank_is_starting: astribank_is_starting.o
162 astribank_is_starting: LIBS+=$(EXTRA_LIBS)
163
164 hex2iic: hex2iic.o iic.o hexfile.o
165
166 test_parse: test_parse.o hexfile.o
167 test_parse: LIBS+=$(EXTRA_LIBS) $(USB_LIB)
168
169 ifneq (no,$(USE_OCTASIC))
170 .octasic.depend: $(OCTASIC_DIR)/octasic-helper Makefile ../config.status
171         $(CC) -MM $(OCT_CFLAGS) \
172                 `$(OCTASIC_DIR)/octasic-helper objects | \
173                 tr -s ' ' '\n' | \
174                 sed -e 's,.*,$(OCTASIC_DIR)/&,' -e 's/\.o$$/.c/'` > $@
175
176 -include .octasic.depend
177
178 $(OCT_HERE_OBJS): Makefile
179         $(CC) -c $(CFLAGS) $(OCT_CFLAGS) $(OCT_DEFINES) $(OCT_SRCS)
180
181 endif
182
183
184 %: %.o
185         $(CC) $(LDFLAGS) $^ $(LIBS) -o $@
186
187 .perlcheck: $(PERL_SCRIPTS)
188         for i in $^; do perl -I./perl_modules -c $$i || exit 1; done
189         touch $@
190
191 clean:
192         $(RM) .depend .octasic.depend *.o xtalk/*.o $(OCT_HERE_OBJS) $(TARGETS)
193
194 .PHONY: depend
195 ifeq    (1,$(PBX_USB))
196 depend: .depend
197 .depend: *.c *.h xtalk/*.c
198         @echo "Calculating dependencies"
199         @if ! $(CC) $(CFLAGS) $(OCT_CFLAGS) -MM $(SRCS) > $@; then $(RM) $@; exit 1; fi
200
201 include .depend
202 endif