/* * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; either version 2.1 of the License, or (at * your option) any later version. This library is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU Lesser General Public License for more details. */ package com.sun.jna; /** Provide simplified platform information. */ public final class Platform { public static final int UNSPECIFIED = -1; public static final int MAC = 0; public static final int LINUX = 1; public static final int WINDOWS = 2; public static final int SOLARIS = 3; public static final int FREEBSD = 4; public static final int OPENBSD = 5; public static final int WINDOWSCE = 6; private static final int osType; static { String osName = System.getProperty("os.name"); if (osName.startsWith("Linux")) { osType = LINUX; } else if (osName.startsWith("Mac") || osName.startsWith("Darwin")) { osType = MAC; } else if (osName.startsWith("Windows CE")) { osType = WINDOWSCE; } else if (osName.startsWith("Windows")) { osType = WINDOWS; } else if (osName.startsWith("Solaris") || osName.startsWith("SunOS")) { osType = SOLARIS; } else if (osName.startsWith("FreeBSD")) { osType = FREEBSD; } else if (osName.startsWith("OpenBSD")) { osType = OPENBSD; } else { osType = UNSPECIFIED; } } private Platform() { } public static final int getOSType() { return osType; } public static final boolean isMac() { return osType == MAC; } public static final boolean isLinux() { return osType == LINUX; } public static final boolean isWindowsCE() { return osType == WINDOWSCE; } public static final boolean isWindows() { return osType == WINDOWS || osType == WINDOWSCE; } public static final boolean isSolaris() { return osType == SOLARIS; } public static final boolean isFreeBSD() { return osType == FREEBSD; } public static final boolean isOpenBSD() { return osType == OPENBSD; } public static final boolean isX11() { // TODO: check filesystem for /usr/X11 or some other X11-specific test return !Platform.isWindows() && !Platform.isMac(); } public static final boolean deleteNativeLibraryAfterVMExit() { return osType == WINDOWS; } public static final boolean hasRuntimeExec() { if (isWindowsCE() && "J9".equals(System.getProperty("java.vm.name"))) return false; return true; } public static final boolean is64Bit() { String model = System.getProperty("sun.arch.data.model"); if (model != null) return "64".equals(model); String arch = System.getProperty("os.arch").toLowerCase(); if ("x86_64".equals(arch) || "ppc64".equals(arch) || "sparcv9".equals(arch) || "amd64".equals(arch)) { return true; } return Native.POINTER_SIZE == 8; } }