1// Copyright 2020 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package cc 16 17import ( 18 "android/soong/android" 19) 20 21func init() { 22 RegisterLibraryHeadersBuildComponents(android.InitRegistrationContext) 23 24 // Register sdk member types. 25 android.RegisterSdkMemberType(headersLibrarySdkMemberType) 26 27} 28 29var headersLibrarySdkMemberType = &librarySdkMemberType{ 30 SdkMemberTypeBase: android.SdkMemberTypeBase{ 31 PropertyName: "native_header_libs", 32 SupportsSdk: true, 33 HostOsDependent: true, 34 Traits: []android.SdkMemberTrait{ 35 nativeBridgeSdkTrait, 36 ramdiskImageRequiredSdkTrait, 37 recoveryImageRequiredSdkTrait, 38 }, 39 }, 40 prebuiltModuleType: "cc_prebuilt_library_headers", 41 noOutputFiles: true, 42} 43 44func RegisterLibraryHeadersBuildComponents(ctx android.RegistrationContext) { 45 ctx.RegisterModuleType("cc_library_headers", LibraryHeaderFactory) 46 ctx.RegisterModuleType("cc_prebuilt_library_headers", prebuiltLibraryHeaderFactory) 47} 48 49// cc_library_headers contains a set of c/c++ headers which are imported by 50// other soong cc modules using the header_libs property. For best practices, 51// use export_include_dirs property or LOCAL_EXPORT_C_INCLUDE_DIRS for 52// Make. 53func LibraryHeaderFactory() android.Module { 54 module, library := NewLibrary(android.HostAndDeviceSupported) 55 library.HeaderOnly() 56 module.sdkMemberTypes = []android.SdkMemberType{headersLibrarySdkMemberType} 57 return module.Init() 58} 59 60// cc_prebuilt_library_headers is a prebuilt version of cc_library_headers 61func prebuiltLibraryHeaderFactory() android.Module { 62 module, library := NewPrebuiltLibrary(android.HostAndDeviceSupported, "") 63 library.HeaderOnly() 64 return module.Init() 65} 66