summaryrefslogtreecommitdiffstats
path: root/apol/Makefile.am
blob: 646d8b1bc936934efaefe564fefa6f0d614bdcf8 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
wrappedso_DATA = libapol_tcl.so.@libapol_version@
wrappedso_SONAME = $(wrappedso_DATA)
wrappedsodir = $(libdir)/setools/apol_tcl

package_SCRIPTS = pkgIndex.tcl
packagedir = $(wrappedsodir)

bin_SCRIPTS = apol

dist_noinst_DATA = apol_tcl.i apol_tcl.cc apol.png foo_module.tcl
BUILT_SOURCES = apol_tcl_wrap.cc mkIndex.tcl init.tcl

dist_setools_DATA = apol_help.txt domaintrans_help.txt file_relabel_help.txt \
	infoflow_help.txt types_relation_help.txt \
	perm_maps/apol_perm_mapping_ver12 \
	perm_maps/apol_perm_mapping_ver15 \
	perm_maps/apol_perm_mapping_ver16 \
	perm_maps/apol_perm_mapping_ver17 \
	perm_maps/apol_perm_mapping_ver18 \
	perm_maps/apol_perm_mapping_ver19 \
	perm_maps/apol_perm_mapping_ver20 \
	perm_maps/apol_perm_mapping_ver21 \
	perm_maps/apol_perm_mapping_ver22 \
	perm_maps/apol_perm_mapping_ver23 \
	perm_maps/apol_perm_mapping_ver24 \
	apol.gif

EXTRA_DIST = \
	analysis_tab.tcl \
	classes_perms_tab.tcl \
	common_widgets.tcl \
	cond_bools_tab.tcl \
	cond_rules_tab.tcl \
	context_dialog.tcl \
	context_selector.tcl \
	directflow_module.tcl \
	domaintrans_module.tcl \
	file_contexts_tab.tcl \
	find.tcl \
	fscontexts_tab.tcl \
	goto.tcl \
	head.tcl \
	initial_sids_tab.tcl \
	level_dialog.tcl \
	mls_tab.tcl \
	netcontexts_tab.tcl \
	open_policy_dialog.tcl \
	perms_map.tcl \
	policyconf.tcl \
	progress_dialog.tcl \
	range_dialog.tcl \
	range_selector.tcl \
	range_trans.tcl \
	rbac_tab.tcl \
	relabel_module.tcl \
	roles_tab.tcl \
	terules_tab.tcl \
	transflow_module.tcl \
	types_relation_module.tcl \
	types_tab.tcl \
	users_tab.tcl \
	util.tcl \
	top.tcl
# top.tcl must be last one written because it spawns the rest of the script

TCL_STRIP_FILES = $(patsubst %,$(srcdir)/%,$(filter-out head.tcl,$(EXTRA_DIST)))
DEPENDENCIES = $(top_builddir)/libqpol/src/libqpol.so \
	$(top_builddir)/libapol/src/libapol.so \
	$(top_builddir)/libsefs/src/libsefs.so \
	$(top_builddir)/libqpol/swig/tcl/libtqpol.so \
	$(top_builddir)/libapol/swig/tcl/libtapol.so \
	$(top_builddir)/libsefs/swig/tcl/libtsefs.so \
	$(top_builddir)/config.tcl

AM_CXXFLAGS = @DEBUGCXXFLAGS@ @WARNCXXFLAGS@ @PROFILECFLAGS@ @SELINUX_CFLAGS@ \
	@SEFS_CFLAGS@ @APOL_CFLAGS@ @QPOL_CFLAGS@ -I$(top_builddir) -fpic \
	-I$(top_srcdir)/libapol/include
AM_LDFLAGS = @DEBUGLDFLAGS@ @WARNLDFLAGS@ @PROFILELDFLAGS@ \
	@SEFS_LIB_FLAG@ @APOL_LIB_FLAG@ @QPOL_LIB_FLAG@

apol_tcl_wrap.cc: apol_tcl.i $(DEPENDENCIES)
	$(SWIG) -c++ $(SWIG_TCL_OPT) -pkgversion @libapol_version@ -o $@ \
	-I$(top_srcdir)/libsefs/include -I$(top_srcdir)/libsefs/swig \
	-I$(top_srcdir)/libapol/include -I$(top_srcdir)/libapol/swig \
	-I$(top_srcdir)/libqpol/swig $<

$(wrappedso_DATA): apol_tcl.cc apol_tcl_wrap.cc
	$(CXX) -shared -o $@ $^ $(AM_CXXFLAGS) $(CXXFLAGS) $(SWIG_TCL_CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -Wl,-soname,$(wrappedso_SONAME)

$(package_SCRIPTS): $(wrappedso_DATA) mkIndex.tcl
	cat mkIndex.tcl | LD_LIBRARY_PATH=$(top_builddir)/libqpol/src:$(top_builddir)/libapol/src:$(top_builddir)/libsefs/src $(TCLSH_PROG)
	$(mkdir_p) apol_tcl
	cp $< $@ apol_tcl

mkIndex.tcl: $(wrappedso_DATA) Makefile
	@echo "lappend auto_path $(top_builddir)/libapol/swig/tcl $(top_builddir)/libsefs/swig/tcl" > $@
	@echo "package require apol" >> $@
	@echo "package require sefs" >> $@
	@echo "pkg_mkIndex . $<" >> $@

TCL_AUTOPATH = @TCL_AUTOPATH@

init.tcl: Makefile
	@echo "proc tcl_config_init_libraries {} {" > $@
	@echo "    global auto_path" >> $@
	@echo "    lappend auto_path $(TCL_AUTOPATH)" >> $@
	@echo "    print_init \"Initializing libqpol... \"" >> $@
	@echo "    package require qpol @libqpol_version@" >> $@
	@echo "    print_init \"done.\nInitializing libapol... \"" >> $@
	@echo "    package require apol @libapol_version@" >> $@
	@echo "    print_init \"done.\nInitializing libsefs... \"" >> $@
	@echo "    package require sefs @libsefs_version@" >> $@
	@echo "    print_init \"done.\nInitializing libapol_tcl... \"" >> $@
	@echo "    package require apol_tcl @libapol_version@" >> $@
	@echo "    print_init \"done.\n\"" >> $@
	@echo "}" >> $@
	@echo "proc tcl_config_get_install_dir {} {" >> $@
	@echo "    return \"${setoolsdir}\"" >> $@
	@echo "}" >> $@

$(bin_SCRIPTS): $(package_SCRIPTS) head.tcl init.tcl $(top_builddir)/config.tcl $(TCL_STRIP_FILES)
	cat $(srcdir)/head.tcl init.tcl $(top_builddir)/config.tcl > $@
	cat $(TCL_STRIP_FILES) | perl -p -i -e 's/^\s*(\#[^!]*){0,1}$$//s' >> $@
	chmod u+x $@

%.tcl:
# do nothing

CLEANFILES = $(packages_SCRIPTS) $(bin_SCRIPTS) $(BUILT_SOURCES)

MOSTLYCLEANFILES = $(wrappedso_DATA) $(package_SCRIPTS) apol_tcl/$(wrappedso_DATA) apol_tcl/$(package_SCRIPTS)