checkpolicy: Android/MacOS X build support

Android/MacOS X build support for checkpolicy.
Create a Android.mk file for Android build integration.
Introduce DARWIN ifdefs for building on MacOS X.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: Eric Paris <eparis@redhat.com>
Acked-by: Dan Walsh <dwalsh@redhat.com>
This commit is contained in:
Stephen Smalley 2012-02-23 10:14:13 -05:00 committed by Eric Paris
parent 0eed03e756
commit da752cabb5
4 changed files with 77 additions and 1 deletions

62
checkpolicy/Android.mk Normal file
View File

@ -0,0 +1,62 @@
LOCAL_PATH:= $(call my-dir)
common_src_files := \
policy_parse.y \
policy_scan.l \
queue.c \
module_compiler.c \
parse_util.c \
policy_define.c
common_cflags := \
-Wall -Wshadow -O2 \
-pipe -fno-strict-aliasing \
-Wno-return-type
ifeq ($(HOST_OS),darwin)
common_cflags += -DDARWIN
endif
common_includes := \
$(LOCAL_PATH)/ \
$(LOCAL_PATH)/../libsepol/include/ \
$(LOCAL_PATH)/../libsepol/src/ \
##
# "-x c" forces the lex/yacc files to be compiled as c
# the build system otherwise forces them to be c++
yacc_flags := -x c
##
# checkpolicy
#
include $(CLEAR_VARS)
LOCAL_MODULE := checkpolicy
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_CFLAGS := $(yacc_flags) $(common_cflags)
LOCAL_SRC_FILES := $(common_src_files) checkpolicy.c
LOCAL_STATIC_LIBRARIES := libsepol
LOCAL_YACCFLAGS := -v
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_HOST_EXECUTABLE)
##
# checkmodule
#
include $(CLEAR_VARS)
LOCAL_MODULE := checkmodule
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_CFLAGS := $(yacc_flags) $(common_cflags)
LOCAL_SRC_FILES := $(common_src_files) checkmodule.c
LOCAL_STATIC_LIBRARIES := libsepol
LOCAL_YACCFLAGS := -v
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_HOST_EXECUTABLE)

View File

@ -70,6 +70,10 @@
#include <errno.h>
#include <sys/mman.h>
#ifdef DARWIN
#include <ctype.h>
#endif
#include <sepol/policydb/policydb.h>
#include <sepol/policydb/services.h>
#include <sepol/policydb/conditional.h>

View File

@ -4343,8 +4343,14 @@ int define_ipv6_node_context(void)
}
memset(newc, 0, sizeof(ocontext_t));
#ifdef DARWIN
memcpy(&newc->u.node6.addr[0], &addr.s6_addr[0], 16);
memcpy(&newc->u.node6.mask[0], &mask.s6_addr[0], 16);
#else
memcpy(&newc->u.node6.addr[0], &addr.s6_addr32[0], 16);
memcpy(&newc->u.node6.mask[0], &mask.s6_addr32[0], 16);
#endif
if (parse_security_context(&newc->context[0])) {
free(newc);

View File

@ -27,7 +27,11 @@
typedef int (* require_func_t)();
#ifdef ANDROID
#include "policy_parse.h"
#else
#include "y.tab.h"
#endif
static char linebuf[2][255];
static unsigned int lno = 0;
@ -43,7 +47,7 @@ unsigned long policydb_lineno = 1;
unsigned int policydb_errors = 0;
%}
%option noinput nounput
%option noinput nounput noyywrap
%array
letter [A-Za-z]