+ "haiku-common" => {
+ template => 1,
+ cc => "cc",
+ cflags => add_before(picker(default => "-DL_ENDIAN -Wall",
+ debug => "-g -O0",
+ release => "-O2"),
+ threads("-D_REENTRANT")),
+ sys_id => "HAIKU",
+ lflags => "-lnetwork",
+ perlasm_scheme => "elf",
+ thread_scheme => "pthreads",
+ dso_scheme => "dlfcn",
+ shared_target => "haiku-shared",
+ shared_cflag => "-fPIC",
+ shared_ldflag => "-shared",
+ shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ },
+ "haiku-x86" => {
+ inherit_from => [ "haiku-common", asm("x86_elf_asm") ],
+ cflags => add(picker(default => "",
+ release => "-fomit-frame-pointer")),
+ bn_ops => "BN_LLONG",
+ },
+ # Haiku builds with no-asm
+ "haiku-x86_64" => {
+ inherit_from => [ "haiku-common", asm("x86_64_asm") ],
+ cflags => add("-m64"),
+ bn_ops => "SIXTY_FOUR_BIT_LONG",
+ },
+
+
+ ##### VMS
+ "vms-generic" => {
+ inherit_from => [ "BASE_VMS" ],
+ template => 1,
+ cc => "CC/DECC",
+ cflags => picker(default => "/STANDARD=RELAXED/NOLIST/PREFIX=ALL",
+ debug => "/NOOPTIMIZE/DEBUG",
+ release => "/OPTIMIZE/NODEBUG"),
+ lflags => picker(default => "/MAP",
+ debug => "/DEBUG/TRACEBACK",
+ release => "/NODEBUG/NOTRACEBACK"),
+ lib_cflags => add("/NAMES=(AS_IS,SHORTENED)"),
+ dso_cflags => add("/NAMES=(AS_IS,SHORTENED)"),
+ shared_target => "vms-shared",
+ dso_scheme => "vms",
+ thread_scheme => "pthreads",
+
+ apps_aux_src => "vms_decc_init.c",
+ },
+
+ # VMS on VAX is *unsupported*
+ #"vms-asm" => {
+ # template => 1,
+ # bn_obj => "[.asm]vms.obj vms-helper.obj"
+ #},
+ #"vms-vax" => {
+ # inherit_from => [ "vms-generic", asm("vms-asm") ],
+ # as => "MACRO",
+ # debug_aflags => "/NOOPTIMIZE/DEBUG",
+ # release_aflags => "/OPTIMIZE/NODEBUG",
+ # bn_opts => "THIRTY_TWO_BIT RC4_CHAR RC4_CHUNK DES_PTR BF_PTR",
+ #},
+ "vms-alpha" => {
+ inherit_from => [ "vms-generic" ],
+ cflags => add(sub { my @warnings =
+ @{vms_info(0)->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
+ defines =>
+ add(sub {
+ return vms_info(0)->{def_zlib}
+ ? "LIBZ=\"\"\"".vms_info(0)->{def_zlib}."\"\"\"" : ();
+ }),
+ ex_libs => add(sub { return vms_info(0)->{zlib} || (); }),
+ #as => "???",
+ #debug_aflags => "/NOOPTIMIZE/DEBUG",
+ #release_aflags => "/OPTIMIZE/NODEBUG",
+ bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR",
+ },
+ "vms-alpha-p32" => {
+ inherit_from => [ "vms-generic" ],
+ cflags =>
+ add("/POINTER_SIZE=32",
+ sub { my @warnings =
+ @{vms_info(32)->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ defines =>
+ add(sub {
+ return vms_info(32)->{def_zlib}
+ ? "LIBZ=\"\"\"".vms_info(32)->{def_zlib}."\"\"\"" : ();
+ }),
+ ex_libs => add(sub { return vms_info(32)->{zlib} || (); }),
+ },
+ "vms-alpha-p64" => {
+ inherit_from => [ "vms-generic" ],
+ cflags =>
+ add("/POINTER_SIZE=64=ARGV",
+ sub { my @warnings =
+ @{vms_info(64)->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ defines =>
+ add(sub {
+ return vms_info(64)->{def_zlib}
+ ? "LIBZ=\"\"\"".vms_info(64)->{def_zlib}."\"\"\"" : ();
+ }),
+ ex_libs => add(sub { return vms_info(64)->{zlib} || (); }),
+ },
+ "vms-ia64" => {
+ inherit_from => [ "vms-generic" ],
+ cflags => add(sub { my @warnings =
+ @{vms_info(0)->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
+ defines =>
+ add(sub {
+ return vms_info(0)->{def_zlib}
+ ? "LIBZ=\"\"\"".vms_info(0)->{def_zlib}."\"\"\"" : ();
+ }),
+ ex_libs => add(sub { return vms_info(0)->{zlib} || (); }),
+ #as => "I4S",
+ #debug_aflags => "/NOOPTIMIZE/DEBUG",
+ #release_aflags => "/OPTIMIZE/NODEBUG",
+ bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR",
+ },
+ "vms-ia64-p32" => {
+ inherit_from => [ "vms-generic" ],
+ cflags =>
+ add("/POINTER_SIZE=32",
+ sub { my @warnings =
+ @{vms_info(32)->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ defines =>
+ add(sub {
+ return vms_info(32)->{def_zlib}
+ ? "LIBZ=\"\"\"".vms_info(32)->{def_zlib}."\"\"\"" : ();
+ }),
+ ex_libs => add(sub { return vms_info(32)->{zlib} || (); }),
+ },
+ "vms-ia64-p64" => {
+ inherit_from => [ "vms-generic" ],
+ cflags =>
+ add("/POINTER_SIZE=64=ARGV",
+ sub { my @warnings =
+ @{vms_info(64)->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ defines =>
+ add(sub {
+ return vms_info(64)->{def_zlib}
+ ? "LIBZ=\"\"\"".vms_info(64)->{def_zlib}."\"\"\"" : ();
+ }),
+ ex_libs => add(sub { return vms_info(64)->{zlib} || (); }),
+ },