140e8eefbedcafc51948945647d746daaee092f16Adam Lesinski/* 240e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * Copyright (C) 2014 The Android Open Source Project 340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * 440e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * you may not use this file except in compliance with the License. 640e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * You may obtain a copy of the License at 740e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * 840e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 940e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * 1040e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * Unless required by applicable law or agreed to in writing, software 1140e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 1240e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * See the License for the specific language governing permissions and 1440e8eefbedcafc51948945647d746daaee092f16Adam Lesinski * limitations under the License. 1540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski */ 1640e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 1740e8eefbedcafc51948945647d746daaee092f16Adam Lesinski#include "Abi.h" 1840e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 19c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskiusing namespace android; 20c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski 2140e8eefbedcafc51948945647d746daaee092f16Adam Lesinskinamespace split { 2240e8eefbedcafc51948945647d746daaee092f16Adam Lesinskinamespace abi { 2340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 24c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskistatic Vector<Variant> buildVariants(Variant v1, Variant v2) { 25c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski Vector<Variant> v; 26c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski v.add(v1); 27c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski v.add(v2); 28c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return v; 29c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski} 30c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski 31c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskistatic Vector<Variant> buildVariants(Variant v1, Variant v2, Variant v3) { 32c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski Vector<Variant> v; 33c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski v.add(v1); 34c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski v.add(v2); 35c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski v.add(v3); 36c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return v; 37c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski} 38c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski 39c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskistatic const Vector<Variant> sNoneVariants; 40c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskistatic const Vector<Variant> sArmVariants = buildVariants(Variant_armeabi, Variant_armeabi_v7a, Variant_arm64_v8a); 41c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskistatic const Vector<Variant> sIntelVariants = buildVariants(Variant_x86, Variant_x86_64); 42c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskistatic const Vector<Variant> sMipsVariants = buildVariants(Variant_mips, Variant_mips64); 4340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 4440e8eefbedcafc51948945647d746daaee092f16Adam LesinskiFamily getFamily(Variant variant) { 4540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski switch (variant) { 46c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_none: 47c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return Family_none; 48c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_armeabi: 49c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_armeabi_v7a: 50c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_arm64_v8a: 51c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return Family_arm; 52c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_x86: 53c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_x86_64: 54c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return Family_intel; 55c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_mips: 56c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_mips64: 57c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return Family_mips; 5840e8eefbedcafc51948945647d746daaee092f16Adam Lesinski } 59c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski return Family_none; 6040e8eefbedcafc51948945647d746daaee092f16Adam Lesinski} 6140e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 62c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinskiconst Vector<Variant>& getVariants(Family family) { 6340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski switch (family) { 64c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Family_none: 6540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return sNoneVariants; 66c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Family_arm: 6740e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return sArmVariants; 68c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Family_intel: 6940e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return sIntelVariants; 70c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Family_mips: 7140e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return sMipsVariants; 7240e8eefbedcafc51948945647d746daaee092f16Adam Lesinski } 7340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return sNoneVariants; 7440e8eefbedcafc51948945647d746daaee092f16Adam Lesinski} 7540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 7640e8eefbedcafc51948945647d746daaee092f16Adam Lesinskiconst char* toString(Variant variant) { 7740e8eefbedcafc51948945647d746daaee092f16Adam Lesinski switch (variant) { 78c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_none: 7940e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return ""; 80c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_armeabi: 8140e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "armeabi"; 82c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_armeabi_v7a: 8340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "armeabi-v7a"; 84c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_arm64_v8a: 8540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "arm64-v8a"; 86c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_x86: 8740e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "x86"; 88c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_x86_64: 8940e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "x86_64"; 90c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_mips: 9140e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "mips"; 92c3dc0b57b8d0b3875f868788e110aa67fb032b4aAdam Lesinski case Variant_mips64: 9340e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return "mips64"; 9440e8eefbedcafc51948945647d746daaee092f16Adam Lesinski } 9540e8eefbedcafc51948945647d746daaee092f16Adam Lesinski return ""; 9640e8eefbedcafc51948945647d746daaee092f16Adam Lesinski} 9740e8eefbedcafc51948945647d746daaee092f16Adam Lesinski 9840e8eefbedcafc51948945647d746daaee092f16Adam Lesinski} // namespace abi 9940e8eefbedcafc51948945647d746daaee092f16Adam Lesinski} // namespace split 100