]>
Commit | Line | Data |
---|---|---|
f0083e3d | 1 | # |
56f914e6 | 2 | # Copyright (C) 2003-2004 Greg Kroah-Hartman <greg@kroah.com> |
c1979c82 | 3 | # Copyright (C) 2004-2006 Kay Sievers <kay.sievers@vrfy.org> |
f0083e3d GKH |
4 | # |
5 | # This program is free software; you can redistribute it and/or modify | |
6 | # it under the terms of the GNU General Public License as published by | |
7 | # the Free Software Foundation; version 2 of the License. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | # General Public License for more details. | |
13 | # | |
14 | # You should have received a copy of the GNU General Public License | |
15 | # along with this program; if not, write to the Free Software | |
27b77df4 | 16 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
f0083e3d GKH |
17 | # |
18 | ||
8325c84d | 19 | VERSION = 121 |
0e47c219 KS |
20 | |
21 | # set this to make use of syslog | |
05230184 | 22 | USE_LOG = true |
54988802 | 23 | |
0e47c219 KS |
24 | # compile-in development debug messages |
25 | # (export UDEV_LOG="debug" or set udev_log="debug" in udev.conf | |
26 | # to print the debug messages to syslog) | |
29b82deb | 27 | DEBUG = false |
f0083e3d | 28 | |
a8b38f1c | 29 | # compile with gcc's code coverage option |
a8b38f1c KS |
30 | USE_GCOV = false |
31 | ||
0e47c219 | 32 | # include Security-Enhanced Linux support |
9825617b | 33 | USE_SELINUX = false |
f0083e3d | 34 | |
0e47c219 | 35 | # set this to create statically linked binaries |
6c18b1fb KS |
36 | USE_STATIC = false |
37 | ||
0e47c219 KS |
38 | # to build any of the extras programs pass: |
39 | # make EXTRAS="extras/<extra1> extras/<extra2>" | |
638b983b | 40 | EXTRAS = |
6c18b1fb | 41 | |
c1979c82 | 42 | # make the build silent |
1ef98545 | 43 | V = |
6c18b1fb | 44 | |
0e47c219 | 45 | PROGRAMS = \ |
0e47c219 | 46 | udevd \ |
225cb03b | 47 | udevadm \ |
225cb03b | 48 | test-udev |
0e47c219 KS |
49 | |
50 | HEADERS = \ | |
51 | udev.h \ | |
b5adfb4f | 52 | udevd.h \ |
0e47c219 | 53 | udev_rules.h \ |
0e47c219 | 54 | logging.h \ |
dbd16d26 | 55 | udev_sysdeps.h \ |
0e47c219 KS |
56 | udev_selinux.h \ |
57 | list.h | |
58 | ||
59 | UDEV_OBJS = \ | |
0e47c219 KS |
60 | udev_device.o \ |
61 | udev_config.o \ | |
a4d5ca64 | 62 | udev_node.o \ |
0e47c219 | 63 | udev_db.o \ |
1aa1e248 | 64 | udev_sysfs.o \ |
0e47c219 KS |
65 | udev_rules.o \ |
66 | udev_rules_parse.o \ | |
67 | udev_utils.o \ | |
68 | udev_utils_string.o \ | |
69 | udev_utils_file.o \ | |
225cb03b KS |
70 | udevmonitor.o \ |
71 | udevinfo.o \ | |
72 | udevcontrol.o \ | |
73 | udevtrigger.o \ | |
74 | udevsettle.o \ | |
75 | udevtest.o \ | |
dbd16d26 | 76 | udev_sysdeps.o |
0e47c219 KS |
77 | LIBUDEV = libudev.a |
78 | ||
79 | MAN_PAGES = \ | |
2c769419 | 80 | udev.7 \ |
0e47c219 | 81 | udevd.8 \ |
225cb03b | 82 | udevadm.8 |
0e47c219 | 83 | |
0e47c219 KS |
84 | GEN_HEADERS = \ |
85 | udev_version.h | |
977083c2 | 86 | |
56f914e6 | 87 | prefix ?= |
9f53b06a | 88 | etcdir = ${prefix}/etc |
d7363ee1 KS |
89 | sbindir = ${prefix}/sbin |
90 | usrbindir = ${prefix}/usr/bin | |
d7363ee1 | 91 | libudevdir = ${prefix}/lib/udev |
9f53b06a | 92 | mandir = ${prefix}/usr/share/man |
aef6bb13 | 93 | configdir = ${etcdir}/udev |
0e47c219 | 94 | udevdir = /dev |
0e47c219 | 95 | DESTDIR = |
9f53b06a | 96 | |
86f4ea06 | 97 | INSTALL = install -c |
9f53b06a | 98 | INSTALL_PROGRAM = ${INSTALL} |
d8a57e7c | 99 | INSTALL_DATA = ${INSTALL} -m 644 |
86f4ea06 | 100 | INSTALL_SCRIPT = ${INSTALL} |
89067448 GKH |
101 | PWD = $(shell pwd) |
102 | ||
56f914e6 | 103 | CROSS_COMPILE ?= |
4942c78c KS |
104 | CC = $(CROSS_COMPILE)gcc |
105 | LD = $(CROSS_COMPILE)gcc | |
106 | AR = $(CROSS_COMPILE)ar | |
107 | RANLIB = $(CROSS_COMPILE)ranlib | |
f0083e3d | 108 | |
702e0231 | 109 | CFLAGS += -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 |
f032e0ed KS |
110 | WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \ |
111 | -Wchar-subscripts -Wmissing-declarations -Wnested-externs \ | |
112 | -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes | |
f032e0ed | 113 | CFLAGS += $(WARNINGS) |
12901d99 | 114 | |
76bd9d31 | 115 | LDFLAGS += -Wl,-warn-common,--as-needed |
638b983b | 116 | |
c756114f | 117 | OPTFLAGS = -Os |
f032e0ed | 118 | CFLAGS += $(OPTFLAGS) |
1196e46c | 119 | |
05230184 | 120 | ifeq ($(strip $(USE_LOG)),true) |
6c18b1fb | 121 | CFLAGS += -DUSE_LOG |
54988802 KS |
122 | endif |
123 | ||
f032e0ed | 124 | # if DEBUG is enabled, then we do not strip |
f0083e3d | 125 | ifeq ($(strip $(DEBUG)),true) |
638b983b | 126 | CFLAGS += -DDEBUG |
f0083e3d GKH |
127 | endif |
128 | ||
a8b38f1c KS |
129 | ifeq ($(strip $(USE_GCOV)),true) |
130 | CFLAGS += -fprofile-arcs -ftest-coverage | |
638b983b | 131 | LDFLAGS += -fprofile-arcs |
a8b38f1c KS |
132 | endif |
133 | ||
9825617b | 134 | ifeq ($(strip $(USE_SELINUX)),true) |
045b1f0f | 135 | UDEV_OBJS += udev_selinux.o |
586e1a37 | 136 | LIB_OBJS += -lselinux -lsepol |
045b1f0f | 137 | CFLAGS += -DUSE_SELINUX |
9825617b HH |
138 | endif |
139 | ||
6c18b1fb KS |
140 | ifeq ($(strip $(USE_STATIC)),true) |
141 | CFLAGS += -DUSE_STATIC | |
142 | LDFLAGS += -static | |
143 | endif | |
144 | ||
1ef98545 KS |
145 | ifeq ($(strip $(V)),) |
146 | E = @echo | |
147 | Q = @ | |
045b1f0f | 148 | else |
1ef98545 KS |
149 | E = @\# |
150 | Q = | |
045b1f0f | 151 | endif |
1ef98545 | 152 | export E Q |
eadb1bbc | 153 | |
a8349b33 | 154 | all: $(PROGRAMS) $(MAN_PAGES) |
1ef98545 | 155 | $(Q) extras="$(EXTRAS)"; for target in $$extras; do \ |
49fb51c6 | 156 | $(MAKE) CC="$(CC)" \ |
db28d2ea | 157 | CFLAGS="$(CFLAGS)" \ |
977083c2 | 158 | LD="$(LD)" \ |
db28d2ea | 159 | LDFLAGS="$(LDFLAGS)" \ |
1fda06ae KS |
160 | AR="$(AR)" \ |
161 | RANLIB="$(RANLIB)" \ | |
db28d2ea | 162 | LIB_OBJS="$(LIB_OBJS)" \ |
0e47c219 | 163 | LIBUDEV="$(PWD)/$(LIBUDEV)" \ |
c699bc48 | 164 | -C $$target $@ || exit 1; \ |
0e47c219 KS |
165 | done; |
166 | .PHONY: all | |
17d3cb12 | 167 | .DEFAULT: all |
f0083e3d | 168 | |
7a526da6 KS |
169 | # clear implicit rules |
170 | .SUFFIXES: | |
171 | ||
172 | # build the objects | |
1ef98545 KS |
173 | %.o: %.c $(HEADERS) $(GEN_HEADERS) |
174 | $(E) " CC " $@ | |
175 | $(Q) $(CC) -c $(CFLAGS) $< -o $@ | |
7a526da6 KS |
176 | |
177 | # "Static Pattern Rule" to build all programs | |
1ef98545 KS |
178 | $(PROGRAMS): %: $(HEADERS) $(GEN_HEADERS) $(LIBUDEV) %.o |
179 | $(E) " LD " $@ | |
180 | $(Q) $(LD) $(LDFLAGS) $@.o -o $@ $(LIBUDEV) $(LIB_OBJS) | |
0e47c219 | 181 | |
1ef98545 KS |
182 | $(LIBUDEV): $(HEADERS) $(GEN_HEADERS) $(UDEV_OBJS) |
183 | $(Q) rm -f $@ | |
184 | $(E) " AR " $@ | |
185 | $(Q) $(AR) cq $@ $(UDEV_OBJS) | |
186 | $(E) " RANLIB " $@ | |
187 | $(Q) $(RANLIB) $@ | |
7c2aae11 | 188 | |
f0083e3d | 189 | udev_version.h: |
1ef98545 KS |
190 | $(E) " GENHDR " $@ |
191 | $(Q) echo "/* Generated by make. */" > $@ | |
192 | $(Q) echo \#define UDEV_VERSION \"$(VERSION)\" >> $@ | |
193 | $(Q) echo \#define UDEV_ROOT \"$(udevdir)\" >> $@ | |
c1979c82 | 194 | $(Q) echo \#define UDEV_CONFIG_FILE \"$(configdir)/udev.conf\" >> $@ |
9dd0c257 | 195 | $(Q) echo \#define UDEV_RULES_DIR \"$(configdir)/rules.d\" >> $@ |
f0083e3d | 196 | |
420a506e | 197 | # man pages |
9de98988 | 198 | %.8 %.7: %.xml |
1ef98545 KS |
199 | $(E) " XMLTO " $@ |
200 | $(Q) xmlto man $? | |
0e47c219 | 201 | .PRECIOUS: %.8 |
56a8a624 | 202 | |
f0083e3d | 203 | clean: |
1ef98545 KS |
204 | $(E) " CLEAN " |
205 | $(Q) - find . -type f -name '*.orig' -print0 | xargs -0r rm -f | |
206 | $(Q) - find . -type f -name '*.rej' -print0 | xargs -0r rm -f | |
207 | $(Q) - find . -type f -name '*~' -print0 | xargs -0r rm -f | |
208 | $(Q) - find . -type f -name '*.[oas]' -print0 | xargs -0r rm -f | |
209 | $(Q) - find . -type f -name "*.gcno" -print0 | xargs -0r rm -f | |
210 | $(Q) - find . -type f -name "*.gcda" -print0 | xargs -0r rm -f | |
211 | $(Q) - find . -type f -name "*.gcov" -print0 | xargs -0r rm -f | |
212 | $(Q) - rm -f udev_gcov.txt | |
213 | $(Q) - rm -f core $(PROGRAMS) $(GEN_HEADERS) | |
214 | $(Q) - rm -f udev-$(VERSION).tar.gz | |
215 | $(Q) - rm -f udev-$(VERSION).tar.bz2 | |
e2ecb34f | 216 | $(Q) - rm -f udev-git-HEAD.patch |
1ef98545 | 217 | @ extras="$(EXTRAS)"; for target in $$extras; do \ |
c699bc48 | 218 | $(MAKE) -C $$target $@ || exit 1; \ |
0e47c219 | 219 | done; |
49fb51c6 | 220 | .PHONY: clean |
2761f9b9 | 221 | |
d8a57e7c | 222 | install-config: |
aef6bb13 | 223 | $(INSTALL) -d $(DESTDIR)$(configdir)/rules.d |
1ef98545 | 224 | @ if [ ! -r $(DESTDIR)$(configdir)/udev.conf ]; then \ |
d8a57e7c | 225 | $(INSTALL_DATA) etc/udev/udev.conf $(DESTDIR)$(configdir); \ |
7591c18a | 226 | fi |
554074c9 HH |
227 | @ for i in etc/udev/rules.d/*.rules; do \ |
228 | if [ ! -r $(DESTDIR)$(configdir)/rules.d/$$(basename $$i) ]; then \ | |
229 | $(INSTALL_DATA) $$i $(DESTDIR)$(configdir)/rules.d; \ | |
3df9102b KS |
230 | fi \ |
231 | done | |
1ef98545 | 232 | @ extras="$(EXTRAS)"; for target in $$extras; do \ |
c699bc48 | 233 | $(MAKE) -C $$target $@ || exit 1; \ |
1ac216b1 | 234 | done; |
0e47c219 | 235 | .PHONY: install-config |
7591c18a | 236 | |
487c1b35 | 237 | install-man: |
064360cd RM |
238 | $(INSTALL) -d $(DESTDIR)$(mandir)/man7 |
239 | $(INSTALL_DATA) udev.7 $(DESTDIR)$(mandir)/man7/udev.7 | |
240 | $(INSTALL) -d $(DESTDIR)$(mandir)/man8 | |
241 | $(INSTALL_DATA) udevd.8 $(DESTDIR)$(mandir)/man8/udevd.8 | |
242 | $(INSTALL_DATA) udevadm.8 $(DESTDIR)$(mandir)/man8/udevadm.8 | |
1ac216b1 | 243 | @extras="$(EXTRAS)"; for target in $$extras; do \ |
c699bc48 | 244 | $(MAKE) -C $$target $@ || exit 1; \ |
1ac216b1 | 245 | done; |
0e47c219 | 246 | .PHONY: install-man |
438ac360 GKH |
247 | |
248 | uninstall-man: | |
2c769419 | 249 | - rm -f $(DESTDIR)$(mandir)/man7/udev.7 |
225cb03b | 250 | - rm -f $(DESTDIR)$(mandir)/man8/udevadm.8 |
49fb51c6 | 251 | - rm -f $(DESTDIR)$(mandir)/man8/udevd.8 |
1ef98545 | 252 | @ extras="$(EXTRAS)"; for target in $$extras; do \ |
c699bc48 | 253 | $(MAKE) -C $$target $@ || exit 1; \ |
1ac216b1 | 254 | done; |
0e47c219 | 255 | .PHONY: uninstall-man |
438ac360 | 256 | |
17d3cb12 | 257 | install-bin: |
064360cd RM |
258 | $(INSTALL) -d $(DESTDIR)$(sbindir) |
259 | $(INSTALL_PROGRAM) udevd $(DESTDIR)$(sbindir)/udevd | |
260 | $(INSTALL_PROGRAM) udevadm $(DESTDIR)$(sbindir)/udevadm | |
225cb03b KS |
261 | ln -f -s udevadm $(DESTDIR)$(sbindir)/udevtrigger |
262 | ln -f -s udevadm $(DESTDIR)$(sbindir)/udevsettle | |
263 | ln -f -s udevadm $(DESTDIR)$(sbindir)/udevcontrol | |
e18bd73b | 264 | $(INSTALL) -d $(DESTDIR)$(usrbindir) |
225cb03b | 265 | ln -f -s $(sbindir)/udevadm $(DESTDIR)$(usrbindir)/udevinfo |
db28d2ea | 266 | @extras="$(EXTRAS)"; for target in $$extras; do \ |
c699bc48 | 267 | $(MAKE) -C $$target $@ || exit 1; \ |
db28d2ea | 268 | done; |
f070df16 | 269 | ifndef DESTDIR |
0e47c219 | 270 | - killall udevd |
fc55cf68 | 271 | - rm -rf /dev/.udev |
0e47c219 | 272 | - $(sbindir)/udevd --daemon |
f070df16 | 273 | endif |
17d3cb12 | 274 | .PHONY: install-bin |
6785820d | 275 | |
17d3cb12 | 276 | uninstall-bin: |
49fb51c6 | 277 | - rm -f $(DESTDIR)$(sbindir)/udevd |
225cb03b | 278 | - rm -f $(DESTDIR)$(sbindir)/udevadm |
0d5be398 | 279 | - rm -f $(DESTDIR)$(sbindir)/udevtrigger |
7baada47 | 280 | - rm -f $(DESTDIR)$(sbindir)/udevsettle |
49fb51c6 | 281 | - rm -f $(DESTDIR)$(sbindir)/udevcontrol |
d8a57e7c | 282 | - rm -f $(DESTDIR)$(usrbindir)/udevinfo |
49fb51c6 | 283 | ifndef DESTDIR |
0e47c219 | 284 | - killall udevd |
fc55cf68 | 285 | - rm -rf /dev/.udev |
49fb51c6 | 286 | endif |
0e47c219 | 287 | @extras="$(EXTRAS)"; for target in $$extras; do \ |
c699bc48 | 288 | $(MAKE) -C $$target $@ || exit 1; \ |
0e47c219 | 289 | done; |
17d3cb12 KS |
290 | .PHONY: uninstall-bin |
291 | ||
292 | install: all install-bin install-config install-man | |
293 | .PHONY: install | |
294 | ||
295 | uninstall: uninstall-bin uninstall-man | |
296 | .PHONY: uninstall | |
0e47c219 KS |
297 | |
298 | test tests: all | |
e9f65389 | 299 | @ cd test && ./udev-test.pl |
0e47c219 | 300 | .PHONY: test tests |
0de3c3ed | 301 | |
17d3cb12 | 302 | buildtest: |
ed0e3cbd | 303 | test/simple-build-check.sh |
a8b38f1c KS |
304 | .PHONY: buildtest |
305 | ||
d847330c KS |
306 | ChangeLog: |
307 | head -1 $@ | grep -q "to v$(shell echo $$(($(VERSION) - 1)))" | |
ed0e3cbd | 308 | @ mv $@ $@.tmp |
adc8e4b9 | 309 | @ echo "Summary of changes from v$(shell echo $$(($(VERSION) - 1))) to v$(VERSION)" >> $@ |
ed0e3cbd | 310 | @ echo "============================================" >> $@ |
731a7d6d | 311 | @ echo >> $@ |
adc8e4b9 | 312 | @ git log --pretty=short $(shell echo $$(($(VERSION) - 1)))..HEAD | git shortlog >> $@ |
ed0e3cbd KS |
313 | @ echo >> $@ |
314 | @ cat $@ | |
315 | @ cat $@.tmp >> $@ | |
316 | @ rm $@.tmp | |
d847330c KS |
317 | head -1 $@ | grep -q "to v$(VERSION)" |
318 | .PHONY: ChangeLog | |
319 | .PRECIOUS: ChangeLog | |
320 | ||
321 | release: | |
322 | $(Q) - rm -f udev-$(VERSION).tar.gz | |
323 | $(Q) - rm -f udev-$(VERSION).tar.bz2 | |
324 | head -1 ChangeLog | grep -q "to v$(VERSION)" | |
325 | head -1 RELEASE-NOTES | grep -q "udev $(VERSION)" | |
326 | git commit -a -m "release $(VERSION)" | |
327 | cat .git/refs/heads/master > .git/refs/tags/$(VERSION) | |
328 | @ echo | |
329 | git-archive --format=tar --prefix=udev-$(VERSION)/ HEAD | gzip -9v > udev-$(VERSION).tar.gz | |
330 | git-archive --format=tar --prefix=udev-$(VERSION)/ HEAD | bzip2 -9v > udev-$(VERSION).tar.bz2 | |
331 | .PHONY: release | |
ed0e3cbd | 332 | |
2ff5082a RH |
333 | dist: |
334 | git-archive --format=tar --prefix=udev-$(VERSION)/ HEAD | gzip -9v > udev-$(VERSION).tar.gz | |
335 | git-archive --format=tar --prefix=udev-$(VERSION)/ HEAD | bzip2 -9v > udev-$(VERSION).tar.bz2 | |
336 | .PHONY: dist | |
337 | ||
e2ecb34f KS |
338 | patch: |
339 | git diff $(shell echo $$(($(VERSION) - 1))) HEAD > udev-git-HEAD.patch | |
340 | .PHONY: patch | |
341 | ||
a8b38f1c | 342 | gcov-all: |
15ff0ba3 | 343 | $(MAKE) clean all USE_GCOV=true |
1ef98545 KS |
344 | @ echo |
345 | @ echo "binaries built with gcov support." | |
346 | @ echo "run the tests and analyze with 'make udev_gcov.txt'" | |
a8b38f1c KS |
347 | .PHONY: gcov-all |
348 | ||
349 | # see docs/README-gcov_for_udev | |
350 | udev_gcov.txt: $(wildcard *.gcda) $(wildcard *.gcno) | |
351 | for file in `find -maxdepth 1 -name "*.gcno"`; do \ | |
352 | name=`basename $$file .gcno`; \ | |
353 | echo "################" >> $@; \ | |
354 | echo "$$name.c" >> $@; \ | |
355 | echo "################" >> $@; \ | |
356 | if [ -e "$$name.gcda" ]; then \ | |
357 | gcov -l "$$name.c" >> $@ 2>&1; \ | |
358 | else \ | |
359 | echo "code for $$name.c was never executed" >> $@ 2>&1; \ | |
360 | fi; \ | |
361 | echo >> $@; \ | |
362 | done; \ | |
363 | echo "view $@ for the result" |