diff --git a/Makefile b/Makefile index c2003d3..454cf42 100644 --- a/Makefile +++ b/Makefile @@ -701,6 +701,19 @@ partialclean:: (cd otherlibs/$$i; $(MAKE) partialclean); \ done +otherlibraries-clean: + for i in $(OTHERLIBRARIES); do (cd otherlibs/$$i; $(MAKE) clean); done + +otherlibraries-install: + for i in $(OTHERLIBRARIES); do \ + (cd otherlibs/$$i; $(MAKE) install) || exit $$?; \ + done + +otherlibraries-installopt: + for i in $(OTHERLIBRARIES); do \ + (cd otherlibs/$$i; $(MAKE) installopt) || exit $$?; \ + done + clean:: for i in $(OTHERLIBRARIES); do (cd otherlibs/$$i; $(MAKE) clean); done diff --git a/asmcomp/amd64/arch.ml b/asmcomp/amd64/arch.ml index c4e5efb..4f22621 100644 --- a/asmcomp/amd64/arch.ml +++ b/asmcomp/amd64/arch.ml @@ -14,7 +14,11 @@ (* Machine-specific command-line options *) -let pic_code = ref true +let pic_code = + try + let _ = Sys.getenv "OCAML_NO_PIC" in + ref false + with Not_found -> ref true let command_line_options = [ "-fPIC", Arg.Set pic_code, diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index 3f54da0..65dce13 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -595,7 +595,12 @@ let bigarray_indexing unsafe elt_kind layout b args dbg = Pbigarray_unknown_layout -> assert false | Pbigarray_c_layout -> - ba_indexing (4 + List.length args) (-1) (List.rev args) + let dim_offset = + try + let _ = Sys.getenv "OCAML_BA_MBUF" in 5 + with Not_found -> 4 + in + ba_indexing (dim_offset + List.length args) (-1) (List.rev args) | Pbigarray_fortran_layout -> ba_indexing 5 1 (List.map (fun idx -> sub_int idx (Cconst_int 2)) args) and elt_size = diff --git a/asmcomp/emitaux.ml b/asmcomp/emitaux.ml index f45fc16..d59cfc9 100644 --- a/asmcomp/emitaux.ml +++ b/asmcomp/emitaux.ml @@ -98,7 +98,15 @@ let emit_bytes_directive directive s = literals as 32- or 64-bit integers. *) let emit_float64_directive directive f = - let x = Int64.bits_of_float (float_of_string f) in + let fs = float_of_string f in + let x = + try + let fp = int_of_string (Sys.getenv "OCAML_EMIT_FIXEDPT") in + let fixedpt_one = float_of_int (1 lsl fp) in + let r = fs *. fixedpt_one in + Int64.of_float (if (fs >= 0.0) then (r +. 0.5) else (r -. 0.5)) + with Not_found -> Int64.bits_of_float fs + in emit_printf "\t%s\t0x%Lx\n" directive x let emit_float64_split_directive directive f = diff --git a/bytecomp/translcore.ml b/bytecomp/translcore.ml index 520e252..eca689c 100644 --- a/bytecomp/translcore.ml +++ b/bytecomp/translcore.ml @@ -48,7 +48,8 @@ let comparisons_table = create_hashtable 11 [ (Pccall{prim_name = "caml_equal"; prim_arity = 2; prim_alloc = true; prim_native_name = ""; prim_native_float = false}, Pintcomp Ceq, - Pfloatcomp Ceq, + Pccall{prim_name = "caml_equal"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}, Pccall{prim_name = "caml_string_equal"; prim_arity = 2; prim_alloc = false; prim_native_name = ""; prim_native_float = false}, @@ -60,7 +61,8 @@ let comparisons_table = create_hashtable 11 [ (Pccall{prim_name = "caml_notequal"; prim_arity = 2; prim_alloc = true; prim_native_name = ""; prim_native_float = false}, Pintcomp Cneq, - Pfloatcomp Cneq, + Pccall{prim_name = "caml_notequal"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}, Pccall{prim_name = "caml_string_notequal"; prim_arity = 2; prim_alloc = false; prim_native_name = ""; prim_native_float = false}, @@ -72,7 +74,8 @@ let comparisons_table = create_hashtable 11 [ (Pccall{prim_name = "caml_lessthan"; prim_arity = 2; prim_alloc = true; prim_native_name = ""; prim_native_float = false}, Pintcomp Clt, - Pfloatcomp Clt, + Pccall{prim_name = "caml_lessthan"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}, Pccall{prim_name = "caml_string_lessthan"; prim_arity = 2; prim_alloc = false; prim_native_name = ""; prim_native_float = false}, @@ -84,7 +87,8 @@ let comparisons_table = create_hashtable 11 [ (Pccall{prim_name = "caml_greaterthan"; prim_arity = 2; prim_alloc = true; prim_native_name = ""; prim_native_float = false}, Pintcomp Cgt, - Pfloatcomp Cgt, + Pccall{prim_name = "caml_greaterthan"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}, Pccall{prim_name = "caml_string_greaterthan"; prim_arity = 2; prim_alloc = false; prim_native_name = ""; prim_native_float = false}, @@ -96,7 +100,8 @@ let comparisons_table = create_hashtable 11 [ (Pccall{prim_name = "caml_lessequal"; prim_arity = 2; prim_alloc = true; prim_native_name = ""; prim_native_float = false}, Pintcomp Cle, - Pfloatcomp Cle, + Pccall{prim_name = "caml_lessequal"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}, Pccall{prim_name = "caml_string_lessequal"; prim_arity = 2; prim_alloc = false; prim_native_name = ""; prim_native_float = false}, @@ -109,7 +114,9 @@ let comparisons_table = create_hashtable 11 [ prim_alloc = true; prim_native_name = ""; prim_native_float = false}, Pintcomp Cge, - Pfloatcomp Cge, + Pccall{prim_name = "caml_greaterequal"; prim_arity = 2; + prim_alloc = true; + prim_native_name = ""; prim_native_float = false}, Pccall{prim_name = "caml_string_greaterequal"; prim_arity = 2; prim_alloc = false; prim_native_name = ""; prim_native_float = false}, @@ -183,12 +190,25 @@ let primitives_table = create_hashtable 57 [ "%subfloat", Psubfloat; "%mulfloat", Pmulfloat; "%divfloat", Pdivfloat; - "%eqfloat", Pfloatcomp Ceq; - "%noteqfloat", Pfloatcomp Cneq; - "%ltfloat", Pfloatcomp Clt; - "%lefloat", Pfloatcomp Cle; - "%gtfloat", Pfloatcomp Cgt; - "%gefloat", Pfloatcomp Cge; + "%eqfloat", + Pccall{prim_name = "caml_equal"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}; + "%noteqfloat", + Pccall{prim_name = "caml_notequal"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}; + "%ltfloat", + Pccall{prim_name = "caml_lessthan"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}; + "%lefloat", + Pccall{prim_name = "caml_lessequal"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}; + "%gtfloat", + Pccall{prim_name = "caml_greaterthan"; prim_arity = 2; prim_alloc = true; + prim_native_name = ""; prim_native_float = false}; + "%gefloat", + Pccall{prim_name = "caml_greaterequal"; prim_arity = 2; + prim_alloc = true; + prim_native_name = ""; prim_native_float = false}; "%string_length", Pstringlength; "%string_safe_get", Pstringrefs; "%string_safe_set", Pstringsets; diff --git a/driver/optmain.ml b/driver/optmain.ml index 108c1be..4112212 100644 --- a/driver/optmain.ml +++ b/driver/optmain.ml @@ -112,7 +112,9 @@ module Options = Main_args.Make_optcomp_options (struct let _compact = clear optimize_for_speed let _config () = show_config () let _for_pack s = for_package := Some s - let _g = set debug + let _g () = + try let _ = Sys.getenv "OCAML_NO_DEBUG" in () + with Not_found -> debug := true let _i () = print_types := true; compile_only := true let _I dir = include_dirs := dir :: !include_dirs let _impl = impl diff --git a/otherlibs/threads/pervasives.ml b/otherlibs/threads/pervasives.ml index 2ddb980..a2604ad 100644 --- a/otherlibs/threads/pervasives.ml +++ b/otherlibs/threads/pervasives.ml @@ -30,13 +30,13 @@ exception Exit (* Comparisons *) -external (=) : 'a -> 'a -> bool = "%equal" -external (<>) : 'a -> 'a -> bool = "%notequal" -external (<) : 'a -> 'a -> bool = "%lessthan" -external (>) : 'a -> 'a -> bool = "%greaterthan" -external (<=) : 'a -> 'a -> bool = "%lessequal" -external (>=) : 'a -> 'a -> bool = "%greaterequal" -external compare: 'a -> 'a -> int = "%compare" +external (=) : 'a -> 'a -> bool = "caml_equal" +external (<>) : 'a -> 'a -> bool = "caml_notequal" +external (<) : 'a -> 'a -> bool = "caml_lessthan" +external (>) : 'a -> 'a -> bool = "caml_greaterthan" +external (<=) : 'a -> 'a -> bool = "caml_lessequal" +external (>=) : 'a -> 'a -> bool = "caml_greaterequal" +external compare: 'a -> 'a -> int = "caml_compare" let min x y = if x <= y then x else y let max x y = if x >= y then x else y @@ -81,42 +81,42 @@ let max_int = min_int - 1 (* Floating-point operations *) -external (~-.) : float -> float = "%negfloat" +external (~-.) : float -> float = "caml_neg_float" external (~+.) : float -> float = "%identity" -external (+.) : float -> float -> float = "%addfloat" -external (-.) : float -> float -> float = "%subfloat" -external ( *. ) : float -> float -> float = "%mulfloat" -external (/.) : float -> float -> float = "%divfloat" -external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float" -external exp : float -> float = "caml_exp_float" "exp" "float" -external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float" -external acos : float -> float = "caml_acos_float" "acos" "float" -external asin : float -> float = "caml_asin_float" "asin" "float" -external atan : float -> float = "caml_atan_float" "atan" "float" -external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float" -external hypot : float -> float -> float = "caml_hypot_float" "caml_hypot" "float" -external cos : float -> float = "caml_cos_float" "cos" "float" -external cosh : float -> float = "caml_cosh_float" "cosh" "float" -external log : float -> float = "caml_log_float" "log" "float" -external log10 : float -> float = "caml_log10_float" "log10" "float" -external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float" -external sin : float -> float = "caml_sin_float" "sin" "float" -external sinh : float -> float = "caml_sinh_float" "sinh" "float" -external sqrt : float -> float = "caml_sqrt_float" "sqrt" "float" -external tan : float -> float = "caml_tan_float" "tan" "float" -external tanh : float -> float = "caml_tanh_float" "tanh" "float" -external ceil : float -> float = "caml_ceil_float" "ceil" "float" -external floor : float -> float = "caml_floor_float" "floor" "float" -external abs_float : float -> float = "%absfloat" -external copysign : float -> float -> float = "caml_copysign_float" "caml_copysign" "float" -external mod_float : float -> float -> float = "caml_fmod_float" "fmod" "float" +external (+.) : float -> float -> float = "caml_add_float" +external (-.) : float -> float -> float = "caml_sub_float" +external ( *. ) : float -> float -> float = "caml_mul_float" +external (/.) : float -> float -> float = "caml_div_float" +external ( ** ) : float -> float -> float = "caml_power_float" +external exp : float -> float = "caml_exp_float" +external expm1 : float -> float = "caml_expm1_float" +external acos : float -> float = "caml_acos_float" +external asin : float -> float = "caml_asin_float" +external atan : float -> float = "caml_atan_float" +external atan2 : float -> float -> float = "caml_atan2_float" +external hypot : float -> float -> float = "caml_hypot_float" +external cos : float -> float = "caml_cos_float" +external cosh : float -> float = "caml_cosh_float" +external log : float -> float = "caml_log_float" +external log10 : float -> float = "caml_log10_float" +external log1p : float -> float = "caml_log1p_float" +external sin : float -> float = "caml_sin_float" +external sinh : float -> float = "caml_sinh_float" +external sqrt : float -> float = "caml_sqrt_float" +external tan : float -> float = "caml_tan_float" +external tanh : float -> float = "caml_tanh_float" +external ceil : float -> float = "caml_ceil_float" +external floor : float -> float = "caml_floor_float" +external abs_float : float -> float = "caml_abs_float" +external copysign : float -> float -> float = "caml_copysign_float" +external mod_float : float -> float -> float = "caml_fmod_float" external frexp : float -> float * int = "caml_frexp_float" external ldexp : float -> int -> float = "caml_ldexp_float" external modf : float -> float * float = "caml_modf_float" -external float : int -> float = "%floatofint" -external float_of_int : int -> float = "%floatofint" -external truncate : float -> int = "%intoffloat" -external int_of_float : float -> int = "%intoffloat" +external float : int -> float = "caml_float_of_int" +external float_of_int : int -> float = "caml_float_of_int" +external truncate : float -> int = "caml_int_of_float" +external int_of_float : float -> int = "caml_int_of_float" external float_of_bits : int64 -> float = "caml_int64_float_of_bits" let infinity = float_of_bits 0x7F_F0_00_00_00_00_00_00L diff --git a/stdlib/pervasives.ml b/stdlib/pervasives.ml index 590f5b9..3c44997 100644 --- a/stdlib/pervasives.ml +++ b/stdlib/pervasives.ml @@ -26,13 +26,13 @@ exception Exit (* Comparisons *) -external ( = ) : 'a -> 'a -> bool = "%equal" -external ( <> ) : 'a -> 'a -> bool = "%notequal" -external ( < ) : 'a -> 'a -> bool = "%lessthan" -external ( > ) : 'a -> 'a -> bool = "%greaterthan" -external ( <= ) : 'a -> 'a -> bool = "%lessequal" -external ( >= ) : 'a -> 'a -> bool = "%greaterequal" -external compare : 'a -> 'a -> int = "%compare" +external ( = ) : 'a -> 'a -> bool = "caml_equal" +external ( <> ) : 'a -> 'a -> bool = "caml_notequal" +external ( < ) : 'a -> 'a -> bool = "caml_lessthan" +external ( > ) : 'a -> 'a -> bool = "caml_greaterthan" +external ( <= ) : 'a -> 'a -> bool = "caml_lessequal" +external ( >= ) : 'a -> 'a -> bool = "caml_greaterequal" +external compare : 'a -> 'a -> int = "caml_compare" let min x y = if x <= y then x else y let max x y = if x >= y then x else y @@ -77,44 +77,44 @@ let max_int = min_int - 1 (* Floating-point operations *) -external ( ~-. ) : float -> float = "%negfloat" +external ( ~-. ) : float -> float = "caml_neg_float" external ( ~+. ) : float -> float = "%identity" -external ( +. ) : float -> float -> float = "%addfloat" -external ( -. ) : float -> float -> float = "%subfloat" -external ( *. ) : float -> float -> float = "%mulfloat" -external ( /. ) : float -> float -> float = "%divfloat" -external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float" -external exp : float -> float = "caml_exp_float" "exp" "float" -external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float" -external acos : float -> float = "caml_acos_float" "acos" "float" -external asin : float -> float = "caml_asin_float" "asin" "float" -external atan : float -> float = "caml_atan_float" "atan" "float" -external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float" +external ( +. ) : float -> float -> float = "caml_add_float" +external ( -. ) : float -> float -> float = "caml_sub_float" +external ( *. ) : float -> float -> float = "caml_mul_float" +external ( /. ) : float -> float -> float = "caml_div_float" +external ( ** ) : float -> float -> float = "caml_power_float" +external exp : float -> float = "caml_exp_float" +external expm1 : float -> float = "caml_expm1_float" +external acos : float -> float = "caml_acos_float" +external asin : float -> float = "caml_asin_float" +external atan : float -> float = "caml_atan_float" +external atan2 : float -> float -> float = "caml_atan2_float" external hypot : float -> float -> float - = "caml_hypot_float" "caml_hypot" "float" -external cos : float -> float = "caml_cos_float" "cos" "float" -external cosh : float -> float = "caml_cosh_float" "cosh" "float" -external log : float -> float = "caml_log_float" "log" "float" -external log10 : float -> float = "caml_log10_float" "log10" "float" -external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float" -external sin : float -> float = "caml_sin_float" "sin" "float" -external sinh : float -> float = "caml_sinh_float" "sinh" "float" -external sqrt : float -> float = "caml_sqrt_float" "sqrt" "float" -external tan : float -> float = "caml_tan_float" "tan" "float" -external tanh : float -> float = "caml_tanh_float" "tanh" "float" -external ceil : float -> float = "caml_ceil_float" "ceil" "float" -external floor : float -> float = "caml_floor_float" "floor" "float" -external abs_float : float -> float = "%absfloat" + = "caml_hypot_float" +external cos : float -> float = "caml_cos_float" +external cosh : float -> float = "caml_cosh_float" +external log : float -> float = "caml_log_float" +external log10 : float -> float = "caml_log10_float" +external log1p : float -> float = "caml_log1p_float" +external sin : float -> float = "caml_sin_float" +external sinh : float -> float = "caml_sinh_float" +external sqrt : float -> float = "caml_sqrt_float" +external tan : float -> float = "caml_tan_float" +external tanh : float -> float = "caml_tanh_float" +external ceil : float -> float = "caml_ceil_float" +external floor : float -> float = "caml_floor_float" +external abs_float : float -> float = "caml_abs_float" external copysign : float -> float -> float - = "caml_copysign_float" "caml_copysign" "float" -external mod_float : float -> float -> float = "caml_fmod_float" "fmod" "float" + = "caml_copysign_float" +external mod_float : float -> float -> float = "caml_fmod_float" external frexp : float -> float * int = "caml_frexp_float" external ldexp : float -> int -> float = "caml_ldexp_float" external modf : float -> float * float = "caml_modf_float" -external float : int -> float = "%floatofint" -external float_of_int : int -> float = "%floatofint" -external truncate : float -> int = "%intoffloat" -external int_of_float : float -> int = "%intoffloat" +external float : int -> float = "caml_float_of_int" +external float_of_int : int -> float = "caml_float_of_int" +external truncate : float -> int = "caml_int_of_float" +external int_of_float : float -> int = "caml_int_of_float" external float_of_bits : int64 -> float = "caml_int64_float_of_bits" let infinity = float_of_bits 0x7F_F0_00_00_00_00_00_00L diff --git a/stdlib/pervasives.mli b/stdlib/pervasives.mli index a4cc187..f28ed36 100644 --- a/stdlib/pervasives.mli +++ b/stdlib/pervasives.mli @@ -43,7 +43,7 @@ exception Exit (** {6 Comparisons} *) -external ( = ) : 'a -> 'a -> bool = "%equal" +external ( = ) : 'a -> 'a -> bool = "caml_equal" (** [e1 = e2] tests for structural equality of [e1] and [e2]. Mutable structures (e.g. references and arrays) are equal if and only if their current contents are structurally equal, @@ -51,19 +51,19 @@ external ( = ) : 'a -> 'a -> bool = "%equal" Equality between functional values raises [Invalid_argument]. Equality between cyclic data structures may not terminate. *) -external ( <> ) : 'a -> 'a -> bool = "%notequal" +external ( <> ) : 'a -> 'a -> bool = "caml_notequal" (** Negation of {!Pervasives.( = )}. *) -external ( < ) : 'a -> 'a -> bool = "%lessthan" +external ( < ) : 'a -> 'a -> bool = "caml_lessthan" (** See {!Pervasives.( >= )}. *) -external ( > ) : 'a -> 'a -> bool = "%greaterthan" +external ( > ) : 'a -> 'a -> bool = "caml_greaterthan" (** See {!Pervasives.( >= )}. *) -external ( <= ) : 'a -> 'a -> bool = "%lessequal" +external ( <= ) : 'a -> 'a -> bool = "caml_lessequal" (** See {!Pervasives.( >= )}. *) -external ( >= ) : 'a -> 'a -> bool = "%greaterequal" +external ( >= ) : 'a -> 'a -> bool = "caml_greaterequal" (** Structural ordering functions. These functions coincide with the usual orderings over integers, characters, strings and floating-point numbers, and extend them to a @@ -73,7 +73,7 @@ external ( >= ) : 'a -> 'a -> bool = "%greaterequal" Comparison between functional values raises [Invalid_argument]. Comparison between cyclic structures may not terminate. *) -external compare : 'a -> 'a -> int = "%compare" +external compare : 'a -> 'a -> int = "caml_compare" (** [compare x y] returns [0] if [x] is equal to [y], a negative integer if [x] is less than [y], and a positive integer if [x] is greater than [y]. The ordering implemented by [compare] @@ -241,7 +241,7 @@ external ( asr ) : int -> int -> int = "%asrint" as argument returns [nan] as result. *) -external ( ~-. ) : float -> float = "%negfloat" +external ( ~-. ) : float -> float = "caml_neg_float" (** Unary negation. You can also write [-. e] instead of [~-. e]. *) external ( ~+. ) : float -> float = "%identity" @@ -249,111 +249,111 @@ external ( ~+. ) : float -> float = "%identity" @since 3.12.0 *) -external ( +. ) : float -> float -> float = "%addfloat" +external ( +. ) : float -> float -> float = "caml_add_float" (** Floating-point addition *) -external ( -. ) : float -> float -> float = "%subfloat" +external ( -. ) : float -> float -> float = "caml_sub_float" (** Floating-point subtraction *) -external ( *. ) : float -> float -> float = "%mulfloat" +external ( *. ) : float -> float -> float = "caml_mul_float" (** Floating-point multiplication *) -external ( /. ) : float -> float -> float = "%divfloat" +external ( /. ) : float -> float -> float = "caml_div_float" (** Floating-point division. *) -external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float" +external ( ** ) : float -> float -> float = "caml_power_float" (** Exponentiation. *) -external sqrt : float -> float = "caml_sqrt_float" "sqrt" "float" +external sqrt : float -> float = "caml_sqrt_float" (** Square root. *) -external exp : float -> float = "caml_exp_float" "exp" "float" +external exp : float -> float = "caml_exp_float" (** Exponential. *) -external log : float -> float = "caml_log_float" "log" "float" +external log : float -> float = "caml_log_float" (** Natural logarithm. *) -external log10 : float -> float = "caml_log10_float" "log10" "float" +external log10 : float -> float = "caml_log10_float" (** Base 10 logarithm. *) -external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float" +external expm1 : float -> float = "caml_expm1_float" (** [expm1 x] computes [exp x -. 1.0], giving numerically-accurate results even if [x] is close to [0.0]. @since 3.12.0 *) -external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float" +external log1p : float -> float = "caml_log1p_float" (** [log1p x] computes [log(1.0 +. x)] (natural logarithm), giving numerically-accurate results even if [x] is close to [0.0]. @since 3.12.0 *) -external cos : float -> float = "caml_cos_float" "cos" "float" +external cos : float -> float = "caml_cos_float" (** Cosine. Argument is in radians. *) -external sin : float -> float = "caml_sin_float" "sin" "float" +external sin : float -> float = "caml_sin_float" (** Sine. Argument is in radians. *) -external tan : float -> float = "caml_tan_float" "tan" "float" +external tan : float -> float = "caml_tan_float" (** Tangent. Argument is in radians. *) -external acos : float -> float = "caml_acos_float" "acos" "float" +external acos : float -> float = "caml_acos_float" (** Arc cosine. The argument must fall within the range [[-1.0, 1.0]]. Result is in radians and is between [0.0] and [pi]. *) -external asin : float -> float = "caml_asin_float" "asin" "float" +external asin : float -> float = "caml_asin_float" (** Arc sine. The argument must fall within the range [[-1.0, 1.0]]. Result is in radians and is between [-pi/2] and [pi/2]. *) -external atan : float -> float = "caml_atan_float" "atan" "float" +external atan : float -> float = "caml_atan_float" (** Arc tangent. Result is in radians and is between [-pi/2] and [pi/2]. *) -external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float" +external atan2 : float -> float -> float = "caml_atan2_float" (** [atan2 y x] returns the arc tangent of [y /. x]. The signs of [x] and [y] are used to determine the quadrant of the result. Result is in radians and is between [-pi] and [pi]. *) external hypot : float -> float -> float - = "caml_hypot_float" "caml_hypot" "float" + = "caml_hypot_float" (** [hypot x y] returns [sqrt(x *. x + y *. y)], that is, the length of the hypotenuse of a right-angled triangle with sides of length [x] and [y], or, equivalently, the distance of the point [(x,y)] to origin. @since 4.00.0 *) -external cosh : float -> float = "caml_cosh_float" "cosh" "float" +external cosh : float -> float = "caml_cosh_float" (** Hyperbolic cosine. Argument is in radians. *) -external sinh : float -> float = "caml_sinh_float" "sinh" "float" +external sinh : float -> float = "caml_sinh_float" (** Hyperbolic sine. Argument is in radians. *) -external tanh : float -> float = "caml_tanh_float" "tanh" "float" +external tanh : float -> float = "caml_tanh_float" (** Hyperbolic tangent. Argument is in radians. *) -external ceil : float -> float = "caml_ceil_float" "ceil" "float" +external ceil : float -> float = "caml_ceil_float" (** Round above to an integer value. [ceil f] returns the least integer value greater than or equal to [f]. The result is returned as a float. *) -external floor : float -> float = "caml_floor_float" "floor" "float" +external floor : float -> float = "caml_floor_float" (** Round below to an integer value. [floor f] returns the greatest integer value less than or equal to [f]. The result is returned as a float. *) -external abs_float : float -> float = "%absfloat" +external abs_float : float -> float = "caml_abs_float" (** [abs_float f] returns the absolute value of [f]. *) external copysign : float -> float -> float - = "caml_copysign_float" "caml_copysign" "float" + = "caml_copysign_float" (** [copysign x y] returns a float whose absolute value is that of [x] and whose sign is that of [y]. If [x] is [nan], returns [nan]. If [y] is [nan], returns either [x] or [-. x], but it is not specified which. @since 4.00.0 *) -external mod_float : float -> float -> float = "caml_fmod_float" "fmod" "float" +external mod_float : float -> float -> float = "caml_fmod_float" (** [mod_float a b] returns the remainder of [a] with respect to [b]. The returned value is [a -. n *. b], where [n] is the quotient [a /. b] rounded towards zero to an integer. *) @@ -372,16 +372,16 @@ external modf : float -> float * float = "caml_modf_float" (** [modf f] returns the pair of the fractional and integral part of [f]. *) -external float : int -> float = "%floatofint" +external float : int -> float = "caml_float_of_int" (** Same as {!Pervasives.float_of_int}. *) -external float_of_int : int -> float = "%floatofint" +external float_of_int : int -> float = "caml_float_of_int" (** Convert an integer to floating-point. *) -external truncate : float -> int = "%intoffloat" +external truncate : float -> int = "caml_int_of_float" (** Same as {!Pervasives.int_of_float}. *) -external int_of_float : float -> int = "%intoffloat" +external int_of_float : float -> int = "caml_int_of_float" (** Truncate the given floating-point number to an integer. The result is unspecified if the argument is [nan] or falls outside the range of representable integers. *) diff --git a/utils/clflags.ml b/utils/clflags.ml index d39d57a..f4bda76 100644 --- a/utils/clflags.ml +++ b/utils/clflags.ml @@ -95,6 +95,11 @@ let std_include_dir () = ;; let shared = ref false (* -shared *) -let dlcode = ref true (* not -nodynlink *) + +let dlcode = + try + let _ = Sys.getenv "OCAML_NO_PIC" in + ref false + with Not_found -> ref true let runtime_variant = ref "";; (* -runtime-variant *)