2 # Copyright (C) 2013-2014 FUJITSU LIMITED
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; version 2
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 exec_prefix ?= ${prefix}
23 datarootdir ?= ${prefix}/share
24 sbindir ?= ${exec_prefix}/sbin
25 libdir ?= ${exec_prefix}/lib64
26 systemddir ?= ${prefix}/lib/systemd
29 mandir ?= ${prefix}/share/man
30 docdir ?= ${datarootdir}/doc/lxcf-${VERSION}
32 all: src/lxcf-resource1 src/lxcf-sched doc/lxcf.1.gz
34 .PHONY: all install install_lib_lxcf install_sbin_lxcf install_conf \
35 install_hooks install_man clean uninstall
38 @if [ ! -f $@ ] ; then touch $@ ; fi
39 ifneq ($(strip $(sbindir)),/usr/sbin)
40 sed -i "s@/usr/sbin@$(sbindir)@g" cmd/*
42 ifneq ($(strip $(libdir)),/usr/lib64)
43 sed -i "s@/usr/lib64@$(libdir)@g" cmd/* conf/* lib/*
45 ifneq ($(strip $(systemddir)),/usr/lib/systemd)
46 sed -i "s@/usr/lib/systemd@$(systemddir)@g" lib/*
48 ifneq ($(strip $(sysconfdir)),/etc)
49 @touch -r src/lxcf-resource1.c .stamp-h1
50 @touch -r doc/lxcf.1 .stamp-h2
51 sed -i "s@/etc/lxcf@$(sysconfdir)/lxcf@g" cmd/* doc/* lib/* src/*
52 @touch -r .stamp-h1 src/lxcf-resource1.c ; rm -f .stamp-h1
53 @touch -r .stamp-h2 doc/lxcf.1 ; rm -f .stamp-h2
55 ifneq ($(strip $(localstatedir)),/var)
56 @touch -r src/lxcf-sched.c .stamp-h3
57 sed -i "s@/var/\(\(log\|tmp\)/lxcf\)@$(localstatedir)/\1@g" \
59 @touch -r .stamp-h3 src/lxcf-sched.c ; rm -f .stamp-h3
62 install: src/lxcf-resource1 src/lxcf-sched doc/lxcf.1.gz install_lib_lxcf \
63 install_sbin_lxcf install_conf install_hooks install_man
64 ifeq ($(strip $(DESTDIR)),)
65 @echo "Please reboot this system."
68 src/lxcf-resource1: src/lxcf-resource1.c .prepare
69 $(CC) $(CFLAGS) -o $@ src/lxcf-resource1.c
71 src/lxcf-sched: src/lxcf-sched.c .prepare
72 $(CC) $(CFLAGS) -o $@ src/lxcf-sched.c
74 doc/lxcf.1.gz: doc/lxcf.1 .prepare
75 gzip -c doc/lxcf.1 > $@
77 install_lib_lxcf: .prepare
78 install -d -m 755 $(DESTDIR)$(libdir)/lxcf
79 install -m 755 lib/lxcf-init $(DESTDIR)$(libdir)/lxcf/lxcf-init
80 install -m 755 lib/lxcf-keygen $(DESTDIR)$(libdir)/lxcf/lxcf-keygen
81 install -m 755 lib/lxcf-rc $(DESTDIR)$(libdir)/lxcf/lxcf-rc
82 install -m 755 lib/lxcf-config $(DESTDIR)$(libdir)/lxcf/lxcf-config
83 install -m 755 lib/lxcf-maintenance $(DESTDIR)$(libdir)/lxcf/lxcf-maintenance
84 install -m 755 lib/lxcf-resource $(DESTDIR)$(libdir)/lxcf/lxcf-resource
85 install -m 755 src/lxcf-resource1 $(DESTDIR)$(libdir)/lxcf/lxcf-resource1
86 install -m 755 lib/lxcf-resource2 $(DESTDIR)$(libdir)/lxcf/lxcf-resource2
87 install -m 755 src/lxcf-sched $(DESTDIR)$(libdir)/lxcf/lxcf-sched
88 install -m 755 lib/lxcf-collection-broken-container $(DESTDIR)$(libdir)/lxcf/lxcf-collection-broken-container
89 install -m 755 lib/lxcf-sysgen $(DESTDIR)$(libdir)/lxcf/lxcf-sysgen
90 install -m 755 lib/lxcf-check-json $(DESTDIR)$(libdir)/lxcf/lxcf-check-json
91 install -m 755 lib/lxcf-createfile $(DESTDIR)$(libdir)/lxcf/lxcf-createfile
92 install -m 755 lib/lxcf-clearlog $(DESTDIR)$(libdir)/lxcf/lxcf-clearlog
93 install -m 755 lib/lxcf-setup $(DESTDIR)$(libdir)/lxcf/lxcf-setup
94 install -m 755 lib/lxcf-define $(DESTDIR)$(libdir)/lxcf/lxcf-define
95 install -m 755 lib/lxcf-load $(DESTDIR)$(libdir)/lxcf/lxcf-load
96 install -m 755 lib/lxcf-clone $(DESTDIR)$(libdir)/lxcf/lxcf-clone
97 install -m 755 lib/lxcf-clone-setup $(DESTDIR)$(libdir)/lxcf/lxcf-clone-setup
98 install -m 755 lib/lxcf-erase $(DESTDIR)$(libdir)/lxcf/lxcf-erase
99 install -m 755 lib/lxcf-erase-setup $(DESTDIR)$(libdir)/lxcf/lxcf-erase-setup
100 install -m 755 lib/lxcf-list $(DESTDIR)$(libdir)/lxcf/lxcf-list
101 install -m 755 lib/lxcf-update $(DESTDIR)$(libdir)/lxcf/lxcf-update
102 install -m 755 lib/lxcf-update1 $(DESTDIR)$(libdir)/lxcf/lxcf-update1
103 install -m 755 lib/lxcf-update2 $(DESTDIR)$(libdir)/lxcf/lxcf-update2
104 install -m 755 lib/lxcf-deploy $(DESTDIR)$(libdir)/lxcf/lxcf-deploy
105 install -m 755 lib/lxcf-start $(DESTDIR)$(libdir)/lxcf/lxcf-start
106 install -m 755 lib/lxcf-stop $(DESTDIR)$(libdir)/lxcf/lxcf-stop
107 install -m 755 lib/lxcf-reboot $(DESTDIR)$(libdir)/lxcf/lxcf-reboot
108 install -m 755 lib/lxcf-suspend $(DESTDIR)$(libdir)/lxcf/lxcf-suspend
109 install -m 755 lib/lxcf-resume $(DESTDIR)$(libdir)/lxcf/lxcf-resume
110 install -m 755 lib/lxcf-run $(DESTDIR)$(libdir)/lxcf/lxcf-run
111 install -m 755 lib/lxcf-autostart $(DESTDIR)$(libdir)/lxcf/lxcf-autostart
112 install -m 755 lib/lxcf-submit $(DESTDIR)$(libdir)/lxcf/lxcf-submit
113 install -m 755 lib/lxcf-snapshot $(DESTDIR)$(libdir)/lxcf/lxcf-snapshot
114 install -m 755 lib/lxcf-restore $(DESTDIR)$(libdir)/lxcf/lxcf-restore
115 install -m 755 lib/lxcf-uuid $(DESTDIR)$(libdir)/lxcf/lxcf-uuid
116 install -m 755 lib/lxcf-syncusr $(DESTDIR)$(libdir)/lxcf/lxcf-syncusr
117 install -m 755 lib/lxcf-log $(DESTDIR)$(libdir)/lxcf/lxcf-log
118 install -m 755 lib/lxcf-queue-list $(DESTDIR)$(libdir)/lxcf/lxcf-queue-list
119 install -m 755 lib/lxcf-queue-clear $(DESTDIR)$(libdir)/lxcf/lxcf-queue-clear
120 install -m 755 lib/lxcf-queue-cancel $(DESTDIR)$(libdir)/lxcf/lxcf-queue-cancel
121 install -m 755 lib/lxcf-queue-move $(DESTDIR)$(libdir)/lxcf/lxcf-queue-move
122 install -m 755 lib/lxcf-queue-multi $(DESTDIR)$(libdir)/lxcf/lxcf-queue-multi
123 install -m 755 lib/lxcf-parmchk-num $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-num
124 install -m 755 lib/lxcf-parmchk-num-kmg $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-num-kmg
125 install -m 755 lib/lxcf-parmchk-cname $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-cname
126 install -m 755 lib/lxcf-parmchk-float $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-float
127 install -m 755 lib/lxcf-parmchk-float-kmg $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-float-kmg
128 install -m 755 lib/lxcf-parmchk-hexdig $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-hexdig
129 install -m 755 lib/lxcf-parmchk-MJMI $(DESTDIR)$(libdir)/lxcf/lxcf-parmchk-MJMI
131 install_sbin_lxcf: .prepare
132 install -d -m 755 $(DESTDIR)$(sbindir)
133 install -m 755 cmd/lxcf $(DESTDIR)$(sbindir)/lxcf
134 install -d -m 755 $(DESTDIR)$(libdir)/lxcf/sbin
135 install -m 755 cmd/update-alert $(DESTDIR)$(libdir)/lxcf/sbin/update-alert
136 install -m 755 cmd/cpun $(DESTDIR)$(libdir)/lxcf/sbin/cpun
137 install -m 755 cmd/cpurate $(DESTDIR)$(libdir)/lxcf/sbin/cpurate
138 install -m 755 cmd/numa $(DESTDIR)$(libdir)/lxcf/sbin/numa
139 install -m 755 cmd/memlimit $(DESTDIR)$(libdir)/lxcf/sbin/memlimit
140 install -m 755 cmd/memswlimit $(DESTDIR)$(libdir)/lxcf/sbin/memswlimit
141 install -m 755 cmd/blkio_r $(DESTDIR)$(libdir)/lxcf/sbin/blkio_r
142 install -m 755 cmd/blkio_w $(DESTDIR)$(libdir)/lxcf/sbin/blkio_w
143 install -m 755 cmd/blkiops_r $(DESTDIR)$(libdir)/lxcf/sbin/blkiops_r
144 install -m 755 cmd/blkiops_w $(DESTDIR)$(libdir)/lxcf/sbin/blkiops_w
145 install -m 755 cmd/net_cls $(DESTDIR)$(libdir)/lxcf/sbin/net_cls
146 install -m 755 cmd/set $(DESTDIR)$(libdir)/lxcf/sbin/set
147 install -m 755 cmd/set-n $(DESTDIR)$(libdir)/lxcf/sbin/set-n
148 install -m 755 cmd/show $(DESTDIR)$(libdir)/lxcf/sbin/show
149 install -m 755 cmd/sysgen $(DESTDIR)$(libdir)/lxcf/sbin/sysgen
150 install -m 755 cmd/sysgen-n $(DESTDIR)$(libdir)/lxcf/sbin/sysgen-n
151 install -m 755 cmd/clone $(DESTDIR)$(libdir)/lxcf/sbin/clone
152 install -m 755 cmd/clone-n $(DESTDIR)$(libdir)/lxcf/sbin/clone-n
153 install -m 755 cmd/erase $(DESTDIR)$(libdir)/lxcf/sbin/erase
154 install -m 755 cmd/erase-n $(DESTDIR)$(libdir)/lxcf/sbin/erase-n
155 install -m 755 cmd/list $(DESTDIR)$(libdir)/lxcf/sbin/list
156 install -m 755 cmd/log $(DESTDIR)$(libdir)/lxcf/sbin/log
157 install -m 755 cmd/update $(DESTDIR)$(libdir)/lxcf/sbin/update
158 install -m 755 cmd/deploy $(DESTDIR)$(libdir)/lxcf/sbin/deploy
159 install -m 755 cmd/start $(DESTDIR)$(libdir)/lxcf/sbin/start
160 install -m 755 cmd/start-n $(DESTDIR)$(libdir)/lxcf/sbin/start-n
161 install -m 755 cmd/stop $(DESTDIR)$(libdir)/lxcf/sbin/stop
162 install -m 755 cmd/stop-n $(DESTDIR)$(libdir)/lxcf/sbin/stop-n
163 install -m 755 cmd/reboot $(DESTDIR)$(libdir)/lxcf/sbin/reboot
164 install -m 755 cmd/suspend $(DESTDIR)$(libdir)/lxcf/sbin/suspend
165 install -m 755 cmd/suspend-n $(DESTDIR)$(libdir)/lxcf/sbin/suspend-n
166 install -m 755 cmd/resume $(DESTDIR)$(libdir)/lxcf/sbin/resume
167 install -m 755 cmd/resume-n $(DESTDIR)$(libdir)/lxcf/sbin/resume-n
168 install -m 755 cmd/run $(DESTDIR)$(libdir)/lxcf/sbin/run
169 install -m 755 cmd/autostart $(DESTDIR)$(libdir)/lxcf/sbin/autostart
170 install -m 755 cmd/submit $(DESTDIR)$(libdir)/lxcf/sbin/submit
171 install -m 755 cmd/queue $(DESTDIR)$(libdir)/lxcf/sbin/queue
172 install -m 755 cmd/q $(DESTDIR)$(libdir)/lxcf/sbin/q
173 install -m 755 cmd/snapshot $(DESTDIR)$(libdir)/lxcf/sbin/snapshot
174 install -m 755 cmd/restore $(DESTDIR)$(libdir)/lxcf/sbin/restore
175 install -m 755 cmd/helpcmd $(DESTDIR)$(libdir)/lxcf/sbin/helpcmd
176 install -m 755 cmd/version $(DESTDIR)$(libdir)/lxcf/sbin/version
178 install_conf: .prepare
179 install -m 644 conf/helpfile.txt $(DESTDIR)$(libdir)/lxcf/helpfile.txt
180 install -d -m 755 $(DESTDIR)$(sysconfdir)/lxcf
181 install -m 644 conf/lxcf.conf $(DESTDIR)$(sysconfdir)/lxcf/lxcf.conf
182 install -m 644 conf/lxcf.conf $(DESTDIR)$(libdir)/lxcf/lxcf.conf
183 install -d -m 755 $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks
184 install -m 644 conf/etc_lxcfnet1.xml \
185 $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/lxcfnet1.xml
186 install -d -m 755 $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart
187 ln -f -s $(sysconfdir)/libvirt/qemu/networks/lxcfnet1.xml \
188 $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart/lxcfnet1.xml
189 install -d -m 755 $(DESTDIR)$(systemddir)/system
190 install -m 644 conf/lxcf.service $(DESTDIR)$(systemddir)/system/lxcf.service
191 install -m 644 conf/lxcf-sched.service $(DESTDIR)$(systemddir)/system/lxcf-sched.service
192 install -d -m 755 $(DESTDIR)$(sysconfdir)/systemd/system/multi-user.target.wants
193 #ln -f -s $(systemddir)/system/lxcf.service \
194 # $(DESTDIR)$(sysconfdir)/systemd/system/multi-user.target.wants/lxcf.service
195 #ln -f -s $(systemddir)/system/lxcf-sched.service \
196 # $(DESTDIR)$(sysconfdir)/systemd/system/multi-user.target.wants/lxcf-sched.service
197 install -d -m 755 $(DESTDIR)$(localstatedir)/lib/libvirt/network
198 install -m 644 conf/var_lxcfnet1.xml \
199 $(DESTDIR)$(localstatedir)/lib/libvirt/network/lxcfnet1.xml
200 install -d -m 755 $(DESTDIR)$(localstatedir)/log/lxcf
201 ifeq ($(strip $(DESTDIR)),)
202 $(DESTDIR)$(libdir)/lxcf/lxcf-init
205 install_hooks: .prepare
206 install -d -m 755 $(DESTDIR)$(sysconfdir)/libvirt/hooks
207 install -m 755 conf/lxcf-hook $(DESTDIR)$(sysconfdir)/libvirt/hooks/lxc
208 install -m 755 conf/lxcf-hook $(DESTDIR)$(sysconfdir)/libvirt/hooks/qemu
210 install_man: ChangeLog
211 install -d -m 755 $(DESTDIR)$(mandir)/man1
212 install -m 644 doc/lxcf.1.gz $(DESTDIR)$(mandir)/man1/lxcf.1.gz
213 install -d -m 755 $(DESTDIR)$(docdir)
214 install -m 644 README $(DESTDIR)$(docdir)/README
215 install -m 644 COPYING $(DESTDIR)$(docdir)/COPYING
216 install -m 644 ChangeLog $(DESTDIR)$(docdir)/ChangeLog
217 install -m 644 AUTHORS $(DESTDIR)$(docdir)/AUTHORS
218 install -d -m 755 $(DESTDIR)$(docdir)/example
219 install -m 644 example/README $(DESTDIR)$(docdir)/example/README
220 install -m 755 example/HA10 $(DESTDIR)$(docdir)/example/HA10
221 install -m 755 example/ops-script $(DESTDIR)$(docdir)/example/ops-script
224 if [ ! -f $@ ] ; then touch $@ ; fi
227 rm -f src/lxcf-resource1
231 ifneq ($(strip $(sbindir)),/usr/sbin)
232 sed -i "s@$(sbindir)@/usr/sbin@g" cmd/*
234 ifneq ($(strip $(libdir)),/usr/lib64)
235 sed -i "/\(\/usr\/lib64\|systemd\|libexec\)/!s@$(libdir)@/usr/lib64@g" \
238 ifneq ($(strip $(systemddir)),/usr/lib/systemd)
239 sed -i "s@$(systemddir)@/usr/lib/systemd@g" lib/*
241 ifneq ($(strip $(sysconfdir)),/etc)
242 @touch -r src/lxcf-resource1.c .stamp-h1
243 @touch -r doc/lxcf.1 .stamp-h2
244 sed -i "s@$(sysconfdir)/lxcf@/etc/lxcf@g" cmd/* doc/* lib/* src/*
245 @touch -r .stamp-h1 src/lxcf-resource1.c ; rm -f .stamp-h1
246 @touch -r .stamp-h2 doc/lxcf.1 ; rm -f .stamp-h2
248 ifneq ($(strip $(localstatedir)),/var)
249 @touch -r src/lxcf-sched.c .stamp-h3
250 sed -i "s@/$(sysconfdir)/\(\(log\|tmp\)/lxcf\)@/var/\1@g" \
252 @touch -r .stamp-h3 src/lxcf-sched.c ; rm -f .stamp-h3
257 ifeq ($(strip $(DESTDIR)),)
258 systemctl disable lxcf-sched
260 rm -f $(DESTDIR)$(sbindir)/lxcf
261 rm -rf $(DESTDIR)$(libdir)/lxcf
262 rm -rf $(DESTDIR)$(sysconfdir)/libvirt/hooks
263 rm -f $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/lxcfnet1.xml
264 rm -f $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart/lxcfnet1.xml
265 rm -f $(DESTDIR)$(systemddir)/system/lxcf.service
266 rm -f $(DESTDIR)$(systemddir)/system/lxcf-sched.service
267 rm -f $(DESTDIR)$(sysconfdir)/systemd/system/multi-user.target.wants/lxcf.service
268 rm -f $(DESTDIR)$(sysconfdir)/systemd/system/multi-user.target.wants/lxcf-sched.service
269 rm -f $(DESTDIR)$(localstatedir)/lib/libvirt/network/lxcfnet1.xml
270 rm -rf $(DESTDIR)$(localstatedir)/log/lxcf
271 rm -rf $(DESTDIR)$(localstatedir)/tmp/lxcf
272 rm -f $(DESTDIR)$(mandir)/man1/lxcf.1.gz
273 rm -rf $(DESTDIR)$(docdir)