init: start move to Android.bp

Move libinit, init_tests, and test_service to Android.bp
Leave init in Android.mk as it has unfulfilled dependencies, but
create a comment in Android.bp for future use.
Remove libinit_parser and init_parser_tests as that code was never
used in init.

Bug: 36970783
Bug: 37512442
Test: Build, boot bullhead, init unit tests
Change-Id: Id81cd10ea09453a5fd762ba9189276aad79d5444
This commit is contained in:
Tom Cherry 2017-05-09 17:11:57 -07:00
parent 62db5fcee0
commit 14fc01301d
4 changed files with 186 additions and 102 deletions

164
init/Android.bp Normal file
View File

@ -0,0 +1,164 @@
//
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
cc_defaults {
name: "init_defaults",
cpp_std: "experimental",
sanitize: {
misc_undefined: ["integer"],
},
tidy_checks: ["-misc-forwarding-reference-overload"],
cppflags: [
"-DLOG_UEVENTS=0",
"-Wall",
"-Wextra",
"-Wno-unused-parameter",
"-Werror",
"-DALLOW_LOCAL_PROP_OVERRIDE=0",
"-DALLOW_PERMISSIVE_SELINUX=0",
"-DREBOOT_BOOTLOADER_ON_PANIC=0",
"-DWORLD_WRITABLE_KMSG=0",
"-DDUMP_ON_UMOUNT_FAILURE=0",
"-DSHUTDOWN_ZERO_TIMEOUT=0",
],
product_variables: {
debuggable: {
cppflags: [
"-UALLOW_LOCAL_PROP_OVERRIDE",
"-DALLOW_LOCAL_PROP_OVERRIDE=1",
"-UALLOW_PERMISSIVE_SELINUX",
"-DALLOW_PERMISSIVE_SELINUX=1",
"-UREBOOT_BOOTLOADER_ON_PANIC",
"-DREBOOT_BOOTLOADER_ON_PANIC=1",
"-UWORLD_WRITABLE_KMSG",
"-DWORLD_WRITABLE_KMSG=1",
"-UDUMP_ON_UMOUNT_FAILURE",
"-DDUMP_ON_UMOUNT_FAILURE=1",
],
},
eng: {
cppflags: [
"-USHUTDOWN_ZERO_TIMEOUT",
"-DSHUTDOWN_ZERO_TIMEOUT=1",
],
},
},
}
cc_library_static {
name: "libinit",
defaults: ["init_defaults"],
srcs: [
"action.cpp",
"capabilities.cpp",
"descriptors.cpp",
"devices.cpp",
"import_parser.cpp",
"init_parser.cpp",
"log.cpp",
"parser.cpp",
"service.cpp",
"util.cpp",
],
whole_static_libs: ["libcap"],
static_libs: [
"libbase",
"libselinux",
"liblog",
"libprocessgroup",
],
}
/*
This is not yet ready, see the below TODOs for what is missing
cc_binary {
// TODO: Missing,
//LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
//LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
name: "init",
defaults: ["init_defaults"],
static_executable: true,
srcs: [
"bootchart.cpp",
"builtins.cpp",
"init.cpp",
"init_first_stage.cpp",
"keychords.cpp",
"property_service.cpp",
"reboot.cpp",
"signal_handler.cpp",
"ueventd.cpp",
"watchdogd.cpp",
],
include_dirs: [
"system/core/mkbootimg"
],
static_libs: [
"libinit",
"libbootloader_message",
"libfs_mgr",
"libfec",
"libfec_rs",
"libsquashfs_utils",
"liblogwrap",
"libext4_utils",
"libcutils",
"libbase",
"libc",
"libselinux",
"liblog",
"libcrypto_utils",
"libcrypto",
"libc++_static",
"libdl",
"libsparse",
"libz",
"libprocessgroup",
"libavb",
"libkeyutils",
],
symlinks: [
"sbin/ueventd",
"sbin/watchdogd",
],
}
*/
// Tests
// ------------------------------------------------------------------------------
cc_test {
name: "init_tests",
defaults: ["init_defaults"],
srcs: [
"devices_test.cpp",
"init_parser_test.cpp",
"init_test.cpp",
"property_service_test.cpp",
"service_test.cpp",
"util_test.cpp",
],
shared_libs: [
"libbase",
"libcutils",
"libselinux",
],
static_libs: ["libinit"],
}
subdirs = ["*"]

View File

@ -39,50 +39,6 @@ init_cflags += \
# --
# If building on Linux, then build unit test for the host.
ifeq ($(HOST_OS),linux)
include $(CLEAR_VARS)
LOCAL_CPPFLAGS := $(init_cflags)
LOCAL_SRC_FILES:= \
parser/tokenizer.cpp \
LOCAL_MODULE := libinit_parser
LOCAL_CLANG := true
include $(BUILD_HOST_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := init_parser_tests
LOCAL_SRC_FILES := \
parser/tokenizer_test.cpp \
LOCAL_STATIC_LIBRARIES := libinit_parser
LOCAL_CLANG := true
include $(BUILD_HOST_NATIVE_TEST)
endif
include $(CLEAR_VARS)
# b/38002385, work around clang-tidy segmentation fault.
LOCAL_TIDY_CHECKS := -misc-forwarding-reference-overload
LOCAL_CPPFLAGS := $(init_cflags)
LOCAL_SRC_FILES:= \
action.cpp \
capabilities.cpp \
descriptors.cpp \
devices.cpp \
import_parser.cpp \
init_parser.cpp \
log.cpp \
parser.cpp \
service.cpp \
util.cpp \
LOCAL_STATIC_LIBRARIES := libbase libselinux liblog libprocessgroup
LOCAL_WHOLE_STATIC_LIBRARIES := libcap
LOCAL_MODULE := libinit
LOCAL_SANITIZE := integer
LOCAL_CLANG := true
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
# b/38002385, work around clang-tidy segmentation fault.
LOCAL_TIDY_CHECKS := -misc-forwarding-reference-overload
@ -139,34 +95,3 @@ LOCAL_POST_INSTALL_CMD := $(hide) mkdir -p $(TARGET_ROOT_OUT)/sbin; \
LOCAL_SANITIZE := integer
LOCAL_CLANG := true
include $(BUILD_EXECUTABLE)
# Unit tests.
# =========================================================
include $(CLEAR_VARS)
# b/38002385, work around clang-tidy segmentation fault.
LOCAL_TIDY_CHECKS := -misc-forwarding-reference-overload
LOCAL_MODULE := init_tests
LOCAL_SRC_FILES := \
devices_test.cpp \
init_parser_test.cpp \
init_test.cpp \
property_service_test.cpp \
service_test.cpp \
util_test.cpp \
LOCAL_SHARED_LIBRARIES += \
libbase \
libcutils \
libselinux \
LOCAL_STATIC_LIBRARIES := libinit
LOCAL_SANITIZE := integer
LOCAL_CLANG := true
LOCAL_CPPFLAGS := -Wall -Wextra -Werror -std=gnu++1z
include $(BUILD_NATIVE_TEST)
# Include targets in subdirs.
# =========================================================
include $(call all-makefiles-under,$(LOCAL_PATH))

View File

@ -0,0 +1,22 @@
//
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
cc_binary {
name: "test_service",
srcs: ["test_service.cpp"],
shared_libs: ["libbase"],
init_rc: ["test_service.rc"],
}

View File

@ -1,27 +0,0 @@
# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
LOCAL_PATH := $(call my-dir)
# Sample service for testing.
# =========================================================
include $(CLEAR_VARS)
LOCAL_MODULE := test_service
LOCAL_SRC_FILES := test_service.cpp
LOCAL_SHARED_LIBRARIES += libbase
LOCAL_INIT_RC := test_service.rc
include $(BUILD_EXECUTABLE)