/* * Copyright 2014 the original author or authors. * * 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 org.gradle.nativeplatform.platform.internal; import java.util.LinkedHashSet; import java.util.Set; public class NativePlatforms { private static final String OS_WINDOWS = "windows"; private static final String OS_LINUX = "linux"; private static final String OS_OSX = "osx"; private static final String OS_UNIX = "unix"; private static final String ARCH_X86 = "x86"; public Set<DefaultNativePlatform> defaultPlatformDefinitions() { Set<DefaultNativePlatform> platforms = new LinkedHashSet<DefaultNativePlatform>(); OperatingSystemInternal windows = new DefaultOperatingSystem(OS_WINDOWS); OperatingSystemInternal linux = new DefaultOperatingSystem(OS_LINUX); OperatingSystemInternal osx = new DefaultOperatingSystem(OS_OSX); OperatingSystemInternal unix = new DefaultOperatingSystem(OS_UNIX); OperatingSystemInternal freebsd = new DefaultOperatingSystem("freebsd"); OperatingSystemInternal solaris = new DefaultOperatingSystem("solaris"); ArchitectureInternal x86 = Architectures.forInput(ARCH_X86); ArchitectureInternal x64 = Architectures.forInput("x86_64"); ArchitectureInternal ia64 = Architectures.forInput("ia64"); ArchitectureInternal armv7 = Architectures.forInput("armv7"); ArchitectureInternal armv8 = Architectures.forInput("armv8"); ArchitectureInternal sparc = Architectures.forInput("sparc"); ArchitectureInternal ultrasparc = Architectures.forInput("ultrasparc"); ArchitectureInternal ppc = Architectures.forInput("ppc"); ArchitectureInternal ppc64 = Architectures.forInput("ppc64"); platforms.add(createPlatform(windows, x86)); platforms.add(createPlatform(windows, x64)); platforms.add(createPlatform(windows, armv7)); platforms.add(createPlatform(windows, ia64)); platforms.add(createPlatform(freebsd, x86)); platforms.add(createPlatform(freebsd, x64)); platforms.add(createPlatform(freebsd, armv7)); platforms.add(createPlatform(freebsd, armv8)); platforms.add(createPlatform(freebsd, ppc)); platforms.add(createPlatform(freebsd, ppc64)); platforms.add(createPlatform(unix, x86)); platforms.add(createPlatform(unix, x64)); platforms.add(createPlatform(unix, armv7)); platforms.add(createPlatform(unix, armv8)); platforms.add(createPlatform(unix, ppc)); platforms.add(createPlatform(unix, ppc64)); platforms.add(createPlatform(linux, x64)); platforms.add(createPlatform(linux, x86)); platforms.add(createPlatform(linux, armv7)); platforms.add(createPlatform(linux, armv8)); platforms.add(createPlatform(osx, x86)); platforms.add(createPlatform(osx, x64)); platforms.add(createPlatform(solaris, x64)); platforms.add(createPlatform(solaris, x86)); platforms.add(createPlatform(solaris, sparc)); platforms.add(createPlatform(solaris, ultrasparc)); return platforms; } private static DefaultNativePlatform createPlatform(OperatingSystemInternal os, ArchitectureInternal arch) { return new DefaultNativePlatform(platformName(os.getName(), arch.getName()), os, arch); } private static String platformName(String os, String arch) { return os + "_" + arch; } public String getDefaultPlatformName() { NativePlatformInternal defaultPlatform = new DefaultNativePlatform("default"); OperatingSystemInternal os = defaultPlatform.getOperatingSystem(); ArchitectureInternal architecture = defaultPlatform.getArchitecture(); if (os.isWindows()) { // Always use x86 as default on windows return platformName(OS_WINDOWS, ARCH_X86); } if (os.isLinux()) { return platformName(OS_LINUX, architecture.getName()); } if (os.isMacOsX()) { return platformName(OS_OSX, architecture.getName()); } return platformName(OS_UNIX, ARCH_X86); } }