# copyright (C) 2013 FUJITSU LIMITED All Rights Reserved

# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2
# of the License.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
# 02110-1301, USA.


VERSION=0.1
CFLAGS=-D__RHEL7__

all: src/lxcf-resource1

install : src/lxcf-resource1 install_lib_lxcf install_sbin_lxcf install_conf install_hooks install_man

src/lxcf-resource1 : src/lxcf-resource1.c
	${CC} ${CFLAGS} src/lxcf-resource1.c -o src/lxcf-resource1


install_lib_lxcf : 
	mkdir -p ${prefix}/usr/lib/lxcf
	chmod 755 ${prefix}/usr/lib/lxcf
	install -o root -g root -m 700 src/lxcf-resource1 ${prefix}/usr/lib/lxcf/lxcf-resource1
	install -o root -g root -m 700 lib/lxcf-resource2 ${prefix}/usr/lib/lxcf/lxcf-resource2
	install -o root -g root -m 700 lib/lxcf-resource ${prefix}/usr/lib/lxcf/lxcf-resource
	install -o root -g root -m 700 lib/lxcf-clone ${prefix}/usr/lib/lxcf/lxcf-clone
	install -o root -g root -m 700 lib/lxcf-deploy ${prefix}/usr/lib/lxcf/lxcf-deploy
	install -o root -g root -m 700 lib/lxcf-erase ${prefix}/usr/lib/lxcf/lxcf-erase
	install -o root -g root -m 700 lib/lxcf-list ${prefix}/usr/lib/lxcf/lxcf-list
	install -o root -g root -m 700 lib/lxcf-resume ${prefix}/usr/lib/lxcf/lxcf-resume
	install -o root -g root -m 700 lib/lxcf-autostart ${prefix}/usr/lib/lxcf/lxcf-autostart
	install -o root -g root -m 700 lib/lxcf-start ${prefix}/usr/lib/lxcf/lxcf-start
	install -o root -g root -m 700 lib/lxcf-stop ${prefix}/usr/lib/lxcf/lxcf-stop
	install -o root -g root -m 700 lib/lxcf-reboot ${prefix}/usr/lib/lxcf/lxcf-reboot
	install -o root -g root -m 700 lib/lxcf-suspend ${prefix}/usr/lib/lxcf/lxcf-suspend
	install -o root -g root -m 700 lib/lxcf-sysgen ${prefix}/usr/lib/lxcf/lxcf-sysgen
	install -o root -g root -m 700 lib/lxcf-update ${prefix}/usr/lib/lxcf/lxcf-update
	install -o root -g root -m 700 lib/lxcf-maintenance ${prefix}/usr/lib/lxcf/lxcf-maintenance
	install -o root -g root -m 700 lib/lxcf-rc ${prefix}/usr/lib/lxcf/lxcf-rc
	install -o root -g root -m 700 lib/lxcf-createfile ${prefix}/usr/lib/lxcf/lxcf-createfile
	install -o root -g root -m 700 lib/lxcf-define ${prefix}/usr/lib/lxcf/lxcf-define
	install -o root -g root -m 700 lib/lxcf-setup ${prefix}/usr/lib/lxcf/lxcf-setup
	install -o root -g root -m 700 lib/lxcf-config ${prefix}/usr/lib/lxcf/lxcf-config
	install -o root -g root -m 700 lib/lxcf-clone-setup ${prefix}/usr/lib/lxcf/lxcf-clone-setup
	install -o root -g root -m 700 lib/lxcf-erase-setup ${prefix}/usr/lib/lxcf/lxcf-erase-setup
	install -o root -g root -m 700 lib/lxcf-init ${prefix}/usr/lib/lxcf/lxcf-init
	install -o root -g root -m 700 lib/lxcf-keygen ${prefix}/usr/lib/lxcf/lxcf-keygen
	install -o root -g root -m 700 lib/lxcf-update1 ${prefix}/usr/lib/lxcf/lxcf-update1
	install -o root -g root -m 700 lib/lxcf-update2 ${prefix}/usr/lib/lxcf/lxcf-update2
	install -o root -g root -m 700 lib/lxcf-load ${prefix}/usr/lib/lxcf/lxcf-load
	install -o root -g root -m 700 lib/lxcf-check-json ${prefix}/usr/lib/lxcf/lxcf-check-json
	install -o root -g root -m 700 lib/lxcf-run ${prefix}/usr/lib/lxcf/lxcf-run
	install -o root -g root -m 700 lib/lxcf-parmchk-num ${prefix}/usr/lib/lxcf/lxcf-parmchk-num
	install -o root -g root -m 700 lib/lxcf-parmchk-num-kmg ${prefix}/usr/lib/lxcf/lxcf-parmchk-num-kmg
	install -o root -g root -m 700 lib/lxcf-parmchk-cname ${prefix}/usr/lib/lxcf/lxcf-parmchk-cname
	install -o root -g root -m 700 lib/lxcf-parmchk-float ${prefix}/usr/lib/lxcf/lxcf-parmchk-float
	install -o root -g root -m 700 lib/lxcf-parmchk-float-kmg ${prefix}/usr/lib/lxcf/lxcf-parmchk-float-kmg
	install -o root -g root -m 700 lib/lxcf-parmchk-hexdig ${prefix}/usr/lib/lxcf/lxcf-parmchk-hexdig
	install -o root -g root -m 700 lib/lxcf-parmchk-MJMI ${prefix}/usr/lib/lxcf/lxcf-parmchk-MJMI

install_sbin_lxcf :
	mkdir -p ${prefix}/usr/sbin
	mkdir -p ${prefix}/usr/lib/lxcf
	chmod 755 ${prefix}/usr/lib/lxcf
	mkdir -p ${prefix}/usr/lib/lxcf/sbin
	chmod 755 ${prefix}/usr/lib/lxcf/sbin
	install -o root -g root -m 700 cmd/lxcf ${prefix}/usr/sbin/lxcf
	install -o root -g root -m 700 cmd/blkio_r ${prefix}/usr/lib/lxcf/sbin/blkio_r
	install -o root -g root -m 700 cmd/blkio_w ${prefix}/usr/lib/lxcf/sbin/blkio_w
	install -o root -g root -m 700 cmd/blkiops_r ${prefix}/usr/lib/lxcf/sbin/blkiops_r
	install -o root -g root -m 700 cmd/blkiops_w ${prefix}/usr/lib/lxcf/sbin/blkiops_w
	install -o root -g root -m 700 cmd/clone ${prefix}/usr/lib/lxcf/sbin/clone
	install -o root -g root -m 700 cmd/clone-n ${prefix}/usr/lib/lxcf/sbin/clone-n
	install -o root -g root -m 700 cmd/cpun ${prefix}/usr/lib/lxcf/sbin/cpun
	install -o root -g root -m 700 cmd/cpurate ${prefix}/usr/lib/lxcf/sbin/cpurate
	install -o root -g root -m 700 cmd/deploy ${prefix}/usr/lib/lxcf/sbin/deploy
	install -o root -g root -m 700 cmd/erase ${prefix}/usr/lib/lxcf/sbin/erase
	install -o root -g root -m 700 cmd/erase-n ${prefix}/usr/lib/lxcf/sbin/erase-n
	install -o root -g root -m 700 cmd/list ${prefix}/usr/lib/lxcf/sbin/list
	install -o root -g root -m 700 cmd/memlimit ${prefix}/usr/lib/lxcf/sbin/memlimit
	install -o root -g root -m 700 cmd/memswlimit ${prefix}/usr/lib/lxcf/sbin/memswlimit
	install -o root -g root -m 700 cmd/net_cls ${prefix}/usr/lib/lxcf/sbin/net_cls
	install -o root -g root -m 700 cmd/numa ${prefix}/usr/lib/lxcf/sbin/numa
	install -o root -g root -m 700 cmd/resume ${prefix}/usr/lib/lxcf/sbin/resume
	install -o root -g root -m 700 cmd/resume-n ${prefix}/usr/lib/lxcf/sbin/resume-n
	install -o root -g root -m 700 cmd/show ${prefix}/usr/lib/lxcf/sbin/show
	install -o root -g root -m 700 cmd/autostart ${prefix}/usr/lib/lxcf/sbin/autostart
	install -o root -g root -m 700 cmd/start ${prefix}/usr/lib/lxcf/sbin/start
	install -o root -g root -m 700 cmd/start-n ${prefix}/usr/lib/lxcf/sbin/start-n
	install -o root -g root -m 700 cmd/stop ${prefix}/usr/lib/lxcf/sbin/stop
	install -o root -g root -m 700 cmd/stop-n ${prefix}/usr/lib/lxcf/sbin/stop-n
	install -o root -g root -m 700 cmd/reboot ${prefix}/usr/lib/lxcf/sbin/reboot
	install -o root -g root -m 700 cmd/run ${prefix}/usr/lib/lxcf/sbin/run
	install -o root -g root -m 700 cmd/suspend ${prefix}/usr/lib/lxcf/sbin/suspend
	install -o root -g root -m 700 cmd/suspend-n ${prefix}/usr/lib/lxcf/sbin/suspend-n
	install -o root -g root -m 700 cmd/sysgen ${prefix}/usr/lib/lxcf/sbin/sysgen
	install -o root -g root -m 700 cmd/sysgen-n ${prefix}/usr/lib/lxcf/sbin/sysgen-n
	install -o root -g root -m 700 cmd/update ${prefix}/usr/lib/lxcf/sbin/update
	install -o root -g root -m 700 cmd/update-alert ${prefix}/usr/lib/lxcf/sbin/update-alert
	install -o root -g root -m 700 cmd/version ${prefix}/usr/lib/lxcf/sbin/version
	install -o root -g root -m 700 cmd/set ${prefix}/usr/lib/lxcf/sbin/set
	install -o root -g root -m 700 cmd/helpcmd ${prefix}/usr/lib/lxcf/sbin/helpcmd

install_conf :
	mkdir -p ${prefix}/etc/libvirt/qemu/networks
	mkdir -p ${prefix}/etc/libvirt/qemu/networks/autostart
	mkdir -p ${prefix}/var/lib/libvirt/network
	install -o root -g root -m 600 conf/etc_lxcfnet1.xml ${prefix}/etc/libvirt/qemu/networks/lxcfnet1.xml
	install -o root -g root -m 600 conf/var_lxcfnet1.xml ${prefix}/var/lib/libvirt/network/lxcfnet1.xml
	ln -f -s /etc/libvirt/qemu/networks/lxcfnet1.xml ${prefix}/etc/libvirt/qemu/networks/autostart/lxcfnet1.xml
	mkdir -p ${prefix}/etc/lxcf
	chmod 755 ${prefix}/etc/lxcf
	install -o root -g root -m 644 conf/lxcf.conf ${prefix}/etc/lxcf/lxcf.conf
	mkdir -p ${prefix}/usr/lib/systemd/system
	install -o root -g root -m 600 conf/lxcf.service ${prefix}/usr/lib/systemd/system/lxcf.service
	mkdir -p ${prefix}/etc/systemd/system/multi-user.target.wants
	ln -f -s /usr/lib/systemd/system/lxcf.service ${prefix}/etc/systemd/system/multi-user.target.wants/lxcf.service
	${prefix}/usr/lib/lxcf/lxcf-init
	install -o root -g root -m 644 conf/helpfile.txt ${prefix}/usr/lib/lxcf/helpfile.txt
	systemctl restart libvirtd
	virt-manager -c lxc:///

install_hooks :
	mkdir -p ${prefix}/etc/libvirt/hooks
	chmod 755 ${prefix}/etc/libvirt/hooks
	install -o root -g root -m 755 conf/lxcf-hook ${prefix}/etc/libvirt/hooks/lxc
	install -o root -g root -m 755 conf/lxcf-hook ${prefix}/etc/libvirt/hooks/qemu

install_man :
	mkdir -p ${prefix}/usr/share/man/man1
	install -o root -g root -m 644 doc/lxcf.1.gz ${prefix}/usr/share/man/man1/lxcf.1.gz
	mkdir -p ${prefix}/usr/share/doc/lxcf-${VERSION}
	install -o root -g root -m 644 README ${prefix}/usr/share/doc/lxcf-${VERSION}/README
	install -o root -g root -m 644 COPYING ${prefix}/usr/share/doc/lxcf-${VERSION}/COPYING
	install -o root -g root -m 644 ChangeLog ${prefix}/usr/share/doc/lxcf-${VERSION}/ChangeLog
	install -o root -g root -m 644 AUTHORS ${prefix}/usr/share/doc/lxcf-${VERSION}/AUTHORS
	mkdir -p ${prefix}/usr/share/doc/lxcf-${VERSION}/example
	install -o root -g root -m 644 example/README ${prefix}/usr/share/doc/lxcf-${VERSION}/example/README
	install -o root -g root -m 755 example/ops-script ${prefix}/usr/share/doc/lxcf-${VERSION}/example/ops-script
	install -o root -g root -m 755 example/HA10 ${prefix}/usr/share/doc/lxcf-${VERSION}/example/HA10

clean:
	rm -f src/lxcf-resource1

uninstall :
	rm -f ${prefix}/sbin/lxcf
	rm -rf ${prefix}/usr/lib/lxcf
	rm -f ${prefix}/etc/systemd/system/multi-user.target.wants/lxcf.service
	rm -f ${prefix}/usr/lib/systemd/system/lxcf.service 
	rm -f ${prefix}/etc/libvirt/qemu/networks/lxcfnet1.xml
	rm -f ${prefix}/var/lib/libvirt/network/lxcfnet1.xml
	rm -f ${prefix}/etc/libvirt/qemu/networks/autostart/lxcfnet1.xml
	rm -rf ${prefix}/etc/lxcf
	rm -rf ${prefix}/etc/libvirt/hooks
	rm -f ${prefix}/usr/share/man/man1/lxcf.1.gz
	rm -rf ${prefix}/usr/share/doc/lxcf-${VERSION}
	systemctl restart libvirtd
	virt-manager -c lxc:///



