selinux/libsepol/Android.mk
Stephen Smalley cacf51cef0 libsepol, secilc: Fix build for Android
The Android build does not like the symbol versioning introduced
by commit 8147bc7; the build fails with:
host SharedLib: libsepol (out/host/linux-x86/obj/lib/libsepol.so)
prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8//x86_64-linux/bin/ld: error: symbol cil_build_policydb has undefined version
prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8//x86_64-linux/bin/ld: error: symbol cil_build_policydb has undefined version LIBSEPOL_1.1
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Omit the versioned symbols and simply use the current interfaces
when building on Android.

Commit 36f62b7 also broke the Android build by moving secilc out of
libsepol, because the libsepol headers were not installed by the Android.mk
file.

Export the required libsepol headers for use by secilc and adjust secilc
to pick them up from the right location on Android.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2015-04-02 12:01:10 -04:00

141 lines
3.0 KiB
Makefile

LOCAL_PATH:= $(call my-dir)
common_src_files := \
src/assertion.c \
src/avrule_block.c \
src/avtab.c \
src/boolean_record.c \
src/booleans.c \
src/conditional.c \
src/constraint.c \
src/context.c \
src/context_record.c \
src/debug.c \
src/ebitmap.c \
src/expand.c \
src/genbools.c \
src/genusers.c \
src/handle.c \
src/hashtab.c \
src/hierarchy.c \
src/iface_record.c \
src/interfaces.c \
src/link.c \
src/mls.c \
src/module.c \
src/module_to_cil.c \
src/node_record.c \
src/nodes.c \
src/polcaps.c \
src/policydb.c \
src/policydb_convert.c \
src/policydb_public.c \
src/port_record.c \
src/ports.c \
src/roles.c \
src/services.c \
src/sidtab.c \
src/symtab.c \
src/user_record.c \
src/users.c \
src/util.c \
src/write.c
cil_src_files := \
cil/src/cil_binary.c \
cil/src/cil_build_ast.c \
cil/src/cil.c \
cil/src/cil_copy_ast.c \
cil/src/cil_fqn.c \
cil/src/cil_lexer.l \
cil/src/cil_list.c \
cil/src/cil_log.c \
cil/src/cil_mem.c \
cil/src/cil_parser.c \
cil/src/cil_policy.c \
cil/src/cil_post.c \
cil/src/cil_reset_ast.c \
cil/src/cil_resolve_ast.c \
cil/src/cil_stack.c \
cil/src/cil_strpool.c \
cil/src/cil_symtab.c \
cil/src/cil_tree.c \
cil/src/cil_verify.c
common_cflags := \
-Wall -W -Wundef \
-Wshadow -Wmissing-noreturn \
-Wmissing-format-attribute
ifeq ($(HOST_OS), darwin)
common_cflags += -DDARWIN
endif
common_includes := \
$(LOCAL_PATH)/include/ \
$(LOCAL_PATH)/src/ \
$(LOCAL_PATH)/cil/include/ \
$(LOCAL_PATH)/cil/src/ \
##
# "-x c" forces the lex/yacc files to be compiled as c the build system
# otherwise forces them to be c++. Need to also add an explicit -std because the
# build system will soon default C++ to -std=c++11.
yacc_flags := -x c -std=gnu89
##
# libsepol.so
#
include $(CLEAR_VARS)
LOCAL_MODULE := libsepol
LOCAL_MODULE_TAGS := optional
LOCAL_COPY_HEADERS_TO := sepol
LOCAL_COPY_HEADERS := include/sepol/handle.h include/sepol/policydb.h cil/include/cil/cil.h
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_CFLAGS := $(yacc_flags) $(common_cflags)
LOCAL_SRC_FILES := $(common_src_files) $(cil_src_files)
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_HOST_SHARED_LIBRARY)
##
# libsepol.a
#
include $(CLEAR_VARS)
LOCAL_MODULE := libsepol
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_CFLAGS := $(yacc_flags) $(common_cflags)
LOCAL_SRC_FILES := $(common_src_files) $(cil_src_files)
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
include $(BUILD_HOST_STATIC_LIBRARY)
##
# chkcon
#
include $(CLEAR_VARS)
LOCAL_MODULE := chkcon
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_CFLAGS := $(common_cflags)
LOCAL_SRC_FILES := utils/chkcon.c
LOCAL_SHARED_LIBRARIES := libsepol
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_HOST_EXECUTABLE)
include $(CLEAR_VARS)
LOCAL_MODULE := libsepol
LOCAL_MODULE_TAGES := optional
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_CFLAGS := $(common_cflags)
LOCAL_SRC_FILES := $(common_src_files)
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
include $(BUILD_STATIC_LIBRARY)