1/*
2**
3** Copyright 2008, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9**     http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#ifndef INSTALLD_DEPS_H_
19#define INSTALLD_DEPS_H_
20
21#include <inttypes.h>
22
23#include <installd_constants.h>
24
25namespace android {
26namespace installd {
27
28// Dependencies for a full binary. These functions need to be provided to
29// figure out parts of the configuration.
30
31// Retrieve a system property. Same API as cutils, just renamed.
32extern int get_property(const char *key,
33                        char *value,
34                        const char *default_value);
35// Size constants. Should be checked to be equal to the cutils requirements.
36constexpr size_t kPropertyKeyMax = 32u;
37constexpr size_t kPropertyValueMax = 92u;
38
39// Compute the output path for dex2oat.
40extern bool calculate_oat_file_path(char path[PKG_PATH_MAX],
41                                    const char *oat_dir,
42                                    const char *apk_path,
43                                    const char *instruction_set);
44// Compute the output path for patchoat.
45//
46// Computes the odex file for the given apk_path and instruction_set, e.g.,
47// /system/framework/whatever.jar -> /system/framework/oat/<isa>/whatever.odex
48//
49// Returns false if it failed to determine the odex file path.
50//
51extern bool calculate_odex_file_path(char path[PKG_PATH_MAX],
52                                     const char *apk_path,
53                                     const char *instruction_set);
54
55// Compute the output path into the dalvik cache.
56extern bool create_cache_path(char path[PKG_PATH_MAX],
57                              const char *src,
58                              const char *instruction_set);
59
60}  // namespace installd
61}  // namespace android
62
63#endif  // INSTALLD_DEPS_H_
64