summaryrefslogtreecommitdiff
path: root/dune
diff options
context:
space:
mode:
authorThomas Refis <refis.thomas@gmail.com>2018-10-10 16:16:00 +0100
committerGitHub <noreply@github.com>2018-10-10 16:16:00 +0100
commitd68e0e207765350eb42fed37444d643669f98cee (patch)
tree5b5b289543b450cdbadacc15518876c60f87f86e /dune
parent8e801959e84e73219190dedad0b5b62b1f4f50a3 (diff)
downloadocaml-d68e0e207765350eb42fed37444d643669f98cee.tar.gz
Provide a way to build the bytecode compiler using Dune (#2093)
Diffstat (limited to 'dune')
-rw-r--r--dune175
1 files changed, 175 insertions, 0 deletions
diff --git a/dune b/dune
new file mode 100644
index 0000000000..57843d9efb
--- /dev/null
+++ b/dune
@@ -0,0 +1,175 @@
+;**************************************************************************
+;* *
+;* OCaml *
+;* *
+;* Thomas Refis, Jane Street Europe *
+;* *
+;* Copyright 2018 Jane Street Group LLC *
+;* *
+;* All rights reserved. This file is distributed under the terms of *
+;* the GNU Lesser General Public License version 2.1, with the *
+;* special exception on linking described in the file LICENSE. *
+;* *
+;**************************************************************************
+
+(env
+ (dev (flags (:standard -w +a-4-9-41-42-44-45-48)))
+ (release (flags (:standard -w +a-4-9-41-42-44-45-48))))
+
+;; Too annoying to get to work. Use (copy_files# ...) instead
+; (include_subdirs unqualified)
+; (ignored_subdirs (lex yacc testsuite ocamldoc ocamltest toplevel otherlibs))
+
+(copy_files# utils/*.ml{,i})
+(copy_files# parsing/*.ml{,i})
+(copy_files# typing/*.ml{,i})
+(copy_files# bytecomp/*.ml{,i})
+(copy_files# driver/*.ml{,i})
+(copy_files# asmcomp/*.ml{,i})
+(copy_files# asmcomp/debug/*.ml{,i})
+(copy_files# middle_end/*.ml{,i})
+(copy_files# middle_end/base_types/*.ml{,i})
+
+(library
+ (name ocamlcommon)
+ (wrapped false)
+ (flags (:standard -principal -nostdlib))
+ (libraries stdlib)
+ (modules_without_implementation
+ annot asttypes cmo_format outcometree parsetree)
+ (modules
+ ;; UTILS
+ config build_path_prefix_map misc identifiable numbers arg_helper clflags
+ profile terminfo ccomp warnings consistbl strongly_connected_components
+ targetint
+
+ ;; PARSING
+ location longident docstrings syntaxerr ast_helper camlinternalMenhirLib
+ parser lexer parse printast pprintast ast_mapper ast_iterator attr_helper
+ builtin_attributes ast_invariants depend
+ ; manual update: mli only files
+ asttypes parsetree
+
+ ;; TYPING
+ ident path primitive types btype oprint subst predef datarepr cmi_format env
+ typedtree printtyped ctype printtyp includeclass mtype envaux includecore
+ typedtreeIter typedtreeMap tast_mapper cmt_format untypeast includemod
+ typetexp printpat parmatch stypes typedecl typeopt rec_check typecore
+ typeclass typemod
+ ; manual update: mli only files
+ annot outcometree
+
+ ;; COMP
+ lambda printlambda semantics_of_primitives switch matching translobj
+ translattribute translprim translcore translclass translmod simplif
+ runtimedef meta opcodes bytesections dll symtable pparse main_args compenv
+ compmisc compdynlink compplugin makedepend compile_common
+ ; manual update: mli only files
+ cmo_format
+ ; manual update: this is required.
+ instruct
+ ))
+
+(library
+ (name ocamlbytecomp)
+ (wrapped false)
+ (flags (:standard -principal -nostdlib))
+ (libraries stdlib ocamlcommon)
+ (modules
+ bytegen printinstr emitcode bytelink bytelibrarian bytepackager errors
+ compile))
+
+(library
+ (name ocamloptcomp)
+ (wrapped false)
+ (flags (:standard -principal -nostdlib))
+ (libraries stdlib ocamlcommon)
+ (modules_without_implementation
+ cmx_format x86_ast backend_intf inlining_decision_intf
+ simplify_boxed_integer_ops_intf)
+ (modules
+ ;; ASMCOMP
+ arch backend_var cmm printcmm reg reg_with_debug_info reg_availability_set
+ mach proc clambda printclambda export_info export_info_for_pack compilenv
+ closure traverse_for_exported_symbols build_export_info closure_offsets
+ flambda_to_clambda import_approx un_anf afl_instrument strmatch cmmgen
+ interval printmach selectgen spacetime_profiling selection comballoc CSEgen
+ CSE liveness spill split interf coloring linscan reloadgen reload deadcode
+ printlinear linearize available_regs schedgen scheduling
+ branch_relaxation_intf branch_relaxation emitaux emit asmgen asmlink
+ asmlibrarian asmpackager opterrors optcompile
+ ; manual update: mli only files
+ cmx_format
+
+ ; arch specific files: we always include them even though depending on the
+ ; target architecture they might not be used.
+ x86_ast
+ x86_proc
+ x86_dsl
+ x86_gas
+ x86_masm
+
+ ;; MIDDLE_END
+ int_replace_polymorphic_compare debuginfo tag linkage_name compilation_unit
+ internal_variable_names variable mutable_variable id_types set_of_closures_id
+ set_of_closures_origin closure_element closure_id closure_origin
+ var_within_closure static_exception export_id symbol pass_wrapper
+ allocated_const parameter projection flambda flambda_iterators flambda_utils
+ inlining_cost effect_analysis freshening simple_value_approx lift_code
+ closure_conversion_aux closure_conversion initialize_symbol_to_let_symbol
+ lift_let_to_initialize_symbol find_recursive_functions invariant_params
+ inconstant_idents alias_analysis lift_constants share_constants
+ simplify_common remove_unused_arguments remove_unused_closure_vars
+ remove_unused_program_constructs simplify_boxed_integer_ops
+ simplify_primitives inlining_stats_types inlining_stats
+ inline_and_simplify_aux remove_free_vars_equal_to_args extract_projections
+ augment_specialised_args unbox_free_vars_of_closures unbox_specialised_args
+ unbox_closures inlining_transforms inlining_decision inline_and_simplify
+ ref_to_variables flambda_invariants middle_end
+ ; manual update: mli only files
+ backend_intf inlining_decision_intf simplify_boxed_integer_ops_intf
+ )
+)
+
+;;;;;;;;;;;;;;
+;;; ocamlc ;;;
+;;;;;;;;;;;;;;
+
+(executable
+ (name main)
+ (modes byte)
+ (flags (:standard -principal -nostdlib))
+ (libraries ocamlbytecomp ocamlcommon runtime stdlib)
+ (modules main))
+
+(rule
+ (copy main.exe ocamlc.byte))
+
+;;;;;;;;;;;;;;;;
+;;; ocamlopt ;;;
+;;;;;;;;;;;;;;;;
+
+(executable
+ (name optmain)
+ (modes byte)
+ (flags (:standard -principal -nostdlib))
+ (libraries ocamloptcomp ocamlcommon runtime stdlib)
+ (modules optmain))
+
+(rule
+ (copy optmain.exe ocamlopt.byte))
+
+;;;;;;;;;;;;;;;
+;;; aliases ;;;
+;;;;;;;;;;;;;;;
+
+(alias
+ (name world)
+ (deps ocamlc.byte
+ ocamlopt.byte
+ debugger/ocamldebug.byte
+ ocamldoc/ocamldoc.byte
+ ocamltest/ocamltest.byte
+ toplevel/ocaml.byte
+ toplevel/expunge.exe
+ ))