blob: 9a2e74c9dde3287c96a0ef462045ca7e322d5e4e [file] [log] [blame]
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := checkpolicy
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS := -Wall -Werror -Wshadow
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_SRC_FILES := \
queue.c \
module_compiler.c \
parse_util.c \
policy_define.c \
checkpolicy.c
LOCAL_YACCFLAGS := -v
LOCAL_STATIC_LIBRARIES := libsepol
include $(BUILD_HOST_EXECUTABLE)
# The default build system tries to create a C++ lexer, but it won't
# compile because the generated file uses reserved C++ keywords.
# The following rules manually generate a C file from the lexer.
checkpolicy_lex_output := $(addprefix $(intermediates)/,policy_scan.c)
checkpolicy_lex_objects := $(checkpolicy_lex_output:.c=.o)
$(checkpolicy_lex_output): $(intermediates)/%.c: $(TOPDIR)$(LOCAL_PATH)/%.l
@mkdir -p $(dir $@)
@echo "Lex: $(PRIVATE_MODULE) <= $<"
$(hide) $(LEX) -o$@ $<
$(checkpolicy_lex_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
$(checkpolicy_lex_objects): PRIVATE_CONLYFLAGS := -Wno-sign-compare
$(checkpolicy_lex_objects): $(intermediates)/import_includes
$(checkpolicy_lex_objects): $(checkpolicy_lex_output)
$(transform-$(PRIVATE_HOST)c-to-o)
checkpolicy_yacc_output := $(addprefix $(intermediates)/,policy_parse.c)
checkpolicy_yacc_objects := $(checkpolicy_yacc_output:.c=.o)
$(checkpolicy_yacc_output): $(intermediates)/%.c: $(TOPDIR)$(LOCAL_PATH)/%.y
@mkdir -p $(dir $@)
@echo "Yacc: $(PRIVATE_MODULE) <= $<"
$(YACC) $(PRIVATE_YACCFLAGS) -o $@ $<
$(checkpolicy_yacc_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
$(checkpolicy_yacc_objects): PRIVATE_CONLYFLAGS := -Wno-sign-compare
$(checkpolicy_yacc_objects): $(intermediates)/import_includes
$(checkpolicy_yacc_objects): $(checkpolicy_yacc_output)
$(transform-$(PRIVATE_HOST)c-to-o)
# header file generated in yacc is required by lex
$(checkpolicy_lex_objects): $(checkpolicy_yacc_output)
$(LOCAL_BUILT_MODULE): PRIVATE_ALL_OBJECTS += $(checkpolicy_lex_objects) $(checkpolicy_yacc_objects)
$(LOCAL_BUILT_MODULE): $(checkpolicy_lex_objects) $(checkpolicy_yacc_objects)