xref: /aosp_15_r20/system/linkerconfig/modules/tests/modules_testbase.h (revision e5eeaa8e05bc25a862c0c861bda7c8a6bfb42dad)
1*e5eeaa8eSAndroid Build Coastguard Worker /*
2*e5eeaa8eSAndroid Build Coastguard Worker  * Copyright (C) 2019 The Android Open Source Project
3*e5eeaa8eSAndroid Build Coastguard Worker  *
4*e5eeaa8eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*e5eeaa8eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*e5eeaa8eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*e5eeaa8eSAndroid Build Coastguard Worker  *
8*e5eeaa8eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*e5eeaa8eSAndroid Build Coastguard Worker  *
10*e5eeaa8eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*e5eeaa8eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*e5eeaa8eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*e5eeaa8eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*e5eeaa8eSAndroid Build Coastguard Worker  * limitations under the License.
15*e5eeaa8eSAndroid Build Coastguard Worker  */
16*e5eeaa8eSAndroid Build Coastguard Worker #pragma once
17*e5eeaa8eSAndroid Build Coastguard Worker 
18*e5eeaa8eSAndroid Build Coastguard Worker #include "linkerconfig/namespace.h"
19*e5eeaa8eSAndroid Build Coastguard Worker 
20*e5eeaa8eSAndroid Build Coastguard Worker using namespace android::linkerconfig::modules;
21*e5eeaa8eSAndroid Build Coastguard Worker 
CreateNamespaceWithPaths(const std::string & name,bool is_isolated,bool is_visible)22*e5eeaa8eSAndroid Build Coastguard Worker inline Namespace CreateNamespaceWithPaths(const std::string& name,
23*e5eeaa8eSAndroid Build Coastguard Worker                                           bool is_isolated, bool is_visible) {
24*e5eeaa8eSAndroid Build Coastguard Worker   Namespace ns(name, is_isolated, is_visible);
25*e5eeaa8eSAndroid Build Coastguard Worker   ns.AddSearchPath("/search_path1");
26*e5eeaa8eSAndroid Build Coastguard Worker   ns.AddSearchPath("/apex/search_path2");
27*e5eeaa8eSAndroid Build Coastguard Worker   ns.AddPermittedPath("/permitted_path1");
28*e5eeaa8eSAndroid Build Coastguard Worker   ns.AddPermittedPath("/apex/permitted_path2");
29*e5eeaa8eSAndroid Build Coastguard Worker 
30*e5eeaa8eSAndroid Build Coastguard Worker   return ns;
31*e5eeaa8eSAndroid Build Coastguard Worker }
32*e5eeaa8eSAndroid Build Coastguard Worker 
CreateNamespaceWithLinks(const std::string & name,bool is_isolated,bool is_visible,const std::string & target_1,const std::string & target_2)33*e5eeaa8eSAndroid Build Coastguard Worker inline Namespace CreateNamespaceWithLinks(const std::string& name,
34*e5eeaa8eSAndroid Build Coastguard Worker                                           bool is_isolated, bool is_visible,
35*e5eeaa8eSAndroid Build Coastguard Worker                                           const std::string& target_1,
36*e5eeaa8eSAndroid Build Coastguard Worker                                           const std::string& target_2) {
37*e5eeaa8eSAndroid Build Coastguard Worker   Namespace ns = CreateNamespaceWithPaths(name, is_isolated, is_visible);
38*e5eeaa8eSAndroid Build Coastguard Worker   auto& link = ns.GetLink(target_1);
39*e5eeaa8eSAndroid Build Coastguard Worker   link.AddSharedLib("lib1.so", "lib2.so", "lib3.so");
40*e5eeaa8eSAndroid Build Coastguard Worker 
41*e5eeaa8eSAndroid Build Coastguard Worker   ns.GetLink(target_2).AllowAllSharedLibs();
42*e5eeaa8eSAndroid Build Coastguard Worker   return ns;
43*e5eeaa8eSAndroid Build Coastguard Worker }
44