summaryrefslogtreecommitdiffstats
path: root/__root__/ccs-flatten/Makefile
blob: 03bc0148508e28fd2d1dd6cc61f5f7d72d3392d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Copyright 2015 Red Hat, Inc.
# Part of clufter project
# Licensed under GPLv2+ (a copy included | http://gnu.org/licenses/gpl-2.0.txt)

# Intended way of building is via setup.py, this is primarily for maintenance!

.PHONY: all clean metadata full install symlink deepclean

TARGET  = ccs_flatten
OBJS    = flatten.o reslist.o resrules.o restree.o xmlconf.o
CFLAGS  += -Wall
ifdef DEBUG
	CFLAGS  += -g -ggdb
else
	CFLAGS  += -DNDEBUG
endif

SETUP_MAKEFILE  = Makefile.setup
SETUP_CFG       = ../setup.cfg

ccs_flatten     ?= /usr/bin/ccs_flatten
ra_metadata     ?= /usr/share/cluster
ra_metadata_ext ?= metadata

# preferably take values from ../setup.cfg (abuse the similarity of decls)
-include ${SETUP_MAKEFILE}

CFLAGS  += $(shell pkg-config --cflags libxml-2.0)  #-std=c99
LDFLAGS += $(shell pkg-config --libs libxml-2.0)

all: ${TARGET}
${TARGET}: ${OBJS}
	${CC} ${CFLAGS} $^ -o $@ ${LDFLAGS}

${OBJS}: ${SETUP_MAKEFILE} config.h

%.h: ${SETUP_MAKEFILE}
%.h: %.h.in
	sed \
	-e 's|@RA_METADATA@|${ra_metadata}|g' \
	-e 's|@RA_METADATA_EXT@|${ra_metadata_ext}|g' \
	$< > $@

${SETUP_MAKEFILE}: Makefile
${SETUP_MAKEFILE}: $(wildcard ${SETUP_CFG}) | /dev/null
	sed -n \
	-e '/\[pkg_prepare\]/b1;d' \
	-e ':1;n;/\[.*\]/d;/%{.\+}/s|\([^%]\+\)%\({.*}\)s\?\(.*\)|\1$$\2\3|;p;b1' \
	$< > $@

metadata:
	for f in $$( \
	    cd ${ra_metadata}; \
	    ls -1 | xargs grep --exclude '*.metadata' --exclude 'ocf-*' -Fl -- meta-data \
	); do \
	    /bin/bash ${ra_metadata}/$$f meta-data > $$f.${ra_metadata_ext}.tmp \
	    && test -s $$f.${ra_metadata_ext}.tmp \
	    && mv $$f.${ra_metadata_ext}{.tmp,} \
	    || ${RM} -- $$f.${ra_metadata_ext}.tmp; \
	done

full: all metadata

install: full
	install ${TARGET} ${PREFIX}/${ccs_flatten}
	install *.${ra_metadata_ext} ${PREFIX}/${ra_metadata}

symlink:
	ln -fs ../build/ccs_flatten .

clean:
	${RM} -- ${TARGET} ${OBJS} config.h *.${ra_metadata_ext}.tmp

deepclean: clean
	${RM} -- *.${ra_metadata_ext}