[apparmor] [PATCH 7/9] Convert Makefile to use static pattern rules

John Johansen john.johansen at canonical.com
Tue Sep 15 03:11:19 UTC 2015


instead of individual rules for each .c or .cc file use static pattern
rules and variables to get automatic expansion.

For the current patch keep the dependencies for various header
combinations separate as they currently are. However this patch fixes
several missing dependencies, including the missing dependencies on
parser_version.h, af_names.h and cap_names.h which necessitating
splitting and adding new dependencies.

Signed-off-by: John Johansen <john.johansen at canonical.com>
---
 parser/Makefile | 89 ++++++++++++++++++++-------------------------------------
 1 file changed, 31 insertions(+), 58 deletions(-)

diff --git a/parser/Makefile b/parser/Makefile
index 9e9e132..d3fc23d 100644
--- a/parser/Makefile
+++ b/parser/Makefile
@@ -86,18 +86,32 @@ EXTRA_CXXFLAGS+=-DPACKAGE=\"${NAME}\" -DLOCALEDIR=\"${LOCALEDIR}\"
 # Compile-time configuration of the location of the config file
 EXTRA_CXXFLAGS+=-DSUBDOMAIN_CONFDIR=\"${CONFDIR}\"
 
-SRCS = parser_common.c parser_include.c parser_interface.c parser_lex.c \
-       parser_main.c parser_misc.c parser_merge.c parser_symtab.c \
-       parser_yacc.c parser_regex.c parser_variable.c parser_policy.c \
-       parser_alias.c common_optarg.c lib.c network.c \
-       mount.cc dbus.cc profile.cc rule.cc signal.cc ptrace.cc \
-       af_rule.cc af_unix.cc policy_cache.c
+C_OBJS_HDRS = parser_include.o parser_merge.o parser_symtab.o \
+             parser_variable.o parser_alias.o parser_common.o policy_cache.o \
+             lib.o
+C_OBJS_YACC = parser_lex.o parser_policy.o
+C_OBJS_AA = parser_yacc.o
+C_OBJS_RE = parser_interface.o common_optarg.o
+C_OBJS_AA_RE = parser_regex.o
+C_OBJS_YACC_AF = network.o
+C_OBJS_AA_CAP = parser_misc.o
+C_OBJS_AA_RE_VER = parser_main.o
+
+CXX_OBJS_HDRS = mount.o profile.o rule.o
+CXX_OBJS_AA = dbus.o signal.o ptrace.o af_rule.o af_unix.o
+
+C_OBJS = $(C_OBJS_HDRS) $(C_OBJS_YACC) $(C_OBJS_AA) $(C_OBJS_RE) \
+         $(C_OBJS_AA_RE) $(C_OBJS_YACC_AF) $(C_OBJS_AA_CAP) $(C_OBJS_AA_RE_VER)
+CXX_OBJS = $(CXX_OBJS_HDRS) $(CXX_OBJS_AA)
+
+SRCS = $(C_OBJS:.o=.c) $(CXX_OBJS:.o=.cc)
+OBJECTS = $(C_OBJS) $(CXX_OBJS)
+
 HDRS = parser.h parser_include.h immunix.h mount.h dbus.h lib.h profile.h \
        rule.h common_optarg.h signal.h ptrace.h network.h af_rule.h af_unix.h \
        policy_cache.h
 TOOLS = apparmor_parser
 
-OBJECTS = $(patsubst %.cc, %.o, $(SRCS:.c=.o))
 
 AAREDIR= libapparmor_re
 AAREOBJECT = ${AAREDIR}/libapparmor_re.a
@@ -210,80 +224,39 @@ parser_yacc.c parser_yacc.h: parser_yacc.y parser.h profile.h
 parser_lex.c: parser_lex.l parser_yacc.h $(HDRS)
 	$(LEX) ${LEXFLAGS} -o$@ $<
 
-parser_lex.o: parser_lex.c parser_yacc.h $(HDRS)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-parser_misc.o: parser_misc.c $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-parser_yacc.o: parser_yacc.c parser_yacc.h $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-parser_main.o: parser_main.c $(HDRS) $(AARE_HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-parser_interface.o: parser_interface.c $(HDRS) $(AARE_HDRS)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_include.o: parser_include.c $(HDRS)
+$(C_OBJS_HDRS): %.o: %.c $(HDRS)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_merge.o: parser_merge.c $(HDRS)
+$(C_OBJS_YACC): %.o: %.c parser_yacc.h $(HDRS)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_regex.o: parser_regex.c $(HDRS) $(AARE_HDRS) $(APPARMOR_H)
+$(C_OBJS_AA): %.o: %.c $(HDRS) $(APPARMOR_H)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_symtab.o: parser_symtab.c $(HDRS)
+$(C_OBJS_RE): %.o: %.c $(HDRS) $(AARE_HDRS)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_variable.o: parser_variable.c $(HDRS)
+$(C_OBJS_AA_RE): %.o: %.c $(HDRS) $(AARE_HDRS) $(APPARMOR_H)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_policy.o: parser_policy.c parser_yacc.h $(HDRS)
+$(C_OBJS_YACC_AF): %.o: %.c parser_yacc.h af_names.h $(HDRS)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_alias.o: parser_alias.c $(HDRS)
+$(C_OBJS_AA_CAP): %.o: %.c $(HDRS) cap_names.h $(APPARMOR_H)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-parser_common.o: parser_common.c $(HDRS)
+$(C_OBJS_AA_RE_VER): %.o: %.c $(HDRS) $(AARE_HDRS) $(APPARMOR_H) parser_version.h
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-mount.o: mount.cc $(HDRS)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-common_optarg.o: common_optarg.c $(HDRS) $(AARE_HDRS)
+$(CXX_OBJS_HDRS): %.o: %.cc $(HDRS)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-policy_cache.o: policy_cache.c $(HDRS)
+$(CXX_OBJS_AA): %.o: %.cc $(HDRS) $(APPARMOR_H)
 	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-lib.o: lib.c $(HDRS)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-dbus.o: dbus.cc $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
-signal.o: signal.cc $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-ptrace.o: ptrace.cc $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-network.o: network.c $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-af_rule.o: af_rule.cc $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-af_unix.o: af_unix.cc $(HDRS) $(APPARMOR_H)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-profile.o: profile.cc $(HDRS)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
-
-rule.o: rule.cc $(HDRS)
-	$(CXX) $(EXTRA_CXXFLAGS) -c -o $@ $<
 
 parser_version.h: Makefile
 	@echo \#define PARSER_VERSION \"$(VERSION)\" > .ver
-- 
2.1.4




More information about the AppArmor mailing list