#line 48 "/home/travis/build/felix-lang/felix/src/packages/toolchain.fdoc"
  interface toolchain_t {
    whatami : 1 -> string;
    host_os : 1 -> string;
    target_os : 1 -> string;
    cxx_compiler_vendor : 1 -> string;
  
    // Note: this information is available for
    // the host platform in the Filename class.
    // and for any platform using the Filename_class[os]
    // class. The methods below, however, reflect a cross-compilation
    // target filesystem. For example, on Linux with shared libs .so
    // you can target Windows with shared libs .dll if you have a
    // cross compiler.
    //
    // This toolchain facility should be separated from
    // the compiler object, even though the extensions are primarily
    // about compiler product file names, because other tools may wish
    // to assist building by, for example, deleting all object files.
    // Currently you'd have to instantiate a toolchain object to find
    // this information, needlessly providing dummy header files,
    // macros, etc, which are primarily useful to compilers.
    dependency_extension: 1 -> string;
    executable_extension : 1 -> string;
    static_object_extension: 1 -> string;
    dynamic_object_extension: 1 -> string;
    static_library_extension: 1 -> string;
    dynamic_library_extension: 1 -> string;
    pathname_separator : 1 -> string;
    get_base_c_compile_flags: 1 -> list[string];
    get_base_cxx_compile_flags: 1 -> list[string];
  
    cxx_dependency_generator : (src:string) -> int * string;
    c_dependency_generator : (src:string) -> int * string;
    dependency_parser : string -> list[string];
  
    cxx_static_object_compiler : (dst:string,src: string) -> int;
    cxx_static_library_object_compiler : (dst:string,src: string) -> int;
    c_static_object_compiler : (dst:string,src: string) -> int;
    static_library_linker : (dst:string,srcs:list[string]) -> int;
    static_executable_linker : (dst:string,srcs:list[string]) -> int;
    dynamic_executable_linker : (dst:string,srcs:list[string]) -> int;
  
    cxx_dynamic_object_compiler : (dst:string,src: string) -> int;
    c_dynamic_object_compiler : (dst:string,src: string) -> int;
    dynamic_library_linker : (dst:string,srcs: list[string]) -> int;
  
    debug_flags : 1 -> list[string];
  }