configure: set default values
[vlock.git] / Makefile
blobef943ed90cac88a76f88eb68da0454d668ebb7d6
1 # vlock makefile
3 include config.mk
4 include system.mk
6 VPATH = src
8 VLOCK_VERSION = 2.2 alpha2
10 PROGRAMS = vlock vlock-main
12 .PHONY: all
13 all: $(PROGRAMS)
15 .PHONY: debug
16 debug:
17 @$(MAKE) DEBUG=y
19 ifeq ($(USE_PLUGINS),y)
20 all: plugins
21 endif
23 .PHONY: plugins
24 plugins: modules scripts
26 .PHONY: modules
27 modules:
28 @$(MAKE) -C modules
30 .PHONY: scripts
31 scripts:
32 @$(MAKE) -C scripts
34 ### installation rules ###
36 .PHONY: install
37 install: install-programs install-man
39 ifeq ($(USE_PLUGINS),y)
40 install: install-plugins
41 endif
43 .PHONY: install-programs
44 install-programs: $(PROGRAMS)
45 $(MKDIR_P) $(DESTDIR)$(PREFIX)/bin
46 $(INSTALL) -m 755 -o root -g $(ROOT_GROUP) vlock $(DESTDIR)$(PREFIX)/bin/vlock
47 $(MKDIR_P) $(DESTDIR)$(PREFIX)/sbin
48 $(INSTALL) -m 4711 -o root -g $(ROOT_GROUP) vlock-main $(DESTDIR)$(PREFIX)/sbin/vlock-main
50 .PHONY: install-plugins
51 install-plugins: install-modules install-scripts
53 .PHONY: install-modules
54 install-modules:
55 @$(MAKE) -C modules install
57 .PHONY: install-scripts
58 install-scripts:
59 @$(MAKE) -C scripts install
61 .PHONY: install-man
62 install-man:
63 $(MKDIR_P) $(DESTDIR)$(PREFIX)/share/man/man1
64 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock.1 $(DESTDIR)$(PREFIX)/share/man/man1/vlock.1
65 $(MKDIR_P) $(DESTDIR)$(PREFIX)/share/man/man8
66 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-main.8 $(DESTDIR)$(PREFIX)/share/man/man8/vlock-main.8
69 ### build rules ###
71 vlock: vlock.sh config.mk Makefile
72 $(BOURNE_SHELL) -n $<
73 sed \
74 -e 's,%BOURNE_SHELL%,$(BOURNE_SHELL),' \
75 -e 's,%PREFIX%,$(PREFIX),' \
76 -e 's,%VLOCK_VERSION%,$(VLOCK_VERSION),' \
77 -e 's,%VLOCK_USE_PLUGINS%,$(USE_PLUGINS),' \
78 $< > $@.tmp
79 mv -f $@.tmp $@
81 override CFLAGS += -Isrc
83 vlock-main: vlock-main.o prompt.o auth-$(AUTH_METHOD).o console_switch.o util.o
85 auth-pam.o: auth-pam.c prompt.h auth.h
86 auth-shadow.o: auth-shadow.c prompt.h auth.h
87 prompt.o: prompt.c prompt.h
88 vlock-main.o: vlock-main.c auth.h prompt.h util.h
89 plugins.o: plugins.c tsort.h plugin.h plugins.h list.h util.h
90 module.o : override CFLAGS += -DVLOCK_MODULE_DIR="\"$(VLOCK_MODULE_DIR)\""
91 module.o: module.c plugin.h list.h util.h
92 script.o : override CFLAGS += -DVLOCK_SCRIPT_DIR="\"$(VLOCK_SCRIPT_DIR)\""
93 script.o: script.c plugin.h process.h list.h util.h
94 plugin.o: plugin.c plugin.h list.h util.h
95 tsort.o: tsort.c tsort.h list.h
96 list.o: list.c list.h util.h
97 console_switch.o: console_switch.c console_switch.h
98 process.o: process.c process.h
99 util.o: util.c util.h
101 ifneq ($(USE_ROOT_PASS),y)
102 vlock-main.o : override CFLAGS += -DNO_ROOT_PASS
103 endif
105 ifeq ($(AUTH_METHOD),pam)
106 vlock-main : override LDFLAGS += $(PAM_LIBS)
107 endif
109 ifeq ($(AUTH_METHOD),shadow)
110 vlock-main : override LDFLAGS += $(CRYPT_LIB)
111 endif
113 ifeq ($(USE_PLUGINS),y)
114 vlock-main: plugins.o plugin.o module.o process.o script.o tsort.o list.o
115 # -rdynamic is needed so that the all plugin can access the symbols from console_switch.o
116 vlock-main : override LDFLAGS += $(DL_LIB) -rdynamic
117 vlock-main.o : override CFLAGS += -DUSE_PLUGINS
118 vlock-main.o: plugins.h
119 endif
121 .PHONY: clean
122 clean:
123 $(RM) $(PROGRAMS) $(wildcard *.o)
124 @$(MAKE) -C modules clean
125 @$(MAKE) -C scripts clean