OS判別

cmincamlっていうのを作ってるのですが、メインマシンがmacにしてコンパイルしたらうまく動きませんでした。
これは、osxに対応するしかない!ってことで、os判別して、mac osxでも動くバイナリ吐きだすぞー
ってことで、os判別だけ作りました。

以下ソースです。

object test {

        def main (args:Array[String]) {
                val os = OS();
                println("os=" + os);
                os match {
                case MacOsxX86() => Emit_MacOsxX86()
                case MacOsxX86_64() => Emit_MacOsxX86_64()
                case WindowsX86() => Emit_WindowsX86()
                case UnknownOS() => Emit_UnknownOS()
                }
        }

}

sealed abstract class OS()
case class MacOsxX86_64() extends OS()
case class MacOsxX86() extends OS()
case class WindowsX86() extends OS()
case class UnknownOS() extends OS()
object OS {
        def  apply():OS =
                (System.getProperty("os.name"),
                        System.getProperty("os.arch")) match {
                case ("Mac OS X","x86_64") => MacOsxX86_64()
                case ("Mac OS X","x86") => MacOsxX86_64()
                case _ => UnknownOS()
                }

}

object Emit_MacOsxX86_64 {
        def apply() {
                println("emit macos x86 64")
        }
}

object Emit_MacOsxX86 {
        def apply() {
                println("emit macos x86")
        }
}

object Emit_WindowsX86 {
        def apply() {
                println("emit windows x86")
        }
}

object Emit_UnknownOS {
        def apply() {
                println("emit unknown os")
        }
}