mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-19 08:35:45 +00:00
8ef426baa3
built atop the C language bindings, and user programs can link with them as
such:
# Bytecode
ocamlc -cc g++ llvm.cma llvmbitwriter.cma -o example example.ml
# Native
ocamlopt -cc g++ llvm.cmxa llvmbitwriter.cmxa -o example.opt example.ml
The vmcore.ml test exercises most/all of the APIs thus far bound. Unfortunately,
they're not yet numerous enough to write hello world. But:
$ cat example.ml
(* example.ml *)
open Llvm
open Llvm_bitwriter
let _ =
let filename = Sys.argv.(1) in
let m = create_module filename in
let v = make_int_constant i32_type 42 false in
let g = define_global "hello_world" v m in
if not (write_bitcode_file m filename) then exit 1;
dispose_module m;
$ ocamlc -cc g++ llvm.cma llvm_bitwriter.cma -o example example.ml
File "example.ml", line 11, characters 6-7:
Warning Y: unused variable g.
$ ./example example.bc
$ llvm-dis < example.bc
; ModuleID = '<stdin>'
@hello_world = global i32 42 ; <i32*> [#uses=0]
The ocaml test cases provide effective tests for the C interfaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42093 91177308-0d34-0410-b5e6-96231b3b80d8
19 lines
783 B
OCaml
19 lines
783 B
OCaml
(*===-- llvm_bitwriter.ml - LLVM Ocaml Interface ----------------*- C++ -*-===*
|
|
*
|
|
* The LLVM Compiler Infrastructure
|
|
*
|
|
* This file was developed by Gordon Henriksen and is distributed under the
|
|
* University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
*
|
|
*===----------------------------------------------------------------------===
|
|
*
|
|
* This interface provides an ocaml API for the LLVM intermediate
|
|
* representation, the classes in the VMCore library.
|
|
*
|
|
*===----------------------------------------------------------------------===*)
|
|
|
|
|
|
(* Writes the bitcode for module the given path. Returns true if successful. *)
|
|
external write_bitcode_file : Llvm.llmodule -> string -> bool
|
|
= "llvm_write_bitcode_file"
|