Makefile: use connect variables
[vlock.git] / Makefile
blobf13c978e21f08097a758a3e1fc58b966fcac29aa
1 # vlock makefile
3 include config.mk
5 VPATH = src
7 VLOCK_VERSION = 2.2 alpha2
9 PROGRAMS = vlock vlock-main
11 .PHONY: all
12 all: $(PROGRAMS)
14 .PHONY: debug
15 debug:
16 @$(MAKE) DEBUG=y
18 ifeq ($(USE_PLUGINS),y)
19 all: plugins
20 endif
22 .PHONY: plugins
23 plugins: modules scripts
25 .PHONY: modules
26 modules:
27 @$(MAKE) -C modules
29 .PHONY: scripts
30 scripts:
31 @$(MAKE) -C scripts
33 ### installation rules ###
35 .PHONY: install
36 install: install-programs install-man
38 ifeq ($(ENABLE_PLUGINS),yes)
39 install: install-plugins
40 endif
42 .PHONY: install-programs
43 install-programs: $(PROGRAMS)
44 $(MKDIR_P) $(DESTDIR)$(PREFIX)/bin
45 $(INSTALL) -m 755 -o root -g $(ROOT_GROUP) vlock $(DESTDIR)$(BINDIR)/vlock
46 $(MKDIR_P) $(DESTDIR)$(PREFIX)/sbin
47 $(INSTALL) -m 4711 -o root -g $(ROOT_GROUP) vlock-main $(DESTDIR)$(SBINDIR)/vlock-main
49 .PHONY: install-plugins
50 install-plugins: install-modules install-scripts
52 .PHONY: install-modules
53 install-modules:
54 @$(MAKE) -C modules install
56 .PHONY: install-scripts
57 install-scripts:
58 @$(MAKE) -C scripts install
60 .PHONY: install-man
61 install-man:
62 $(MKDIR_P) $(DESTDIR)$(PREFIX)/share/man/man1
63 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock.1 $(DESTDIR)$(MANDIR)/man1/vlock.1
64 $(MKDIR_P) $(DESTDIR)$(PREFIX)/share/man/man8
65 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-main.8 $(DESTDIR)$(MANDIR)/man8/vlock-main.8
68 ### build rules ###
70 vlock: vlock.sh config.mk Makefile
71 $(BOURNE_SHELL) -n $<
72 sed \
73 -e 's,%BOURNE_SHELL%,$(BOURNE_SHELL),' \
74 -e 's,%PREFIX%,$(PREFIX),' \
75 -e 's,%VLOCK_VERSION%,$(VLOCK_VERSION),' \
76 -e 's,%VLOCK_USE_PLUGINS%,$(USE_PLUGINS),' \
77 $< > $@.tmp
78 mv -f $@.tmp $@
80 override CFLAGS += -Isrc
82 vlock-main: vlock-main.o prompt.o auth-$(AUTH_METHOD).o console_switch.o util.o
84 auth-pam.o: auth-pam.c prompt.h auth.h
85 auth-shadow.o: auth-shadow.c prompt.h auth.h
86 prompt.o: prompt.c prompt.h
87 vlock-main.o: vlock-main.c auth.h prompt.h util.h
88 plugins.o: plugins.c tsort.h plugin.h plugins.h list.h util.h
89 module.o : override CFLAGS += -DVLOCK_MODULE_DIR="\"$(VLOCK_MODULE_DIR)\""
90 module.o: module.c plugin.h list.h util.h
91 script.o : override CFLAGS += -DVLOCK_SCRIPT_DIR="\"$(VLOCK_SCRIPT_DIR)\""
92 script.o: script.c plugin.h process.h list.h util.h
93 plugin.o: plugin.c plugin.h list.h util.h
94 tsort.o: tsort.c tsort.h list.h
95 list.o: list.c list.h util.h
96 console_switch.o: console_switch.c console_switch.h
97 process.o: process.c process.h
98 util.o: util.c util.h
100 ifneq ($(ENABLE_ROOT_PASSWORD),yes)
101 vlock-main.o : override CFLAGS += -DNO_ROOT_PASS
102 endif
104 ifeq ($(AUTH_METHOD),pam)
105 vlock-main : override LDFLAGS += $(PAM_LIBS)
106 endif
108 ifeq ($(AUTH_METHOD),shadow)
109 vlock-main : override LDFLAGS += $(CRYPT_LIB)
110 endif
112 ifeq ($(ENABLE_PLUGINS),yes)
113 vlock-main: plugins.o plugin.o module.o process.o script.o tsort.o list.o
114 # -rdynamic is needed so that the all plugin can access the symbols from console_switch.o
115 vlock-main : override LDFLAGS += $(DL_LIB) -rdynamic
116 vlock-main.o : override CFLAGS += -DUSE_PLUGINS
117 vlock-main.o: plugins.h
118 endif
120 .PHONY: clean
121 clean:
122 $(RM) $(PROGRAMS) $(wildcard *.o)
123 @$(MAKE) -C modules clean
124 @$(MAKE) -C scripts clean