summaryrefslogtreecommitdiff
path: root/dune
blob: 57843d9efb08b9ea88fa6297c59ace3b1541bb86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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
       ))