~ubuntu-branches/ubuntu/wily/apparmor/wily

« back to all changes in this revision

Viewing changes to parser/Makefile

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2011-04-27 10:38:07 UTC
  • mfrom: (5.1.118 natty)
  • Revision ID: james.westby@ubuntu.com-20110427103807-ym3rhwys6o84ith0
Tags: 2.6.1-2
debian/copyright: clarify for some full organization names.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#       $Id: Makefile 510 2007-03-30 17:09:50Z jmichael-at-suse-de $
2
1
# ----------------------------------------------------------------------
3
 
#    Copyright (c) 2004, 2005, 2006 NOVELL (All rights reserved)
 
2
#    Copyright (c) 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007
 
3
#    NOVELL (All rights reserved)
4
4
#
5
5
#    This program is free software; you can redistribute it and/or
6
6
#    modify it under the terms of version 2 of the GNU General Public
31
31
CONFDIR=/etc/apparmor
32
32
INSTALL_CONFDIR=${DESTDIR}${CONFDIR}
33
33
LOCALEDIR=/usr/share/locale
 
34
MANPAGES=apparmor.d.5 apparmor.7 apparmor_parser.8 subdomain.conf.5 apparmor.vim.5
34
35
 
35
36
YACC    := /usr/bin/bison
36
37
YFLAGS  := -d
37
38
LEX     := /usr/bin/flex
38
39
LEXFLAGS = -B -v
39
 
WARNINGS = -Wall -Wstrict-prototypes
40
 
EXTRA_WARNINGS = -Wsign-compare -Wmissing-field-initializers -Wnested-externs -Wformat-security -Wunused-parameter
41
 
WARNINGS += $(shell for warning in ${EXTRA_WARNINGS} ; do \
 
40
WARNINGS = -Wall
 
41
EXTRA_WARNINGS = -Wsign-compare -Wmissing-field-initializers -Wformat-security -Wunused-parameter
 
42
CXX_WARNINGS = ${WARNINGS} $(shell for warning in ${EXTRA_WARNINGS} ; do \
42
43
                        if ${CC} $${warning} -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then \
43
44
                                echo "$${warning}"; \
44
45
                        fi ; \
45
46
                done)
46
 
CFLAGS  = -O2 -pipe
 
47
CPP_WARNINGS = -Wstrict-prototypes -Wnested-externs
 
48
ifndef CFLAGS
 
49
CFLAGS  = -g -O2 -pipe
47
50
 
48
51
ifdef DEBUG
49
 
CFLAGS = -g
 
52
CFLAGS += -pg
50
53
endif
51
 
EXTRA_CFLAGS = ${CFLAGS} ${WARNINGS}
 
54
endif #CFLAGS
 
55
 
 
56
EXTRA_CXXFLAGS = ${CFLAGS} ${CXX_WARNINGS} -D_GNU_SOURCE
 
57
EXTRA_CFLAGS = ${EXTRA_CXXFLAGS} ${CPP_WARNINGS}
52
58
 
53
59
#LEXLIB := -lfl
54
60
 
69
75
 
70
76
SRCS = parser_include.c parser_interface.c parser_lex.c parser_main.c \
71
77
       parser_misc.c parser_merge.c parser_symtab.c parser_yacc.c \
72
 
       parser_regex.c parser_variable.c parser_policy.c
 
78
       parser_regex.c parser_variable.c parser_policy.c parser_alias.c
73
79
HDRS = parser.h parser_include.h immunix.h
74
80
TOOLS = apparmor_parser
75
81
 
76
82
OBJECTS = parser_lex.o parser_yacc.o parser_main.o parser_interface.o \
77
83
          parser_include.o parser_merge.o parser_symtab.o parser_misc.o \
78
 
          parser_regex.o parser_variable.o parser_policy.o
 
84
          parser_regex.o parser_variable.o parser_policy.o parser_alias.o
79
85
 
80
86
AAREDIR= libapparmor_re
81
87
AAREOBJECTS = ${AAREDIR}/libapparmor_re.a
82
88
 
83
 
PCREDIR= pcre
84
 
PCREOBJECTS = ${PCREDIR}/pcre.o
85
 
 
86
89
LEX_C_FILES     = parser_lex.c
87
90
YACC_C_FILES    = parser_yacc.c parser_yacc.h
88
91
 
92
95
 
93
96
TEST_OBJECTS = $(filter-out parser_lex.o, \
94
97
               $(filter-out parser_yacc.o, \
95
 
               $(filter-out parser_main.o, ${OBJECTS} ${PCREOBJECTS})))
 
98
               $(filter-out parser_main.o, ${OBJECTS})))
96
99
 
 
100
ifdef V
 
101
  VERBOSE = 1
 
102
endif
97
103
ifndef VERBOSE
98
104
  VERBOSE = 0
99
105
endif
109
115
po/${NAME}.pot: ${SRCS} ${HDRS}
110
116
        make -C po ${NAME}.pot NAME=${NAME} SOURCES="${SRCS} ${HDRS}"
111
117
 
112
 
all:    $(LEX_C_FILES) $(YACC_C_FILES) $(TOOLS)
 
118
techdoc.pdf: techdoc.tex
 
119
        while pdflatex $< ${BUILD_OUTPUT} || exit 1 ; \
 
120
                grep -q "Label(s) may have changed" techdoc.log; \
 
121
        do :; done
 
122
 
 
123
techdoc/index.html: techdoc.pdf
 
124
        latex2html -show_section_numbers -split 0 -noinfo -nonavigation -noaddress techdoc.tex ${BUILD_OUTPUT}
 
125
 
 
126
techdoc.txt: techdoc/index.html
 
127
        w3m -dump $< > $@
 
128
 
 
129
# targets arranged this way so that people who don't want full docs can
 
130
# pick specific targets they want.
 
131
main:   $(TOOLS)
113
132
        $(Q)make -C po all
114
 
        $(Q)make -s tests
115
 
 
116
 
apparmor_parser: $(OBJECTS) $(PCREOBJECTS) $(AAREOBJECTS)
 
133
 
 
134
manpages:       $(MANPAGES)
 
135
 
 
136
htmlmanpages:   $(HTMLMANPAGES)
 
137
 
 
138
pdf:    techdoc.pdf
 
139
 
 
140
docs:   manpages htmlmanpages pdf
 
141
 
 
142
all:    main docs tests
 
143
 
 
144
apparmor_parser: $(OBJECTS) $(AAREOBJECTS)
117
145
        rm -f ./libstdc++.a
118
146
        ln -s `g++ -print-file-name=libstdc++.a`
119
 
        g++ $(EXTRA_CFLAGS) -o $@ $(OBJECTS) $(PCREOBJECTS) $(LIBS) \
 
147
        g++ $(EXTRA_CFLAGS) -o $@ $(OBJECTS) $(LIBS) \
120
148
              ${LEXLIB}  $(AAREOBJECTS) -static-libgcc -L.
121
149
 
122
150
parser_yacc.c parser_yacc.h: parser_yacc.y parser.h
123
 
        $(YACC) $(YFLAGS) -o parser_yacc.c parser_yacc.y 
 
151
        $(YACC) $(YFLAGS) -o parser_yacc.c parser_yacc.y
124
152
 
125
153
parser_lex.c: parser_lex.l parser_yacc.h parser.h
126
154
        $(LEX) ${LEXFLAGS} -o$@ $<
128
156
parser_lex.o: parser_lex.c parser.h parser_yacc.h
129
157
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
130
158
 
131
 
parser_misc.o: parser_misc.c parser.h parser_yacc.h
 
159
parser_misc.o: parser_misc.c parser.h parser_yacc.h af_names.h cap_names.h
132
160
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
133
161
 
134
162
parser_yacc.o: parser_yacc.c parser_yacc.h
135
163
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
136
164
 
137
 
parser_main.o: parser_main.c parser.h parser_version.h
 
165
parser_main.o: parser_main.c parser.h parser_version.h libapparmor_re/apparmor_re.h
138
166
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
139
167
 
140
 
parser_interface.o: parser_interface.c parser.h
 
168
parser_interface.o: parser_interface.c parser.h libapparmor_re/apparmor_re.h
141
169
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
142
170
 
143
171
parser_include.o: parser_include.c parser.h parser_include.h
146
174
parser_merge.o: parser_merge.c parser.h
147
175
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
148
176
 
149
 
parser_regex.o: parser_regex.c parser.h
 
177
parser_regex.o: parser_regex.c parser.h libapparmor_re/apparmor_re.h
150
178
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
151
179
 
152
180
parser_symtab.o: parser_symtab.c parser.h
158
186
parser_policy.o: parser_policy.c parser.h parser_yacc.h
159
187
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
160
188
 
 
189
parser_alias.o: parser_alias.c parser.h
 
190
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
191
 
161
192
parser_version.h: Makefile
162
193
        @echo \#define PARSER_VERSION \"$(VERSION)\" > .ver
163
194
        @mv -f .ver $@
164
195
 
 
196
# These are the families that it doesn't make sense for apparmor to mediate.
 
197
# We use PF_ here since that is what is required in bits/socket.h, but we will
 
198
# rewrite these as AF_.
 
199
FILTER_FAMILIES=PF_MAX PF_UNSPEC PF_UNIX PF_LOCAL PF_NETLINK
 
200
 
 
201
__FILTER=$(shell echo $(strip $(FILTER_FAMILIES)) | sed -e 's/ /\\\|/g')
 
202
 
 
203
af_names.h: /usr/include/bits/socket.h
 
204
        LC_ALL=C sed -n -e '/$(__FILTER)/d' -e "s/^\#define[ \\t]\\+PF_\\([A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9]\\+\\)\\(.*\\)\$$/#ifndef AF_\\1\\n#  define AF_\\1 \\2\\n#endif\\nAA_GEN_NET_ENT(\"\\L\\1\", \\UAF_\\1)\\n/p" $< > $@
 
205
        LC_ALL=C sed -n -e "s/^\#define[ \\t]\\+PF_MAX[ \\t]\\+\\([0-9]\\+\\)[ \\t]\\+.*/#define AA_AF_MAX \\1\n/p" $< >> $@
 
206
        # cat $@
 
207
 
 
208
cap_names.h: /usr/include/linux/capability.h
 
209
        LC_ALL=C sed -n -e "/CAP_EMPTY_SET/d" -e "s/^\#define[ \\t]\\+CAP_\\([A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9xa-f]\\+\\)\\(.*\\)\$$/\{\"\\L\\1\", \\UCAP_\\1\},/p" $< > $@
 
210
 
165
211
tst_symtab: parser_symtab.c parser.h parser_variable.o
166
212
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< parser_variable.o $(BUILD_OUTPUT)
167
213
 
168
214
tst_variable: parser_variable.c parser.h $(filter-out parser_variable.o, ${TEST_OBJECTS})
169
215
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< $(filter-out parser_variable.o, ${TEST_OBJECTS}) $(BUILD_OUTPUT)
170
216
 
171
 
tst_misc: parser_misc.c parser.h parser_yacc.h
172
 
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< $(BUILD_OUTPUT)
173
 
 
174
 
tst_regex: parser_regex.c parser.h parser_yacc.h $(PCREOBJECTS)
175
 
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< $(PCREOBJECTS) $(BUILD_OUTPUT)
 
217
tst_misc: parser_misc.c parser.h parser_yacc.h af_names.h cap_names.h
 
218
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< $(BUILD_OUTPUT)
 
219
 
 
220
tst_regex: parser_regex.c parser.h parser_yacc.h
 
221
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< $(BUILD_OUTPUT)
 
222
 
 
223
.SILENT: check
 
224
.PHONY: check
 
225
check: tests
176
226
 
177
227
.SILENT: tests
178
228
tests: ${TESTS}
179
 
        for test in ${TESTS} ; do echo "*** running $${test}" && ./$${test} $(BUILD_OUTPUT) ; done
 
229
        sh -e -c 'for test in ${TESTS} ; do echo "*** running $${test}" && ./$${test} $(BUILD_OUTPUT) ; done'
180
230
        $(Q)make -s -C tst tests
181
231
 
 
232
.SILENT: check
 
233
check: tests
 
234
 
182
235
# always need to rebuild.
183
236
.SILENT: $(AAREOBJECTS)
 
237
.PHONY: $(AAREOBJECTS)
184
238
$(AAREOBJECTS):
185
 
        make -C $(AAREDIR)
186
 
 
187
 
.SILENT: $(PCREOBJECTS)
188
 
$(PCREOBJECTS):
189
 
        make -C $(PCREDIR) "CFLAGS=$(EXTRA_CFLAGS)"
 
239
        make -C $(AAREDIR) CFLAGS="$(EXTRA_CXXFLAGS)"
190
240
 
191
241
.PHONY: install-rhel4
192
242
install-rhel4: install-redhat
217
267
.PHONY: install-debian
218
268
install-debian:
219
269
 
 
270
.PHONY: install-unknown
 
271
install-unknown:
 
272
 
220
273
INSTALLDEPS=$(TOOLS)
221
274
ifdef DISTRO
222
275
INSTALLDEPS+=install-$(DISTRO)
232
285
        install -m 755 -d $(APPARMOR_BIN_PREFIX)
233
286
        install -m 755 rc.apparmor.functions $(APPARMOR_BIN_PREFIX)
234
287
        make -C po install NAME=${NAME} DESTDIR=${DESTDIR}
 
288
        make install_manpages DESTDIR=${DESTDIR}
235
289
 
236
290
.SILENT: clean
237
291
.PHONY: clean
238
 
clean:
239
 
        rm -f core core.* *.o *.s *.a *~ 
 
292
clean: _clean
 
293
        rm -f core core.* *.o *.s *.a *~
240
294
        rm -f $(TOOLS) $(TESTS)
241
295
        rm -f $(LEX_C_FILES)
242
296
        rm -f $(YACC_C_FILES)
243
297
        rm -f parser_version.h
244
298
        rm -f $(NAME)*.tar.gz $(NAME)*.tgz
245
299
        rm -f libstdc++.a
246
 
        make -s -C $(PCREDIR) clean
 
300
        rm -f af_names.h
 
301
        rm -f cap_names.h
 
302
        rm -rf techdoc.aux techdoc.log techdoc.pdf techdoc.toc techdor.txt techdoc/
247
303
        make -s -C $(AAREDIR) clean
248
304
        make -s -C po clean
 
305
        make -s -C tst clean
249
306
 
250
307
.SILENT: dist_clean
251
308
dist_clean: