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 <[email protected]>
---
 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


-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to