move signal functions into own file
[vlock.git] / Makefile
blobff5acf051b3a36e8b93d0951fab0c72a654df947
1 # vlock makefile
3 include config.mk
5 VPATH = src
7 VLOCK_VERSION = 2.2.2
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 ### configuration ###
39 config.mk:
40 $(info )
41 $(info ###################################################)
42 $(info # Creating default configuration. #)
43 $(info # Run ./configure or edit config.mk to customize. #)
44 $(info ###################################################)
45 $(info )
46 @./configure --quiet
48 ### installation rules ###
50 .PHONY: install
51 install: install-programs install-man
53 ifeq ($(ENABLE_PLUGINS),yes)
54 install: install-plugins
55 endif
57 .PHONY: install-programs
58 install-programs: $(PROGRAMS)
59 $(MKDIR_P) -m 755 $(DESTDIR)$(PREFIX)/bin
60 $(INSTALL) -m 755 -o root -g $(ROOT_GROUP) vlock $(DESTDIR)$(BINDIR)/vlock
61 $(MKDIR_P) -m 755 $(DESTDIR)$(PREFIX)/sbin
62 $(INSTALL) -m 4711 -o root -g $(ROOT_GROUP) vlock-main $(DESTDIR)$(SBINDIR)/vlock-main
64 .PHONY: install-plugins
65 install-plugins: install-modules install-scripts
67 .PHONY: install-modules
68 install-modules:
69 @$(MAKE) -C modules install
71 .PHONY: install-scripts
72 install-scripts:
73 @$(MAKE) -C scripts install
75 .PHONY: install-man
76 install-man:
77 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man1
78 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock.1 $(DESTDIR)$(MANDIR)/man1/vlock.1
79 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man8
80 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-main.8 $(DESTDIR)$(MANDIR)/man8/vlock-main.8
81 $(MKDIR_P) -m 755 $(DESTDIR)$(MANDIR)/man5
82 $(INSTALL) -m 644 -o root -g $(ROOT_GROUP) man/vlock-plugins.5 $(DESTDIR)$(MANDIR)/man5/vlock-plugins.5
85 ### build rules ###
87 vlock: vlock.sh config.mk Makefile
88 $(BOURNE_SHELL) -n $<
89 sed \
90 -e 's,%BOURNE_SHELL%,$(BOURNE_SHELL),' \
91 -e 's,%PREFIX%,$(PREFIX),' \
92 -e 's,%VLOCK_VERSION%,$(VLOCK_VERSION),' \
93 -e 's,%VLOCK_ENABLE_PLUGINS%,$(ENABLE_PLUGINS),' \
94 $< > $@.tmp
95 mv -f $@.tmp $@
97 override CFLAGS += -Isrc
99 VLOCK_MAIN_SOURCES = \
100 vlock-main.c \
101 prompt.c \
102 auth-$(AUTH_METHOD).c \
103 console_switch.c \
104 signals.c \
105 terminal.c \
106 util.c \
107 logging.c
109 VLOCK_MAIN_OBJECTS = $(VLOCK_MAIN_SOURCES:.c=.o)
111 ifeq ($(ENABLE_PLUGINS),yes)
112 VLOCK_MAIN_SOURCES += plugins.c plugin.c module.c process.c script.c tsort.c
114 # -rdynamic is needed so that the all plugin can access the symbols from console_switch.o
115 vlock-main : override LDFLAGS += -rdynamic
116 vlock-main : override LDLIBS += $(DL_LIB)
117 vlock-main.o : override CFLAGS += -DUSE_PLUGINS
119 module.o : override CFLAGS += -DVLOCK_MODULE_DIR="\"$(MODULEDIR)\""
120 script.o : override CFLAGS += -DVLOCK_SCRIPT_DIR="\"$(SCRIPTDIR)\""
121 endif
123 ifneq ($(ENABLE_ROOT_PASSWORD),yes)
124 vlock-main.o : override CFLAGS += -DNO_ROOT_PASS
125 endif
127 ifeq ($(AUTH_METHOD),pam)
128 vlock-main : override LDLIBS += $(PAM_LIBS)
129 endif
131 ifeq ($(AUTH_METHOD),shadow)
132 vlock-main : override LDLIBS += $(CRYPT_LIB)
133 endif
135 vlock-main: $(VLOCK_MAIN_OBJECTS)
137 # dependencies generated by gcc
138 .deps:
139 $(MKDIR_P) $@
141 .deps/%.d: %.c .deps
142 $(CC) $(CFLAGS) -MM -MF $@ $<
144 VLOCK_MAIN_DEPENDENCIES = $(VLOCK_MAIN_SOURCES:%.c=.deps/%.d)
146 include $(VLOCK_MAIN_DEPENDENCIES)
149 .PHONY: realclean
150 realclean: clean
151 $(RM) config.mk
153 .PHONY: clean
154 clean:
155 $(RM) $(PROGRAMS) $(VLOCK_MAIN_OBJECTS)
156 $(RM) -r .deps
157 @$(MAKE) -C modules clean
158 @$(MAKE) -C scripts clean
159 @$(MAKE) -C tests clean