vlock 2.2 rc3
[vlock.git] / Makefile
blob9e7148c4ada72f6bb8c1e9497ff466a3085ea052
1 # vlock makefile
3 include config.mk
5 VPATH = src
7 VLOCK_VERSION = 2.2 rc3
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 ### configuration ###
35 config.mk:
36 $(info )
37 $(info ###################################################)
38 $(info # Creating default configuration. #)
39 $(info # Run ./configure or edit config.mk to customize. #)
40 $(info ###################################################)
41 $(info )
42 @./configure --quiet
44 ### installation rules ###
46 .PHONY: install
47 install: install-programs install-man
49 ifeq ($(ENABLE_PLUGINS),yes)
50 install: install-plugins
51 endif
53 .PHONY: install-programs
54 install-programs: $(PROGRAMS)
55 $(MKDIR_P) -m 755 $(DESTDIR)$(PREFIX)/bin
56 $(INSTALL) -m 755 -o root -g $(ROOT_GROUP) vlock $(DESTDIR)$(BINDIR)/vlock
57 $(MKDIR_P) -m 755 $(DESTDIR)$(PREFIX)/sbin
58 $(INSTALL) -m 4711 -o root -g $(ROOT_GROUP) vlock-main $(DESTDIR)$(SBINDIR)/vlock-main
60 .PHONY: install-plugins
61 install-plugins: install-modules install-scripts
63 .PHONY: install-modules
64 install-modules:
65 @$(MAKE) -C modules install
67 .PHONY: install-scripts
68 install-scripts:
69 @$(MAKE) -C scripts install
71 .PHONY: install-man
72 install-man:
73 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man1
74 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock.1 $(DESTDIR)$(MANDIR)/man1/vlock.1
75 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man8
76 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-main.8 $(DESTDIR)$(MANDIR)/man8/vlock-main.8
77 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man5
78 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-plugins.5 $(DESTDIR)$(MANDIR)/man5/vlock-plugins.5
81 ### build rules ###
83 vlock: vlock.sh config.mk Makefile
84 $(BOURNE_SHELL) -n $<
85 sed \
86 -e 's,%BOURNE_SHELL%,$(BOURNE_SHELL),' \
87 -e 's,%PREFIX%,$(PREFIX),' \
88 -e 's,%VLOCK_VERSION%,$(VLOCK_VERSION),' \
89 -e 's,%VLOCK_ENABLE_PLUGINS%,$(ENABLE_PLUGINS),' \
90 $< > $@.tmp
91 mv -f $@.tmp $@
93 override CFLAGS += -Isrc
95 vlock-main: vlock-main.o prompt.o auth-$(AUTH_METHOD).o console_switch.o util.o
97 auth-pam.o: auth-pam.c prompt.h auth.h
98 auth-shadow.o: auth-shadow.c prompt.h auth.h
99 prompt.o: prompt.c prompt.h
100 vlock-main.o: vlock-main.c auth.h prompt.h util.h
101 plugins.o: plugins.c tsort.h plugin.h plugins.h list.h util.h
102 module.o : override CFLAGS += -DVLOCK_MODULE_DIR="\"$(MODULEDIR)\""
103 module.o: module.c plugin.h list.h util.h
104 script.o : override CFLAGS += -DVLOCK_SCRIPT_DIR="\"$(SCRIPTDIR)\""
105 script.o: script.c plugin.h process.h list.h util.h
106 plugin.o: plugin.c plugin.h list.h util.h
107 tsort.o: tsort.c tsort.h list.h
108 list.o: list.c list.h util.h
109 console_switch.o: console_switch.c console_switch.h
110 process.o: process.c process.h
111 util.o: util.c util.h
113 ifneq ($(ENABLE_ROOT_PASSWORD),yes)
114 vlock-main.o : override CFLAGS += -DNO_ROOT_PASS
115 endif
117 ifeq ($(AUTH_METHOD),pam)
118 vlock-main : override LDFLAGS += $(PAM_LIBS)
119 endif
121 ifeq ($(AUTH_METHOD),shadow)
122 vlock-main : override LDFLAGS += $(CRYPT_LIB)
123 endif
125 ifeq ($(ENABLE_PLUGINS),yes)
126 vlock-main: plugins.o plugin.o module.o process.o script.o tsort.o list.o
127 # -rdynamic is needed so that the all plugin can access the symbols from console_switch.o
128 vlock-main : override LDFLAGS += $(DL_LIB) -rdynamic
129 vlock-main.o : override CFLAGS += -DUSE_PLUGINS
130 vlock-main.o: plugins.h
131 endif
133 .PHONY: realclean
134 realclean: clean
135 $(RM) config.mk
137 .PHONY: clean
138 clean:
139 $(RM) $(PROGRAMS) $(wildcard *.o)
140 @$(MAKE) -C modules clean
141 @$(MAKE) -C scripts clean