~ubuntu-branches/ubuntu/raring/apparmor/raring

« back to all changes in this revision

Viewing changes to parser/Makefile

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-03-23 16:42:01 UTC
  • Revision ID: james.westby@ubuntu.com-20070323164201-jkax6f0oku087b7l
Tags: upstream-2.0.1+510.dfsg
ImportĀ upstreamĀ versionĀ 2.0.1+510.dfsg

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
# ----------------------------------------------------------------------
 
3
#    Copyright (c) 2004, 2005, 2006 NOVELL (All rights reserved)
 
4
#
 
5
#    This program is free software; you can redistribute it and/or
 
6
#    modify it under the terms of version 2 of the GNU General Public
 
7
#    License published by the Free Software Foundation.
 
8
#
 
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.
 
13
#
 
14
#    You should have received a copy of the GNU General Public License
 
15
#    along with this program; if not, contact Novell, Inc.
 
16
# ----------------------------------------------------------------------
 
17
NAME=apparmor-parser
 
18
all:
 
19
COMMONDIR=../common/
 
20
 
 
21
include common/Make.rules
 
22
 
 
23
COMMONDIR_EXISTS=$(strip $(shell [ -d ${COMMONDIR} ] && echo true))
 
24
ifeq ($(COMMONDIR_EXISTS), true)
 
25
common/Make.rules: $(COMMONDIR)/Make.rules
 
26
        ln -sf $(COMMONDIR) .
 
27
endif
 
28
 
 
29
DESTDIR=/
 
30
APPARMOR_BIN_PREFIX=${DESTDIR}/lib/apparmor
 
31
CONFDIR=/etc/apparmor
 
32
INSTALL_CONFDIR=${DESTDIR}${CONFDIR}
 
33
LOCALEDIR=/usr/share/locale
 
34
 
 
35
YACC    := /usr/bin/bison
 
36
YFLAGS  := -d
 
37
LEX     := /usr/bin/flex
 
38
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 \
 
42
                        if ${CC} $${warning} -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then \
 
43
                                echo "$${warning}"; \
 
44
                        fi ; \
 
45
                done)
 
46
CFLAGS  = -O2 -pipe
 
47
 
 
48
ifdef DEBUG
 
49
CFLAGS = -g
 
50
endif
 
51
EXTRA_CFLAGS = ${CFLAGS} ${WARNINGS}
 
52
 
 
53
#LEXLIB := -lfl
 
54
 
 
55
# override this on the make command to point to where the immunix.h file is
 
56
# (yeah this is lame, but since we are tied to the kernel so tightly...)
 
57
#INCLUDEDIR = /usr/src/linux/include
 
58
INCLUDEDIR =
 
59
 
 
60
ifdef INCLUDEDIR
 
61
        CFLAGS += -I$(INCLUDEDIR)
 
62
endif
 
63
 
 
64
# Internationalization support. Define a package and a LOCALEDIR
 
65
EXTRA_CFLAGS+=-DPACKAGE=\"${NAME}\" -DLOCALEDIR=\"${LOCALEDIR}\"
 
66
 
 
67
# Compile-time configuration of the location of the config file
 
68
EXTRA_CFLAGS+=-DSUBDOMAIN_CONFDIR=\"${CONFDIR}\"
 
69
 
 
70
SRCS = parser_include.c parser_interface.c parser_lex.c parser_main.c \
 
71
       parser_misc.c parser_merge.c parser_symtab.c parser_yacc.c \
 
72
       parser_regex.c parser_variable.c parser_policy.c
 
73
HDRS = parser.h parser_include.h immunix.h
 
74
TOOLS = apparmor_parser
 
75
 
 
76
OBJECTS = parser_lex.o parser_yacc.o parser_main.o parser_interface.o \
 
77
          parser_include.o parser_merge.o parser_symtab.o parser_misc.o \
 
78
          parser_regex.o parser_variable.o parser_policy.o
 
79
 
 
80
AAREDIR= libapparmor_re
 
81
AAREOBJECTS = ${AAREDIR}/libapparmor_re.a
 
82
 
 
83
PCREDIR= pcre
 
84
PCREOBJECTS = ${PCREDIR}/pcre.o
 
85
 
 
86
LEX_C_FILES     = parser_lex.c
 
87
YACC_C_FILES    = parser_yacc.c parser_yacc.h
 
88
 
 
89
TESTS = tst_regex tst_misc tst_symtab tst_variable
 
90
TEST_FLAGS = -Wl,--warn-unresolved-symbols
 
91
DISABLED_TESTS =
 
92
 
 
93
TEST_OBJECTS = $(filter-out parser_lex.o, \
 
94
               $(filter-out parser_yacc.o, \
 
95
               $(filter-out parser_main.o, ${OBJECTS} ${PCREOBJECTS})))
 
96
 
 
97
ifndef VERBOSE
 
98
  VERBOSE = 0
 
99
endif
 
100
ifeq ($(VERBOSE),1)
 
101
  BUILD_OUTPUT =
 
102
  Q =
 
103
else
 
104
  BUILD_OUTPUT = > /dev/null 2>&1
 
105
  Q = @
 
106
endif
 
107
export Q VERBOSE BUILD_OUTPUT
 
108
 
 
109
po/${NAME}.pot: ${SRCS} ${HDRS}
 
110
        make -C po ${NAME}.pot NAME=${NAME} SOURCES="${SRCS} ${HDRS}"
 
111
 
 
112
all:    $(LEX_C_FILES) $(YACC_C_FILES) $(TOOLS)
 
113
        $(Q)make -C po all
 
114
        $(Q)make -s tests
 
115
 
 
116
apparmor_parser: $(OBJECTS) $(PCREOBJECTS) $(AAREOBJECTS)
 
117
        rm -f ./libstdc++.a
 
118
        ln -s `g++ -print-file-name=libstdc++.a`
 
119
        g++ $(EXTRA_CFLAGS) -o $@ $(OBJECTS) $(PCREOBJECTS) $(LIBS) \
 
120
              ${LEXLIB}  $(AAREOBJECTS) -static-libgcc -L.
 
121
 
 
122
parser_yacc.c parser_yacc.h: parser_yacc.y parser.h
 
123
        $(YACC) $(YFLAGS) -o parser_yacc.c parser_yacc.y 
 
124
 
 
125
parser_lex.c: parser_lex.l parser_yacc.h parser.h
 
126
        $(LEX) ${LEXFLAGS} -o$@ $<
 
127
 
 
128
parser_lex.o: parser_lex.c parser.h parser_yacc.h
 
129
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
130
 
 
131
parser_misc.o: parser_misc.c parser.h parser_yacc.h
 
132
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
133
 
 
134
parser_yacc.o: parser_yacc.c parser_yacc.h
 
135
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
136
 
 
137
parser_main.o: parser_main.c parser.h parser_version.h
 
138
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
139
 
 
140
parser_interface.o: parser_interface.c parser.h
 
141
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
142
 
 
143
parser_include.o: parser_include.c parser.h parser_include.h
 
144
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
145
 
 
146
parser_merge.o: parser_merge.c parser.h
 
147
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
148
 
 
149
parser_regex.o: parser_regex.c parser.h
 
150
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
151
 
 
152
parser_symtab.o: parser_symtab.c parser.h
 
153
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
154
 
 
155
parser_variable.o: parser_variable.c parser.h
 
156
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
157
 
 
158
parser_policy.o: parser_policy.c parser.h parser_yacc.h
 
159
        $(CC) $(EXTRA_CFLAGS) -c -o $@ $<
 
160
 
 
161
parser_version.h: Makefile
 
162
        @echo \#define PARSER_VERSION \"$(VERSION)\" > .ver
 
163
        @mv -f .ver $@
 
164
 
 
165
tst_symtab: parser_symtab.c parser.h parser_variable.o
 
166
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< parser_variable.o $(BUILD_OUTPUT)
 
167
 
 
168
tst_variable: parser_variable.c parser.h $(filter-out parser_variable.o, ${TEST_OBJECTS})
 
169
        $(Q)$(CC) -DUNIT_TEST $(EXTRA_CFLAGS) $(TEST_FLAGS) -o $@ $< $(filter-out parser_variable.o, ${TEST_OBJECTS}) $(BUILD_OUTPUT)
 
170
 
 
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)
 
176
 
 
177
.SILENT: tests
 
178
tests: ${TESTS}
 
179
        for test in ${TESTS} ; do echo "*** running $${test}" && ./$${test} $(BUILD_OUTPUT) ; done
 
180
        $(Q)make -s -C tst tests
 
181
 
 
182
# always need to rebuild.
 
183
.SILENT: $(AAREOBJECTS)
 
184
$(AAREOBJECTS):
 
185
        make -C $(AAREDIR)
 
186
 
 
187
.SILENT: $(PCREOBJECTS)
 
188
$(PCREOBJECTS):
 
189
        make -C $(PCREDIR) "CFLAGS=$(EXTRA_CFLAGS)"
 
190
 
 
191
.PHONY: install-rhel4
 
192
install-rhel4: install-redhat
 
193
 
 
194
.PHONY: install-redhat
 
195
install-redhat:
 
196
        install -m 755 -d $(DESTDIR)/etc/init.d
 
197
        install -m 755 rc.apparmor.$(subst install-,,$@) $(DESTDIR)/etc/init.d/apparmor
 
198
        install -m 755 rc.aaeventd.redhat $(DESTDIR)/etc/init.d/aaeventd
 
199
 
 
200
.PHONY: install-suse
 
201
install-suse:
 
202
        install -m 755 -d $(DESTDIR)/etc/init.d
 
203
        install -m 755 rc.apparmor.$(subst install-,,$(@)) $(DESTDIR)/etc/init.d/boot.apparmor
 
204
        install -m 755 rc.aaeventd.$(subst install-,,$(@)) $(DESTDIR)/etc/init.d/aaeventd
 
205
        install -m 755 -d $(DESTDIR)/sbin
 
206
        ln -sf /etc/init.d/boot.apparmor $(DESTDIR)/sbin/rcapparmor
 
207
        ln -sf rcapparmor $(DESTDIR)/sbin/rcsubdomain
 
208
        ln -sf /etc/init.d/aaeventd $(DESTDIR)/sbin/rcaaeventd
 
209
 
 
210
.PHONY: install-slackware
 
211
install-slackware:
 
212
        install -m 755 -d $(APPARMOR_BIN_PREFIX)/install
 
213
        install -m 755 frob_slack_rc $(APPARMOR_BIN_PREFIX)/install
 
214
        install -m 755 -d $(DESTDIR)/etc/rc.d
 
215
        install -m 755 rc.apparmor.$(subst install-,,$(@)) $(DESTDIR)/etc/rc.d/rc.apparmor
 
216
 
 
217
.PHONY: install-debian
 
218
install-debian:
 
219
 
 
220
INSTALLDEPS=$(TOOLS)
 
221
ifdef DISTRO
 
222
INSTALLDEPS+=install-$(DISTRO)
 
223
endif
 
224
 
 
225
.PHONY: install
 
226
install: $(INSTALLDEPS)
 
227
        install -m 755 -d $(DESTDIR)/sbin
 
228
        install -m 755 ${TOOLS} $(DESTDIR)/sbin
 
229
        install -m 755 -d $(INSTALL_CONFDIR)
 
230
        install -m 644 subdomain.conf $(INSTALL_CONFDIR)
 
231
        install -m 755 -d ${DESTDIR}/var/lib/apparmor
 
232
        install -m 755 -d $(APPARMOR_BIN_PREFIX)
 
233
        install -m 755 rc.apparmor.functions $(APPARMOR_BIN_PREFIX)
 
234
        make -C po install NAME=${NAME} DESTDIR=${DESTDIR}
 
235
 
 
236
.SILENT: clean
 
237
.PHONY: clean
 
238
clean:
 
239
        rm -f core core.* *.o *.s *.a *~ 
 
240
        rm -f $(TOOLS) $(TESTS)
 
241
        rm -f $(LEX_C_FILES)
 
242
        rm -f $(YACC_C_FILES)
 
243
        rm -f parser_version.h
 
244
        rm -f $(NAME)*.tar.gz $(NAME)*.tgz
 
245
        rm -f libstdc++.a
 
246
        make -s -C $(PCREDIR) clean
 
247
        make -s -C $(AAREDIR) clean
 
248
        make -s -C po clean
 
249
 
 
250
.SILENT: dist_clean
 
251
dist_clean:
 
252
        @make clean
 
253
        @rm -f $(LEX_C_FILES) $(YACC_C_FILES)