| // Copyright 2015 Google Inc. All rights reserved. |
| // |
| // 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. |
| |
| package common |
| |
| import ( |
| "os" |
| "path/filepath" |
| ) |
| |
| // ModuleOutDir returns the path to the module-specific output directory. |
| func ModuleOutDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ctx.AConfig().IntermediatesDir(), |
| ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir()) |
| } |
| |
| // ModuleSrcDir returns the path of the directory that all source file paths are |
| // specified relative to. |
| func ModuleSrcDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ctx.AConfig().SrcDir(), ctx.ModuleDir()) |
| } |
| |
| // ModuleBinDir returns the path to the module- and architecture-specific binary |
| // output directory. |
| func ModuleBinDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "bin") |
| } |
| |
| // ModuleLibDir returns the path to the module- and architecture-specific |
| // library output directory. |
| func ModuleLibDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "lib") |
| } |
| |
| // ModuleGenDir returns the module directory for generated files |
| // path. |
| func ModuleGenDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "gen") |
| } |
| |
| // ModuleObjDir returns the module- and architecture-specific object directory |
| // path. |
| func ModuleObjDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "obj") |
| } |
| |
| // ModuleGoPackageDir returns the module-specific package root directory path. |
| // This directory is where the final package .a files are output and where |
| // dependent modules search for this package via -I arguments. |
| func ModuleGoPackageDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "pkg") |
| } |
| |
| // ModuleIncludeDir returns the module-specific public include directory path. |
| func ModuleIncludeDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "include") |
| } |
| |
| // ModuleProtoDir returns the module-specific public proto include directory path. |
| func ModuleProtoDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "proto") |
| } |
| |
| func ModuleJSCompiledDir(ctx AndroidModuleContext) string { |
| return filepath.Join(ModuleOutDir(ctx), "js") |
| } |
| |
| // CheckModuleSrcDirsExist logs an error on a property if any of the directories relative to the |
| // Blueprints file don't exist. |
| func CheckModuleSrcDirsExist(ctx AndroidModuleContext, dirs []string, prop string) { |
| for _, dir := range dirs { |
| fullDir := filepath.Join(ModuleSrcDir(ctx), dir) |
| if _, err := os.Stat(fullDir); err != nil { |
| if os.IsNotExist(err) { |
| ctx.PropertyErrorf(prop, "module source directory %q does not exist", dir) |
| } else { |
| ctx.PropertyErrorf(prop, "%s", err.Error()) |
| } |
| } |
| } |
| } |
| |
| // CheckModuleSrcDirsExist logs an error on a property if any of the directories relative to the |
| // top of the source tree don't exist. |
| func CheckSrcDirsExist(ctx AndroidModuleContext, dirs []string, prop string) { |
| for _, dir := range dirs { |
| fullDir := filepath.Join(ctx.AConfig().SrcDir(), dir) |
| if _, err := os.Stat(fullDir); err != nil { |
| if os.IsNotExist(err) { |
| ctx.PropertyErrorf(prop, "top-level source directory %q does not exist", dir) |
| } else { |
| ctx.PropertyErrorf(prop, "%s", err.Error()) |
| } |
| } |
| } |
| } |