document the change in prompt timeout handling
[vlock.git] / Makefile
blob055e7db240db431daf6a56a1d00ed463cdc0bd88
1 # vlock makefile
3 include config.mk
5 VPATH = src
7 VLOCK_VERSION = 2.3-alpha1
9 PROGRAMS = vlock vlock-main
11 .PHONY: all
12 all: $(PROGRAMS)
14 .PHONY: debug
15 debug:
16 @$(MAKE) DEBUG=y
18 ifeq ($(ENABLE_PLUGINS),yes)
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 .PHONY: check memcheck
34 check memcheck:
35 @$(MAKE) -C tests $@
37 .PHONY: uncrustify
38 uncrustify:
39 uncrustify -c .uncrustify.cfg --mtime --no-backup $(wildcard src/*.c src/*.h)
41 ### configuration ###
43 config.mk:
44 $(info )
45 $(info ###################################################)
46 $(info # Creating default configuration. #)
47 $(info # Run ./configure or edit config.mk to customize. #)
48 $(info ###################################################)
49 $(info )
50 @./configure --quiet
52 ### installation rules ###
54 .PHONY: install
55 install: install-programs install-man
57 ifeq ($(ENABLE_PLUGINS),yes)
58 install: install-plugins
59 endif
61 .PHONY: install-programs
62 install-programs: $(PROGRAMS)
63 $(MKDIR_P) -m 755 $(DESTDIR)$(PREFIX)/bin
64 $(INSTALL) -m 755 -o root -g $(ROOT_GROUP) vlock $(DESTDIR)$(BINDIR)/vlock
65 $(MKDIR_P) -m 755 $(DESTDIR)$(PREFIX)/sbin
66 $(INSTALL) -m 4711 -o root -g $(ROOT_GROUP) vlock-main $(DESTDIR)$(SBINDIR)/vlock-main
68 .PHONY: install-plugins
69 install-plugins: install-modules install-scripts
71 .PHONY: install-modules
72 install-modules:
73 @$(MAKE) -C modules install
75 .PHONY: install-scripts
76 install-scripts:
77 @$(MAKE) -C scripts install
79 .PHONY: install-man
80 install-man:
81 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man1
82 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock.1 $(DESTDIR)$(MANDIR)/man1/vlock.1
83 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man8
84 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-main.8 $(DESTDIR)$(MANDIR)/man8/vlock-main.8
85 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man5
86 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-plugins.5 $(DESTDIR)$(MANDIR)/man5/vlock-plugins.5
89 ### build rules ###
91 vlock: vlock.sh config.mk Makefile
92 $(BOURNE_SHELL) -n $<
93 sed \
94 -e 's,%BOURNE_SHELL%,$(BOURNE_SHELL),' \
95 -e 's,%PREFIX%,$(PREFIX),' \
96 -e 's,%VLOCK_VERSION%,$(VLOCK_VERSION),' \
97 -e 's,%VLOCK_ENABLE_PLUGINS%,$(ENABLE_PLUGINS),' \
98 $< > $@.tmp
99 mv -f $@.tmp $@
101 override CFLAGS += -Isrc
103 VLOCK_MAIN_SOURCES = \
104 vlock-main.c \
105 prompt.c \
106 auth-$(AUTH_METHOD).c \
107 console_switch.c \
108 signals.c \
109 terminal.c \
110 util.c \
111 logging.c
113 VLOCK_MAIN_OBJECTS = $(VLOCK_MAIN_SOURCES:.c=.o)
115 ifeq ($(ENABLE_PLUGINS),yes)
116 VLOCK_MAIN_SOURCES += plugins.c plugin.c module.c process.c script.c tsort.c
118 # -rdynamic is needed so that the all plugin can access the symbols from console_switch.o
119 vlock-main : override LDFLAGS += -rdynamic
120 vlock-main : override LDLIBS += $(DL_LIB)
121 vlock-main.o : override CFLAGS += -DUSE_PLUGINS
123 module.o : override CFLAGS += -DVLOCK_MODULE_DIR="\"$(MODULEDIR)\""
124 script.o : override CFLAGS += -DVLOCK_SCRIPT_DIR="\"$(SCRIPTDIR)\""
125 endif
127 ifneq ($(ENABLE_ROOT_PASSWORD),yes)
128 vlock-main.o : override CFLAGS += -DNO_ROOT_PASS
129 endif
131 ifeq ($(AUTH_METHOD),pam)
132 vlock-main : override LDLIBS += $(PAM_LIBS)
133 endif
135 ifeq ($(AUTH_METHOD),shadow)
136 vlock-main : override LDLIBS += $(CRYPT_LIB)
137 endif
139 vlock-main: $(VLOCK_MAIN_OBJECTS)
141 # dependencies generated by gcc
142 .deps.mk: $(VLOCK_MAIN_SOURCES)
143 $(info Regenerating dependencies ...)
144 @$(CC) $(CFLAGS) -MM $^ > $@
146 include .deps.mk
148 .PHONY: realclean
149 realclean: clean
150 $(RM) config.mk
152 .PHONY: clean
153 clean:
154 $(RM) $(PROGRAMS) $(VLOCK_MAIN_OBJECTS) .deps.mk
155 @$(MAKE) -C modules clean
156 @$(MAKE) -C scripts clean
157 @$(MAKE) -C tests clean