diff --git a/.depend b/.depend deleted file mode 100644 index 1df8a5189..000000000 --- a/.depend +++ /dev/null @@ -1,175 +0,0 @@ -_build/examples/cstubs_structs/bindings.cmo : _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_structs.cmi -_build/examples/cstubs_structs/bindings.cmx : _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_structs.cmx -_build/examples/cstubs_structs/bindings_c_gen.cmo : _build/src/cstubs/cstubs_structs.cmi -_build/examples/cstubs_structs/bindings_c_gen.cmx : _build/src/cstubs/cstubs_structs.cmx -_build/examples/cstubs_structs/main.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes-foreign/foreign.cmi _build/src/ctypes/ctypes.cmi -_build/examples/cstubs_structs/main.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes-foreign/foreign.cmx _build/src/ctypes/ctypes.cmx -_build/examples/cstubs_structs/myocamlbuild.cmo : -_build/examples/cstubs_structs/myocamlbuild.cmx : -_build/examples/date/foreign/date.cmi : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/ctypes.cmi -_build/examples/date/foreign/date.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes-foreign/foreign.cmi _build/src/ctypes/ctypes.cmi _build/examples/date/foreign/date.cmi -_build/examples/date/foreign/date.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes-foreign/foreign.cmx _build/src/ctypes/ctypes.cmx _build/examples/date/foreign/date.cmi -_build/examples/date/stub-generation/bindings/date_stubs.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/ctypes.cmi -_build/examples/date/stub-generation/bindings/date_stubs.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes/ctypes.cmx -_build/examples/date/stub-generation/date_cmd.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/ctypes.cmi -_build/examples/date/stub-generation/date_cmd.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes/ctypes.cmx -_build/examples/date/stub-generation/stub-generator/date_stub_generator.cmo : _build/src/cstubs/cstubs.cmi -_build/examples/date/stub-generation/stub-generator/date_stub_generator.cmx : _build/src/cstubs/cstubs.cmx -_build/examples/fts/foreign/fts.cmi : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/ctypes.cmi -_build/examples/fts/foreign/fts.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes-foreign/foreign.cmi _build/src/ctypes/ctypes_coerce.cmi _build/src/ctypes/ctypes.cmi _build/examples/fts/foreign/fts.cmi -_build/examples/fts/foreign/fts.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes-foreign/foreign.cmx _build/src/ctypes/ctypes_coerce.cmx _build/src/ctypes/ctypes.cmx _build/examples/fts/foreign/fts.cmi -_build/examples/fts/foreign/fts_cmd.cmo : _build/src/ctypes/ctypes.cmi -_build/examples/fts/foreign/fts_cmd.cmx : _build/src/ctypes/ctypes.cmx -_build/examples/fts/stub-generation/bindings/fts.cmi : _build/src/ctypes/ctypes.cmi -_build/examples/fts/stub-generation/bindings/fts_bindings.cmo : _build/src/ctypes/ctypes.cmi -_build/examples/fts/stub-generation/bindings/fts_bindings.cmx : _build/src/ctypes/ctypes.cmx -_build/examples/fts/stub-generation/bindings/fts_types.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes-foreign/foreign.cmi _build/src/ctypes/ctypes_coerce.cmi _build/src/ctypes/ctypes.cmi -_build/examples/fts/stub-generation/bindings/fts_types.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes-foreign/foreign.cmx _build/src/ctypes/ctypes_coerce.cmx _build/src/ctypes/ctypes.cmx -_build/examples/fts/stub-generation/fts_cmd.cmo : _build/src/ctypes/ctypes.cmi -_build/examples/fts/stub-generation/fts_cmd.cmx : _build/src/ctypes/ctypes.cmx -_build/examples/fts/stub-generation/fts_if.cmo : _build/src/ctypes/ctypes.cmi -_build/examples/fts/stub-generation/fts_if.cmx : _build/src/ctypes/ctypes.cmx -_build/examples/fts/stub-generation/stub-generator/fts_stub_generator.cmo : _build/src/cstubs/cstubs.cmi -_build/examples/fts/stub-generation/stub-generator/fts_stub_generator.cmx : _build/src/cstubs/cstubs.cmx -_build/examples/ncurses/foreign/ncurses.cmi : -_build/examples/ncurses/foreign/ncurses.cmo : _build/src/ctypes-foreign/foreign.cmi _build/src/ctypes/ctypes.cmi _build/examples/ncurses/foreign/ncurses.cmi -_build/examples/ncurses/foreign/ncurses.cmx : _build/src/ctypes-foreign/foreign.cmx _build/src/ctypes/ctypes.cmx _build/examples/ncurses/foreign/ncurses.cmi -_build/examples/ncurses/foreign/ncurses_cmd.cmo : -_build/examples/ncurses/foreign/ncurses_cmd.cmx : -_build/examples/ncurses/stub-generation/bindings/ncurses_bindings.cmo : _build/src/ctypes/ctypes.cmi -_build/examples/ncurses/stub-generation/bindings/ncurses_bindings.cmx : _build/src/ctypes/ctypes.cmx -_build/examples/ncurses/stub-generation/ncurses_stub_cmd.cmo : -_build/examples/ncurses/stub-generation/ncurses_stub_cmd.cmx : -_build/examples/ncurses/stub-generation/stub-generator/ncurses_stub_generator.cmo : _build/src/cstubs/cstubs.cmi -_build/examples/ncurses/stub-generation/stub-generator/ncurses_stub_generator.cmx : _build/src/cstubs/cstubs.cmx -_build/examples/sigset/sigset.cmi : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/ctypes.cmi -_build/examples/sigset/sigset.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes-foreign/foreign.cmi _build/src/ctypes/ctypes.cmi _build/examples/sigset/sigset.cmi -_build/examples/sigset/sigset.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes-foreign/foreign.cmx _build/src/ctypes/ctypes.cmx _build/examples/sigset/sigset.cmi -_build/src/configure/extract_from_c.cmo : -_build/src/configure/extract_from_c.cmx : -_build/src/configure/gen_c_primitives.cmo : -_build/src/configure/gen_c_primitives.cmx : -_build/src/configure/gen_libffi_abi.cmo : -_build/src/configure/gen_libffi_abi.cmx : -_build/src/cstubs/cstubs.cmi : _build/src/ctypes/ctypes.cmi -_build/src/cstubs/cstubs.cmo : _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_structs.cmi _build/src/cstubs/cstubs_generate_ml.cmi _build/src/cstubs/cstubs_generate_c.cmi _build/src/cstubs/cstubs.cmi -_build/src/cstubs/cstubs.cmx : _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_structs.cmx _build/src/cstubs/cstubs_generate_ml.cmx _build/src/cstubs/cstubs_generate_c.cmx _build/src/cstubs/cstubs.cmi -_build/src/cstubs/cstubs_analysis.cmi : _build/src/ctypes/ctypes_static.cmi -_build/src/cstubs/cstubs_analysis.cmo : _build/src/ctypes/lDouble.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_bigarray.cmi _build/src/ctypes/complexL.cmi _build/src/cstubs/cstubs_analysis.cmi -_build/src/cstubs/cstubs_analysis.cmx : _build/src/ctypes/lDouble.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes_bigarray.cmx _build/src/ctypes/complexL.cmx _build/src/cstubs/cstubs_analysis.cmi -_build/src/cstubs/cstubs_c_language.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_errors.cmi -_build/src/cstubs/cstubs_c_language.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_errors.cmx -_build/src/cstubs/cstubs_emit_c.cmo : _build/src/ctypes/ctypes_type_printing.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_c_language.cmo -_build/src/cstubs/cstubs_emit_c.cmx : _build/src/ctypes/ctypes_type_printing.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_c_language.cmx -_build/src/cstubs/cstubs_errors.cmi : -_build/src/cstubs/cstubs_errors.cmo : _build/src/cstubs/cstubs_errors.cmi -_build/src/cstubs/cstubs_errors.cmx : _build/src/cstubs/cstubs_errors.cmi -_build/src/cstubs/cstubs_generate_c.cmi : _build/src/ctypes/ctypes.cmi -_build/src/cstubs/cstubs_generate_c.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_emit_c.cmo _build/src/cstubs/cstubs_c_language.cmo _build/src/cstubs/cstubs_generate_c.cmi -_build/src/cstubs/cstubs_generate_c.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_emit_c.cmx _build/src/cstubs/cstubs_c_language.cmx _build/src/cstubs/cstubs_generate_c.cmi -_build/src/cstubs/cstubs_generate_ml.cmi : _build/src/ctypes/ctypes.cmi -_build/src/cstubs/cstubs_generate_ml.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_primitive_types.cmi _build/src/cstubs/ctypes_path.cmi _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_public_name.cmi _build/src/cstubs/cstubs_errors.cmi _build/src/cstubs/cstubs_analysis.cmi _build/src/cstubs/cstubs_generate_ml.cmi -_build/src/cstubs/cstubs_generate_ml.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/cstubs/ctypes_path.cmx _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_public_name.cmx _build/src/cstubs/cstubs_errors.cmx _build/src/cstubs/cstubs_analysis.cmx _build/src/cstubs/cstubs_generate_ml.cmi -_build/src/cstubs/cstubs_inverted.cmi : _build/src/ctypes/ctypes.cmi -_build/src/cstubs/cstubs_inverted.cmo : _build/src/ctypes/ctypes_type_printing.cmi _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_generate_ml.cmi _build/src/cstubs/cstubs_generate_c.cmi _build/src/cstubs/cstubs_inverted.cmi -_build/src/cstubs/cstubs_inverted.cmx : _build/src/ctypes/ctypes_type_printing.cmx _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_generate_ml.cmx _build/src/cstubs/cstubs_generate_c.cmx _build/src/cstubs/cstubs_inverted.cmi -_build/src/cstubs/cstubs_public_name.cmi : _build/src/ctypes/ctypes_primitive_types.cmi _build/src/cstubs/ctypes_path.cmi -_build/src/cstubs/cstubs_public_name.cmo : _build/src/ctypes/ctypes_primitive_types.cmi _build/src/cstubs/ctypes_path.cmi _build/src/cstubs/cstubs_public_name.cmi -_build/src/cstubs/cstubs_public_name.cmx : _build/src/ctypes/ctypes_primitive_types.cmx _build/src/cstubs/ctypes_path.cmx _build/src/cstubs/cstubs_public_name.cmi -_build/src/cstubs/cstubs_structs.cmi : _build/src/ctypes/ctypes_types.cmi -_build/src/cstubs/cstubs_structs.cmo : _build/src/ctypes/ctypes_types.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_primitives.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/cstubs/ctypes_path.cmi _build/src/ctypes/ctypes.cmi _build/src/cstubs/cstubs_public_name.cmi _build/src/cstubs/cstubs_c_language.cmo _build/src/cstubs/cstubs_structs.cmi -_build/src/cstubs/cstubs_structs.cmx : _build/src/ctypes/ctypes_types.cmi _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_primitives.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/cstubs/ctypes_path.cmx _build/src/ctypes/ctypes.cmx _build/src/cstubs/cstubs_public_name.cmx _build/src/cstubs/cstubs_c_language.cmx _build/src/cstubs/cstubs_structs.cmi -_build/src/cstubs/ctypes_path.cmi : -_build/src/cstubs/ctypes_path.cmo : _build/src/cstubs/ctypes_path.cmi -_build/src/cstubs/ctypes_path.cmx : _build/src/cstubs/ctypes_path.cmi -_build/src/ctypes-foreign/ctypes_closure_properties.cmi : -_build/src/ctypes-foreign/ctypes_closure_properties.cmo : _build/src/ctypes-foreign/ctypes_closure_properties.cmi -_build/src/ctypes-foreign/ctypes_closure_properties.cmx : _build/src/ctypes-foreign/ctypes_closure_properties.cmi -_build/src/ctypes-foreign/ctypes_ffi.cmi : _build/src/ctypes-foreign/libffi_abi.cmi _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes-foreign/ctypes_ffi.cmo : _build/src/ctypes-foreign/libffi_abi.cmi _build/src/ctypes-foreign/ctypes_weak_ref.cmi _build/src/ctypes/ctypes_type_printing.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitives.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_memory_stubs.cmo _build/src/ctypes/ctypes_memory.cmo _build/src/ctypes-foreign/ctypes_ffi_stubs.cmo _build/src/ctypes-foreign/ctypes_ffi.cmi -_build/src/ctypes-foreign/ctypes_ffi.cmx : _build/src/ctypes-foreign/libffi_abi.cmx _build/src/ctypes-foreign/ctypes_weak_ref.cmx _build/src/ctypes/ctypes_type_printing.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitives.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes_memory_stubs.cmx _build/src/ctypes/ctypes_memory.cmx _build/src/ctypes-foreign/ctypes_ffi_stubs.cmx _build/src/ctypes-foreign/ctypes_ffi.cmi -_build/src/ctypes-foreign/ctypes_ffi_stubs.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes-foreign/ctypes_ffi_stubs.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitive_types.cmx -_build/src/ctypes-foreign/ctypes_foreign_basis.cmo : _build/src/ctypes-foreign/libffi_abi.cmi _build/src/ctypes-foreign/dl.cmi _build/src/ctypes/ctypes_std_views.cmo _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes-foreign/ctypes_ffi_stubs.cmo _build/src/ctypes-foreign/ctypes_ffi.cmi _build/src/ctypes/ctypes_coerce.cmi _build/src/ctypes/ctypes.cmi -_build/src/ctypes-foreign/ctypes_foreign_basis.cmx : _build/src/ctypes-foreign/libffi_abi.cmx _build/src/ctypes-foreign/dl.cmx _build/src/ctypes/ctypes_std_views.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes-foreign/ctypes_ffi_stubs.cmx _build/src/ctypes-foreign/ctypes_ffi.cmx _build/src/ctypes/ctypes_coerce.cmx _build/src/ctypes/ctypes.cmx -_build/src/ctypes-foreign/ctypes_weak_ref.cmi : -_build/src/ctypes-foreign/ctypes_weak_ref.cmo : _build/src/ctypes-foreign/ctypes_weak_ref.cmi -_build/src/ctypes-foreign/ctypes_weak_ref.cmx : _build/src/ctypes-foreign/ctypes_weak_ref.cmi -_build/src/ctypes-foreign/dl.cmi : -_build/src/ctypes-foreign/dl.cmo : _build/src/ctypes-foreign/dl.cmi -_build/src/ctypes-foreign/dl.cmx : _build/src/ctypes-foreign/dl.cmi -_build/src/ctypes-foreign/libffi_abi.cmi : -_build/src/ctypes-foreign/libffi_abi.cmo : _build/src/ctypes/ctypes.cmi _build/src/ctypes-foreign/libffi_abi.cmi -_build/src/ctypes-foreign/libffi_abi.cmx : _build/src/ctypes/ctypes.cmx _build/src/ctypes-foreign/libffi_abi.cmi -_build/src/ctypes-foreign/ctypes_foreign_threaded_stubs.cmo : -_build/src/ctypes-foreign/ctypes_foreign_threaded_stubs.cmx : -_build/src/ctypes-foreign/foreign.cmi : _build/src/ctypes-foreign/libffi_abi.cmi _build/src/ctypes-foreign/dl.cmi _build/src/ctypes/ctypes.cmi -_build/src/ctypes-foreign/foreign.cmo : _build/src/ctypes-foreign/ctypes_foreign_threaded_stubs.cmo _build/src/ctypes-foreign/ctypes_foreign_basis.cmo _build/src/ctypes-foreign/ctypes_closure_properties.cmi _build/src/ctypes-foreign/foreign.cmi -_build/src/ctypes-foreign/foreign.cmx : _build/src/ctypes-foreign/ctypes_foreign_threaded_stubs.cmx _build/src/ctypes-foreign/ctypes_foreign_basis.cmx _build/src/ctypes-foreign/ctypes_closure_properties.cmx _build/src/ctypes-foreign/foreign.cmi -_build/src/ctypes-top/ctypes_printers.cmi : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/lDouble.cmi _build/src/ctypes/ctypes.cmi _build/src/ctypes/complexL.cmi -_build/src/ctypes-top/ctypes_printers.cmo : _build/src/ctypes/posixTypes.cmi _build/src/ctypes/lDouble.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes.cmi _build/src/ctypes/complexL.cmi _build/src/ctypes-top/ctypes_printers.cmi -_build/src/ctypes-top/ctypes_printers.cmx : _build/src/ctypes/posixTypes.cmx _build/src/ctypes/lDouble.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes.cmx _build/src/ctypes/complexL.cmx _build/src/ctypes-top/ctypes_printers.cmi -_build/src/ctypes-top/install_ctypes_printers.cmo : -_build/src/ctypes-top/install_ctypes_printers.cmx : -_build/src/ctypes/complexL.cmi : _build/src/ctypes/lDouble.cmi -_build/src/ctypes/complexL.cmo : _build/src/ctypes/lDouble.cmi _build/src/ctypes/complexL.cmi -_build/src/ctypes/complexL.cmx : _build/src/ctypes/lDouble.cmx _build/src/ctypes/complexL.cmi -_build/src/ctypes/cstubs_internals.cmi : _build/src/ctypes/lDouble.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_memory_stubs.cmo _build/src/ctypes/ctypes_bigarray.cmi _build/src/ctypes/ctypes.cmi _build/src/ctypes/complexL.cmi -_build/src/ctypes/cstubs_internals.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_memory_stubs.cmo _build/src/ctypes/ctypes.cmi _build/src/ctypes/cstubs_internals.cmi -_build/src/ctypes/cstubs_internals.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes_memory_stubs.cmx _build/src/ctypes/ctypes.cmx _build/src/ctypes/cstubs_internals.cmi -_build/src/ctypes/ctypes.cmi : _build/src/ctypes/ctypes_types.cmi _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes.cmo : _build/src/ctypes/ctypes_value_printing.cmo _build/src/ctypes/ctypes_types.cmi _build/src/ctypes/ctypes_type_printing.cmi _build/src/ctypes/ctypes_structs_computed.cmi _build/src/ctypes/ctypes_std_views.cmo _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_memory.cmo _build/src/ctypes/ctypes_coerce.cmi _build/src/ctypes/ctypes.cmi -_build/src/ctypes/ctypes.cmx : _build/src/ctypes/ctypes_value_printing.cmx _build/src/ctypes/ctypes_types.cmi _build/src/ctypes/ctypes_type_printing.cmx _build/src/ctypes/ctypes_structs_computed.cmx _build/src/ctypes/ctypes_std_views.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_memory.cmx _build/src/ctypes/ctypes_coerce.cmx _build/src/ctypes/ctypes.cmi -_build/src/ctypes/ctypes_bigarray.cmi : _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes/ctypes_bigarray.cmo : _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitives.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_memory_stubs.cmo _build/src/ctypes/ctypes_bigarray_stubs.cmo _build/src/ctypes/ctypes_bigarray.cmi -_build/src/ctypes/ctypes_bigarray.cmx : _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitives.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes_memory_stubs.cmx _build/src/ctypes/ctypes_bigarray_stubs.cmx _build/src/ctypes/ctypes_bigarray.cmi -_build/src/ctypes/ctypes_bigarray_stubs.cmo : _build/src/ctypes/ctypes_ptr.cmo -_build/src/ctypes/ctypes_bigarray_stubs.cmx : _build/src/ctypes/ctypes_ptr.cmx -_build/src/ctypes/ctypes_coerce.cmi : _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes_coerce.cmo : _build/src/ctypes/ctypes_type_printing.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_coerce.cmi -_build/src/ctypes/ctypes_coerce.cmx : _build/src/ctypes/ctypes_type_printing.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes_coerce.cmi -_build/src/ctypes/ctypes_memory.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_roots_stubs.cmo _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_memory_stubs.cmo _build/src/ctypes/ctypes_bigarray.cmi -_build/src/ctypes/ctypes_memory.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_roots_stubs.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_memory_stubs.cmx _build/src/ctypes/ctypes_bigarray.cmx -_build/src/ctypes/ctypes_memory_stubs.cmo : _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes/ctypes_memory_stubs.cmx : _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitive_types.cmx -_build/src/ctypes/ctypes_primitive_types.cmi : _build/src/ctypes/lDouble.cmi _build/src/ctypes/complexL.cmi -_build/src/ctypes/ctypes_primitive_types.cmo : _build/src/ctypes/lDouble.cmi _build/src/ctypes/complexL.cmi _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes/ctypes_primitive_types.cmx : _build/src/ctypes/lDouble.cmx _build/src/ctypes/complexL.cmx _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes/ctypes_primitives.cmo : _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes/ctypes_primitives.cmx : _build/src/ctypes/ctypes_primitive_types.cmx -_build/src/ctypes/ctypes_ptr.cmo : -_build/src/ctypes/ctypes_ptr.cmx : -_build/src/ctypes/ctypes_roots_stubs.cmo : _build/src/ctypes/ctypes_ptr.cmo -_build/src/ctypes/ctypes_roots_stubs.cmx : _build/src/ctypes/ctypes_ptr.cmx -_build/src/ctypes/ctypes_static.cmi : _build/src/ctypes/lDouble.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_bigarray.cmi _build/src/ctypes/complexL.cmi -_build/src/ctypes/ctypes_static.cmo : _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitives.cmo _build/src/ctypes/ctypes_primitive_types.cmi _build/src/ctypes/ctypes_bigarray.cmi _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes_static.cmx : _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitives.cmx _build/src/ctypes/ctypes_primitive_types.cmx _build/src/ctypes/ctypes_bigarray.cmx _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes_std_view_stubs.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_memory_stubs.cmo -_build/src/ctypes/ctypes_std_view_stubs.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_memory_stubs.cmx -_build/src/ctypes/ctypes_std_views.cmo : _build/src/ctypes/ctypes_std_view_stubs.cmo _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_memory_stubs.cmo _build/src/ctypes/ctypes_memory.cmo _build/src/ctypes/ctypes_coerce.cmi -_build/src/ctypes/ctypes_std_views.cmx : _build/src/ctypes/ctypes_std_view_stubs.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_memory_stubs.cmx _build/src/ctypes/ctypes_memory.cmx _build/src/ctypes/ctypes_coerce.cmx -_build/src/ctypes/ctypes_structs.cmi : _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes_structs.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_structs.cmi -_build/src/ctypes/ctypes_structs.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_structs.cmi -_build/src/ctypes/ctypes_structs_computed.cmi : _build/src/ctypes/ctypes_structs.cmi _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes_structs_computed.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_structs_computed.cmi -_build/src/ctypes/ctypes_structs_computed.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_structs_computed.cmi -_build/src/ctypes/ctypes_type_printing.cmi : _build/src/ctypes/ctypes_static.cmi -_build/src/ctypes/ctypes_type_printing.cmo : _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_primitives.cmo _build/src/ctypes/ctypes_bigarray.cmi _build/src/ctypes/ctypes_type_printing.cmi -_build/src/ctypes/ctypes_type_printing.cmx : _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_primitives.cmx _build/src/ctypes/ctypes_bigarray.cmx _build/src/ctypes/ctypes_type_printing.cmi -_build/src/ctypes/ctypes_types.cmi : _build/src/ctypes/lDouble.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/complexL.cmi -_build/src/ctypes/ctypes_value_printing.cmo : _build/src/ctypes/ctypes_value_printing_stubs.cmo _build/src/ctypes/ctypes_type_printing.cmi _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_memory.cmo -_build/src/ctypes/ctypes_value_printing.cmx : _build/src/ctypes/ctypes_value_printing_stubs.cmx _build/src/ctypes/ctypes_type_printing.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_memory.cmx -_build/src/ctypes/ctypes_value_printing_stubs.cmo : _build/src/ctypes/ctypes_ptr.cmo _build/src/ctypes/ctypes_primitive_types.cmi -_build/src/ctypes/ctypes_value_printing_stubs.cmx : _build/src/ctypes/ctypes_ptr.cmx _build/src/ctypes/ctypes_primitive_types.cmx -_build/src/ctypes/lDouble.cmi : -_build/src/ctypes/lDouble.cmo : _build/src/ctypes/lDouble.cmi -_build/src/ctypes/lDouble.cmx : _build/src/ctypes/lDouble.cmi -_build/src/ctypes/posixTypes.cmi : _build/src/ctypes/ctypes.cmi -_build/src/ctypes/posixTypes.cmo : _build/src/ctypes/ctypes_std_views.cmo _build/src/ctypes/ctypes_static.cmi _build/src/ctypes/ctypes.cmi _build/src/ctypes/posixTypes.cmi -_build/src/ctypes/posixTypes.cmx : _build/src/ctypes/ctypes_std_views.cmx _build/src/ctypes/ctypes_static.cmx _build/src/ctypes/ctypes.cmx _build/src/ctypes/posixTypes.cmi -_build/src/discover/commands.cmi : -_build/src/discover/commands.cmo : _build/src/discover/commands.cmi -_build/src/discover/commands.cmx : _build/src/discover/commands.cmi -_build/src/discover/discover.cmo : -_build/src/discover/discover.cmx : diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 000d92202..6886b0e16 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,10 +63,7 @@ jobs: opam install -t --deps-only . - name: Build - run: opam exec -- make + run: opam exec -- dune build - name: Test - run: opam exec -- make test - - - name: Test inverted stubs - run: opam pin add ctypes-inverted-stubs-example https://github.com/yallop/ocaml-ctypes-inverted-stubs-example.git + run: opam exec -- dune runtest diff --git a/.gitignore b/.gitignore index b80a2984a..6d6fc6bb2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,30 +1,5 @@ +.*.swp _build _opam -libffi.config -asneeded.config -discover -gen_c_primitives -gen_c_primitives.log -gen_libffi_abi -gen_libffi_abi.log -src/ctypes/ctypes_primitives.ml -src/ctypes_config.h -src/ctypes_config.ml -src/ctypes-foreign/dl_stubs.c -src/ctypes-foreign/dl.ml -src/discover/commands.cm* -src/discover/discover.cm* -src/configure/extract_from_c.cm* -src/configure/gen_c_primitives.cm* -src/configure/gen_libffi_abi.cm* -*~ -generated_stubs.c -generated_bindings.ml -generated_struct_bindings.ml -ncurses_generated.ml -ncurses_stubs.c -date_generated.ml -date_stubs.c -fts_generated.ml -fts_stubs.c -libffi_abi.ml +*.install +.merlin diff --git a/.merlin b/.merlin deleted file mode 100644 index 531c84965..000000000 --- a/.merlin +++ /dev/null @@ -1,19 +0,0 @@ -PRJ ctypes -S src -S src/cstubs -S src/libffi-abigen -S src/discover -S src/ctypes -S src/ctypes-top -S src/configure -S src/ctypes-foreign -B _build -B _build/src -B _build/src/cstubs -B _build/src/libffi-abigen -B _build/src/ctypes -B _build/src/ctypes-top -B _build/src/configure -B _build/src/ctypes-foreign -PKG bytes -PKG integers diff --git a/META b/META deleted file mode 100644 index 28364c0d8..000000000 --- a/META +++ /dev/null @@ -1,43 +0,0 @@ -version = "0.20.2" -description = "Combinators for binding to C libraries without writing any C." -requires = "bigarray-compat bytes integers" -archive(byte) = "ctypes.cma" -archive(byte, plugin) = "ctypes.cma" -archive(byte, toploop) = "ctypes.cma ctypes-top.cma" -archive(native) = "ctypes.cmxa" -archive(native, plugin) = "ctypes.cmxs" -exists_if = "ctypes.cma" - -package "top" ( - version = "0.20.2" - description = "Toplevel printers for C types" - requires = "ctypes" - archive(byte) = "ctypes-top.cma" - archive(byte, plugin) = "ctypes-top.cma" - archive(native) = "ctypes-top.cmxa" - archive(native, plugin) = "ctypes-top.cmxs" - exists_if = "ctypes-top.cma" -) - -package "stubs" ( - version = "0.20.2" - description = "Stub generation from C types" - requires = "ctypes str" - archive(byte) = "cstubs.cma" - archive(byte, plugin) = "cstubs.cma" - archive(native) = "cstubs.cmxa" - archive(native, plugin) = "cstubs.cmxs" - xen_linkopts = "-lctypes_stubs_xen" - exists_if = "cstubs.cma" -) - -package "foreign" ( - version = "0.20.2" - description = "Dynamic linking of C functions" - requires = "threads ctypes" - archive(byte) = "ctypes-foreign.cma" - archive(byte, plugin) = "ctypes-foreign.cma" - archive(native) = "ctypes-foreign.cmxa" - archive(native, plugin) = "ctypes-foreign.cmxs" - exists_if = "ctypes-foreign.cma" -) diff --git a/Makefile b/Makefile index 765b29ab5..472c0c1d3 100644 --- a/Makefile +++ b/Makefile @@ -1,200 +1,10 @@ -.SECONDEXPANSION: +.PHONY: build clean test -BEST:=$(shell if ocamlopt > /dev/null 2>&1; then echo native; else echo byte; fi) -OPAQUE:=$(shell if ocamlopt -opaque 2>/dev/null; then echo -opaque; fi) -NO_KEEP_LOCS:=$(shell if ocamlopt -no-keep-locs 2>/dev/null; then echo -no-keep-locs; fi) -DEBUG=true -COVERAGE=false -OCAML=ocaml -OCAMLFIND=ocamlfind $(OCAMLFINDFLAGS) -HOSTOCAMLFIND=$(OCAMLFIND) -OCAMLDEP=$(OCAMLFIND) ocamldep -OCAMLMKLIB=$(OCAMLFIND) ocamlmklib -VPATH=src examples -BUILDDIR=_build -BASE_PROJECTS=configure libffi-abigen configured ctypes ctypes-top -FOREIGN_PROJECTS=test-libffi ctypes-foreign -STUB_PROJECTS=cstubs -PROJECTS=$(BASE_PROJECTS) $(FOREIGN_PROJECTS) $(STUB_PROJECTS) -DEP_DIRS=$(foreach project,$(PROJECTS),$($(project).dir)) -GENERATED=src/ctypes/ctypes_primitives.ml \ - src/ctypes-foreign/libffi_abi.ml \ - src/ctypes-foreign/dl.ml \ - src/ctypes-foreign/dl_stubs.c \ - libffi.config \ - asneeded.config \ - discover \ - gen_c_primitives \ - gen_c_primitives.log \ - gen_libffi_abi \ - src/configure/extract_from_c.cmi \ - src/configure/extract_from_c.cmo \ - src/configure/gen_c_primitives.cmi \ - src/configure/gen_c_primitives.cmo \ - src/configure/gen_libffi_abi.cmi \ - src/configure/gen_libffi_abi.cmo \ - src/discover/commands.cmi \ - src/discover/commands.cmo \ - src/discover/discover.cmi \ - src/discover/discover.cmo +build: + dune build -OCAML_FFI_INCOPTS=$(libffi_opt) -export CFLAGS DEBUG +test: + dune runtest -EXTDLL:=$(shell $(OCAMLFIND) ocamlc -config | awk '/^ext_dll:/{print $$2}') -OSYSTEM:=$(shell $(OCAMLFIND) ocamlc -config | awk '/^system:/{print $$2}') - -ifneq (,$(filter mingw%,$(OSYSTEM))) -OS_ALT_SUFFIX=.win -else -OS_ALT_SUFFIX=.unix -endif - -# public targets -all: libffi.config $(PROJECTS) - -ctypes-base: $(BASE_PROJECTS) -ctypes-foreign: ctypes-base test-libffi -ctypes-stubs: ctypes-base $(STUB_PROJECTS) - -clean: clean-examples clean-tests - rm -fr _build - rm -f $(GENERATED) - -# ctypes subproject -ctypes.cmi_only = ctypes_static ctypes_primitive_types ctypes_structs cstubs_internals -ctypes.public = lDouble complexL ctypes posixTypes ctypes_types -ctypes.dir = src/ctypes -ctypes.extra_mls = ctypes_primitives.ml -ctypes.deps = bigarray-compat integers -ctypes.linkdeps = integers_stubs -ctypes.install = yes -ctypes.install_native_objects = yes -ifeq ($(XEN),enable) -ctypes.xen = yes -endif - -ctypes: PROJECT=ctypes -ctypes: $(ctypes.dir)/$(ctypes.extra_mls) $$(LIB_TARGETS) - -# cstubs subproject -cstubs.public = cstubs_structs cstubs cstubs_inverted -cstubs.dir = src/cstubs -cstubs.subproject_deps = ctypes -cstubs.deps = str integers -cstubs.install = yes -cstubs.install_native_objects = yes -cstubs.extra_hs = $(package_integers_path)/ocaml_integers.h - -cstubs: PROJECT=cstubs -cstubs: $(cstubs.dir)/$(cstubs.extra_mls) $$(LIB_TARGETS) - -# ctypes-foreign subproject -ctypes-foreign.public = dl libffi_abi foreign -ctypes-foreign.dir = src/ctypes-foreign -ctypes-foreign.subproject_deps = ctypes -ctypes-foreign.deps = integers -ctypes-foreign.install = yes -ctypes-foreign.install_native_objects = yes -ctypes-foreign.extra_cs = dl_stubs.c -ctypes-foreign.extra_mls = libffi_abi.ml dl.ml -ctypes-foreign.cmi_opts = $(OPAQUE) $(NO_KEEP_LOCS) -ctypes-foreign.cmo_opts = $(OCAML_FFI_INCOPTS:%=-ccopt %) -ctypes-foreign.cmx_opts = $(OCAML_FFI_INCOPTS:%=-ccopt %) -ctypes-foreign.link_flags = $(libffi_lib) $(lib_process) -ctypes-foreign.threads = yes - -ctypes-foreign: PROJECT=ctypes-foreign -ctypes-foreign: $$(LIB_TARGETS) - -# ctypes-top subproject -ctypes-top.public = ctypes_printers -ctypes-top.dir = src/ctypes-top -ctypes-top.install = yes -ctypes-top.deps = compiler-libs integers -ctypes-top.subproject_deps = ctypes -ctypes-top.install_native_objects = yes - -ctypes-top: PROJECT=ctypes-top -ctypes-top: $$(LIB_TARGETS) - -# configuration -configured: src/ctypes/ctypes_primitives.ml src/ctypes-foreign/libffi_abi.ml src/ctypes-foreign/dl.ml src/ctypes-foreign/dl_stubs.c - -src/ctypes-foreign/dl.ml: src/ctypes-foreign/dl.ml$(OS_ALT_SUFFIX) - cp $< $@ -src/ctypes-foreign/dl_stubs.c: src/ctypes-foreign/dl_stubs.c$(OS_ALT_SUFFIX) - cp $< $@ - -src/ctypes/ctypes_primitives.ml: src/configure/extract_from_c.ml src/configure/gen_c_primitives.ml - $(HOSTOCAMLFIND) ocamlc -o gen_c_primitives -package str -strict-sequence -linkpkg $^ -I src/configure - ./gen_c_primitives > $@ 2> gen_c_primitives.log || (rm $@ && cat gen_c_primitives.log && false) - -src/ctypes-foreign/libffi_abi.ml: src/configure/extract_from_c.ml src/configure/gen_libffi_abi.ml - $(HOSTOCAMLFIND) ocamlc -o gen_libffi_abi -package str -strict-sequence -linkpkg $^ -I src/configure - ./gen_libffi_abi > $@ 2> gen_c_primitives.log || (rm $@ && cat gen_c_primitives.log && false) - -libffi.config: src/discover/commands.mli src/discover/commands.ml src/discover/discover.ml - $(HOSTOCAMLFIND) ocamlc -o discover -package str -strict-sequence -linkpkg $^ -I src/discover - ./discover -ocamlc "$(OCAMLFIND) ocamlc" > $@ || (rm $@ && false) - -asneeded.config: - ./src/discover/determine_as_needed_flags.sh >> $@ - -# dependencies -depend: configure - $(OCAMLDEP) -one-line $(foreach dir,$(DEP_DIRS),-I $(dir)) \ - $(shell find src examples -name '*.mli' -o -name '*.ml') \ - | sed "s!src/!_build/src/!g; s!examples/!_build/examples/!g" | sort > .depend - -#installation -META-install: - $(OCAMLFIND) install ctypes META CHANGES.md - -install-%: PROJECT=$* -install-%: - $(if $(filter yes,$($(PROJECT).install)),\ - $(OCAMLFIND) install -add ctypes -optional $^ \ - $(LIB_TARGETS) $(LIB_TARGET_EXTRAS) \ - $(INSTALL_MLIS) $(INSTALL_CMIS) \ - $(INSTALL_CMTS) $(INSTALL_CMTIS) \ - $(INSTALL_HEADERS) \ - $(if $(filter yes,$($(PROJECT).install_native_objects)),$(NATIVE_OBJECTS))) - -$(PROJECTS:%=install-%): META-install - -install: META-install $(PROJECTS:%=install-%) - -uninstall: - $(OCAMLFIND) remove ctypes - -DOCFILES=$(foreach project,$(PROJECTS),\ - $(foreach mli,$($(project).public),\ - $($(project).dir)/$(mli).mli)) -DOCFLAGS=-I $(shell ocamlfind query integers) $(foreach project,$(PROJECTS),-I $(BUILDDIR)/$($(project).dir)) - -doc: - ocamldoc -html $(DOCFLAGS) $(DOCFILES) - - -.PHONY: depend clean configure all install doc $(PROJECTS) - -include .depend Makefile.rules Makefile.examples Makefile.tests --include libffi.config --include asneeded.config - -ifeq ($(libffi_available),false) -test-libffi: - @echo "The following required C libraries are missing: libffi." - @echo "Please install them and retry. If they are installed in a non-standard location" - @echo "or need special flags, set the environment variables _CFLAGS and _LIBS" - @echo "accordingly and retry." - @echo - @echo " For example, if libffi is installed in /opt/local, you can type:" - @echo - @echo " export LIBFFI_CFLAGS=-I/opt/local/include" - @echo " export LIBFFI_LIBS=\"-L/opt/local/lib -lffi\"" - @exit 1 -else: -test-libffi: -endif +clean: + dune clean diff --git a/Makefile.examples b/Makefile.examples deleted file mode 100644 index dd3eb55d6..000000000 --- a/Makefile.examples +++ /dev/null @@ -1,147 +0,0 @@ -# -*- Makefile -*- - -# subproject: fts with stub generation -fts-stubs.install = no -fts-stubs.dir = examples/fts/stub-generation/bindings -fts-stubs.threads = yes -fts-stubs.deps = integers -fts-stubs.subproject_deps = ctypes ctypes-foreign -fts-stubs: PROJECT=fts-stubs -fts-stubs: $$(LIB_TARGETS) - -fts-stub-generator.install = no -fts-stub-generator.dir = examples/fts/stub-generation/stub-generator -fts-stub-generator.threads = yes -fts-stub-generator.deps = integers -fts-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign fts-stubs -fts-stub-generator.deps = str unix bigarray-compat integers -fts-stub-generator: PROJECT=fts-stub-generator -fts-stub-generator: $$(NATIVE_TARGET) - -fts-cmd.install = no -fts-cmd.dir = examples/fts/stub-generation -fts-cmd.threads = yes -fts-cmd.subproject_deps = ctypes \ - ctypes-foreign fts-stubs -fts-cmd.deps = str unix bigarray-compat integers -fts-cmd.extra_mls = fts_generated.ml -fts-cmd.extra_cs = fts_stubs.c -fts-cmd: CFLAGS+=-D_FILE_OFFSET_BITS=32 -fts-cmd: PROJECT=fts-cmd -fts-cmd: $$(NATIVE_TARGET) - -fts-cmd-build: examples/fts/stub-generation/fts_generated.ml -examples/fts/stub-generation/fts_generated.ml: fts-stub-generator - _build/fts-stub-generator.native - -# subproject: fts using dynamic linking (foreign) -fts.install = no -fts.dir = examples/fts/foreign -fts.threads = yes -fts.deps = unix bigarray-compat str integers -fts.subproject_deps = ctypes ctypes-foreign -fts: PROJECT=fts -fts: $$(NATIVE_TARGET) - -# subproject: date with stub generation -date-stubs.install = no -date-stubs.dir = examples/date/stub-generation/bindings -date-stubs.subproject_deps = ctypes -date-stubs: PROJECT=date-stubs -date-stubs: $$(LIB_TARGETS) - -date-stub-generator.install = no -date-stub-generator.dir = examples/date/stub-generation/stub-generator -date-stub-generator.subproject_deps = ctypes cstubs date-stubs -date-stub-generator.deps = str unix bigarray-compat integers -date-stub-generator: PROJECT=date-stub-generator -date-stub-generator: $$(NATIVE_TARGET) - -date-cmd.install = no -date-cmd.dir = examples/date/stub-generation -date-cmd.subproject_deps = ctypes date-stubs -date-cmd.deps = str unix bigarray-compat integers -date-cmd.extra_mls = date_generated.ml -date-cmd.extra_cs = date_stubs.c -date-cmd: PROJECT=date-cmd -date-cmd: $$(NATIVE_TARGET) - -date-cmd-build: examples/date/stub-generation/date_generated.ml -examples/date/stub-generation/date_generated.ml: - _build/date-stub-generator.native - -# subproject: date using dynamic linking (foreign) -date.install = no -date.dir = examples/date/foreign -date.threads = yes -date.subproject_deps = ctypes ctypes-foreign -date.deps = unix bigarray-compat str integers -date: PROJECT=date -date: $$(NATIVE_TARGET) - -# subproject: ncurses with stub generation -ncurses-stubs.install = no -ncurses-stubs.dir = examples/ncurses/stub-generation/bindings -ncurses-stubs.subproject_deps = ctypes -ncurses-stubs.deps = str unix bigarray-compat integers -ncurses-stubs: PROJECT=ncurses-stubs -ncurses-stubs: $$(NATIVE_TARGET) $$(LIB_TARGETS) - -ncurses-stub-generator.install = no -ncurses-stub-generator.dir = examples/ncurses/stub-generation/stub-generator -ncurses-stub-generator.threads = yes -ncurses-stub-generator.deps = integers -ncurses-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign ncurses-stubs -ncurses-stub-generator.deps = str unix bigarray-compat integers -ncurses-stub-generator: PROJECT=ncurses-stub-generator -ncurses-stub-generator: $$(NATIVE_TARGET) - -ncurses-cmd.install = no -ncurses-cmd.dir = examples/ncurses/stub-generation -ncurses-cmd.subproject_deps = ctypes ncurses-stubs -ncurses-cmd.deps = str unix bigarray-compat integers -ncurses-cmd.extra_mls = ncurses_generated.ml -ncurses-cmd.extra_cs = ncurses_stubs.c -ncurses-cmd.link_flags = -lncurses -ncurses-cmd: PROJECT=ncurses-cmd -ncurses-cmd: $$(NATIVE_TARGET) - -ncurses-cmd-build: examples/ncurses/stub-generation/ncurses_generated.ml -examples/ncurses/stub-generation/ncurses_generated.ml: ncurses-stubs - _build/ncurses-stub-generator.native - -# subproject: ncurses using dynamic linking (foreign) -ncurses.install = no -ncurses.dir = examples/ncurses/foreign -ncurses.threads = yes -ncurses.subproject_deps = ctypes ctypes-foreign -ncurses.deps = unix bigarray-compat str integers -ncurses.link_flags = -lncurses -ncurses: PROJECT=ncurses -ncurses: $$(NATIVE_TARGET) - -EXAMPLES = -EXAMPLES += ncurses ncurses-stubs ncurses-stub-generator ncurses-cmd-build ncurses-cmd -EXAMPLES += fts fts-stubs fts-stub-generator fts-cmd-build fts-cmd -EXAMPLES += date date-stubs date-stub-generator date-cmd-build date-cmd - -run-examples: examples - # this doesn't run the ncurses example, which takes control of the terminal - _build/date.native - _build/date-cmd.native - _build/fts-cmd.native src - -EXAMPLES_GENERATED=$(foreach example,$(EXAMPLES),\ - $(if $($(example).extra_mls), \ - $($(example).dir)/$($(example).extra_mls)) \ - $(if $($(example).extra_cs), \ - $($(example).dir)/$($(example).extra_cs))) - -clean-examples: - rm -f $(EXAMPLES_GENERATED) - -.PHONY: build $(EXAMPLES) clean-examples - -examples: build $(EXAMPLES) diff --git a/Makefile.rules b/Makefile.rules deleted file mode 100644 index 605e3c4d0..000000000 --- a/Makefile.rules +++ /dev/null @@ -1,137 +0,0 @@ -# -*- Makefile -*- - -.SECONDARY: - -package_integers_path = $(shell $(OCAMLFIND) query integers) -ifneq (,$(filter mingw%,$(OSYSTEM))) -lib_process=-lpsapi -OCAMLMKLIB_EXTRA_FLAGS=-ldopt "-link -static-libgcc" # see GPR#1535 -ifeq ($(DEBUG),false) - CFLAGS=-std=c99 -Wall -O3 $(OCAML_FFI_INCOPTS) "-I$(package_integers_path)" -else - CFLAGS=-std=c99 -Wall -g $(OCAML_FFI_INCOPTS) "-I$(package_integers_path)" -endif -else -ifeq ($(DEBUG),false) - CFLAGS=-fPIC -Wall -O3 $(OCAML_FFI_INCOPTS) "-I$(package_integers_path)" -else - CFLAGS=-fPIC -Wall -g $(OCAML_FFI_INCOPTS) "-I$(package_integers_path)" -endif -endif - -ifeq ($(DEBUG),false) - OCAMLFLAGS=-principal -short-paths -strict-sequence -ccopt "-I$(package_integers_path)" -else - OCAMLFLAGS=-principal -short-paths -strict-sequence -g -ccopt "-I$(package_integers_path)" -endif -ifneq ($(COVERAGE),false) - OCAMLFIND_BISECT_FLAGS=-package bisect_ppx -endif - -C_SOURCE = $(sort $(wildcard $($(PROJECT).dir)/*.c) $(patsubst %,$($(PROJECT).dir)/%,$($(PROJECT).extra_cs))) -ML_SOURCE = $(shell $(OCAMLDEP) -sort $(sort $(wildcard $($(PROJECT).dir)/*.ml) \ - $(patsubst %,$($(PROJECT).dir)/%,$($(PROJECT).extra_mls)))) - -NATIVE_OBJECTS = $(ML_SOURCE:$($(PROJECT).dir)/%.ml=$(BUILDDIR)/$($(PROJECT).dir)/%.cmx) -BYTE_OBJECTS = $(ML_SOURCE:$($(PROJECT).dir)/%.ml=$(BUILDDIR)/$($(PROJECT).dir)/%.cmo) -C_OBJECTS = $(C_SOURCE:$($(PROJECT).dir)/%.c=$(BUILDDIR)/$($(PROJECT).dir)/%.o) -XEN_OBJECTS = $(C_SOURCE:$($(PROJECT).dir)/%.c=$(BUILDDIR)/xen/$($(PROJECT).dir)/%.o) - -STUB_LIB = $(if $(C_OBJECTS),$(BUILDDIR)/dll$(PROJECT)_stubs$(EXTDLL)) - -OPAM_PREFIX=$(shell opam config var prefix) -XEN_LIB = $(if $($(PROJECT).xen),$(BUILDDIR)/dll$(PROJECT)_stubs_xen$(EXTDLL)) -XEN_CFLAGS=$(if $(XEN_LIB), \ - $(CFLAGS) -DMINIOS $(shell env PKG_CONFIG_PATH="$(OPAM_PREFIX)/lib/pkgconfig" \ - pkg-config --cflags mirage-xen) -fno-builtin) - -CMO_OPTS = $($(PROJECT).cmo_opts) -CMX_OPTS = $($(PROJECT).cmx_opts) -CMI_OPTS = $($(PROJECT).cmi_opts) -CMA_OPTS = $(if $(C_OBJECTS),-cclib -l$(PROJECT)_stubs -dllib -l$(PROJECT)_stubs) \ - $(foreach libdep,$($(PROJECT).linkdeps),\ - -cclib -l$(libdep) -dllib -l$(libdep)) -SUBPROJECT_DEPS = $($(PROJECT).subproject_deps) -LOCAL_CMXAS = $(SUBPROJECT_DEPS:%=$(BUILDDIR)/%.cmxa) -LOCAL_CMAS = $(SUBPROJECT_DEPS:%=$(BUILDDIR)/%.cma) -CMXA_OPTS = $(if $(C_OBJECTS),-cclib -l$(PROJECT)_stubs)\ - $(foreach libdep,$($(PROJECT).linkdeps),\ - -cclib -l$(libdep)) - -OCAMLINCLUDES = -I $(BUILDDIR)/$($(PROJECT).dir) \ - $(foreach spdep,$($(PROJECT).subproject_deps),\ - -I $(BUILDDIR)/$($(spdep).dir)) -NATIVE_LIB=$(BUILDDIR)/$(PROJECT).cmxa -NATIVE_TARGET=$(BUILDDIR)/$(PROJECT).native -BEST_TARGET=$(BUILDDIR)/$(PROJECT).$(BEST) -LIB_TARGETS = $(BUILDDIR)/$(PROJECT).cma \ - $(STUB_LIB) \ - $(XEN_LIB) -ifeq ($(BEST),native) -LIB_TARGETS += $(BUILDDIR)/$(PROJECT).cmxa -endif -OCAMLC_WHERE:=$(shell $(OCAMLFIND) ocamlc -where) -ifneq ($(wildcard $(OCAMLC_WHERE)/dynlink.cmxa $(OCAMLC_WHERE)/dynlink/dynlink.cmxa),) -LIB_TARGETS += $(BUILDDIR)/$(PROJECT).cmxs -endif -LIB_TARGET_EXTRAS = $(if $(STUB_LIB),$(BUILDDIR)/lib$(PROJECT)_stubs.a) \ - $(if $(XEN_LIB),$(BUILDDIR)/lib$(PROJECT)_stubs_xen.a) \ - $(BUILDDIR)/$(PROJECT).a -INSTALL_CMIS = $($(PROJECT).public:%=$(BUILDDIR)/$($(PROJECT).dir)/%.cmi) \ - $($(PROJECT).cmi_only:%=$(BUILDDIR)/$($(PROJECT).dir)/%.cmi) -INSTALL_CMTIS = $($(PROJECT).public:%=$(BUILDDIR)/$($(PROJECT).dir)/%.cmti) -INSTALL_CMTS = $($(PROJECT).public:%=$(BUILDDIR)/$($(PROJECT).dir)/%.cmt) -INSTALL_MLIS = $($(PROJECT).public:%=$($(PROJECT).dir)/%.mli) -INSTALL_HEADERS = $(wildcard $($(PROJECT).dir)/*.h) $($(PROJECT).extra_hs) -THREAD_FLAG = $(if $(filter yes,$($(PROJECT).threads)),-thread) -LINK_FLAGS = $(as_needed_flags) $($(PROJECT).link_flags) -OCAML_LINK_FLAGS=$(LINK_FLAGS:%=-cclib %) -OCAMLMKLIB_FLAGS_PLAIN=$($(PROJECT).link_flags) -OCAMLMKLIB_FLAGS=$(OCAMLMKLIB_FLAGS_PLAIN:%=-ldopt %) -OCAMLFIND_PACKAGE_FLAGS=$(patsubst %,-package %,$($(PROJECT).deps)) \ - $(patsubst %,-thread -package threads,$(THREAD_FLAG)) \ - $(OCAMLFIND_BISECT_FLAGS) -$(BUILDDIR)/%.cmxa: $$(NATIVE_OBJECTS) - $(OCAMLFIND) opt -a -linkall $(OCAMLFLAGS) $(THREAD_FLAG) $(OCAMLFIND_PACKAGE_FLAGS) $(CMXA_OPTS) -o $@ $(NATIVE_OBJECTS) $(OCAML_LINK_FLAGS) - -$(BUILDDIR)/dll%_stubs$(EXTDLL): $$(C_OBJECTS) - $(OCAMLMKLIB) -o $(BUILDDIR)/$*_stubs $^ $(OCAMLMKLIB_FLAGS) $(OCAMLMKLIB_EXTRA_FLAGS) - -$(BUILDDIR)/dll%_stubs_xen$(EXTDLL): $$(XEN_OBJECTS) - $(OCAMLMKLIB) -o $(BUILDDIR)/$*_stubs_xen $^ $(OCAMLMKLIB_FLAGS) $(OCAMLMKLIB_EXTRA_FLAGS) - -$(BUILDDIR)/%.cmxs : $$(NATIVE_OBJECTS) $(C_OBJECTS) - $(OCAMLFIND) opt -shared -linkall $(OCAMLFLAGS) $(THREAD_FLAG) $(OCAMLFIND_PACKAGE_FLAGS) -o $@ $(NATIVE_OBJECTS) $(C_OBJECTS) $(OCAML_LINK_FLAGS) - -$(BUILDDIR)/%.cma: $$(BYTE_OBJECTS) - $(OCAMLFIND) ocamlc -a -linkall $(OCAMLFLAGS) $(THREAD_FLAG) $(CMA_OPTS) $(OCAMLFIND_PACKAGE_FLAGS) -o $@ $(BYTE_OBJECTS) $(OCAML_LINK_FLAGS) - -$(BUILDDIR)/%.cmo : %.ml - @mkdir -p $(@D) - $(OCAMLFIND) ocamlc $(OCAMLFIND_PACKAGE_FLAGS) $(OCAMLFLAGS) $(THREAD_FLAG) $(CMO_OPTS) -c -o $@ $(OCAMLINCLUDES) $< - -$(BUILDDIR)/%.cmx : %.ml - @mkdir -p $(@D) - $(OCAMLFIND) opt -bin-annot -c -o $@ $(OCAMLFIND_PACKAGE_FLAGS) $(OCAMLFLAGS) $(THREAD_FLAG) $(OCAMLFIND_PACKAGE_FLAGS) $(CMX_OPTS) $(OCAMLINCLUDES) $(filter %.ml,$<) - -$(BUILDDIR)/%.o : %.c - @mkdir -p $(@D) - cd $(@D) && $(OCAMLFIND) ocamlc -c $(OCAMLFIND_PACKAGE_FLAGS) $(CFLAGS:%=-ccopt %) -o $(@F) $(OCAMLFLAGS) $(realpath $<) - -$(BUILDDIR)/xen/%.o : %.c - @mkdir -p $(@D) - cd $(@D) && $(OCAMLFIND) ocamlc -c $(OCAMLFIND_PACKAGE_FLAGS) $(XEN_CFLAGS:%=-ccopt %) -o $(@F) $(OCAMLFLAGS) $(realpath $<) - -$(BUILDDIR)/%.cmi : %.mli - @mkdir -p $(@D) -ifeq ($(BEST),native) - $(OCAMLFIND) ocamlopt -bin-annot -c -o $@ $(OCAMLFIND_PACKAGE_FLAGS) $(CMI_OPTS) $(OCAMLFLAGS) $(OCAMLINCLUDES) $< -else - $(OCAMLFIND) ocamlc -bin-annot -c -o $@ $(OCAMLFIND_PACKAGE_FLAGS) $(CMI_OPTS) $(OCAMLFLAGS) $(OCAMLINCLUDES) $< -endif - -$(BUILDDIR)/%.native : $$(NATIVE_OBJECTS) $$(C_OBJECTS) - $(OCAMLFIND) opt -I $(BUILDDIR) -linkpkg $(OCAMLFLAGS) $(THREAD_FLAG) $(OCAMLFIND_PACKAGE_FLAGS) $(LOCAL_CMXAS) -o $@ $(NATIVE_OBJECTS) $(C_OBJECTS) $(OCAML_LINK_FLAGS) - -$(BUILDDIR)/%.byte : $$(BYTE_OBJECTS) $$(C_OBJECTS) - $(OCAMLFIND) ocamlc -custom -I $(BUILDDIR) -linkpkg $(OCAMLFLAGS) $(THREAD_FLAG) $(OCAMLFIND_PACKAGE_FLAGS) $(LOCAL_CMAS) -o $@ $(BYTE_OBJECTS) $(C_OBJECTS) $(OCAML_LINK_FLAGS) diff --git a/Makefile.tests b/Makefile.tests deleted file mode 100644 index 21dfe228b..000000000 --- a/Makefile.tests +++ /dev/null @@ -1,1396 +0,0 @@ -# -*- Makefile -*- - -VPATH += tests - -CFLAGS += -I "$(CURDIR)/src/ctypes" -I "$(CURDIR)/tests" - -CC=$(shell ocamlc -config | sed -n '/native_c_compiler/{ s/[^:]*://; p;}') - -# tests-common subproject -tests-common.dir = tests/tests-common -tests-common.subproject_deps = ctypes cstubs \ - ctypes-foreign -tests-common.install = no -tests-common.install_native_objects = yes - -tests-common: PROJECT=tests-common -tests-common: $$(LIB_TARGETS) - - -test-raw.dir = tests/test-raw -test-raw.threads = yes -test-raw.deps = bigarray-compat oUnit str integers -test-raw.subproject_deps = ctypes ctypes-foreign -test-raw: PROJECT=test-raw -test-raw: $$(BEST_TARGET) - -test-pointers-stubs.dir = tests/test-pointers/stubs -test-pointers-stubs.threads = yes -test-pointers-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-pointers-stubs: PROJECT=test-pointers-stubs -test-pointers-stubs: $$(LIB_TARGETS) - -test-pointers-stub-generator.dir = tests/test-pointers/stub-generator -test-pointers-stub-generator.threads = yes -test-pointers-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-pointers-stubs tests-common -test-pointers-stub-generator.deps = str bigarray-compat integers -test-pointers-stub-generator: PROJECT=test-pointers-stub-generator -test-pointers-stub-generator: $$(BEST_TARGET) - -test-pointers.dir = tests/test-pointers -test-pointers.threads = yes -test-pointers.deps = str bigarray-compat oUnit integers -test-pointers.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-pointers-stubs -test-pointers.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-pointers: PROJECT=test-pointers -test-pointers: $$(BEST_TARGET) - -test-pointers-generated= \ - tests/test-pointers/generated_bindings.ml \ - tests/test-pointers/generated_stubs.c - -test-pointers-generated: $(test-pointers-generated) - -tests/test-pointers/generated_stubs.c: $(BUILDDIR)/test-pointers-stub-generator.$(BEST) - $< --c-file $@ -tests/test-pointers/generated_bindings.ml: $(BUILDDIR)/test-pointers-stub-generator.$(BEST) - $< --ml-file $@ - -test-integers-stubs.dir = tests/test-integers/stubs -test-integers-stubs.threads = yes -test-integers-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-integers-stubs: PROJECT=test-integers-stubs -test-integers-stubs: $$(LIB_TARGETS) - -test-integers-stub-generator.dir = tests/test-integers/stub-generator -test-integers-stub-generator.threads = yes -test-integers-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-integers-stubs tests-common -test-integers-stub-generator.deps = str bigarray-compat integers -test-integers-stub-generator: PROJECT=test-integers-stub-generator -test-integers-stub-generator: $$(BEST_TARGET) - -test-integers.dir = tests/test-integers -test-integers.threads = yes -test-integers.deps = str bigarray-compat oUnit integers -test-integers.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-integers-stubs -test-integers.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-integers: PROJECT=test-integers -test-integers: $$(BEST_TARGET) - -test-integers-generated= \ - tests/test-integers/generated_bindings.ml \ - tests/test-integers/generated_stubs.c - -test-integers-generated: $(test-integers-generated) - -tests/test-integers/generated_stubs.c: $(BUILDDIR)/test-integers-stub-generator.$(BEST) - $< --c-file $@ -tests/test-integers/generated_bindings.ml: $(BUILDDIR)/test-integers-stub-generator.$(BEST) - $< --ml-file $@ - -test-variadic-stubs.dir = tests/test-variadic/stubs -test-variadic-stubs.threads = yes -test-variadic-stubs.deps = integers -test-variadic-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-variadic-stubs: PROJECT=test-variadic-stubs -test-variadic-stubs: $$(LIB_TARGETS) - -test-variadic-stub-generator.dir = tests/test-variadic/stub-generator -test-variadic-stub-generator.threads = yes -test-variadic-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-variadic-stubs tests-common -test-variadic-stub-generator.deps = str bigarray-compat integers -test-variadic-stub-generator: PROJECT=test-variadic-stub-generator -test-variadic-stub-generator: $$(BEST_TARGET) - -test-variadic.dir = tests/test-variadic -test-variadic.threads = yes -test-variadic.deps = str bigarray-compat oUnit integers -test-variadic.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-variadic-stubs -test-variadic.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-variadic: PROJECT=test-variadic -test-variadic: $$(BEST_TARGET) - -test-variadic-generated= \ - tests/test-variadic/generated_bindings.ml \ - tests/test-variadic/generated_stubs.c - -test-variadic-generated: $(test-variadic-generated) - -tests/test-variadic/generated_stubs.c: $(BUILDDIR)/test-variadic-stub-generator.$(BEST) - $< --c-file $@ -tests/test-variadic/generated_bindings.ml: $(BUILDDIR)/test-variadic-stub-generator.$(BEST) - $< --ml-file $@ - - -test-builtins-stubs.dir = tests/test-builtins/stubs -test-builtins-stubs.threads = yes -test-builtins-stubs.subproject_deps = ctypes tests-common -test-builtins-stubs: PROJECT=test-builtins-stubs -test-builtins-stubs: $$(LIB_TARGETS) - -test-builtins-stub-generator.dir = tests/test-builtins/stub-generator -test-builtins-stub-generator.threads = yes -test-builtins-stub-generator.subproject_deps = ctypes cstubs \ - test-builtins-stubs ctypes-foreign tests-common -test-builtins-stub-generator.deps = str bigarray-compat integers -test-builtins-stub-generator: PROJECT=test-builtins-stub-generator -test-builtins-stub-generator: $$(BEST_TARGET) - -test-builtins.dir = tests/test-builtins -test-builtins.threads = yes -test-builtins.deps = str bigarray-compat oUnit integers -test-builtins.subproject_deps = ctypes cstubs test-builtins-stubs \ - ctypes-foreign tests-common -test-builtins.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-builtins: PROJECT=test-builtins -test-builtins: $$(BEST_TARGET) - -test-builtins-generated= \ - tests/test-builtins/generated_bindings.ml \ - tests/test-builtins/generated_stubs.c - -test-builtins-generated: $(test-builtins-generated) - -tests/test-builtins/generated_stubs.c: $(BUILDDIR)/test-builtins-stub-generator.$(BEST) - $< --c-file $@ -tests/test-builtins/generated_bindings.ml: $(BUILDDIR)/test-builtins-stub-generator.$(BEST) - $< --ml-file $@ - - -test-macros-stubs.dir = tests/test-macros/stubs -test-macros-stubs.threads = yes -test-macros-stubs.subproject_deps = ctypes tests-common -test-macros-stubs: PROJECT=test-macros-stubs -test-macros-stubs: $$(LIB_TARGETS) - -test-macros-stub-generator.dir = tests/test-macros/stub-generator -test-macros-stub-generator.threads = yes -test-macros-stub-generator.subproject_deps = ctypes cstubs \ - test-macros-stubs ctypes-foreign tests-common -test-macros-stub-generator.deps = str bigarray-compat integers -test-macros-stub-generator: PROJECT=test-macros-stub-generator -test-macros-stub-generator: $$(BEST_TARGET) - -test-macros.dir = tests/test-macros -test-macros.threads = yes -test-macros.deps = str bigarray-compat oUnit integers -test-macros.subproject_deps = ctypes cstubs test-macros-stubs \ - ctypes-foreign tests-common -test-macros.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-macros: PROJECT=test-macros -test-macros: $$(BEST_TARGET) - -test-macros-generated= \ - tests/test-macros/generated_bindings.ml \ - tests/test-macros/generated_stubs.c - -test-macros-generated: $(test-macros-generated) - -tests/test-macros/generated_stubs.c: $(BUILDDIR)/test-macros-stub-generator.$(BEST) - $< --c-file $@ -tests/test-macros/generated_bindings.ml: $(BUILDDIR)/test-macros-stub-generator.$(BEST) - $< --ml-file $@ - - -test-higher_order-stubs.dir = tests/test-higher_order/stubs -test-higher_order-stubs.threads = yes -test-higher_order-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-higher_order-stubs: PROJECT=test-higher_order-stubs -test-higher_order-stubs: $$(LIB_TARGETS) - -test-higher_order-stub-generator.dir = tests/test-higher_order/stub-generator -test-higher_order-stub-generator.threads = yes -test-higher_order-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-higher_order-stubs tests-common -test-higher_order-stub-generator.deps = str bigarray-compat integers -test-higher_order-stub-generator: PROJECT=test-higher_order-stub-generator -test-higher_order-stub-generator: $$(BEST_TARGET) - -test-higher_order.dir = tests/test-higher_order -test-higher_order.threads = yes -test-higher_order.deps = str bigarray-compat oUnit integers -test-higher_order.subproject_deps = ctypes ctypes-foreign \ - cstubs test-higher_order-stubs tests-common -test-higher_order.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-higher_order: PROJECT=test-higher_order -test-higher_order: $$(BEST_TARGET) - -test-higher_order-generated= \ - tests/test-higher_order/generated_bindings.ml \ - tests/test-higher_order/generated_stubs.c - -test-higher_order-generated: $(test-higher_order-generated) - -tests/test-higher_order/generated_stubs.c: $(BUILDDIR)/test-higher_order-stub-generator.$(BEST) - $< --c-file $@ -tests/test-higher_order/generated_bindings.ml: $(BUILDDIR)/test-higher_order-stub-generator.$(BEST) - $< --ml-file $@ - -test-enums-struct-stubs.dir = tests/test-enums/struct-stubs -test-enums-struct-stubs.threads = yes -test-enums-struct-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-enums-struct-stubs: PROJECT=test-enums-struct-stubs -test-enums-struct-stubs: $$(LIB_TARGETS) - -test-enums-stubs.dir = tests/test-enums/stubs -test-enums-stubs.threads = yes -test-enums-stubs.extra_mls = generated_struct_bindings.ml -test-enums-stubs.subproject_deps = ctypes \ - test-enums-struct-stubs \ - test-enums-struct-stubs-generator \ - ctypes-foreign tests-common -test-enums-stubs: PROJECT=test-enums-stubs -test-enums-stubs: $$(LIB_TARGETS) - -test-enums-stub-generator.dir = tests/test-enums/stub-generator -test-enums-stub-generator.threads = yes -test-enums-stub-generator.subproject_deps = ctypes cstubs \ - test-enums-struct-stubs \ - ctypes-foreign test-enums-stubs tests-common -test-enums-stub-generator.deps = str bigarray-compat integers -test-enums-stub-generator: PROJECT=test-enums-stub-generator -test-enums-stub-generator: $$(BEST_TARGET) - -test-enums-struct-stub-generator.dir = tests/test-enums/struct-stub-generator -test-enums-struct-stub-generator.threads = yes -test-enums-struct-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-enums-struct-stubs tests-common -test-enums-struct-stub-generator.deps = str bigarray-compat integers -test-enums-struct-stub-generator: PROJECT=test-enums-struct-stub-generator -test-enums-struct-stub-generator: $$(BEST_TARGET) - -test-enums.dir = tests/test-enums -test-enums.threads = yes -test-enums.deps = str bigarray-compat oUnit integers -test-enums.subproject_deps = ctypes ctypes-foreign \ - cstubs test-enums-struct-stubs test-enums-stubs tests-common -test-enums.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-enums: PROJECT=test-enums -test-enums: $$(BEST_TARGET) - -test-enums-structs-generated= \ - tests/test-enums/stubs/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-enums/generated_struct_stubs.c - -test-enums-structs-generated: $(test-enums-structs-generated) - -test-enums-generated= \ - tests/test-enums/generated_bindings.ml \ - tests/test-enums/generated_stubs.c \ - -test-enums-generated: $(test-enums-generated) - -tests/test-enums/generated_stubs.c: $(BUILDDIR)/test-enums-stub-generator.$(BEST) - $< --c-file $@ -tests/test-enums/generated_bindings.ml: $(BUILDDIR)/test-enums-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-enums/stubs/generated_struct_bindings.ml: $(BUILDDIR)/test-enums-ml-struct-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-enums-ml-struct-stub-generator.$(BEST): $(BUILDDIR)/tests/test-enums/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-enums/generated_struct_stubs.c: $(BUILDDIR)/test-enums-struct-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-structs-stubs.dir = tests/test-structs/stubs -test-structs-stubs.threads = yes -test-structs-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-structs-stubs: PROJECT=test-structs-stubs -test-structs-stubs: $$(LIB_TARGETS) - -test-structs-stub-generator.dir = tests/test-structs/stub-generator -test-structs-stub-generator.threads = yes -test-structs-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-structs-stubs tests-common -test-structs-stub-generator.deps = str bigarray-compat integers -test-structs-stub-generator: PROJECT=test-structs-stub-generator -test-structs-stub-generator: $$(BEST_TARGET) - -test-structs.dir = tests/test-structs -test-structs.threads = yes -test-structs.deps = str bigarray-compat oUnit integers -test-structs.subproject_deps = ctypes ctypes-foreign \ - cstubs test-structs-stubs tests-common -test-structs.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-structs: PROJECT=test-structs -test-structs: $$(BEST_TARGET) - -test-structs-generated= \ - tests/test-structs/generated_bindings.ml \ - tests/test-structs/generated_stubs.c \ - tests/test-structs/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-structs/generated_struct_stubs.c - -test-structs-generated: $(test-structs-generated) - -tests/test-structs/generated_stubs.c: $(BUILDDIR)/test-structs-stub-generator.$(BEST) - $< --c-file $@ -tests/test-structs/generated_bindings.ml: $(BUILDDIR)/test-structs-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-structs/generated_struct_bindings.ml: $(BUILDDIR)/test-structs-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-structs-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-structs/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-structs/generated_struct_stubs.c: $(BUILDDIR)/test-structs-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-constants-stubs.dir = tests/test-constants/stubs -test-constants-stubs.threads = yes -test-constants-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-constants-stubs: PROJECT=test-constants-stubs -test-constants-stubs: $$(LIB_TARGETS) - -test-constants-stub-generator.dir = tests/test-constants/stub-generator -test-constants-stub-generator.threads = yes -test-constants-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-constants-stubs tests-common -test-constants-stub-generator.deps = str bigarray-compat integers -test-constants-stub-generator: PROJECT=test-constants-stub-generator -test-constants-stub-generator: $$(BEST_TARGET) - -test-constants.dir = tests/test-constants -test-constants.threads = yes -test-constants.deps = str bigarray-compat oUnit integers -test-constants.subproject_deps = ctypes ctypes-foreign \ - cstubs test-constants-stubs tests-common -test-constants.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-constants: PROJECT=test-constants -test-constants: $$(BEST_TARGET) - -test-constants-generated= \ - tests/test-constants/generated_bindings.ml \ - tests/test-constants/generated_stubs.c \ - tests/test-constants/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-constants/generated_struct_stubs.c - -test-constants-generated: $(test-constants-generated) - -tests/test-constants/generated_stubs.c: $(BUILDDIR)/test-constants-stub-generator.$(BEST) - $< --c-file $@ -tests/test-constants/generated_bindings.ml: $(BUILDDIR)/test-constants-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-constants/generated_struct_bindings.ml: $(BUILDDIR)/test-constants-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-constants-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-constants/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-constants/generated_struct_stubs.c: $(BUILDDIR)/test-constants-stub-generator.$(BEST) - $< --c-struct-file $@ - - -test-finalisers.dir = tests/test-finalisers -test-finalisers.threads = yes -test-finalisers.deps = str bigarray-compat oUnit integers -test-finalisers.subproject_deps = ctypes ctypes-foreign -test-finalisers: PROJECT=test-finalisers -test-finalisers: $$(BEST_TARGET) - -test-cstdlib-stubs.dir = tests/test-cstdlib/stubs -test-cstdlib-stubs.threads = yes -test-cstdlib-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-cstdlib-stubs: PROJECT=test-cstdlib-stubs -test-cstdlib-stubs: $$(LIB_TARGETS) - -test-cstdlib-stub-generator.dir = tests/test-cstdlib/stub-generator -test-cstdlib-stub-generator.threads = yes -test-cstdlib-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-cstdlib-stubs tests-common -test-cstdlib-stub-generator.deps = str bigarray-compat integers -test-cstdlib-stub-generator: PROJECT=test-cstdlib-stub-generator -test-cstdlib-stub-generator: $$(BEST_TARGET) - -test-cstdlib.dir = tests/test-cstdlib -test-cstdlib.threads = yes -test-cstdlib.deps = str bigarray-compat oUnit integers -test-cstdlib.subproject_deps = ctypes ctypes-foreign \ - cstubs test-cstdlib-stubs tests-common -test-cstdlib.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-cstdlib: PROJECT=test-cstdlib -test-cstdlib: $$(BEST_TARGET) - -test-cstdlib-generated= \ - tests/test-cstdlib/generated_bindings.ml \ - tests/test-cstdlib/generated_stubs.c - -test-cstdlib-generated: $(test-cstdlib-generated) - -tests/test-cstdlib/generated_stubs.c: $(BUILDDIR)/test-cstdlib-stub-generator.$(BEST) - $< --c-file $@ -tests/test-cstdlib/generated_bindings.ml: $(BUILDDIR)/test-cstdlib-stub-generator.$(BEST) - $< --ml-file $@ - -test-sizeof.dir = tests/test-sizeof -test-sizeof.threads = yes -test-sizeof.deps = str bigarray-compat oUnit integers -test-sizeof.subproject_deps = ctypes ctypes-foreign -test-sizeof: PROJECT=test-sizeof -test-sizeof: $$(BEST_TARGET) - -test-foreign_values-stubs.dir = tests/test-foreign_values/stubs -test-foreign_values-stubs.threads = yes -test-foreign_values-stubs.deps = bigarray-compat -test-foreign_values-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-foreign_values-stubs: PROJECT=test-foreign_values-stubs -test-foreign_values-stubs: $$(LIB_TARGETS) - -test-foreign_values-stub-generator.dir = tests/test-foreign_values/stub-generator -test-foreign_values-stub-generator.threads = yes -test-foreign_values-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-foreign_values-stubs tests-common -test-foreign_values-stub-generator.deps = str bigarray-compat integers -test-foreign_values-stub-generator: PROJECT=test-foreign_values-stub-generator -test-foreign_values-stub-generator: $$(BEST_TARGET) - -test-foreign_values.dir = tests/test-foreign_values -test-foreign_values.threads = yes -test-foreign_values.deps = str bigarray-compat oUnit integers -test-foreign_values.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-foreign_values-stubs -test-foreign_values.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-foreign_values: PROJECT=test-foreign_values -test-foreign_values: $$(BEST_TARGET) - -test-foreign_values-generated= \ - tests/test-foreign_values/generated_bindings.ml \ - tests/test-foreign_values/generated_stubs.c - -test-foreign_values-generated: $(test-foreign_values-generated) - -tests/test-foreign_values/generated_stubs.c: $(BUILDDIR)/test-foreign_values-stub-generator.$(BEST) - $< --c-file $@ -tests/test-foreign_values/generated_bindings.ml: $(BUILDDIR)/test-foreign_values-stub-generator.$(BEST) - $< --ml-file $@ - -test-unions-stubs.dir = tests/test-unions/stubs -test-unions-stubs.threads = yes -test-unions-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-unions-stubs: PROJECT=test-unions-stubs -test-unions-stubs: $$(LIB_TARGETS) - -test-unions-stub-generator.dir = tests/test-unions/stub-generator -test-unions-stub-generator.threads = yes -test-unions-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-unions-stubs tests-common -test-unions-stub-generator.deps = str bigarray-compat integers -test-unions-stub-generator: PROJECT=test-unions-stub-generator -test-unions-stub-generator: $$(BEST_TARGET) - -test-unions.dir = tests/test-unions -test-unions.threads = yes -test-unions.deps = str bigarray-compat oUnit integers -test-unions.subproject_deps = ctypes ctypes-foreign \ - cstubs test-unions-stubs tests-common -test-unions.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-unions: PROJECT=test-unions -test-unions: $$(BEST_TARGET) - -test-unions-generated= \ - tests/test-unions/generated_bindings.ml \ - tests/test-unions/generated_stubs.c \ - tests/test-unions/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-unions/generated_struct_stubs.c - -test-unions-generated: $(test-unions-generated) - -tests/test-unions/generated_stubs.c: $(BUILDDIR)/test-unions-stub-generator.$(BEST) - $< --c-file $@ -tests/test-unions/generated_bindings.ml: $(BUILDDIR)/test-unions-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-unions/generated_struct_bindings.ml: $(BUILDDIR)/test-unions-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-unions-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-unions/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-unions/generated_struct_stubs.c: $(BUILDDIR)/test-unions-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-custom_ops.dir = tests/test-custom_ops -test-custom_ops.threads = yes -test-custom_ops.deps = str bigarray-compat oUnit integers -test-custom_ops.subproject_deps = ctypes ctypes-foreign -test-custom_ops: PROJECT=test-custom_ops -test-custom_ops: $$(BEST_TARGET) - -test-arrays-stubs.dir = tests/test-arrays/stubs -test-arrays-stubs.threads = yes -test-arrays-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-arrays-stubs: PROJECT=test-arrays-stubs -test-arrays-stubs: $$(LIB_TARGETS) - -test-arrays-stub-generator.dir = tests/test-arrays/stub-generator -test-arrays-stub-generator.threads = yes -test-arrays-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-arrays-stubs tests-common -test-arrays-stub-generator.deps = str bigarray-compat integers -test-arrays-stub-generator: PROJECT=test-arrays-stub-generator -test-arrays-stub-generator: $$(BEST_TARGET) - -test-arrays.dir = tests/test-arrays -test-arrays.threads = yes -test-arrays.deps = str bigarray-compat oUnit integers -test-arrays.subproject_deps = ctypes ctypes-foreign \ - cstubs test-arrays-stubs tests-common -test-arrays.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-arrays: PROJECT=test-arrays -test-arrays: $$(BEST_TARGET) - -test-arrays-generated= \ - tests/test-arrays/generated_bindings.ml \ - tests/test-arrays/generated_stubs.c - -test-arrays-generated: $(test-arrays-generated) - -tests/test-arrays/generated_stubs.c: $(BUILDDIR)/test-arrays-stub-generator.$(BEST) - $< --c-file $@ -tests/test-arrays/generated_bindings.ml: $(BUILDDIR)/test-arrays-stub-generator.$(BEST) - $< --ml-file $@ - -test-foreign-errno.dir = tests/test-foreign-errno -test-foreign-errno.threads = yes -test-foreign-errno.deps = str bigarray-compat oUnit integers -test-foreign-errno.subproject_deps = ctypes ctypes-foreign -test-foreign-errno: PROJECT=test-foreign-errno -test-foreign-errno: $$(BEST_TARGET) - -test-passable.dir = tests/test-passable -test-passable.threads = yes -test-passable.deps = str bigarray-compat oUnit integers -test-passable.subproject_deps = ctypes ctypes-foreign cstubs -test-passable: PROJECT=test-passable -test-passable: $$(BEST_TARGET) - -test-alignment.dir = tests/test-alignment -test-alignment.threads = yes -test-alignment.deps = str bigarray-compat oUnit integers -test-alignment.subproject_deps = ctypes ctypes-foreign -test-alignment: PROJECT=test-alignment -test-alignment: $$(BEST_TARGET) - -test-views-stubs.dir = tests/test-views/stubs -test-views-stubs.threads = yes -test-views-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-views-stubs: PROJECT=test-views-stubs -test-views-stubs: $$(LIB_TARGETS) - -test-views-stub-generator.dir = tests/test-views/stub-generator -test-views-stub-generator.threads = yes -test-views-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-views-stubs tests-common -test-views-stub-generator.deps = str bigarray-compat integers -test-views-stub-generator: PROJECT=test-views-stub-generator -test-views-stub-generator: $$(BEST_TARGET) - -test-views.dir = tests/test-views -test-views.threads = yes -test-views.deps = str bigarray-compat oUnit integers -test-views.subproject_deps = ctypes ctypes-foreign cstubs test-views-stubs tests-common -test-views.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-views: PROJECT=test-views -test-views: $$(BEST_TARGET) - -test-views-generated= \ - tests/test-views/generated_bindings.ml \ - tests/test-views/generated_stubs.c - -test-views-generated: $(test-views-generated) - -tests/test-views/generated_stubs.c: $(BUILDDIR)/test-views-stub-generator.$(BEST) - $< --c-file $@ -tests/test-views/generated_bindings.ml: $(BUILDDIR)/test-views-stub-generator.$(BEST) - $< --ml-file $@ - -test-oo_style-stubs.dir = tests/test-oo_style/stubs -test-oo_style-stubs.threads = yes -test-oo_style-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-oo_style-stubs: PROJECT=test-oo_style-stubs -test-oo_style-stubs: $$(LIB_TARGETS) - -test-oo_style-stub-generator.dir = tests/test-oo_style/stub-generator -test-oo_style-stub-generator.threads = yes -test-oo_style-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-oo_style-stubs tests-common -test-oo_style-stub-generator.deps = str bigarray-compat integers -test-oo_style-stub-generator: PROJECT=test-oo_style-stub-generator -test-oo_style-stub-generator: $$(BEST_TARGET) - -test-oo_style.dir = tests/test-oo_style -test-oo_style.threads = yes -test-oo_style.deps = str bigarray-compat oUnit integers -test-oo_style.subproject_deps = ctypes ctypes-foreign \ - cstubs test-oo_style-stubs tests-common -test-oo_style.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-oo_style: PROJECT=test-oo_style -test-oo_style: $$(BEST_TARGET) - -test-oo_style-generated= \ - tests/test-oo_style/generated_bindings.ml \ - tests/test-oo_style/generated_stubs.c - -test-oo_style-generated: $(test-oo_style-generated) - -tests/test-oo_style/generated_stubs.c: $(BUILDDIR)/test-oo_style-stub-generator.$(BEST) - $< --c-file $@ -tests/test-oo_style/generated_bindings.ml: $(BUILDDIR)/test-oo_style-stub-generator.$(BEST) - $< --ml-file $@ - -test-marshal.dir = tests/test-marshal -test-marshal.threads = yes -test-marshal.deps = str bigarray-compat oUnit integers -test-marshal.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common -test-marshal.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-marshal: PROJECT=test-marshal -test-marshal: $$(BEST_TARGET) - -test-type_printing.dir = tests/test-type_printing -test-type_printing.threads = yes -test-type_printing.deps = str bigarray-compat oUnit integers -test-type_printing.subproject_deps = ctypes ctypes-foreign \ - cstubs test-type_printing-stubs tests-common -test-type_printing.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-type_printing: PROJECT=test-type_printing -test-type_printing: $$(BEST_TARGET) - -test-type_printing-stubs.dir = tests/test-type_printing/stubs -test-type_printing-stubs.threads = yes -test-type_printing-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-type_printing-stubs: PROJECT=test-type_printing-stubs -test-type_printing-stubs: $$(LIB_TARGETS) - -test-type_printing-stub-generator.dir = tests/test-type_printing/stub-generator -test-type_printing-stub-generator.threads = yes -test-type_printing-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-type_printing-stubs tests-common -test-type_printing-stub-generator.deps = str bigarray-compat integers -test-type_printing-stub-generator: PROJECT=test-type_printing-stub-generator -test-type_printing-stub-generator: $$(BEST_TARGET) - -test-type_printing-generated= \ - tests/test-type_printing/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-type_printing/generated_struct_stubs.c - -test-type_printing-generated: $(test-type_printing-generated) - -tests/test-type_printing/generated_struct_bindings.ml: $(BUILDDIR)/test-type_printing-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-type_printing-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-type_printing/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-type_printing/generated_struct_stubs.c: $(BUILDDIR)/test-type_printing-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-value_printing-stubs.dir = tests/test-value_printing/stubs -test-value_printing-stubs.threads = yes -test-value_printing-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-value_printing-stubs: PROJECT=test-value_printing-stubs -test-value_printing-stubs: $$(LIB_TARGETS) - -test-value_printing-stub-generator.dir = tests/test-value_printing/stub-generator -test-value_printing-stub-generator.threads = yes -test-value_printing-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-value_printing-stubs tests-common -test-value_printing-stub-generator.deps = str bigarray-compat integers -test-value_printing-stub-generator: PROJECT=test-value_printing-stub-generator -test-value_printing-stub-generator: $$(BEST_TARGET) - -test-value_printing.dir = tests/test-value_printing -test-value_printing.threads = yes -test-value_printing.deps = str bigarray-compat oUnit integers -test-value_printing.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-value_printing-stubs -test-value_printing.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-value_printing: PROJECT=test-value_printing -test-value_printing: $$(BEST_TARGET) - -test-value_printing-generated= \ - tests/test-value_printing/generated_bindings.ml \ - tests/test-value_printing/generated_stubs.c - -test-value_printing-generated: $(test-value_printing-generated) - -tests/test-value_printing/generated_stubs.c: $(BUILDDIR)/test-value_printing-stub-generator.$(BEST) - $< --c-file $@ -tests/test-value_printing/generated_bindings.ml: $(BUILDDIR)/test-value_printing-stub-generator.$(BEST) - $< --ml-file $@ - -test-complex-stubs.dir = tests/test-complex/stubs -test-complex-stubs.threads = yes -test-complex-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-complex-stubs: PROJECT=test-complex-stubs -test-complex-stubs: $$(LIB_TARGETS) - -test-complex-stub-generator.dir = tests/test-complex/stub-generator -test-complex-stub-generator.threads = yes -test-complex-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-complex-stubs tests-common -test-complex-stub-generator.deps = str bigarray-compat integers -test-complex-stub-generator: PROJECT=test-complex-stub-generator -test-complex-stub-generator: $$(BEST_TARGET) - -test-complex.dir = tests/test-complex -test-complex.threads = yes -test-complex.deps = str bigarray-compat oUnit integers -test-complex.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-complex-stubs -test-complex.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-complex: PROJECT=test-complex -test-complex: $$(BEST_TARGET) - -test-complex-generated= \ - tests/test-complex/generated_bindings.ml \ - tests/test-complex/generated_stubs.c - -test-complex-generated: $(test-complex-generated) - -tests/test-complex/generated_stubs.c: $(BUILDDIR)/test-complex-stub-generator.$(BEST) - $< --c-file $@ -tests/test-complex/generated_bindings.ml: $(BUILDDIR)/test-complex-stub-generator.$(BEST) - $< --ml-file $@ - -test-bools-stubs.dir = tests/test-bools/stubs -test-bools-stubs.threads = yes -test-bools-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-bools-stubs: PROJECT=test-bools-stubs -test-bools-stubs: $$(LIB_TARGETS) - -test-bools-stub-generator.dir = tests/test-bools/stub-generator -test-bools-stub-generator.threads = yes -test-bools-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-bools-stubs tests-common -test-bools-stub-generator.deps = str bigarray-compat integers -test-bools-stub-generator: PROJECT=test-bools-stub-generator -test-bools-stub-generator: $$(BEST_TARGET) - -test-bools.dir = tests/test-bools -test-bools.threads = yes -test-bools.deps = str bigarray-compat oUnit integers -test-bools.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-bools-stubs -test-bools.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-bools: PROJECT=test-bools -test-bools: $$(BEST_TARGET) - -test-bools-generated= \ - tests/test-bools/generated_bindings.ml \ - tests/test-bools/generated_stubs.c - -test-bools-generated: $(test-bools-generated) - -tests/test-bools/generated_stubs.c: $(BUILDDIR)/test-bools-stub-generator.$(BEST) - $< --c-file $@ -tests/test-bools/generated_bindings.ml: $(BUILDDIR)/test-bools-stub-generator.$(BEST) - $< --ml-file $@ - -test-callback_lifetime-stubs.dir = tests/test-callback_lifetime/stubs -test-callback_lifetime-stubs.threads = yes -test-callback_lifetime-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-callback_lifetime-stubs: PROJECT=test-callback_lifetime-stubs -test-callback_lifetime-stubs: $$(LIB_TARGETS) - -test-callback_lifetime-stub-generator.dir = tests/test-callback_lifetime/stub-generator -test-callback_lifetime-stub-generator.threads = yes -test-callback_lifetime-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-callback_lifetime-stubs tests-common -test-callback_lifetime-stub-generator.deps = str bigarray-compat integers -test-callback_lifetime-stub-generator: PROJECT=test-callback_lifetime-stub-generator -test-callback_lifetime-stub-generator: $$(BEST_TARGET) - -test-callback_lifetime.dir = tests/test-callback_lifetime -test-callback_lifetime.threads = yes -test-callback_lifetime.deps = str bigarray-compat oUnit integers -test-callback_lifetime.subproject_deps = ctypes ctypes-foreign \ - cstubs test-callback_lifetime-stubs tests-common -test-callback_lifetime.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-callback_lifetime: PROJECT=test-callback_lifetime -test-callback_lifetime: $$(BEST_TARGET) - -test-callback_lifetime-generated= \ - tests/test-callback_lifetime/generated_bindings.ml \ - tests/test-callback_lifetime/generated_stubs.c - -test-callback_lifetime-generated: $(test-callback_lifetime-generated) - -tests/test-callback_lifetime/generated_stubs.c: $(BUILDDIR)/test-callback_lifetime-stub-generator.$(BEST) - $< --c-file $@ -tests/test-callback_lifetime/generated_bindings.ml: $(BUILDDIR)/test-callback_lifetime-stub-generator.$(BEST) - $< --ml-file $@ - -test-lifetime-stubs.dir = tests/test-lifetime/stubs -test-lifetime-stubs.threads = yes -test-lifetime-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-lifetime-stubs: PROJECT=test-lifetime-stubs -test-lifetime-stubs: $$(LIB_TARGETS) - -test-lifetime-stub-generator.dir = tests/test-lifetime/stub-generator -test-lifetime-stub-generator.threads = yes -test-lifetime-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-lifetime-stubs tests-common -test-lifetime-stub-generator.deps = str bigarray-compat integers -test-lifetime-stub-generator: PROJECT=test-lifetime-stub-generator -test-lifetime-stub-generator: $$(BEST_TARGET) - -test-lifetime.dir = tests/test-lifetime -test-lifetime.threads = yes -test-lifetime.deps = str bigarray-compat oUnit integers -test-lifetime.subproject_deps = ctypes ctypes-foreign \ - cstubs test-lifetime-stubs tests-common -test-lifetime.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-lifetime: PROJECT=test-lifetime -test-lifetime: $$(BEST_TARGET) - -test-lifetime-generated= \ - tests/test-lifetime/generated_bindings.ml \ - tests/test-lifetime/generated_stubs.c - -test-lifetime-generated: $(test-lifetime-generated) - -tests/test-lifetime/generated_stubs.c: $(BUILDDIR)/test-lifetime-stub-generator.$(BEST) - $< --c-file $@ -tests/test-lifetime/generated_bindings.ml: $(BUILDDIR)/test-lifetime-stub-generator.$(BEST) - $< --ml-file $@ - -test-stubs.dir = tests/test-stubs -test-stubs.threads = yes -test-stubs.deps = str bigarray-compat oUnit integers -test-stubs.subproject_deps = ctypes ctypes-foreign -test-stubs: PROJECT=test-stubs -test-stubs: $$(BEST_TARGET) - -test-bigarrays-stubs.dir = tests/test-bigarrays/stubs -test-bigarrays-stubs.threads = yes -test-bigarrays-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-bigarrays-stubs: PROJECT=test-bigarrays-stubs -test-bigarrays-stubs: $$(LIB_TARGETS) - -test-bigarrays-stub-generator.dir = tests/test-bigarrays/stub-generator -test-bigarrays-stub-generator.threads = yes -test-bigarrays-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-bigarrays-stubs tests-common -test-bigarrays-stub-generator.deps = str bigarray-compat integers -test-bigarrays-stub-generator: PROJECT=test-bigarrays-stub-generator -test-bigarrays-stub-generator: $$(BEST_TARGET) - -test-bigarrays.dir = tests/test-bigarrays -test-bigarrays.threads = yes -test-bigarrays.deps = str bigarray-compat oUnit integers -test-bigarrays.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-bigarrays-stubs -test-bigarrays.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-bigarrays: PROJECT=test-bigarrays -test-bigarrays: $$(BEST_TARGET) - -test-bigarrays-generated= \ - tests/test-bigarrays/generated_bindings.ml \ - tests/test-bigarrays/generated_stubs.c - -test-bigarrays-generated: $(test-bigarrays-generated) - -tests/test-bigarrays/generated_stubs.c: $(BUILDDIR)/test-bigarrays-stub-generator.$(BEST) - $< --c-file $@ -tests/test-bigarrays/generated_bindings.ml: $(BUILDDIR)/test-bigarrays-stub-generator.$(BEST) - $< --ml-file $@ - -test-coercions-stubs.dir = tests/test-coercions/stubs -test-coercions-stubs.threads = yes -test-coercions-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-coercions-stubs: PROJECT=test-coercions-stubs -test-coercions-stubs: $$(LIB_TARGETS) - -test-coercions-stub-generator.dir = tests/test-coercions/stub-generator -test-coercions-stub-generator.threads = yes -test-coercions-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-coercions-stubs tests-common -test-coercions-stub-generator.deps = str bigarray-compat integers -test-coercions-stub-generator: PROJECT=test-coercions-stub-generator -test-coercions-stub-generator: $$(BEST_TARGET) - -test-coercions.dir = tests/test-coercions -test-coercions.threads = yes -test-coercions.deps = str bigarray-compat oUnit integers -test-coercions.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-coercions-stubs -test-coercions.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-coercions: PROJECT=test-coercions -test-coercions: $$(BEST_TARGET) - -test-coercions-generated= \ - tests/test-coercions/generated_bindings.ml \ - tests/test-coercions/generated_stubs.c - -test-coercions-generated: $(test-coercions-generated) - -tests/test-coercions/generated_stubs.c: $(BUILDDIR)/test-coercions-stub-generator.$(BEST) - $< --c-file $@ -tests/test-coercions/generated_bindings.ml: $(BUILDDIR)/test-coercions-stub-generator.$(BEST) - $< --ml-file $@ - -test-roots.dir = tests/test-roots -test-roots.threads = yes -test-roots.deps = str bigarray-compat oUnit integers -test-roots.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common -test-roots.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-roots: PROJECT=test-roots -test-roots: $$(BEST_TARGET) - -test-passing-ocaml-values-stubs.dir = tests/test-passing-ocaml-values/stubs -test-passing-ocaml-values-stubs.threads = yes -test-passing-ocaml-values-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-passing-ocaml-values-stubs: PROJECT=test-passing-ocaml-values-stubs -test-passing-ocaml-values-stubs: $$(LIB_TARGETS) - -test-passing-ocaml-values-stub-generator.dir = tests/test-passing-ocaml-values/stub-generator -test-passing-ocaml-values-stub-generator.threads = yes -test-passing-ocaml-values-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-passing-ocaml-values-stubs tests-common -test-passing-ocaml-values-stub-generator.deps = str bigarray-compat integers -test-passing-ocaml-values-stub-generator: PROJECT=test-passing-ocaml-values-stub-generator -test-passing-ocaml-values-stub-generator: $$(BEST_TARGET) - -test-passing-ocaml-values.dir = tests/test-passing-ocaml-values -test-passing-ocaml-values.threads = yes -test-passing-ocaml-values.deps = str bigarray-compat oUnit integers -test-passing-ocaml-values.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-passing-ocaml-values-stubs -test-passing-ocaml-values.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-passing-ocaml-values: PROJECT=test-passing-ocaml-values -test-passing-ocaml-values: $$(BEST_TARGET) - -test-passing-ocaml-values-generated= \ - tests/test-passing-ocaml-values/generated_bindings.ml \ - tests/test-passing-ocaml-values/generated_stubs.c - -test-passing-ocaml-values-generated: $(test-passing-ocaml-values-generated) - -tests/test-passing-ocaml-values/generated_stubs.c: $(BUILDDIR)/test-passing-ocaml-values-stub-generator.$(BEST) - $< --c-file $@ -tests/test-passing-ocaml-values/generated_bindings.ml: $(BUILDDIR)/test-passing-ocaml-values-stub-generator.$(BEST) - $< --ml-file $@ - -test-funptrs-stubs.dir = tests/test-funptrs/stubs -test-funptrs-stubs.threads = yes -test-funptrs-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-funptrs-stubs: PROJECT=test-funptrs-stubs -test-funptrs-stubs: $$(LIB_TARGETS) - -test-funptrs-stub-generator.dir = tests/test-funptrs/stub-generator -test-funptrs-stub-generator.threads = yes -test-funptrs-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-funptrs-stubs tests-common -test-funptrs-stub-generator.deps = str bigarray-compat integers -test-funptrs-stub-generator: PROJECT=test-funptrs-stub-generator -test-funptrs-stub-generator: $$(BEST_TARGET) - -test-funptrs.dir = tests/test-funptrs -test-funptrs.threads = yes -test-funptrs.deps = str bigarray-compat oUnit integers -test-funptrs.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-funptrs-stubs -test-funptrs.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-funptrs: PROJECT=test-funptrs -test-funptrs: $$(BEST_TARGET) - -test-funptrs-generated= \ - tests/test-funptrs/generated_bindings.ml \ - tests/test-funptrs/generated_stubs.c - -test-funptrs-generated: $(test-funptrs-generated) - -tests/test-funptrs/generated_stubs.c: $(BUILDDIR)/test-funptrs-stub-generator.$(BEST) - $< --c-file $@ -tests/test-funptrs/generated_bindings.ml: $(BUILDDIR)/test-funptrs-stub-generator.$(BEST) - $< --ml-file $@ - -test-lwt-jobs-stubs.dir = tests/test-lwt-jobs/stubs -test-lwt-jobs-stubs.threads = yes -test-lwt-jobs-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-lwt-jobs-stubs: PROJECT=test-lwt-jobs-stubs -test-lwt-jobs-stubs: $$(LIB_TARGETS) - -test-lwt-jobs-stub-generator.dir = tests/test-lwt-jobs/stub-generator -test-lwt-jobs-stub-generator.threads = yes -test-lwt-jobs-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-lwt-jobs-stubs tests-common -test-lwt-jobs-stub-generator.deps = str bigarray-compat integers -test-lwt-jobs-stub-generator: PROJECT=test-lwt-jobs-stub-generator -test-lwt-jobs-stub-generator: $$(BEST_TARGET) - -test-lwt-jobs.dir = tests/test-lwt-jobs -test-lwt-jobs.threads = yes -test-lwt-jobs.deps = str bigarray-compat oUnit integers lwt.unix -test-lwt-jobs.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-lwt-jobs-stubs -test-lwt-jobs.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-lwt-jobs: PROJECT=test-lwt-jobs -test-lwt-jobs: $$(BEST_TARGET) - -test-lwt-jobs-generated= \ - tests/test-lwt-jobs/generated_bindings.ml \ - tests/test-lwt-jobs/generated_stubs.c \ - tests/test-lwt-jobs/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-lwt-jobs/generated_struct_stubs.c - -test-lwt-jobs-generated: $(test-lwt-jobs-generated) - -tests/test-lwt-jobs/generated_stubs.c: $(BUILDDIR)/test-lwt-jobs-stub-generator.$(BEST) - $< --c-file $@ -tests/test-lwt-jobs/generated_bindings.ml: $(BUILDDIR)/test-lwt-jobs-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-lwt-jobs/generated_struct_bindings.ml: $(BUILDDIR)/test-lwt-jobs-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-lwt-jobs-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-lwt-jobs/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-lwt-jobs/generated_struct_stubs.c: $(BUILDDIR)/test-lwt-jobs-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-lwt-preemptive-stubs.dir = tests/test-lwt-preemptive/stubs -test-lwt-preemptive-stubs.threads = yes -test-lwt-preemptive-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-lwt-preemptive-stubs: PROJECT=test-lwt-preemptive-stubs -test-lwt-preemptive-stubs: $$(LIB_TARGETS) - -test-lwt-preemptive-stub-generator.dir = tests/test-lwt-preemptive/stub-generator -test-lwt-preemptive-stub-generator.threads = yes -test-lwt-preemptive-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-lwt-preemptive-stubs tests-common -test-lwt-preemptive-stub-generator.deps = str bigarray-compat integers -test-lwt-preemptive-stub-generator: PROJECT=test-lwt-preemptive-stub-generator -test-lwt-preemptive-stub-generator: $$(BEST_TARGET) - -test-lwt-preemptive.dir = tests/test-lwt-preemptive -test-lwt-preemptive.threads = yes -test-lwt-preemptive.deps = str bigarray-compat oUnit integers lwt.unix -test-lwt-preemptive.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-lwt-preemptive-stubs -test-lwt-preemptive.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-lwt-preemptive: PROJECT=test-lwt-preemptive -test-lwt-preemptive: $$(BEST_TARGET) - -test-lwt-preemptive-generated= \ - tests/test-lwt-preemptive/generated_bindings.ml \ - tests/test-lwt-preemptive/generated_stubs.c \ - tests/test-lwt-preemptive/generated_struct_bindings.ml \ - $(BUILDDIR)/tests/test-lwt-preemptive/generated_struct_stubs.c - -test-lwt-preemptive-generated: $(test-lwt-preemptive-generated) - -tests/test-lwt-preemptive/generated_stubs.c: $(BUILDDIR)/test-lwt-preemptive-stub-generator.$(BEST) - $< --c-file $@ -tests/test-lwt-preemptive/generated_bindings.ml: $(BUILDDIR)/test-lwt-preemptive-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-lwt-preemptive/generated_struct_bindings.ml: $(BUILDDIR)/test-lwt-preemptive-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-lwt-preemptive-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-lwt-preemptive/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-lwt-preemptive/generated_struct_stubs.c: $(BUILDDIR)/test-lwt-preemptive-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-returning-errno-lwt-jobs-stubs.dir = tests/test-returning-errno-lwt-jobs/stubs -test-returning-errno-lwt-jobs-stubs.threads = yes -test-returning-errno-lwt-jobs-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-returning-errno-lwt-jobs-stubs: PROJECT=test-returning-errno-lwt-jobs-stubs -test-returning-errno-lwt-jobs-stubs: $$(LIB_TARGETS) - -test-returning-errno-lwt-jobs-stub-generator.dir = tests/test-returning-errno-lwt-jobs/stub-generator -test-returning-errno-lwt-jobs-stub-generator.threads = yes -test-returning-errno-lwt-jobs-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-returning-errno-lwt-jobs-stubs tests-common -test-returning-errno-lwt-jobs-stub-generator.deps = str bigarray-compat integers -test-returning-errno-lwt-jobs-stub-generator: PROJECT=test-returning-errno-lwt-jobs-stub-generator -test-returning-errno-lwt-jobs-stub-generator: $$(BEST_TARGET) - -test-returning-errno-lwt-jobs.dir = tests/test-returning-errno-lwt-jobs -test-returning-errno-lwt-jobs.threads = yes -test-returning-errno-lwt-jobs.deps = str bigarray-compat oUnit integers lwt.unix -test-returning-errno-lwt-jobs.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-returning-errno-lwt-jobs-stubs -test-returning-errno-lwt-jobs.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-returning-errno-lwt-jobs: PROJECT=test-returning-errno-lwt-jobs -test-returning-errno-lwt-jobs: $$(BEST_TARGET) - -test-returning-errno-lwt-jobs-generated= \ - tests/test-returning-errno-lwt-jobs/generated_bindings.ml \ - tests/test-returning-errno-lwt-jobs/generated_struct_bindings.ml \ - tests/test-returning-errno-lwt-jobs/generated_stubs.c - -test-returning-errno-lwt-jobs-generated: $(test-returning-errno-lwt-jobs-generated) - -tests/test-returning-errno-lwt-jobs/generated_stubs.c: $(BUILDDIR)/test-returning-errno-lwt-jobs-stub-generator.$(BEST) - $< --c-file $@ -tests/test-returning-errno-lwt-jobs/generated_bindings.ml: $(BUILDDIR)/test-returning-errno-lwt-jobs-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-returning-errno-lwt-jobs/generated_struct_bindings.ml: $(BUILDDIR)/test-returning-errno-lwt-jobs-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-returning-errno-lwt-jobs-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-returning-errno-lwt-jobs/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-returning-errno-lwt-jobs/generated_struct_stubs.c: $(BUILDDIR)/test-returning-errno-lwt-jobs-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-returning-errno-lwt-preemptive-stubs.dir = tests/test-returning-errno-lwt-preemptive/stubs -test-returning-errno-lwt-preemptive-stubs.threads = yes -test-returning-errno-lwt-preemptive-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-returning-errno-lwt-preemptive-stubs: PROJECT=test-returning-errno-lwt-preemptive-stubs -test-returning-errno-lwt-preemptive-stubs: $$(LIB_TARGETS) - -test-returning-errno-lwt-preemptive-stub-generator.dir = tests/test-returning-errno-lwt-preemptive/stub-generator -test-returning-errno-lwt-preemptive-stub-generator.threads = yes -test-returning-errno-lwt-preemptive-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-returning-errno-lwt-preemptive-stubs tests-common -test-returning-errno-lwt-preemptive-stub-generator.deps = str bigarray-compat integers -test-returning-errno-lwt-preemptive-stub-generator: PROJECT=test-returning-errno-lwt-preemptive-stub-generator -test-returning-errno-lwt-preemptive-stub-generator: $$(BEST_TARGET) - -test-returning-errno-lwt-preemptive.dir = tests/test-returning-errno-lwt-preemptive -test-returning-errno-lwt-preemptive.threads = yes -test-returning-errno-lwt-preemptive.deps = str bigarray-compat oUnit integers lwt.unix -test-returning-errno-lwt-preemptive.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-returning-errno-lwt-preemptive-stubs -test-returning-errno-lwt-preemptive.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-returning-errno-lwt-preemptive: PROJECT=test-returning-errno-lwt-preemptive -test-returning-errno-lwt-preemptive: $$(BEST_TARGET) - -test-returning-errno-lwt-preemptive-generated= \ - tests/test-returning-errno-lwt-preemptive/generated_bindings.ml \ - tests/test-returning-errno-lwt-preemptive/generated_struct_bindings.ml \ - tests/test-returning-errno-lwt-preemptive/generated_stubs.c - -test-returning-errno-lwt-preemptive-generated: $(test-returning-errno-lwt-preemptive-generated) - -tests/test-returning-errno-lwt-preemptive/generated_stubs.c: $(BUILDDIR)/test-returning-errno-lwt-preemptive-stub-generator.$(BEST) - $< --c-file $@ -tests/test-returning-errno-lwt-preemptive/generated_bindings.ml: $(BUILDDIR)/test-returning-errno-lwt-preemptive-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-returning-errno-lwt-preemptive/generated_struct_bindings.ml: $(BUILDDIR)/test-returning-errno-lwt-preemptive-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-returning-errno-lwt-preemptive-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-returning-errno-lwt-preemptive/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-returning-errno-lwt-preemptive/generated_struct_stubs.c: $(BUILDDIR)/test-returning-errno-lwt-preemptive-stub-generator.$(BEST) - $< --c-struct-file $@ - -test-returning-errno-stubs.dir = tests/test-returning-errno/stubs -test-returning-errno-stubs.threads = yes -test-returning-errno-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-returning-errno-stubs: PROJECT=test-returning-errno-stubs -test-returning-errno-stubs: $$(LIB_TARGETS) - -test-returning-errno-stub-generator.dir = tests/test-returning-errno/stub-generator -test-returning-errno-stub-generator.threads = yes -test-returning-errno-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-returning-errno-stubs tests-common -test-returning-errno-stub-generator.deps = str bigarray-compat integers -test-returning-errno-stub-generator: PROJECT=test-returning-errno-stub-generator -test-returning-errno-stub-generator: $$(BEST_TARGET) - -test-returning-errno.dir = tests/test-returning-errno -test-returning-errno.threads = yes -test-returning-errno.deps = str bigarray-compat oUnit integers -test-returning-errno.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-returning-errno-stubs -test-returning-errno.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-returning-errno: PROJECT=test-returning-errno -test-returning-errno: $$(BEST_TARGET) - -test-returning-errno-generated= \ - tests/test-returning-errno/generated_bindings.ml \ - tests/test-returning-errno/generated_struct_bindings.ml \ - tests/test-returning-errno/generated_stubs.c - -test-returning-errno-generated: $(test-returning-errno-generated) - -tests/test-returning-errno/generated_stubs.c: $(BUILDDIR)/test-returning-errno-stub-generator.$(BEST) - $< --c-file $@ -tests/test-returning-errno/generated_bindings.ml: $(BUILDDIR)/test-returning-errno-stub-generator.$(BEST) - $< --ml-file $@ -tests/test-returning-errno/generated_struct_bindings.ml: $(BUILDDIR)/test-returning-errno-ml-stub-generator.$(BEST) - $< > $@ -$(BUILDDIR)/test-returning-errno-ml-stub-generator.$(BEST): $(BUILDDIR)/tests/test-returning-errno/generated_struct_stubs.c - $(CC) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` $(CFLAGS) $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -$(BUILDDIR)/tests/test-returning-errno/generated_struct_stubs.c: $(BUILDDIR)/test-returning-errno-stub-generator.$(BEST) - $< --c-struct-file $@ - - -test-threads-stubs.dir = tests/test-threads/stubs -test-threads-stubs.threads = yes -test-threads-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-threads-stubs: PROJECT=test-threads-stubs -test-threads-stubs: $$(LIB_TARGETS) - -test-threads-stub-generator.dir = tests/test-threads/stub-generator -test-threads-stub-generator.threads = yes -test-threads-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-threads-stubs tests-common -test-threads-stub-generator.deps = str bigarray-compat integers -test-threads-stub-generator: PROJECT=test-threads-stub-generator -test-threads-stub-generator: $$(BEST_TARGET) - -test-threads.dir = tests/test-threads -test-threads.threads = yes -test-threads.deps = str bigarray-compat oUnit integers -test-threads.subproject_deps = ctypes ctypes-foreign \ - cstubs tests-common test-threads-stubs -test-threads.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-threads: PROJECT=test-threads -test-threads: $$(BEST_TARGET) - -test-threads-generated= \ - tests/test-threads/generated_bindings.ml \ - tests/test-threads/generated_stubs.c - -test-threads-generated: $(test-threads-generated) - -tests/test-threads/generated_stubs.c: $(BUILDDIR)/test-threads-stub-generator.$(BEST) - $< --c-file $@ -tests/test-threads/generated_bindings.ml: $(BUILDDIR)/test-threads-stub-generator.$(BEST) - $< --ml-file $@ - -test-closure-type-promotion-stubs.dir = tests/test-closure-type-promotion/stubs -test-closure-type-promotion-stubs.threads = yes -test-closure-type-promotion-stubs.subproject_deps = ctypes \ - ctypes-foreign tests-common -test-closure-type-promotion-stubs: PROJECT=test-closure-type-promotion-stubs -test-closure-type-promotion-stubs: $$(LIB_TARGETS) - -test-closure-type-promotion-stub-generator.dir = tests/test-closure-type-promotion/stub-generator -test-closure-type-promotion-stub-generator.threads = yes -test-closure-type-promotion-stub-generator.subproject_deps = ctypes cstubs \ - ctypes-foreign test-closure-type-promotion-stubs tests-common -test-closure-type-promotion-stub-generator.deps = str bigarray-compat integers -test-closure-type-promotion-stub-generator: PROJECT=test-closure-type-promotion-stub-generator -test-closure-type-promotion-stub-generator: $$(BEST_TARGET) - -test-closure-type-promotion.dir = tests/test-closure-type-promotion -test-closure-type-promotion.threads = yes -test-closure-type-promotion.deps = str bigarray-compat oUnit integers -test-closure-type-promotion.subproject_deps = ctypes ctypes-foreign \ - cstubs test-closure-type-promotion-stubs tests-common -test-closure-type-promotion.link_flags = -L$(BUILDDIR)/clib -ltest_functions -test-closure-type-promotion: PROJECT=test-closure-type-promotion -test-closure-type-promotion: $$(BEST_TARGET) - -test-closure-type-promotion-generated= \ - tests/test-closure-type-promotion/generated_bindings.ml \ - tests/test-closure-type-promotion/generated_stubs.c - -test-closure-type-promotion-generated: $(test-closure-type-promotion-generated) - -tests/test-closure-type-promotion/generated_stubs.c: $(BUILDDIR)/test-closure-type-promotion-stub-generator.$(BEST) - $< --c-file $@ -tests/test-closure-type-promotion/generated_bindings.ml: $(BUILDDIR)/test-closure-type-promotion-stub-generator.$(BEST) - $< --ml-file $@ - -test-ldouble.dir = tests/test-ldouble -test-ldouble.threads = yes -test-ldouble.deps = str bigarray-compat oUnit integers -test-ldouble.subproject_deps = ctypes -test-ldouble: PROJECT=test-ldouble -test-ldouble: $$(BEST_TARGET) - -TESTS = -TESTS += test-raw -TESTS += test-pointers-stubs test-pointers-stub-generator test-pointers-generated test-pointers -TESTS += test-integers-stubs test-integers-stub-generator test-integers-generated test-integers -TESTS += test-variadic-stubs test-variadic-stub-generator test-variadic-generated test-variadic -TESTS += test-builtins-stubs test-builtins-stub-generator test-builtins-generated test-builtins -TESTS += test-macros-stubs test-macros-stub-generator test-macros-generated test-macros -TESTS += test-higher_order-stubs test-higher_order-stub-generator test-higher_order-generated test-higher_order -TESTS += test-enums-struct-stubs test-enums-struct-stub-generator test-enums-structs-generated test-enums-stubs test-enums-stub-generator test-enums-generated test-enums -TESTS += test-structs-stubs test-structs-stub-generator test-structs-generated test-structs -TESTS += test-constants-stubs test-constants-stub-generator test-constants-generated test-constants -TESTS += test-finalisers -TESTS += test-cstdlib-stubs test-cstdlib-stub-generator test-cstdlib-generated test-cstdlib -TESTS += test-sizeof -TESTS += test-foreign_values-stubs test-foreign_values-stub-generator test-foreign_values-generated test-foreign_values -TESTS += test-unions-stubs test-unions-stub-generator test-unions-generated test-unions -TESTS += test-custom_ops -TESTS += test-arrays-stubs test-arrays-stub-generator test-arrays-generated test-arrays -TESTS += test-foreign-errno -TESTS += test-passable -TESTS += test-alignment -TESTS += test-views-stubs test-views-stub-generator test-views-generated test-views -TESTS += test-oo_style-stubs test-oo_style-stub-generator test-oo_style-generated test-oo_style -TESTS += test-marshal -TESTS += test-type_printing-stubs test-type_printing-stub-generator test-type_printing-generated test-type_printing -TESTS += test-value_printing-stubs test-value_printing-stub-generator test-value_printing-generated test-value_printing -TESTS += test-complex-stubs test-complex-stub-generator test-complex-generated test-complex -TESTS += test-bools-stubs test-bools-stub-generator test-bools-generated test-bools -TESTS += test-callback_lifetime-stubs test-callback_lifetime-stub-generator test-callback_lifetime-generated test-callback_lifetime -TESTS += test-lifetime-stubs test-lifetime-stub-generator test-lifetime-generated test-lifetime -TESTS += test-stubs -TESTS += test-bigarrays-stubs test-bigarrays-stub-generator test-bigarrays-generated test-bigarrays -TESTS += test-coercions-stubs test-coercions-stub-generator test-coercions-generated test-coercions -TESTS += test-roots -TESTS += test-passing-ocaml-values-stubs test-passing-ocaml-values-stub-generator test-passing-ocaml-values-generated test-passing-ocaml-values -TESTS += test-funptrs-stubs test-funptrs-stub-generator test-funptrs-generated test-funptrs -TESTS += test-lwt-jobs-stubs test-lwt-jobs-stub-generator test-lwt-jobs-generated test-lwt-jobs -TESTS += test-lwt-preemptive-stubs test-lwt-preemptive-stub-generator test-lwt-preemptive-generated test-lwt-preemptive -TESTS += test-returning-errno-lwt-jobs-stubs test-returning-errno-lwt-jobs-stub-generator test-returning-errno-lwt-jobs-generated test-returning-errno-lwt-jobs -TESTS += test-returning-errno-lwt-preemptive-stubs test-returning-errno-lwt-preemptive-stub-generator test-returning-errno-lwt-preemptive-generated test-returning-errno-lwt-preemptive -TESTS += test-returning-errno-stubs test-returning-errno-stub-generator test-returning-errno-generated test-returning-errno -TESTS += test-closure-type-promotion-stubs test-closure-type-promotion-stub-generator test-closure-type-promotion-generated test-closure-type-promotion -TESTS += test-threads-stubs test-threads-stub-generator test-threads-generated test-threads -TESTS += test-ldouble - -ifneq (,$(filter mingw%,$(OSYSTEM))) -WINLDFLAGS=-Wl,--out-implib,libtest_functions.dll.a -LDFLAGS+=-static-libgcc -endif - -testlib: $(BUILDDIR)/clib/libtest_functions$(EXTDLL) -$(BUILDDIR)/clib/libtest_functions$(EXTDLL): $(BUILDDIR)/clib/test_functions.o - $(CC) -shared $(LDFLAGS) $(WINLDFLAGS) -o $@ $^ -lm -ifneq (,$(filter mingw%,$(OSYSTEM))) - cp $@ libtest_functions.dll.a $(BUILDDIR) -endif - -$(BUILDDIR)/clib/test_functions.o: tests/clib/test_functions.c - @mkdir -p $(@D) - $(CC) -c $(CFLAGS) -I `$(OCAMLFIND) ocamlc -where | sed 's|\r$$||'` -o $@ $^ -tests/clib/test_functions.c: tests/clib/test_functions.h - -.PHONY: test testlib $(TESTS) tests-common clean-tests -test: build testlib tests-common $(TESTS) \ - $(filter-out %-stubs,\ - $(filter-out %-stub-generator,\ - $(filter-out %-generated,\ - $(TESTS:%=run-%)))) - -TESTS_GENERATED=$(foreach test,$(filter %-generated,$(TESTS)),$($(test))) - -clean-tests: - rm -f $(TESTS_GENERATED) - -run-%: $* - @echo running $* - @cd $(BUILDDIR) && CAML_LD_LIBRARY_PATH=. LD_LIBRARY_PATH=clib DYLD_LIBRARY_PATH=clib ./$*.$(BEST) -runner sequential - diff --git a/ctypes-foreign.opam b/ctypes-foreign.opam index 3b1c84e37..0c438d3e9 100644 --- a/ctypes-foreign.opam +++ b/ctypes-foreign.opam @@ -1,47 +1,46 @@ +# This file is generated by dune, edit dune-project instead opam-version: "2.0" -version: "dev" -maintainer: "yallop@gmail.com" +synopsis: "Dynamic access to foreign C libraries using Ctypes" +description: """ + +This installs the `ctypes-foreign` interface which +uses `libffi` to provide dynamic access to foreign libraries.""" +maintainer: ["Jeremy Yallop "] +authors: ["Jeremy Yallop"] +license: "MIT" +tags: ["org:mirage" "org:ocamllabs"] homepage: "https://github.com/ocamllabs/ocaml-ctypes" -dev-repo: "git+http://github.com/ocamllabs/ocaml-ctypes.git" -bug-reports: "http://github.com/ocamllabs/ocaml-ctypes/issues" -depexts: [ - ["libffi-dev"] {os-family = "debian"} - ["libffi"] {os = "macos" & os-distribution = "homebrew"} - ["libffi"] {os = "macos" & os-distribution = "macports"} - ["libffi-devel"] {os-distribution = "centos"} - ["libffi-devel"] {os-distribution = "ol"} - ["libffi"] {os = "win32" & os-distribution = "cygwinports"} - ["libffi-devel"] {os-distribution = "fedora"} - ["libffi-dev"] {os-distribution = "alpine"} - ["libffi-devel"] {os-family = "suse"} -] +doc: "https://ocamllabs.github.io/ocaml-ctypes/" +bug-reports: "https://github.com/ocamllabs/ocaml-ctypes/issues" depends: [ - "conf-pkg-config" {build} + "dune" {>= "2.9"} + "ocaml" {>= "4.03.0"} + "integers" {with-test & >= "0.2.2"} + "ctypes" {= version} + "dune-configurator" + "conf-pkg-config" + "lwt" {with-test & >= "2.4.7"} + "ounit2" {with-test} + "conf-ncurses" {with-test} + "stdlib-shims" {with-test} + "conf-fts" {with-test & os != "win32"} + "conf-libffi" {>= "2.0.0"} + "odoc" {with-doc} ] -tags: ["org:ocamllabs" "org:mirage"] -post-messages: [ - "This package requires libffi on your system" {failure} +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "--promote-install-files=false" + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] + ["dune" "install" "-p" name "--create-install-files" name] ] -synopsis: "Virtual package for enabling the ctypes.foreign subpackage" -description: """ -`ctypes-foreign` is just a virtual OPAM package that determines -whether the foreign subpackage should built as part of ctypes. -In order to actually get the ctypes package, you should also: - - opam install ctypes ctypes-foreign - -You can verify the existence of the ocamlfind subpackage by: - - ocamlfind list | grep ctypes - -Which should output something like: - - ctypes (version: 0.4.1) - ctypes.foreign (version: 0.4.1) - ctypes.foreign.base (version: 0.4.1) - ctypes.foreign.threaded (version: 0.4.1) - ctypes.foreign.unthreaded (version: 0.4.1) - ctypes.stubs (version: 0.4.1) - ctypes.top (version: 0.4.1)""" -authors: "yallop@gmail.com" - +dev-repo: "git+https://github.com/ocamllabs/ocaml-ctypes.git" diff --git a/ctypes.opam b/ctypes.opam index 31617e76c..45c8a911e 100644 --- a/ctypes.opam +++ b/ctypes.opam @@ -1,47 +1,55 @@ +# This file is generated by dune, edit dune-project instead opam-version: "2.0" -version: "dev" -maintainer: "yallop@gmail.com" -author: "yallop@gmail.com" -homepage: "https://github.com/ocamllabs/ocaml-ctypes" -doc: "http://ocamllabs.github.io/ocaml-ctypes" -dev-repo: "git+http://github.com/ocamllabs/ocaml-ctypes.git" -bug-reports: "http://github.com/ocamllabs/ocaml-ctypes/issues" +synopsis: "Combinators for binding to C libraries without writing any C" +description: """ + +ctypes is a library for binding to C libraries using pure OCaml. The primary +aim is to make writing C extensions as straightforward as possible. +The core of ctypes is a set of combinators for describing the structure of C +types -- numeric types, arrays, pointers, structs, unions and functions. You +can use these combinators to describe the types of the functions that you want +to call, then bind directly to those functions -- all without writing or +generating any C! + +To install the optional `ctypes-foreign` interface (which uses `libffi` to +provide dynamic access to foreign libraries), you will need to also install +the `ctypes-foreign` package. + + opam install ctypes-foreign + +This will make the `ctypes-foreign` ocamlfind subpackage available.""" +maintainer: ["Jeremy Yallop "] +authors: ["Jeremy Yallop"] license: "MIT" -build: [ - [make - "XEN=%{mirage-xen:enable}%" - "COVERAGE=true" {bisect_ppx:installed} - "libffi.config" - "ctypes-base" - "ctypes-stubs"] - [make "XEN=%{mirage-xen:enable}%" "ctypes-foreign"] {ctypes-foreign:installed} -] -install: [ - [make "install" "XEN=%{mirage-xen:enable}%"] -] +tags: ["org:mirage" "org:ocamllabs"] +homepage: "https://github.com/ocamllabs/ocaml-ctypes" +doc: "https://ocamllabs.github.io/ocaml-ctypes/" +bug-reports: "https://github.com/ocamllabs/ocaml-ctypes/issues" depends: [ - "ocaml" {>= "4.03.0"} - "integers" { >= "0.3.0" } - "ocamlfind" {build} - "lwt" {with-test & >= "3.2.0"} - "ctypes-foreign" {with-test} - "ounit" {with-test} - "conf-ncurses" {with-test} - "bigarray-compat" -] -depopts: [ - "ctypes-foreign" - "mirage-xen" - "bisect_ppx" {with-test} - "ocveralls" {with-test} + "dune" {>= "2.9"} + "ocaml" {>= "4.03.0"} + "integers" + "dune-configurator" + "bigarray-compat" + "ounit2" {with-test} + "conf-fts" {with-test & os != "win32"} + "conf-pkg-config" {with-test} + "odoc" {with-doc} ] -build-test: [ - [make "COVERAGE=true" {bisect_ppx:installed} "test"] - [make "COVERAGE=true" {bisect_ppx:installed} "run-examples" ] {os != "win32"} - [make "date" "date-stubs" "date-stub-generator" "date-cmd-build" "date-cmd" ] {os = "win32"} - ["sh" "-c" "_build/date-cmd.native ; _build/date.native" ] {os = "win32"} - ["sh" "-c" "ocveralls" "--send bisect*.out" "_build/bisect*.out" ">" "coveralls.json"] {bisect_ppx:installed} +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "--promote-install-files=false" + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] + ["dune" "install" "-p" name "--create-install-files" name] ] -tags: ["org:ocamllabs" "org:mirage"] -synopsis: "Combinators for binding to C libraries without writing any C" - +dev-repo: "git+https://github.com/ocamllabs/ocaml-ctypes.git" diff --git a/dune b/dune new file mode 100644 index 000000000..6e4314156 --- /dev/null +++ b/dune @@ -0,0 +1,8 @@ +(env + (dev + (flags + (:standard -principal)))) + +(deprecated_library_name + (old_public_name "ctypes.foreign") + (new_public_name "ctypes-foreign")) diff --git a/dune-project b/dune-project new file mode 100644 index 000000000..c376d7c06 --- /dev/null +++ b/dune-project @@ -0,0 +1,61 @@ +(lang dune 2.9) +(name ctypes) +(formatting (enabled_for dune)) +(use_standard_c_and_cxx_flags true) + +(generate_opam_files true) + +(license MIT) +(maintainers "Jeremy Yallop ") +(authors "Jeremy Yallop") +(source (github ocamllabs/ocaml-ctypes)) +(documentation "https://ocamllabs.github.io/ocaml-ctypes/") + +(package + (name ctypes) + (tags (org:mirage org:ocamllabs)) + (depends + (ocaml (>= 4.03.0)) + integers + dune-configurator + bigarray-compat + (ounit2 :with-test) + (conf-fts (and :with-test (<> :os win32))) + (conf-pkg-config :with-test)) + (synopsis "Combinators for binding to C libraries without writing any C") + (description " +ctypes is a library for binding to C libraries using pure OCaml. The primary +aim is to make writing C extensions as straightforward as possible. +The core of ctypes is a set of combinators for describing the structure of C +types -- numeric types, arrays, pointers, structs, unions and functions. You +can use these combinators to describe the types of the functions that you want +to call, then bind directly to those functions -- all without writing or +generating any C! + +To install the optional `ctypes-foreign` interface (which uses `libffi` to +provide dynamic access to foreign libraries), you will need to also install +the `ctypes-foreign` package. + + opam install ctypes-foreign + +This will make the `ctypes-foreign` ocamlfind subpackage available.")) + +(package + (name ctypes-foreign) + (tags (org:mirage org:ocamllabs)) + (depends + (ocaml (>= 4.03.0)) + (integers (and :with-test (>= 0.2.2))) + (ctypes (= :version)) + dune-configurator + conf-pkg-config + (lwt (and :with-test (>= 2.4.7))) + (ounit2 :with-test) + (conf-ncurses :with-test) + (stdlib-shims :with-test) + (conf-fts (and :with-test (<> :os win32))) + (conf-libffi (>= 2.0.0))) + (synopsis "Dynamic access to foreign C libraries using Ctypes") + (description " +This installs the `ctypes-foreign` interface which +uses `libffi` to provide dynamic access to foreign libraries.")) diff --git a/examples/date/foreign/dune b/examples/date/foreign/dune new file mode 100644 index 000000000..80e4aa6da --- /dev/null +++ b/examples/date/foreign/dune @@ -0,0 +1,3 @@ +(executables + (names date) + (libraries ctypes-foreign)) diff --git a/examples/date/stub-generation/bindings/dune b/examples/date/stub-generation/bindings/dune new file mode 100644 index 000000000..1690dff74 --- /dev/null +++ b/examples/date/stub-generation/bindings/dune @@ -0,0 +1,3 @@ +(library + (name date_stubs) + (libraries ctypes)) diff --git a/examples/date/stub-generation/dune b/examples/date/stub-generation/dune new file mode 100644 index 000000000..80cb3e18b --- /dev/null +++ b/examples/date/stub-generation/dune @@ -0,0 +1,3 @@ +(executable + (name date_cmd) + (libraries date_stubs date_generated)) diff --git a/examples/date/stub-generation/stub-generator/date_stub_generator.ml b/examples/date/stub-generation/stub-generator/date_stub_generator.ml index 3cdc33d87..0e52eb693 100644 --- a/examples/date/stub-generation/stub-generator/date_stub_generator.ml +++ b/examples/date/stub-generation/stub-generator/date_stub_generator.ml @@ -8,8 +8,8 @@ let c_headers = "#include " let main () = - let ml_out = open_out "examples/date/stub-generation/date_generated.ml" - and c_out = open_out "examples/date/stub-generation/date_stubs.c" in + let ml_out = open_out "date_generated.ml" + and c_out = open_out "date_stubs.c" in let ml_fmt = Format.formatter_of_out_channel ml_out and c_fmt = Format.formatter_of_out_channel c_out in Format.fprintf c_fmt "%s@\n" c_headers; diff --git a/examples/date/stub-generation/stub-generator/dune b/examples/date/stub-generation/stub-generator/dune new file mode 100644 index 000000000..97ad9b1e1 --- /dev/null +++ b/examples/date/stub-generation/stub-generator/dune @@ -0,0 +1,18 @@ +(executable + (name date_stub_generator) + (modules date_stub_generator) + (libraries date_stubs ctypes.stubs ctypes)) + +(rule + (targets date_stubs.c date_generated.ml) + (deps date_stub_generator.exe) + (action + (run %{deps}))) + +(library + (name date_generated) + (modules date_generated) + (foreign_stubs + (language c) + (names date_stubs)) + (libraries ctypes.stubs)) diff --git a/examples/fts/foreign/dune b/examples/fts/foreign/dune new file mode 100644 index 000000000..e80dee4f7 --- /dev/null +++ b/examples/fts/foreign/dune @@ -0,0 +1,7 @@ +(test + (name fts_cmd) + (enabled_if + (= %{os_type} Unix)) + (libraries ctypes-foreign) + (package ctypes-foreign) + (action (progn))) diff --git a/examples/fts/foreign/fts.ml b/examples/fts/foreign/fts.ml index 8540a1cab..051d7426e 100644 --- a/examples/fts/foreign/fts.ml +++ b/examples/fts/foreign/fts.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9-32"] + open Ctypes type fts_info = @@ -35,7 +37,7 @@ let fts_info_of_int = function | 11 -> FTS_NSOK | 12 -> FTS_SL | 13 -> FTS_SLNONE - | _ -> invalid_arg "fts_info" + | n -> invalid_arg ("fts_info: " ^ (string_of_int n)) type fts_open_option = FTS_COMFOLLOW @@ -241,7 +243,7 @@ let null_terminated_array_of_ptr_list typ list = (castp (ptr void) (CArray.start arr +@ nitems)) <-@ null; arr -let fts_open ~path_argv ?compar ~options = +let fts_open ~path_argv ?compar ~options () = let paths = null_terminated_array_of_ptr_list string path_argv in let options = crush_options fts_open_option_value options in { ptr = _fts_open (CArray.start paths) options compar; compar } diff --git a/examples/fts/foreign/fts.mli b/examples/fts/foreign/fts.mli index 9656f337a..521049b98 100644 --- a/examples/fts/foreign/fts.mli +++ b/examples/fts/foreign/fts.mli @@ -220,7 +220,7 @@ val fts_open : path_argv:string list -> ?compar:(FTSENT.t ptr -> FTSENT.t ptr -> int) -> options:fts_open_option list -> - FTS.t + unit -> FTS.t (* The fts_children() function returns a pointer to an FTSENT structure describing the first entry in a NULL-terminated linked list of the diff --git a/examples/fts/foreign/fts_cmd.ml b/examples/fts/foreign/fts_cmd.ml index 07df52f19..d359aded3 100644 --- a/examples/fts/foreign/fts_cmd.ml +++ b/examples/fts/foreign/fts_cmd.ml @@ -14,17 +14,26 @@ let sort_by_name lp rp = let open FTSENT in String.compare (name !@lp) (name !@rp) +let rec iter ~gen ~f = + match gen () with + | None -> () + | Some x -> + begin + f x; + iter ~gen ~f + end + let ents ?compar path_argv = - let fts : FTS.t = fts_open ~path_argv ?compar ~options:[] in - Stream.from (fun _ -> fts_read fts) + let fts : FTS.t = fts_open ~path_argv ?compar ~options:[] () in + (fun _ -> fts_read fts) let main paths = let indent = ref 0 in let show_path ent = Printf.printf "%*s%s\n" !indent "" (FTSENT.path ent); in - Stream.iter - FTSENT.(fun ent -> + iter + ~f:FTSENT.(fun ent -> match info ent with | FTS_D -> begin show_path ent; @@ -35,7 +44,7 @@ let main paths = | FTS_SLNONE -> show_path ent | FTS_DP -> decr indent | _ -> ()) - (ents ~compar:sort_by_name paths) + ~gen:(ents ~compar:sort_by_name paths) let () = match List.tl (Array.to_list Sys.argv) with diff --git a/examples/fts/stub-generation/bindings/dune b/examples/fts/stub-generation/bindings/dune new file mode 100644 index 000000000..c36e1ce62 --- /dev/null +++ b/examples/fts/stub-generation/bindings/dune @@ -0,0 +1,5 @@ +(library + (name fts_stubs) + (wrapped false) + (modules_without_implementation fts) + (libraries ctypes ctypes-foreign)) diff --git a/examples/fts/stub-generation/bindings/fts_types.ml b/examples/fts/stub-generation/bindings/fts_types.ml index 02f65345f..ee54acc78 100644 --- a/examples/fts/stub-generation/bindings/fts_types.ml +++ b/examples/fts/stub-generation/bindings/fts_types.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9"] + open Ctypes type fts_info = diff --git a/examples/fts/stub-generation/config/discover.ml b/examples/fts/stub-generation/config/discover.ml new file mode 100644 index 000000000..ac3e0e834 --- /dev/null +++ b/examples/fts/stub-generation/config/discover.ml @@ -0,0 +1,25 @@ +module C = Configurator.V1 + +let prepend opt flags = + if flags = [] then + [] + else + opt :: flags + +let () = + C.main ~name:"fts_example" (fun c -> + let default : C.Pkg_config.package_conf = { + libs = []; + cflags = [] + } in + let conf = + match C.Pkg_config.get c with + | None -> default + | Some pc -> + (match C.Pkg_config.query pc ~package:"libfts" with + | None -> default + | Some v -> v) + in + C.Flags.write_sexp "c_flags.sexp" (prepend "-ccopt" conf.cflags); + C.Flags.write_sexp "c_library_flags.sexp" (prepend "-cclib" conf.libs) + ) diff --git a/examples/fts/stub-generation/config/discover.mli b/examples/fts/stub-generation/config/discover.mli new file mode 100644 index 000000000..e790aeb70 --- /dev/null +++ b/examples/fts/stub-generation/config/discover.mli @@ -0,0 +1 @@ +(* empty *) diff --git a/examples/fts/stub-generation/config/dune b/examples/fts/stub-generation/config/dune new file mode 100644 index 000000000..d38eb14bf --- /dev/null +++ b/examples/fts/stub-generation/config/dune @@ -0,0 +1,8 @@ +(executable + (name discover) + (libraries dune-configurator)) + +(rule + (targets c_flags.sexp c_library_flags.sexp) + (action + (run ./discover.exe))) diff --git a/examples/fts/stub-generation/dune b/examples/fts/stub-generation/dune new file mode 100644 index 000000000..f193b3816 --- /dev/null +++ b/examples/fts/stub-generation/dune @@ -0,0 +1,18 @@ +(* -*- tuareg -*- *) + +(* This can be ported to build_if once available, ocaml/dune#7899 *) + +let unix = List.mem ("os_type", "Unix") Jbuild_plugin.V1.ocamlc_config + +let () = Jbuild_plugin.V1.send @@ if not unix then "" else {| +(test + (name fts_cmd) + (enabled_if + (= %{os_type} Unix)) + (libraries fts_stubs fts_generated) + (package ctypes) + (action (progn)) + (link_flags + :standard + (:include config/c_library_flags.sexp))) +|} diff --git a/examples/fts/stub-generation/fts_cmd.ml b/examples/fts/stub-generation/fts_cmd.ml index 87e8273f7..658c892c2 100644 --- a/examples/fts/stub-generation/fts_cmd.ml +++ b/examples/fts/stub-generation/fts_cmd.ml @@ -15,17 +15,26 @@ let sort_by_name lp rp = let open FTSENT in String.compare (name !@lp) (name !@rp) +let rec iter ~gen ~f = + match gen () with + | None -> () + | Some x -> + begin + f x; + iter ~gen ~f + end + let ents ?compar path_argv = - let fts : FTS.t = fts_open ~path_argv ?compar ~options:[] in - Stream.from (fun _ -> fts_read fts) + let fts : FTS.t = fts_open ~path_argv ?compar ~options:[] () in + (fun _ -> fts_read fts) let main paths = let indent = ref 0 in let show_path ent = Printf.printf "%*s%s\n" !indent "" (FTSENT.path ent); in - Stream.iter - FTSENT.(fun ent -> + iter + ~f:FTSENT.(fun ent -> match info ent with | FTS_D -> begin show_path ent; @@ -36,7 +45,7 @@ let main paths = | FTS_SLNONE -> show_path ent | FTS_DP -> decr indent | _ -> ()) - (ents ~compar:sort_by_name paths) + ~gen:(ents ~compar:sort_by_name paths) let () = match List.tl (Array.to_list Sys.argv) with diff --git a/examples/fts/stub-generation/fts_if.ml b/examples/fts/stub-generation/fts_if.ml index 7ff3fd1a4..a82e01d20 100644 --- a/examples/fts/stub-generation/fts_if.ml +++ b/examples/fts/stub-generation/fts_if.ml @@ -8,7 +8,6 @@ open Ctypes open Fts_types open FTS -open FTSENT module N = Fts_bindings.Bindings(Fts_generated) open N @@ -36,7 +35,7 @@ let null_terminated_array_of_ptr_list typ list = (coerce (ptr typ) (ptr (ptr void)) (CArray.start arr +@ nitems)) <-@ null; arr -let fts_open ~path_argv ?compar ~options = +let fts_open ~path_argv ?compar ~options () = let path_argv_cpointers = List.map _strdup path_argv in let paths = null_terminated_array_of_ptr_list (ptr char) path_argv_cpointers in let options = crush_options fts_open_option_value options in diff --git a/examples/fts/stub-generation/stub-generator/dune b/examples/fts/stub-generation/stub-generator/dune new file mode 100644 index 000000000..297aafde5 --- /dev/null +++ b/examples/fts/stub-generation/stub-generator/dune @@ -0,0 +1,27 @@ +(executable + (name fts_stub_generator) + (enabled_if + (= %{os_type} "Unix")) + (modules fts_stub_generator) + (libraries fts_stubs ctypes.stubs ctypes)) + +(rule + (targets fts_stubs.c fts_generated.ml) + (deps fts_stub_generator.exe) + (enabled_if + (= %{os_type} "Unix")) + (action + (run %{deps}))) + +(library + (name fts_generated) + (enabled_if + (= %{os_type} "Unix")) + (modules fts_generated) + (foreign_stubs + (language c) + (names fts_stubs) + (flags + :standard + (:include ../config/c_flags.sexp))) + (libraries ctypes.stubs)) diff --git a/examples/fts/stub-generation/stub-generator/fts_stub_generator.ml b/examples/fts/stub-generation/stub-generator/fts_stub_generator.ml index 042fa071e..28c131aa3 100644 --- a/examples/fts/stub-generation/stub-generator/fts_stub_generator.ml +++ b/examples/fts/stub-generation/stub-generator/fts_stub_generator.ml @@ -13,8 +13,8 @@ let c_headers = " " let main () = - let ml_out = open_out "examples/fts/stub-generation/fts_generated.ml" - and c_out = open_out "examples/fts/stub-generation/fts_stubs.c" in + let ml_out = open_out "fts_generated.ml" + and c_out = open_out "fts_stubs.c" in let ml_fmt = Format.formatter_of_out_channel ml_out and c_fmt = Format.formatter_of_out_channel c_out in Format.fprintf c_fmt "%s@\n" c_headers; diff --git a/examples/ncurses/foreign/dune b/examples/ncurses/foreign/dune new file mode 100644 index 000000000..f64b0b7e4 --- /dev/null +++ b/examples/ncurses/foreign/dune @@ -0,0 +1,11 @@ +(library + (name ncurses) + (modules ncurses) + (libraries ctypes-foreign)) + +(executables + (names ncurses_cmd) + (modules ncurses_cmd) + (link_flags + (:standard -cclib -lncurses)) + (libraries ncurses)) diff --git a/examples/ncurses/stub-generation/bindings/dune b/examples/ncurses/stub-generation/bindings/dune new file mode 100644 index 000000000..4d7a6c005 --- /dev/null +++ b/examples/ncurses/stub-generation/bindings/dune @@ -0,0 +1,3 @@ +(library + (name ncurses_bindings) + (libraries ctypes)) diff --git a/examples/ncurses/stub-generation/dune b/examples/ncurses/stub-generation/dune new file mode 100644 index 000000000..62a5c63f4 --- /dev/null +++ b/examples/ncurses/stub-generation/dune @@ -0,0 +1,3 @@ +(executable + (name ncurses_stub_cmd) + (libraries ncurses_bindings ncurses_generated unix)) diff --git a/examples/ncurses/stub-generation/stub-generator/dune b/examples/ncurses/stub-generation/stub-generator/dune new file mode 100644 index 000000000..40906bc98 --- /dev/null +++ b/examples/ncurses/stub-generation/stub-generator/dune @@ -0,0 +1,19 @@ +(executable + (name ncurses_stub_generator) + (modules ncurses_stub_generator) + (libraries ncurses_bindings ctypes.stubs ctypes)) + +(rule + (targets ncurses_stubs.c ncurses_generated.ml) + (deps ncurses_stub_generator.exe) + (action + (run %{deps}))) + +(library + (name ncurses_generated) + (modules ncurses_generated) + (c_library_flags -lncurses) + (foreign_stubs + (language c) + (names ncurses_stubs)) + (libraries ctypes.stubs)) diff --git a/examples/ncurses/stub-generation/stub-generator/ncurses_stub_generator.ml b/examples/ncurses/stub-generation/stub-generator/ncurses_stub_generator.ml index 3326807fe..b376980c8 100644 --- a/examples/ncurses/stub-generation/stub-generator/ncurses_stub_generator.ml +++ b/examples/ncurses/stub-generation/stub-generator/ncurses_stub_generator.ml @@ -8,8 +8,8 @@ let c_headers = "#include " let main () = - let ml_out = open_out "examples/ncurses/stub-generation/ncurses_generated.ml" in - let c_out = open_out "examples/ncurses/stub-generation/ncurses_stubs.c" in + let ml_out = open_out "ncurses_generated.ml" in + let c_out = open_out "ncurses_stubs.c" in let c_fmt = Format.formatter_of_out_channel c_out in let ml_fmt = Format.formatter_of_out_channel ml_out in Format.fprintf c_fmt "%s@\n" c_headers; diff --git a/src/configure/dune b/src/configure/dune new file mode 100644 index 000000000..5671b9573 --- /dev/null +++ b/src/configure/dune @@ -0,0 +1,4 @@ +(executable + (name gen_c_primitives) + (libraries dune-configurator) + (modules gen_c_primitives)) diff --git a/src/configure/extract_from_c.ml b/src/configure/extract_from_c.ml deleted file mode 100644 index f8c28204d..000000000 --- a/src/configure/extract_from_c.ml +++ /dev/null @@ -1,104 +0,0 @@ -(* - * Copyright (c) 2016 whitequark. - * - * This file is distributed under the terms of the MIT License. - * See the file LICENSE for details. - *) - -let getenv ~default name = - try Sys.getenv name - with Not_found -> default - -let nsplit sep str = Str.(split (regexp_string sep)) str - -let read_output program = - let input_filename = Filename.temp_file "ctypes_libffi_config" ".c" in - let channel = open_out input_filename in - output_string channel program; - close_out channel; - let output_filename = (Filename.chop_suffix input_filename ".c") ^ ".o" in - let cwd = Sys.getcwd () in - let cmd = - Printf.sprintf "%s ocamlc -verbose %s %s -c 1>&2" - (getenv ~default:"ocamlfind" "OCAMLFIND") - ((getenv ~default:"" "CFLAGS") |> - (nsplit " ") |> - (List.map (fun s -> "-ccopt " ^ Filename.quote s)) |> - (String.concat " ")) - (Filename.quote input_filename) - in - prerr_endline cmd; - Sys.chdir (Filename.dirname input_filename); - ignore (Sys.command cmd); - Sys.chdir cwd; - Sys.remove input_filename; - if not (Sys.file_exists output_filename) then - raise Not_found; - let channel = open_in_bin output_filename in - let length = in_channel_length channel in - let result = Bytes.create length in - really_input channel result 0 length; - close_in channel; - Sys.remove output_filename; - Bytes.to_string result - -let find_from haystack pos needle = Str.(search_forward (regexp_string needle) haystack pos) - -let prefix = "BEGIN-" -let suffix = "-END" -let extract s = - let begin_pos = find_from s 0 prefix + String.length prefix in - let end_pos = find_from s 0 suffix in - String.sub s begin_pos (end_pos - begin_pos) - -let headers = "\ -#if defined(__MINGW32__) || defined(__MINGW64__) -#define __USE_MINGW_ANSI_STDIO 1 -#include /* see: https://sourceforge.net/p/mingw-w64/bugs/627/ */ -#endif -#include -#include -#include -#include -" - -let integer ?(extra_headers="") expression = - let code = Printf.sprintf "%s -%s - -#define alignof(T) (offsetof(struct { char c; T t; }, t)) - -#define D0(x) ('0'+(x/1 )%%10) -#define D1(x) ('0'+(x/10 )%%10), D0(x) -#define D2(x) ('0'+(x/100 )%%10), D1(x) -#define D3(x) ('0'+(x/1000 )%%10), D2(x) -#define D4(x) ('0'+(x/10000 )%%10), D3(x) -#define D5(x) ('0'+(x/100000 )%%10), D4(x) -#define D6(x) ('0'+(x/1000000 )%%10), D5(x) -#define D7(x) ('0'+(x/10000000 )%%10), D6(x) -#define D8(x) ('0'+(x/100000000 )%%10), D7(x) -#define D9(x) ('0'+(x/1000000000)%%10), D8(x) -const char s[] = { - 'B', 'E', 'G', 'I', 'N', '-', - D9((%s)), - '-', 'E', 'N', 'D' -}; -" headers extra_headers expression in - int_of_string (extract (read_output code)) - -let string ?(extra_headers="") expression = - let code = Printf.sprintf "%s -%s - -#define STRINGIFY1(x) #x -#define STRINGIFY(x) STRINGIFY1(x) - -#if __USE_MINGW_ANSI_STDIO && defined(__MINGW64__) -#define REAL_ARCH_INTNAT_PRINTF_FORMAT \"ll\" -#else -#define REAL_ARCH_INTNAT_PRINTF_FORMAT ARCH_INTNAT_PRINTF_FORMAT -#endif - -const char *s = \"BEGIN-\" %s \"-END\"; -" headers extra_headers expression in - extract (read_output code) diff --git a/src/configure/gen_c_primitives.ml b/src/configure/gen_c_primitives.ml index 84ea73301..f768601f9 100644 --- a/src/configure/gen_c_primitives.ml +++ b/src/configure/gen_c_primitives.ml @@ -1,3 +1,7 @@ +[@@@warning "-9"] + +module C = Configurator.V1 + let header ="\ (* * Copyright (c) 2016 whitequark @@ -64,7 +68,7 @@ let c_primitives = [ alignment = "alignof(intnat)" }; ] -let printf = Printf.printf +open Printf let generate name typ f = printf "let %s : type a. a prim -> %s = function\n" name typ; @@ -77,23 +81,54 @@ let generate name typ f = end; printf "\n") c_primitives +let prelude = "\ +#if defined(__MINGW32__) || defined(__MINGW64__) +#define __USE_MINGW_ANSI_STDIO 1 +#include /* see: https://sourceforge.net/p/mingw-w64/bugs/627/ */ +#endif + +#include +#include +#include +#include + +#define alignof(T) (offsetof(struct { char c; T t; }, t)) +#define STRINGIFY1(x) #x +#define STRINGIFY(x) STRINGIFY1(x) + +#if __USE_MINGW_ANSI_STDIO && defined(__MINGW64__) +#define REAL_ARCH_INTNAT_PRINTF_FORMAT \"ll\" +#else +#define REAL_ARCH_INTNAT_PRINTF_FORMAT ARCH_INTNAT_PRINTF_FORMAT +#endif +" +let includes = [] + let () = - begin + C.main ~name:"ctypes" (fun c -> + let import_int l = + match C.C_define.(import c ~prelude ~includes [l,Type.Int]) with + |[_,C.C_define.Value.Int i] -> i + |_ -> failwith ("unable to find integer definition for " ^ l) in + let import_string l = + match C.C_define.(import c ~prelude ~includes [l,Type.String]) with + |[_,C.C_define.Value.String s] -> s + |_ -> failwith ("unable to find string definition for " ^ l) in print_string header; generate "sizeof" "int" (fun { size } -> - printf "%d" (Extract_from_c.integer size)); + printf "%d" (import_int size)); generate "alignment" "int" (fun { alignment } -> - printf "%d" (Extract_from_c.integer alignment)); + printf "%d" (import_int alignment)); generate "name" "string" (fun { typ } -> - printf "%S" (Extract_from_c.string ("STRINGIFY("^typ^")"))); + printf "%S" (import_string ("STRINGIFY("^typ^")"))); generate "format_string" "string option" (fun { format } -> match format with | Known_format str -> printf "Some %S" ("%"^str) | Defined_format str -> - printf "Some %S" ("%"^Extract_from_c.string str) + printf "Some %S" ("%"^(import_string str)) | No_format -> printf "None"); - printf "let pointer_size = %d\n" (Extract_from_c.integer "sizeof(void*)"); - printf "let pointer_alignment = %d\n" (Extract_from_c.integer "alignof(void*)"); - end + printf "let pointer_size = %d\n" (import_int "sizeof(void*)"); + printf "let pointer_alignment = %d\n" (import_int "alignof(void*)"); + ) diff --git a/src/cstubs/cstubs.ml b/src/cstubs/cstubs.ml index 19595fdfe..a033c0546 100644 --- a/src/cstubs/cstubs.ml +++ b/src/cstubs/cstubs.ml @@ -7,6 +7,8 @@ (* Cstubs public interface. *) +[@@@warning "-27-32"] + module type FOREIGN = Ctypes.FOREIGN module type FOREIGN' = FOREIGN with type 'a result = unit diff --git a/src/cstubs/cstubs_c_language.ml b/src/cstubs/cstubs_c_language.ml index 5132e6782..87df2603a 100644 --- a/src/cstubs/cstubs_c_language.ml +++ b/src/cstubs/cstubs_c_language.ml @@ -7,6 +7,8 @@ (* C code representation. *) +[@@@warning "-9"] + open Ctypes_static let fresh_var = diff --git a/src/cstubs/cstubs_emit_c.ml b/src/cstubs/cstubs_emit_c.ml index 2b25b7fe4..7b4fc9a9f 100644 --- a/src/cstubs/cstubs_emit_c.ml +++ b/src/cstubs/cstubs_emit_c.ml @@ -7,6 +7,8 @@ (* C pretty printing. *) +[@@@warning "-9-27"] + open Ctypes_static open Cstubs_c_language open Format diff --git a/src/cstubs/cstubs_generate_c.ml b/src/cstubs/cstubs_generate_c.ml index d24fa1025..37bb39fe1 100644 --- a/src/cstubs/cstubs_generate_c.ml +++ b/src/cstubs/cstubs_generate_c.ml @@ -7,6 +7,8 @@ (* C stub generation *) +[@@@warning "-9-27"] + open Ctypes_static open Cstubs_c_language open Unchecked_function_types diff --git a/src/cstubs/cstubs_generate_ml.ml b/src/cstubs/cstubs_generate_ml.ml index 46f9cdaee..4f907bbd3 100644 --- a/src/cstubs/cstubs_generate_ml.ml +++ b/src/cstubs/cstubs_generate_ml.ml @@ -7,6 +7,8 @@ (* ML stub generation *) +[@@@warning "-9-27"] + open Ctypes_static open Ctypes_path open Cstubs_errors diff --git a/src/cstubs/cstubs_inverted.ml b/src/cstubs/cstubs_inverted.ml index 10b9e64ea..e4220cf76 100644 --- a/src/cstubs/cstubs_inverted.ml +++ b/src/cstubs/cstubs_inverted.ml @@ -7,6 +7,8 @@ (* Cstubs_inverted public interface. *) +[@@@warning "-9-27"] + module type INTERNAL = sig val enum : (string * int64) list -> 'a Ctypes.typ -> unit diff --git a/src/cstubs/cstubs_structs.ml b/src/cstubs/cstubs_structs.ml index 11b86c867..538ee728f 100644 --- a/src/cstubs/cstubs_structs.ml +++ b/src/cstubs/cstubs_structs.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9-27"] + open Ctypes module type TYPE = @@ -40,6 +42,7 @@ let cepilogue = [ "}"; ] let mlprologue = [ + "[@@@warning \"-9-27\"]"; "include Ctypes"; "let lift x = x"; "open Ctypes_static"; @@ -133,7 +136,7 @@ let primitive_format_string : type a. a Ctypes_primitive_types.prim -> string = let open Ctypes_primitive_types in let sprintf = Printf.sprintf in let fail () = - Printf.kprintf failwith "Cannot retrieve constants of type %s" + Printf.ksprintf failwith "Cannot retrieve constants of type %s" (Ctypes_primitives.name p) in match p, Ctypes_primitives.format_string p with diff --git a/src/cstubs/dune b/src/cstubs/dune new file mode 100644 index 000000000..3e14b9640 --- /dev/null +++ b/src/cstubs/dune @@ -0,0 +1,9 @@ +(library + (name ctypes_stubs) + (public_name ctypes.stubs) + (instrumentation + (backend bisect_ppx)) + (wrapped false) + (libraries + (re_export ctypes) + str)) diff --git a/src/ctypes-foreign/config/discover.ml b/src/ctypes-foreign/config/discover.ml new file mode 100644 index 000000000..7be7ae3c9 --- /dev/null +++ b/src/ctypes-foreign/config/discover.ml @@ -0,0 +1,37 @@ +module C = Configurator.V1 + +let () = + C.main ~name:"ffi" (fun c -> + let default : C.Pkg_config.package_conf = { + libs = ["-lffi"]; + cflags = [] + } in + let conf = + match C.Pkg_config.get c with + | None -> default + | Some pc -> + (match C.Pkg_config.query pc ~package:"libffi" with + | None -> default + | Some v -> v) + in + let backend = + match Sys.os_type with + | "Win32" | "Cygwin" -> "win" + | _ -> "unix" in + + let f = "as_needed_test" in + let ml = f ^ ".ml" in + open_out ml |> close_out; + let extra_ldflags = + match backend with + |"win" -> ["-lpsapi"] + |_ -> + let res = C.Process.run_ok c "ocamlopt" + ["-shared"; "-cclib"; "-Wl,--no-as-needed"; ml; "-o"; f^".cmxs"] in + if res then ["-Wl,--no-as-needed"] else [] + in + C.Flags.write_sexp "c_flags.sexp" conf.cflags; + C.Flags.write_lines "c_flags" conf.cflags; + C.Flags.write_sexp "c_library_flags.sexp" (conf.libs @ extra_ldflags); + C.Flags.write_lines "backend.sexp" [backend] + ) diff --git a/src/ctypes-foreign/config/dune b/src/ctypes-foreign/config/dune new file mode 100644 index 000000000..cd319cd9b --- /dev/null +++ b/src/ctypes-foreign/config/dune @@ -0,0 +1,9 @@ +(executable + (name discover) + (modules discover) + (libraries dune-configurator)) + +(executable + (name gen_libffi_abi) + (modules gen_libffi_abi) + (libraries dune-configurator)) diff --git a/src/configure/gen_libffi_abi.ml b/src/ctypes-foreign/config/gen_libffi_abi.ml similarity index 58% rename from src/configure/gen_libffi_abi.ml rename to src/ctypes-foreign/config/gen_libffi_abi.ml index ad59cb7b3..e570169c3 100644 --- a/src/configure/gen_libffi_abi.ml +++ b/src/ctypes-foreign/config/gen_libffi_abi.ml @@ -5,7 +5,9 @@ * See the file LICENSE for details. *) -let header ="\ +module C = Configurator.V1 + +let header = "\ (* * Copyright (c) 2014 Jeremy Yallop. * @@ -15,6 +17,8 @@ let header ="\ (* Support for various ABIs *) +[@@@warning \"-37\"] + type abi = Code of int | Unsupported of string let abi_code = function @@ -23,6 +27,14 @@ let abi_code = function " +let ffi_is_defined = Printf.sprintf "\ +#include +int main(int argc, char **argv) { + int s = %s; + return 0; +} +" + let symbols = [ ("aix" , "FFI_AIX"); ("darwin" , "FFI_DARWIN"); @@ -53,17 +65,34 @@ let symbols = [ ("default_abi" , "FFI_DEFAULT_ABI"); ] -let extra_headers = "#include " +let includes = ["ffi.h"] +module CD = C.C_define + +let find_defined_symbols c c_flags = + List.fold_left (fun acc (_,sym) -> + if C.c_test c ~c_flags (ffi_is_defined sym) then + sym :: acc + else acc) [] symbols + +let get_symbol c c_flags symbol = + match CD.(import c ~includes ~c_flags [symbol,Type.Int]) with + |[_,CD.Value.Int i] -> i + |_ -> failwith (Printf.sprintf "unexpected error parsing ffi.h: is %s not an integer?" symbol) -let write_line name symbol = - try - Printf.printf "let %s = Code %d\n" name (Extract_from_c.integer ~extra_headers symbol) - with Not_found -> +let write_line c ~c_flags ~defined_symbols ~name ~symbol = + if List.mem symbol defined_symbols then + get_symbol c c_flags symbol |> + Printf.printf "let %s = Code %d\n" name + else Printf.printf "let %s = Unsupported \"%s\"\n" name symbol let () = - begin + let c_flags = ref "" in + let args = ["-cflags", Arg.Set_string c_flags, "CFLAGS for libffi"] in + C.main ~args ~name:"ctypes-ffi" (fun c -> + let c_flags = match !c_flags with "" -> [] | c -> [c] in + let defined_symbols = find_defined_symbols c c_flags in print_string header; - List.iter (fun (name, symbol) -> write_line name symbol) symbols - end + List.iter (fun (name, symbol) -> write_line c ~c_flags ~defined_symbols ~name ~symbol) symbols + ) diff --git a/src/ctypes-foreign/ctypes_ffi.ml b/src/ctypes-foreign/ctypes_ffi.ml index 23d05f00f..f7840873f 100644 --- a/src/ctypes-foreign/ctypes_ffi.ml +++ b/src/ctypes-foreign/ctypes_ffi.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9-27"] + module type CLOSURE_PROPERTIES = sig val record : Obj.t -> Obj.t -> int diff --git a/src/ctypes-foreign/dl.ml.unix b/src/ctypes-foreign/dl.ml.unix index 9a9add321..4a10985ed 100644 --- a/src/ctypes-foreign/dl.ml.unix +++ b/src/ctypes-foreign/dl.ml.unix @@ -50,6 +50,7 @@ let _report_dl_error noload = let crush_flags f : 'a list -> int = List.fold_left (fun i o -> i lor (f o)) 0 +[@@@warning "-16"] let dlopen ?filename ~flags = match _dlopen ?filename ~flags:(crush_flags resolve_flag flags) with | Some library -> library diff --git a/src/ctypes-foreign/dl.ml.win b/src/ctypes-foreign/dl.ml.win index 0b747286f..ab21d7790 100644 --- a/src/ctypes-foreign/dl.ml.win +++ b/src/ctypes-foreign/dl.ml.win @@ -3,7 +3,7 @@ * See the file LICENSE for details. *) -[@@@ocaml.warning "-16"] +[@@@ocaml.warning "-16-37"] type library @@ -84,7 +84,7 @@ let dlopen ?filename ~flags = else x in - let ls = String.lowercase s in + let ls = String.lowercase_ascii s in let s' = if Filename.check_suffix ls ".so" || Filename.check_suffix ls ".dylib" diff --git a/src/ctypes-foreign/dune b/src/ctypes-foreign/dune new file mode 100644 index 000000000..0b5938e84 --- /dev/null +++ b/src/ctypes-foreign/dune @@ -0,0 +1,33 @@ +(rule + (copy# "dl_stubs.c.%{read-lines:backend.sexp}" dl_stubs.c)) + +(rule + (copy# "dl.ml.%{read-lines:backend.sexp}" dl.ml)) + +(rule + (with-stdout-to + libffi_abi.ml + (run ./config/gen_libffi_abi.exe -cflags "%{read-lines:c_flags}"))) + +(library + (name ctypes_foreign) + (public_name ctypes-foreign) + (instrumentation + (backend bisect_ppx)) + (wrapped false) + (private_modules ctypes_foreign_threaded_stubs) + (libraries ctypes threads) + (c_library_flags + :standard + (:include c_library_flags.sexp)) + (foreign_stubs + (language c) + (names dl_stubs ffi_call_stubs ffi_type_stubs foreign_threaded_stubs) + (flags + :standard + (:include c_flags.sexp)))) + +(rule + (targets c_flags c_flags.sexp c_library_flags.sexp backend.sexp) + (action + (run ./config/discover.exe))) diff --git a/src/ctypes-top/dune b/src/ctypes-top/dune new file mode 100644 index 000000000..5c85dce6f --- /dev/null +++ b/src/ctypes-top/dune @@ -0,0 +1,6 @@ +;; see https://github.com/ocaml/dune/issues/688 + +(library + (name ctypes_top) + (public_name ctypes.top) + (libraries ctypes compiler-libs)) diff --git a/src/ctypes/ctypes.mli b/src/ctypes/ctypes.mli index a291c0cc3..9d9b4e6a2 100644 --- a/src/ctypes/ctypes.mli +++ b/src/ctypes/ctypes.mli @@ -477,10 +477,9 @@ val coerce_fn : 'a fn -> 'b fn -> 'a -> 'b coercions. *) -(** {2 binding interfaces}. -*) +(** {2 binding interfaces} -(** Foreign function binding interface. + Foreign function binding interface. The {!Foreign} and {!Cstubs} modules provide concrete implementations. *) module type FOREIGN = diff --git a/src/ctypes/ctypes_coerce.ml b/src/ctypes/ctypes_coerce.ml index a0709bc5b..eccd47422 100644 --- a/src/ctypes/ctypes_coerce.ml +++ b/src/ctypes/ctypes_coerce.ml @@ -7,6 +7,8 @@ (* Coercions *) +[@@@warning "-27"] + open Ctypes_static type uncoercible_info = diff --git a/src/ctypes/ctypes_memory.ml b/src/ctypes/ctypes_memory.ml index 93547097b..5fbd299da 100644 --- a/src/ctypes/ctypes_memory.ml +++ b/src/ctypes/ctypes_memory.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9-27"] + open Ctypes_static module Stubs = Ctypes_memory_stubs diff --git a/src/ctypes/ctypes_ptr.ml b/src/ctypes/ctypes_ptr.ml index cbf021915..c0d8de382 100644 --- a/src/ctypes/ctypes_ptr.ml +++ b/src/ctypes/ctypes_ptr.ml @@ -7,6 +7,8 @@ (* Boxed pointers to C memory locations . *) +[@@@warning "-9"] + module Raw = struct include Nativeint diff --git a/src/ctypes/ctypes_static.ml b/src/ctypes/ctypes_static.ml index f54da467c..53d254d16 100644 --- a/src/ctypes/ctypes_static.ml +++ b/src/ctypes/ctypes_static.ml @@ -7,6 +7,8 @@ (* C type construction *) +[@@@warning "-9"] + exception IncompleteType exception ModifyingSealedType of string exception Unsupported of string diff --git a/src/ctypes/ctypes_std_views.ml b/src/ctypes/ctypes_std_views.ml index d57a5715d..8a7a8f1ae 100644 --- a/src/ctypes/ctypes_std_views.ml +++ b/src/ctypes/ctypes_std_views.ml @@ -74,7 +74,7 @@ let signed_typedef name ~size : (module Signed_type) = let t = Ctypes_static.(typedef int32_t name) end) | 8 -> (module struct include Signed.Int64 let t = Ctypes_static.(typedef int64_t name) end) - | n -> Printf.kprintf failwith "size %d not supported for %s\n" n name + | n -> Printf.ksprintf failwith "size %d not supported for %s\n" n name let unsigned_typedef name ~size : (module Unsigned_type) = match size with @@ -86,7 +86,7 @@ let unsigned_typedef name ~size : (module Unsigned_type) = let t = Ctypes_static.(typedef uint32_t name) end) | 8 -> (module struct include Unsigned.UInt64 let t = Ctypes_static.(typedef uint64_t name) end) - | n -> Printf.kprintf failwith "size %d not supported for %s\n" n name + | n -> Printf.ksprintf failwith "size %d not supported for %s\n" n name module Intptr = (val signed_typedef "intptr_t" ~size:(Ctypes_std_view_stubs.intptr_t_size ())) diff --git a/src/ctypes/ctypes_structs_computed.ml b/src/ctypes/ctypes_structs_computed.ml index b2f13f1d1..aa37fea31 100644 --- a/src/ctypes/ctypes_structs_computed.ml +++ b/src/ctypes/ctypes_structs_computed.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9"] + open Ctypes_static let max_field_alignment fields = diff --git a/src/ctypes/ctypes_type_printing.ml b/src/ctypes/ctypes_type_printing.ml index 48820d809..b21c08863 100644 --- a/src/ctypes/ctypes_type_printing.ml +++ b/src/ctypes/ctypes_type_printing.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9-27"] + open Ctypes_static (* See type_printing.mli for the documentation of [format context]. *) diff --git a/src/ctypes/ctypes_value_printing.ml b/src/ctypes/ctypes_value_printing.ml index 9084c2c43..550814c66 100644 --- a/src/ctypes/ctypes_value_printing.ml +++ b/src/ctypes/ctypes_value_printing.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-9-27"] + open Ctypes_static open Ctypes_memory diff --git a/src/ctypes/dune b/src/ctypes/dune new file mode 100644 index 000000000..2ff9eae89 --- /dev/null +++ b/src/ctypes/dune @@ -0,0 +1,42 @@ +(rule + (with-stdout-to + ctypes_primitives.ml + (run ../configure/gen_c_primitives.exe))) + +(rule + (deps + (:header %{lib:integers:ocaml_integers.h})) + (target ocaml_integers.h) + (action + (copy %{header} %{target}))) + +(library + (name ctypes) + (public_name ctypes) + (wrapped false) + (libraries integers bigarray-compat) + (modules_without_implementation ctypes_types) + (instrumentation + (backend bisect_ppx)) + (install_c_headers + ctypes_raw_pointer + ctypes_primitives + ctypes_cstubs_internals + ctypes_managed_buffer_stubs + ctypes_complex_compatibility + cstubs_internals + ctypes_ldouble_stubs + ctypes_complex_stubs + ctypes_type_info_stubs + ocaml_integers) + (foreign_stubs + (language c) + (names + complex_stubs + ctypes_bigarrays + ctypes_roots + ldouble_stubs + managed_buffer_stubs + posix_types_stubs + raw_pointer_stubs + type_info_stubs))) diff --git a/src/ctypes/lDouble.ml b/src/ctypes/lDouble.ml index ff0520c7d..521b7fe78 100644 --- a/src/ctypes/lDouble.ml +++ b/src/ctypes/lDouble.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-3"] + external init : unit -> unit = "ldouble_init" let () = init () diff --git a/src/discover/commands.ml b/src/discover/commands.ml deleted file mode 100644 index aab4a8089..000000000 --- a/src/discover/commands.ml +++ /dev/null @@ -1,81 +0,0 @@ -(* - * Copyright (c) 2014 Jeremy Yallop. - * - * This file is distributed under the terms of the MIT License. - * See the file LICENSE for details. - *) - -let unwind_protect ~cleanup f x = - let rv = try f x - with exn -> - begin - cleanup x; - raise exn - end - in - begin - cleanup x; - rv - end - -let with_open_output_file ~filename f = - unwind_protect ~cleanup:close_out f (open_out filename) - -let with_open_input_file ~filename f = - unwind_protect ~cleanup:close_in f (open_in filename) - -let file_contents ~filename : string = - Bytes.to_string - (with_open_input_file ~filename - (fun file -> - let () = set_binary_mode_in file true in - let size = in_channel_length file in - let buf = Bytes.create size in - let () = really_input file buf 0 size in - buf)) - -type command_output = { - status: int; - stdout: string; - stderr: string; -} - -let temp_dir = "." - -(* The use of [unixify] below is not ideal: it's a workaround for the Windows - build, which uses a mixture of Windows- and Unix-style paths due to using MinGW - to compile OCaml and Bash for the shell. -*) -let unixify = Str.(global_replace (regexp "\\\\") "/") - -let shell_command_results command = - let stdout_filename = Filename.temp_file ~temp_dir "ctypes_config" ".stdout" in - let stderr_filename = Filename.temp_file ~temp_dir "ctypes_config" ".stderr" in - unwind_protect - (fun () -> - let full_command = - Printf.sprintf "(%s) > %s 2> %s" command - (unixify stdout_filename) - (unixify stderr_filename) - in - let status = Sys.command full_command in - let stdout = file_contents ~filename:stdout_filename in - let stderr = file_contents ~filename:stderr_filename in - { status; stdout; stderr } - ) () - ~cleanup:begin fun () -> - Sys.remove stdout_filename; - Sys.remove stderr_filename; - end - - -let command fmt = - Printf.ksprintf shell_command_results fmt - -let command_output' command = - (shell_command_results command).stdout - -let command_succeeds' command = (shell_command_results command).status = 0 - -let command_succeeds fmt = - Printf.ksprintf command_succeeds' fmt diff --git a/src/discover/commands.mli b/src/discover/commands.mli deleted file mode 100644 index ba25c69d7..000000000 --- a/src/discover/commands.mli +++ /dev/null @@ -1,21 +0,0 @@ -(* - * Copyright (c) 2014 Jeremy Yallop. - * - * This file is distributed under the terms of the MIT License. - * See the file LICENSE for details. - *) - -val unwind_protect : cleanup:('a -> unit) -> ('a -> 'b) -> 'a -> 'b -val with_open_output_file : filename:string -> (out_channel -> 'a) -> 'a - -val file_contents : filename:string -> string - -type command_output = { - status: int; - stdout: string; - stderr: string; -} - -val command : ('a, unit, string, command_output) format4 -> 'a - -val command_succeeds : ('a, unit, string, bool) format4 -> 'a diff --git a/src/discover/determine_as_needed_flags.sh b/src/discover/determine_as_needed_flags.sh deleted file mode 100755 index f10346a21..000000000 --- a/src/discover/determine_as_needed_flags.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -touch as_needed_test.ml -if ocamlopt -shared -cclib -Wl,--no-as-needed as_needed_test.ml -o as_needed_test.cmxs 2>/dev/null -then - echo 'as_needed_flags=-Wl,--no-as-needed' -else - echo 'as_needed_flags=' -fi -rm as_needed_test.* diff --git a/src/discover/discover.ml b/src/discover/discover.ml deleted file mode 100644 index 35c542443..000000000 --- a/src/discover/discover.ml +++ /dev/null @@ -1,284 +0,0 @@ -(* Copyright (C) 2015 Jeremy Yallop - * Copyright (C) 2012 Anil Madhavapeddy - * Copyright (C) 2010 Jérémie Dimino - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, with linking exceptions; - * either version 2.1 of the License, or (at your option) any later - * version. See COPYING file for details. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. - *) - -(* Discover available features *) - -open Printf - -(* +-----------------------------------------------------------------+ - | Search path | - +-----------------------------------------------------------------+ *) - -(* List of search paths for header files, mostly for MacOS - users. libffi is installed by port systems into non-standard - locations by default on MacOS. - - We use a hardcorded list of path + the ones from C_INCLUDE_PATH and - LIBRARY_PATH. -*) - -let search_paths = - List.map (fun dir -> (dir ^ "/include", dir ^ "/lib")) [ - "/usr"; - "/usr/local"; - "/opt"; - "/opt/local"; - "/sw"; - "/mingw"; - ] - -let is_win = Sys.os_type = "Win32" - -let path_sep = if is_win then ";" else ":" - -let split_path = Str.(split (regexp (path_sep ^ "+"))) - -let ( // ) = Filename.concat - -(** See the comment in commands.ml *) -let unixify = Str.(global_replace (regexp "\\") "/") - -(* +-----------------------------------------------------------------+ - | Test codes | - +-----------------------------------------------------------------+ *) - -let libffi_caml_code = " -external test : unit -> unit = \"ffi_test\" -let () = test () -" - -let libffi_stub_code = " -#include -#include - -CAMLprim value ffi_test() -{ - ffi_prep_closure(NULL, NULL, NULL, NULL); - return Val_unit; -} -" - -(* +-----------------------------------------------------------------+ - | Compilation | - +-----------------------------------------------------------------+ *) - -let ocamlc = ref "ocamlc" -let ext_obj = ref ".o" -let exec_name = ref "a.out" -let os_type = ref "Unix" -let ccomp_type = ref "cc" -let ffi_dir = ref "" -let is_homebrew = ref false -let is_macports = ref false -let homebrew_prefix = ref "/usr/local" -let macports_prefix = ref "/opt/local" - -(* Search for a header file in standard directories. *) -let search_header header = - let rec loop = function - | [] -> - None - | (dir_include, dir_lib) :: dirs -> - if Sys.file_exists (dir_include // header) then - Some (dir_include, dir_lib) - else - loop dirs - in - loop search_paths - -let silent_remove filename = - try Sys.remove filename - with exn -> () - -let test_code opt lib stub_code caml_code = - let open Commands in - let stem f = Filename.(chop_extension (basename f)) in - let stub_filename = unixify (Filename.temp_file "ctypes_libffi" ".c") in - let caml_filename = unixify (Filename.temp_file "ctypes_libffi" ".ml") in - with_open_output_file ~filename:stub_filename begin fun stubfd -> - with_open_output_file ~filename:caml_filename begin fun camlfd -> - unwind_protect (fun () -> - output_string stubfd stub_code; - output_string camlfd caml_code; - Commands.command_succeeds - "%s -custom %s %s %s %s 1>&2" - !ocamlc - (String.concat " " (List.map (sprintf "-ccopt %s") opt)) - (unixify (Filename.quote stub_filename)) - (unixify (Filename.quote caml_filename)) - (String.concat " " (List.map (sprintf "-cclib %s") lib))) () - ~cleanup:begin fun () -> - let caml_stem = unixify (stem caml_filename) in - silent_remove (unixify (stem stub_filename ^ !ext_obj)); - silent_remove !exec_name; - silent_remove (caml_stem ^ ".cmi"); - silent_remove (caml_stem ^ ".cmo"); - end - end - end - -let test_feature name test = - begin - fprintf stderr "testing for %s:%!" name; - if test () then begin - fprintf stderr " %s available\n%!" (String.make (34 - String.length name) '.'); - true - end else begin - fprintf stderr " %s unavailable\n%!" (String.make (34 - String.length name) '.'); - false - end - end - -(* +-----------------------------------------------------------------+ - | pkg-config | - +-----------------------------------------------------------------+ *) - -let split = Str.(split (regexp " +")) - -let brew_libffi_version flags = - match Commands.command "brew ls libffi --versions | awk '{print $NF}'" with - { Commands.status; stderr } when status <> 0 -> - ksprintf failwith "brew ls libffi failed: %s" stderr - | { Commands.stdout = "" } -> - failwith "You need to 'brew install libffi' to get a suitably up-to-date version" - | { Commands.stdout } -> - String.trim stdout - -let pkg_config flags = - let output = - if !is_homebrew then - Commands.command - "env PKG_CONFIG_PATH=%s/Cellar/libffi/%s/lib/pkgconfig %s/bin/pkg-config %s" - !homebrew_prefix (brew_libffi_version ()) !homebrew_prefix flags - else - Commands.command "pkg-config %s" flags - in - match output with - { Commands.status } when status <> 0 -> None - | { Commands.stdout } -> Some (split (String.trim stdout)) - -let pkg_config_flags name = - match (ksprintf pkg_config "--cflags %s" name, - ksprintf pkg_config "--libs %s" name) with - Some opt, Some lib -> Some (opt, lib) - | _ -> None - -let get_homebrew_prefix () = - match Commands.command "brew --prefix" with - { Commands.status } when status <> 0 -> raise Exit - | { Commands.stdout } -> String.trim stdout - -let search_libffi_header () = - match search_header "ffi.h" with - | Some (dir_i, dir_l) -> - (["-I" ^ dir_i], ["-L" ^ dir_l; "-lffi"]) - | None -> - ([], ["-lffi"]) - -let test_libffi setup_data have_pkg_config = - let get var = try Some (split (Sys.getenv var)) with Not_found -> None in - let opt, lib = - match get "LIBFFI_CFLAGS", get "LIBFFI_LIBS" with - | Some opt, Some lib -> (opt, lib) - | envopt, envlib -> - let opt, lib = - if not have_pkg_config then - search_libffi_header () - else match pkg_config_flags "libffi" with - | Some (pkgopt, pkglib) -> (pkgopt, pkglib) - | None -> search_libffi_header () - in - match envopt, envlib, opt, lib with - | Some opt, Some lib, _ , _ - | Some opt, None , _ , lib - | None , Some lib, opt, _ - | None , None , opt, lib -> opt, lib - in - setup_data := ("libffi_opt", opt) :: ("libffi_lib", lib) :: !setup_data; - let libffi_available = test_code opt lib libffi_stub_code libffi_caml_code in - setup_data := ("libffi_available", [string_of_bool libffi_available]) :: !setup_data; - libffi_available - -(* Test for pkg-config. If we are on MacOS X, we need the latest pkg-config - * from either Homebrew or MacPorts *) -let have_pkg_config is_homebrew is_macports homebrew_prefix macports_prefix = - if is_homebrew then begin - (* Look in `brew for the right pkg-config *) - homebrew_prefix := get_homebrew_prefix (); - test_feature "pkg-config" - (fun () -> - Commands.command_succeeds "%s/bin/pkg-config --version" !homebrew_prefix) - end - else if is_macports then begin - (* Look in macports for the right pkg-config *) - test_feature "macports" - (fun () -> - Commands.command_succeeds "%s/bin/port version" !macports_prefix) - end - else begin - test_feature "pkg-config" - (fun () -> - Commands.command_succeeds "pkg-config --version") -end - -let args = [ - "-ocamlc", Arg.Set_string ocamlc, " ocamlc"; - "-ext-obj", Arg.Set_string ext_obj, " C object files extension"; - "-exec-name", Arg.Set_string exec_name, " name of the executable produced by ocamlc"; - "-ccomp-type", Arg.Set_string ccomp_type, " C compiler type"; -] - -(* +-----------------------------------------------------------------+ - | Entry point | - +-----------------------------------------------------------------+ *) - -let () = - Arg.parse args ignore "check for external C libraries and available features\noptions are:"; - - (* Test for MacOS X Homebrew. *) - is_homebrew := - test_feature "brew" - (fun () -> - let out = Commands.command "brew ls --versions" in - out.status == 0 && out.stdout <> "" - ); - - (* Test for MacOS X MacPorts. *) - is_macports := - test_feature "MacPorts" - (fun () -> - Commands.command_succeeds "port info libffi"); - - let have_pkg_config = have_pkg_config !is_homebrew !is_macports homebrew_prefix macports_prefix in - - let setup_data = ref [] in - let have_libffi = test_feature "libffi" - (fun () -> test_libffi setup_data have_pkg_config) in - - if not have_pkg_config then - fprintf stderr "Warning: the 'pkg-config' command is not available.\n"; - - if not have_libffi then - fprintf stderr "Warning: libffi is not available.\n"; - - ListLabels.iter !setup_data - ~f:(fun (name, args) -> - Printf.printf "%s=%s\n" name (String.concat " " args)) diff --git a/tests/bench-micro/.merlin b/tests/bench-micro/.merlin deleted file mode 100644 index 8c21ac1bd..000000000 --- a/tests/bench-micro/.merlin +++ /dev/null @@ -1,6 +0,0 @@ -PKG ctypes -PKG core -PKG core_bench - -S . -B . diff --git a/tests/clib/dune b/tests/clib/dune new file mode 100644 index 000000000..94878ff4d --- /dev/null +++ b/tests/clib/dune @@ -0,0 +1,25 @@ +(library + (name test_functions) + (install_c_headers test_functions) + (foreign_stubs + (language c) + (names test_functions)) + (c_library_flags -pthread) + (libraries ctypes)) + +(rule + (target clib%{ext_dll}) + (deps + (source_tree ../../src/ctypes) + test_functions.h) + (action + (run + %{cc} + -I + ../../src/ctypes + -I + %{ocaml_where} + -o + %{target} + -shared + %{dep:test_functions.c}))) diff --git a/tests/clib/test_functions.h b/tests/clib/test_functions.h index 5022e9887..cb86632b1 100644 --- a/tests/clib/test_functions.h +++ b/tests/clib/test_functions.h @@ -165,7 +165,7 @@ struct one_int { int i; }; struct one_int return_struct_by_value(void); void matrix_mul(int, int, int, double *, double *, double *); double *matrix_transpose(int, int, double *); -int (*plus_callback)(int); +extern int (*plus_callback)(int); int sum_range_with_plus_callback(int, int); typedef int callback_t(void); void register_callback(callback_t *); diff --git a/tests/config/dune b/tests/config/dune new file mode 100644 index 000000000..f2c9c2b8f --- /dev/null +++ b/tests/config/dune @@ -0,0 +1,24 @@ +(executable + (name test_config) + (libraries dune.configurator)) + +(rule + (targets test-cflags) + (deps + test_config.exe + %{lib:ctypes:cstubs_internals.h} + %{lib:ctypes:ctypes_complex_compatibility.h} + %{lib:ctypes:ctypes_complex_stubs.h} + %{lib:ctypes:ctypes_cstubs_internals.h} + %{lib:ctypes:ctypes_ldouble_stubs.h} + %{lib:ctypes:ctypes_managed_buffer_stubs.h} + %{lib:ctypes:ctypes_primitives.h} + %{lib:ctypes:ctypes_raw_pointer.h} + %{lib:ctypes:ctypes_type_info_stubs.h}) + (action + (run + %{exe:test_config.exe} + -integers-dir + %{lib:integers:ocaml_integers.h} + -ctypes-dir + %{lib:ctypes:ctypes_cstubs_internals.h}))) diff --git a/tests/config/test_config.ml b/tests/config/test_config.ml new file mode 100644 index 000000000..e8fc25820 --- /dev/null +++ b/tests/config/test_config.ml @@ -0,0 +1,13 @@ +module C = Configurator.V1 + +let () = + let ifile = ref "" in + let cfile = ref "" in + let args = [ + "-integers-dir", Arg.Set_string ifile, "location of ocaml_integers.h"; + "-ctypes-dir", Arg.Set_string cfile, "location of ctypes_cstubs_internals.h"] in + C.main ~args ~name:"ctypes-tests" (fun _c -> + let idir = ["-I";Filename.dirname !ifile] in + let cdir = ["-I";Filename.dirname !cfile] in + C.Flags.write_lines "test-cflags" (idir @ cdir) + ) diff --git a/tests/flags/dune b/tests/flags/dune new file mode 100644 index 000000000..092c1a6a2 --- /dev/null +++ b/tests/flags/dune @@ -0,0 +1,7 @@ +(rule + (with-stdout-to + link-flags.sexp + (run ./gen.exe))) + +(executable + (name gen)) diff --git a/tests/flags/gen.ml b/tests/flags/gen.ml new file mode 100644 index 000000000..1d43e7dac --- /dev/null +++ b/tests/flags/gen.ml @@ -0,0 +1,9 @@ +let () = + let ocaml_version_str = Sys.ocaml_version in + let ocaml_version = + Scanf.sscanf ocaml_version_str "%u.%u" (fun a b -> (a, b)) + in + if ocaml_version >= (4, 6) then + print_endline ":standard" + else + print_endline "(:standard -ccopt -Wl,-E)" diff --git a/tests/flags/gen.mli b/tests/flags/gen.mli new file mode 100644 index 000000000..e790aeb70 --- /dev/null +++ b/tests/flags/gen.mli @@ -0,0 +1 @@ +(* empty *) diff --git a/tests/test-alignment/dune b/tests/test-alignment/dune new file mode 100644 index 000000000..73de5bb09 --- /dev/null +++ b/tests/test-alignment/dune @@ -0,0 +1,4 @@ +(test + (package ctypes-foreign) + (name test_alignment) + (libraries ounit2 ctypes ctypes-foreign)) diff --git a/tests/test-alignment/test_alignment.ml b/tests/test-alignment/test_alignment.ml index 07f234603..4f2af6316 100644 --- a/tests/test-alignment/test_alignment.ml +++ b/tests/test-alignment/test_alignment.ml @@ -8,6 +8,7 @@ open OUnit2 open Ctypes +[@@@warning "-32-34"] (* Test some relationships between the alignment requirements of primitive types. diff --git a/tests/test-arrays/dune b/tests/test-arrays/dune new file mode 100644 index 000000000..4a1cc7c43 --- /dev/null +++ b/tests/test-arrays/dune @@ -0,0 +1,15 @@ +(test + (name test_array) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_arrays_stubs + test_arrays_bindings + tests_common + stdlib-shims)) diff --git a/tests/test-arrays/stub-generator/dune b/tests/test-arrays/stub-generator/dune new file mode 100644 index 000000000..1bf30b152 --- /dev/null +++ b/tests/test-arrays/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_arrays_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_arrays_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-arrays/stubs/dune b/tests/test-arrays/stubs/dune new file mode 100644 index 000000000..ca8cbfc1a --- /dev/null +++ b/tests/test-arrays/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_arrays_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-arrays/test_array.ml b/tests/test-arrays/test_array.ml index 71de2ca25..620cff9cf 100644 --- a/tests/test-arrays/test_array.ml +++ b/tests/test-arrays/test_array.ml @@ -9,9 +9,7 @@ open OUnit2 module Float_ = struct let float = float end (*has to be above the module Ctypes*) open Ctypes - -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) - +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) (* Creating multidimensional arrays, and reading and writing elements. diff --git a/tests/test-bigarrays/dune b/tests/test-bigarrays/dune new file mode 100644 index 000000000..ca3417d29 --- /dev/null +++ b/tests/test-bigarrays/dune @@ -0,0 +1,14 @@ +(test + (name test_bigarrays) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_bigarrays_stubs + test_bigarrays_bindings + tests_common)) diff --git a/tests/test-bigarrays/stub-generator/dune b/tests/test-bigarrays/stub-generator/dune new file mode 100644 index 000000000..771db92cc --- /dev/null +++ b/tests/test-bigarrays/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_bigarrays_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_bigarrays_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-bigarrays/stubs/dune b/tests/test-bigarrays/stubs/dune new file mode 100644 index 000000000..9bb34b703 --- /dev/null +++ b/tests/test-bigarrays/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_bigarrays_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-bigarrays/stubs/functions.ml b/tests/test-bigarrays/stubs/functions.ml index edf03cb09..e07298cbc 100644 --- a/tests/test-bigarrays/stubs/functions.ml +++ b/tests/test-bigarrays/stubs/functions.ml @@ -8,7 +8,6 @@ (* Foreign function bindings for the bigarrays tests. *) open Ctypes -open Tests_common module Stubs (F: Ctypes.FOREIGN) = struct diff --git a/tests/test-bigarrays/test_bigarrays.ml b/tests/test-bigarrays/test_bigarrays.ml index 1ec923b76..fd047467f 100644 --- a/tests/test-bigarrays/test_bigarrays.ml +++ b/tests/test-bigarrays/test_bigarrays.ml @@ -8,6 +8,8 @@ module Std_array = Array type 'a std_array = 'a array +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) + open OUnit2 open Ctypes module BA = Bigarray_compat diff --git a/tests/test-bools/dune b/tests/test-bools/dune new file mode 100644 index 000000000..73476b889 --- /dev/null +++ b/tests/test-bools/dune @@ -0,0 +1,14 @@ +(test + (name test_bools) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_bools_stubs + test_bools_bindings + tests_common)) diff --git a/tests/test-bools/stub-generator/dune b/tests/test-bools/stub-generator/dune new file mode 100644 index 000000000..222152c48 --- /dev/null +++ b/tests/test-bools/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_bools_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_bools_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-bools/stubs/dune b/tests/test-bools/stubs/dune new file mode 100644 index 000000000..366c8b72c --- /dev/null +++ b/tests/test-bools/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_bools_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-bools/test_bools.ml b/tests/test-bools/test_bools.ml index 8b5bae256..453d2be94 100644 --- a/tests/test-bools/test_bools.ml +++ b/tests/test-bools/test_bools.ml @@ -6,14 +6,13 @@ *) open OUnit2 -open Ctypes +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = struct module M = Functions.Common(S) - open M (* Test passing bool values. diff --git a/tests/test-builtins/dune b/tests/test-builtins/dune new file mode 100644 index 000000000..b9940d434 --- /dev/null +++ b/tests/test-builtins/dune @@ -0,0 +1,11 @@ +(test + (name test_builtins) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_builtins_stubs + test_builtins_bindings + tests_common)) diff --git a/tests/test-builtins/stub-generator/dune b/tests/test-builtins/stub-generator/dune new file mode 100644 index 000000000..f9a6e83c1 --- /dev/null +++ b/tests/test-builtins/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_builtins_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_builtins_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-builtins/stubs/dune b/tests/test-builtins/stubs/dune new file mode 100644 index 000000000..22ac1bee9 --- /dev/null +++ b/tests/test-builtins/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_builtins_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-callback_lifetime/dune b/tests/test-callback_lifetime/dune new file mode 100644 index 000000000..516f955b4 --- /dev/null +++ b/tests/test-callback_lifetime/dune @@ -0,0 +1,14 @@ +(test + (name test_callback_lifetime) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_callback_lifetimes_stubs + test_callback_lifetimes_bindings + tests_common)) diff --git a/tests/test-callback_lifetime/stub-generator/dune b/tests/test-callback_lifetime/stub-generator/dune new file mode 100644 index 000000000..26b52078c --- /dev/null +++ b/tests/test-callback_lifetime/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_callback_lifetimes_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_callback_lifetimes_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-callback_lifetime/stubs/dune b/tests/test-callback_lifetime/stubs/dune new file mode 100644 index 000000000..bdc2ec495 --- /dev/null +++ b/tests/test-callback_lifetime/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_callback_lifetimes_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-callback_lifetime/test_callback_lifetime.ml b/tests/test-callback_lifetime/test_callback_lifetime.ml index 1af4a996c..6ccecf7d7 100644 --- a/tests/test-callback_lifetime/test_callback_lifetime.ml +++ b/tests/test-callback_lifetime/test_callback_lifetime.ml @@ -5,10 +5,12 @@ * See the file LICENSE for details. *) +[@@@warning "-9"] + open OUnit2 -open Ctypes open Foreign +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-closure-type-promotion/dune b/tests/test-closure-type-promotion/dune new file mode 100644 index 000000000..40698713c --- /dev/null +++ b/tests/test-closure-type-promotion/dune @@ -0,0 +1,14 @@ +(test + (name test_closure_type_promotion) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_closure_type_promotions_stubs + test_closure_type_promotions_bindings + tests_common)) diff --git a/tests/test-closure-type-promotion/stub-generator/dune b/tests/test-closure-type-promotion/stub-generator/dune new file mode 100644 index 000000000..c837892e2 --- /dev/null +++ b/tests/test-closure-type-promotion/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_closure_type_promotions_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_closure_type_promotions_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-closure-type-promotion/stubs/dune b/tests/test-closure-type-promotion/stubs/dune new file mode 100644 index 000000000..74757c4e2 --- /dev/null +++ b/tests/test-closure-type-promotion/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_closure_type_promotions_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-closure-type-promotion/test_closure_type_promotion.ml b/tests/test-closure-type-promotion/test_closure_type_promotion.ml index be3d96034..5936d6dee 100644 --- a/tests/test-closure-type-promotion/test_closure_type_promotion.ml +++ b/tests/test-closure-type-promotion/test_closure_type_promotion.ml @@ -3,9 +3,9 @@ * See the file LICENSE for details. *) -open Ctypes open OUnit2 -open Foreign + +let _testlib = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) (* * Using the closure API of libffi is error prone due to differences diff --git a/tests/test-coercions/dune b/tests/test-coercions/dune new file mode 100644 index 000000000..0c3765d3d --- /dev/null +++ b/tests/test-coercions/dune @@ -0,0 +1,11 @@ +(test + (name test_coercions) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_coercionss_stubs + test_coercionss_bindings + tests_common)) diff --git a/tests/test-coercions/stub-generator/dune b/tests/test-coercions/stub-generator/dune new file mode 100644 index 000000000..a2f547217 --- /dev/null +++ b/tests/test-coercions/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_coercionss_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_coercionss_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-coercions/stubs/dune b/tests/test-coercions/stubs/dune new file mode 100644 index 000000000..5e2df7e29 --- /dev/null +++ b/tests/test-coercions/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_coercionss_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-coercions/test_coercions.ml b/tests/test-coercions/test_coercions.ml index d8eeffb80..ea61867dc 100644 --- a/tests/test-coercions/test_coercions.ml +++ b/tests/test-coercions/test_coercions.ml @@ -38,7 +38,7 @@ let test_pointer_coercions _ = ~f:(fun (T t1) -> ListLabels.iter types ~f:(fun (T t2) -> - let _ = coerce (ptr t1) (ptr t2) in ())) + let _fn = coerce (ptr t1) (ptr t2) in ())) (* Check that pointer coercions are value-preserving. *) let v = 10 @@ -57,7 +57,7 @@ let test_struct_first_member_coercions _ = let module M = struct let s = structure "s" let f = field s "f" double - let i = field s "i" int + let _i = field s "i" int let () = seal s let () = begin @@ -166,7 +166,7 @@ end Check that identity coercions are cost-free. *) let test_identity_coercions _ = - let f = fun x y -> x in + let f = fun x _y -> x in let fn = int @-> float @-> returning int in let f' = coerce_fn fn fn f in assert_bool "identity coercions are free" (f' == f) diff --git a/tests/test-complex/dune b/tests/test-complex/dune new file mode 100644 index 000000000..552f09e77 --- /dev/null +++ b/tests/test-complex/dune @@ -0,0 +1,14 @@ +(test + (name test_complex) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_complexs_stubs + test_complexs_bindings + tests_common)) diff --git a/tests/test-complex/stub-generator/dune b/tests/test-complex/stub-generator/dune new file mode 100644 index 000000000..7b32ee99d --- /dev/null +++ b/tests/test-complex/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_complexs_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_complexs_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-complex/stubs/dune b/tests/test-complex/stubs/dune new file mode 100644 index 000000000..702ada5e7 --- /dev/null +++ b/tests/test-complex/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_complexs_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-complex/test_complex.ml b/tests/test-complex/test_complex.ml index 4819d0cd9..c8d993fd2 100644 --- a/tests/test-complex/test_complex.ml +++ b/tests/test-complex/test_complex.ml @@ -8,9 +8,7 @@ open OUnit2 open Ctypes - -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) - +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-constants/dune b/tests/test-constants/dune new file mode 100644 index 000000000..fc5d77c89 --- /dev/null +++ b/tests/test-constants/dune @@ -0,0 +1,64 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_constants_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions)) + +(test + (name test_constants) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (modules test_constants) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_constants_stubs + test_functions + test_constants_bindings + tests_common)) diff --git a/tests/test-constants/stub-generator/dune b/tests/test-constants/stub-generator/dune new file mode 100644 index 000000000..6d37c6f78 --- /dev/null +++ b/tests/test-constants/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_constants_stubs tests_common)) diff --git a/tests/test-constants/stubs/dune b/tests/test-constants/stubs/dune new file mode 100644 index 000000000..ddbc20ae6 --- /dev/null +++ b/tests/test-constants/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_constants_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-constants/stubs/types.ml b/tests/test-constants/stubs/types.ml index 333fb61f2..c92cb2147 100644 --- a/tests/test-constants/stubs/types.ml +++ b/tests/test-constants/stubs/types.ml @@ -5,8 +5,6 @@ * See the file LICENSE for details. *) -open Ctypes - module Struct_stubs(S : Ctypes.TYPE) = struct open S diff --git a/tests/test-constants/test_constants.ml b/tests/test-constants/test_constants.ml index eeac8aea0..c9e1bf92e 100644 --- a/tests/test-constants/test_constants.ml +++ b/tests/test-constants/test_constants.ml @@ -9,8 +9,7 @@ open OUnit2 open Ctypes -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) - +let testlib = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Constants = Types.Struct_stubs(Generated_struct_bindings) diff --git a/tests/test-cstdlib/dune b/tests/test-cstdlib/dune new file mode 100644 index 000000000..88d6bc844 --- /dev/null +++ b/tests/test-cstdlib/dune @@ -0,0 +1,12 @@ +(test + (name test_cstdlib) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_cstdlib_stubs + test_cstdlib_bindings + tests_common + stdlib-shims)) diff --git a/tests/test-cstdlib/stub-generator/dune b/tests/test-cstdlib/stub-generator/dune new file mode 100644 index 000000000..62ce849a4 --- /dev/null +++ b/tests/test-cstdlib/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_cstdlib_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_cstdlib_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-cstdlib/stubs/dune b/tests/test-cstdlib/stubs/dune new file mode 100644 index 000000000..99a2b8b00 --- /dev/null +++ b/tests/test-cstdlib/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_cstdlib_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-cstdlib/test_cstdlib.ml b/tests/test-cstdlib/test_cstdlib.ml index 85442918b..14f6ae687 100644 --- a/tests/test-cstdlib/test_cstdlib.ml +++ b/tests/test-cstdlib/test_cstdlib.ml @@ -95,7 +95,7 @@ struct assert_bool "memcmp(&10, &20) < 0" (memcmp (to_voidp p1) (to_voidp p2) (Size_t.of_int (sizeof int)) < 0); - let p = allocate_n uchar 12 in + let p = allocate_n uchar ~count:12 in let i = 44 in let u = UChar.of_int i in begin ignore (memset (to_voidp p) i (Size_t.of_int 12)); @@ -115,7 +115,6 @@ struct let sortby (type a) (typ : a typ) (f : a -> a -> int) (l : a list) = let open CArray in let open Size_t in - let open Infix in let arr = of_list typ l in let len = of_int (length arr) in let size = of_int (sizeof typ) in diff --git a/tests/test-custom_ops/dune b/tests/test-custom_ops/dune new file mode 100644 index 000000000..cae198e4d --- /dev/null +++ b/tests/test-custom_ops/dune @@ -0,0 +1,3 @@ +(test + (name test_custom_ops) + (libraries ounit2 ctypes)) diff --git a/tests/test-enums/dune b/tests/test-enums/dune new file mode 100644 index 000000000..ea4c474ce --- /dev/null +++ b/tests/test-enums/dune @@ -0,0 +1,47 @@ +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:struct-stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets struct-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(library + (name test_enums_generated) + (modules generated_bindings) + (foreign_stubs + (language c) + (names generated_stubs)) + (libraries test_functions) + (wrapped false)) + +(test + (name test_enums) + (modules test_enums) + (package ctypes-foreign) + (libraries ounit2 ctypes test_enums_generated test_enums_stubs)) diff --git a/tests/test-enums/struct-stub-generator/dune b/tests/test-enums/struct-stub-generator/dune new file mode 100644 index 000000000..fd1637f9d --- /dev/null +++ b/tests/test-enums/struct-stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_enums_struct_stubs tests_common)) diff --git a/tests/test-enums/struct-stubs/dune b/tests/test-enums/struct-stubs/dune new file mode 100644 index 000000000..a2f586378 --- /dev/null +++ b/tests/test-enums/struct-stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_enums_struct_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-enums/stub-generator/dune b/tests/test-enums/stub-generator/dune new file mode 100644 index 000000000..43a93b1c6 --- /dev/null +++ b/tests/test-enums/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_enums_stubs tests_common)) diff --git a/tests/test-enums/stubs/dune b/tests/test-enums/stubs/dune new file mode 100644 index 000000000..18a8bb2b6 --- /dev/null +++ b/tests/test-enums/stubs/dune @@ -0,0 +1,11 @@ +(library + (name test_enums_stubs) + (wrapped false) + (libraries ctypes.stubs test_enums_struct_stubs)) + +(rule + (targets generated_struct_bindings.ml) + (action + (with-stdout-to + %{targets} + (run %{exe:../struct-stub-generator.exe})))) diff --git a/tests/test-enums/test_enums.ml b/tests/test-enums/test_enums.ml index b6471e1b1..8d6ce1022 100644 --- a/tests/test-enums/test_enums.ml +++ b/tests/test-enums/test_enums.ml @@ -5,6 +5,8 @@ * See the file LICENSE for details. *) +[@@@warning "-33"] + open OUnit2 open Ctypes diff --git a/tests/test-finalisers/dune b/tests/test-finalisers/dune new file mode 100644 index 000000000..f78761258 --- /dev/null +++ b/tests/test-finalisers/dune @@ -0,0 +1,3 @@ +(test + (name test_finalisers) + (libraries ctypes ounit2)) diff --git a/tests/test-foreign-errno/dune b/tests/test-foreign-errno/dune new file mode 100644 index 000000000..409976d4f --- /dev/null +++ b/tests/test-foreign-errno/dune @@ -0,0 +1,4 @@ +(test + (name test_errno) + (package ctypes-foreign) + (libraries ounit2 ctypes ctypes-foreign)) diff --git a/tests/test-foreign_values/dune b/tests/test-foreign_values/dune new file mode 100644 index 000000000..47b35b9eb --- /dev/null +++ b/tests/test-foreign_values/dune @@ -0,0 +1,14 @@ +(test + (name test_foreign_values) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_foreign_values_stubs + test_foreign_values_bindings + tests_common)) diff --git a/tests/test-foreign_values/stub-generator/dune b/tests/test-foreign_values/stub-generator/dune new file mode 100644 index 000000000..60b41818a --- /dev/null +++ b/tests/test-foreign_values/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_foreign_values_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_foreign_values_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-foreign_values/stubs/dune b/tests/test-foreign_values/stubs/dune new file mode 100644 index 000000000..a8e78b004 --- /dev/null +++ b/tests/test-foreign_values/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_foreign_values_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-foreign_values/test_foreign_values.ml b/tests/test-foreign_values/test_foreign_values.ml index 497c0fa2f..76e478b9f 100644 --- a/tests/test-foreign_values/test_foreign_values.ml +++ b/tests/test-foreign_values/test_foreign_values.ml @@ -8,6 +8,7 @@ open OUnit2 open Ctypes +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-funptrs/dune b/tests/test-funptrs/dune new file mode 100644 index 000000000..ccfd53c69 --- /dev/null +++ b/tests/test-funptrs/dune @@ -0,0 +1,12 @@ +(test + (name test_funptrs) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes-foreign + test_funptrs_stubs + ctypes.stubs + tests_common + test_funptrs_bindings)) diff --git a/tests/test-funptrs/stub-generator/dune b/tests/test-funptrs/stub-generator/dune new file mode 100644 index 000000000..c38d3ac49 --- /dev/null +++ b/tests/test-funptrs/stub-generator/dune @@ -0,0 +1,24 @@ +(executable + (name driver) + (modules driver) + (libraries test_funptrs_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_funptrs_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (flags :standard -w -11) + (libraries ctypes test_functions)) diff --git a/tests/test-funptrs/stubs/dune b/tests/test-funptrs/stubs/dune new file mode 100644 index 000000000..4d481a412 --- /dev/null +++ b/tests/test-funptrs/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_funptrs_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-funptrs/test_funptrs.ml b/tests/test-funptrs/test_funptrs.ml index f21355bec..631ed8285 100644 --- a/tests/test-funptrs/test_funptrs.ml +++ b/tests/test-funptrs/test_funptrs.ml @@ -7,7 +7,8 @@ open OUnit2 open Ctypes -open Foreign + +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) (* Explicitly raise on leaked funptrs. *) diff --git a/tests/test-higher_order/dune b/tests/test-higher_order/dune new file mode 100644 index 000000000..f6fb75ef7 --- /dev/null +++ b/tests/test-higher_order/dune @@ -0,0 +1,14 @@ +(test + (name test_higher_order) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_higher_order_stubs + test_higher_order_bindings + tests_common)) diff --git a/tests/test-higher_order/stub-generator/dune b/tests/test-higher_order/stub-generator/dune new file mode 100644 index 000000000..b1ebfa8c9 --- /dev/null +++ b/tests/test-higher_order/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_higher_order_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_higher_order_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-higher_order/stubs/dune b/tests/test-higher_order/stubs/dune new file mode 100644 index 000000000..2ded01ffa --- /dev/null +++ b/tests/test-higher_order/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_higher_order_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-higher_order/test_higher_order.ml b/tests/test-higher_order/test_higher_order.ml index 199e2b50a..bf9426fcc 100644 --- a/tests/test-higher_order/test_higher_order.ml +++ b/tests/test-higher_order/test_higher_order.ml @@ -5,10 +5,9 @@ * See the file LICENSE for details. *) -open Ctypes open OUnit2 -open Foreign +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-integers/dune b/tests/test-integers/dune new file mode 100644 index 000000000..ceac20403 --- /dev/null +++ b/tests/test-integers/dune @@ -0,0 +1,14 @@ +(test + (name test_integers) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_integers_stubs + test_integers_bindings + tests_common)) diff --git a/tests/test-integers/stub-generator/dune b/tests/test-integers/stub-generator/dune new file mode 100644 index 000000000..426735a42 --- /dev/null +++ b/tests/test-integers/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_integers_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_integers_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-integers/stubs/dune b/tests/test-integers/stubs/dune new file mode 100644 index 000000000..7d196f99c --- /dev/null +++ b/tests/test-integers/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_integers_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-integers/test_integers.ml b/tests/test-integers/test_integers.ml index eaff6d061..2747d1a7f 100644 --- a/tests/test-integers/test_integers.ml +++ b/tests/test-integers/test_integers.ml @@ -8,7 +8,8 @@ open OUnit2 open Ctypes open Unsigned -open Foreign + +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-ldouble/dune b/tests/test-ldouble/dune new file mode 100644 index 000000000..96ef8ddfd --- /dev/null +++ b/tests/test-ldouble/dune @@ -0,0 +1,3 @@ +(test + (name test_ldouble) + (libraries ctypes ounit2)) diff --git a/tests/test-ldouble/test_ldouble.ml b/tests/test-ldouble/test_ldouble.ml index 852ed6d3a..57b65a46b 100644 --- a/tests/test-ldouble/test_ldouble.ml +++ b/tests/test-ldouble/test_ldouble.ml @@ -6,7 +6,6 @@ *) open OUnit2 -open Ctypes let flts = [ @@ -167,7 +166,7 @@ let test_complex _ = assert_bool name (chk_complex ?prec (opc a) (to_complex (opl (of_complex a)))) ) cplx in - let assert_chkf ?prec name opc opl = + let assert_chkf name opc opl = List.iter (fun a -> let open ComplexL in assert_bool name (chk_float (opc a) (LDouble.to_float (opl (of_complex a)))) @@ -260,12 +259,14 @@ let test_comparisons _ = let test_int_conversions _ = begin - assert_equal max_int (LDouble.to_int - (LDouble.of_int max_int)) + let max_ok = 1 lsr 53 in + let min_ok = -max_ok in + assert_equal max_ok (LDouble.to_int + (LDouble.of_int max_ok)) ~printer:string_of_int; - assert_equal min_int (LDouble.to_int - (LDouble.of_int min_int)) + assert_equal min_ok (LDouble.to_int + (LDouble.of_int min_ok)) ~printer:string_of_int; end diff --git a/tests/test-lifetime/dune b/tests/test-lifetime/dune new file mode 100644 index 000000000..b91198c0b --- /dev/null +++ b/tests/test-lifetime/dune @@ -0,0 +1,14 @@ +(test + (name test_lifetime) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_lifetime_stubs + test_lifetime_bindings + tests_common)) diff --git a/tests/test-lifetime/stub-generator/dune b/tests/test-lifetime/stub-generator/dune new file mode 100644 index 000000000..f8a1d6799 --- /dev/null +++ b/tests/test-lifetime/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_lifetime_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_lifetime_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-lifetime/stubs/dune b/tests/test-lifetime/stubs/dune new file mode 100644 index 000000000..2429fac13 --- /dev/null +++ b/tests/test-lifetime/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_lifetime_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-lifetime/stubs/functions.ml b/tests/test-lifetime/stubs/functions.ml index 902a0c625..01905b31c 100644 --- a/tests/test-lifetime/stubs/functions.ml +++ b/tests/test-lifetime/stubs/functions.ml @@ -8,7 +8,6 @@ (* Foreign function bindings for the lifetime tests. *) open Ctypes -open Foreign module Stubs (F: Ctypes.FOREIGN) = struct diff --git a/tests/test-lifetime/test_lifetime.ml b/tests/test-lifetime/test_lifetime.ml index bbe11fd02..a9a70db1d 100644 --- a/tests/test-lifetime/test_lifetime.ml +++ b/tests/test-lifetime/test_lifetime.ml @@ -5,10 +5,11 @@ * See the file LICENSE for details. *) +[@@@warning "-35"] open OUnit2 open Ctypes -open Foreign +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-lwt-jobs/dune b/tests/test-lwt-jobs/dune new file mode 100644 index 000000000..b69d70c28 --- /dev/null +++ b/tests/test-lwt-jobs/dune @@ -0,0 +1,65 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_lwt_jobs_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_lwt_jobs) + (package ctypes-foreign) + (modules test_lwt_jobs) + (action + (run %{test} -runner sequential)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_lwt_jobs_stubs + test_functions + test_lwt_jobs_bindings + tests_common)) diff --git a/tests/test-lwt-jobs/stub-generator/dune b/tests/test-lwt-jobs/stub-generator/dune new file mode 100644 index 000000000..c33272e08 --- /dev/null +++ b/tests/test-lwt-jobs/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_lwt_jobs_stubs tests_common)) diff --git a/tests/test-lwt-jobs/stubs/dune b/tests/test-lwt-jobs/stubs/dune new file mode 100644 index 000000000..f22435c94 --- /dev/null +++ b/tests/test-lwt-jobs/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_lwt_jobs_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-lwt-preemptive/dune b/tests/test-lwt-preemptive/dune new file mode 100644 index 000000000..ebccf0051 --- /dev/null +++ b/tests/test-lwt-preemptive/dune @@ -0,0 +1,65 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_lwt_preemptive_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_lwt_jobs) + (modules test_lwt_jobs) + (package ctypes-foreign) + (action + (run %{test} -runner sequential)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_lwt_preemptive_stubs + test_functions + test_lwt_preemptive_bindings + tests_common)) diff --git a/tests/test-lwt-preemptive/stub-generator/dune b/tests/test-lwt-preemptive/stub-generator/dune new file mode 100644 index 000000000..4d95c642c --- /dev/null +++ b/tests/test-lwt-preemptive/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_lwt_preemptive_stubs tests_common)) diff --git a/tests/test-lwt-preemptive/stubs/dune b/tests/test-lwt-preemptive/stubs/dune new file mode 100644 index 000000000..8f0bfc161 --- /dev/null +++ b/tests/test-lwt-preemptive/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_lwt_preemptive_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-macros/dune b/tests/test-macros/dune new file mode 100644 index 000000000..e12169398 --- /dev/null +++ b/tests/test-macros/dune @@ -0,0 +1,11 @@ +(test + (name test_macros) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_macros_stubs + test_macros_bindings + tests_common)) diff --git a/tests/test-macros/stub-generator/dune b/tests/test-macros/stub-generator/dune new file mode 100644 index 000000000..83d0c88f3 --- /dev/null +++ b/tests/test-macros/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_macros_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_macros_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-macros/stubs/dune b/tests/test-macros/stubs/dune new file mode 100644 index 000000000..f307beb97 --- /dev/null +++ b/tests/test-macros/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_macros_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-macros/test_macros.ml b/tests/test-macros/test_macros.ml index 11e877619..7b0130a6a 100644 --- a/tests/test-macros/test_macros.ml +++ b/tests/test-macros/test_macros.ml @@ -6,7 +6,6 @@ *) open OUnit2 -open Ctypes module Bindings = Functions.Stubs(Generated_bindings) diff --git a/tests/test-marshal/dune b/tests/test-marshal/dune new file mode 100644 index 000000000..4f7c1e6b5 --- /dev/null +++ b/tests/test-marshal/dune @@ -0,0 +1,3 @@ +(test + (name test_marshal) + (libraries ctypes ounit2)) diff --git a/tests/test-marshal/test_marshal.ml b/tests/test-marshal/test_marshal.ml index 7ff252eb3..27a6aa077 100644 --- a/tests/test-marshal/test_marshal.ml +++ b/tests/test-marshal/test_marshal.ml @@ -6,7 +6,6 @@ *) open OUnit2 -open Ctypes open Unsigned diff --git a/tests/test-oo_style/dune b/tests/test-oo_style/dune new file mode 100644 index 000000000..49c7975bc --- /dev/null +++ b/tests/test-oo_style/dune @@ -0,0 +1,14 @@ +(test + (name test_oo_style) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_oo_style_stubs + test_oo_style_bindings + tests_common)) diff --git a/tests/test-oo_style/stub-generator/dune b/tests/test-oo_style/stub-generator/dune new file mode 100644 index 000000000..a06e7907b --- /dev/null +++ b/tests/test-oo_style/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_oo_style_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_oo_style_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-oo_style/stubs/dune b/tests/test-oo_style/stubs/dune new file mode 100644 index 000000000..437fb9baa --- /dev/null +++ b/tests/test-oo_style/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_oo_style_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-oo_style/stubs/functions.ml b/tests/test-oo_style/stubs/functions.ml index 44343311e..84ded6f6f 100644 --- a/tests/test-oo_style/stubs/functions.ml +++ b/tests/test-oo_style/stubs/functions.ml @@ -8,7 +8,6 @@ (* Foreign function bindings for the OO-style tests. *) open Ctypes -open Foreign module Stubs (F: Ctypes.FOREIGN) = struct diff --git a/tests/test-oo_style/test_oo_style.ml b/tests/test-oo_style/test_oo_style.ml index 5bc3a77de..df7d18fd8 100644 --- a/tests/test-oo_style/test_oo_style.ml +++ b/tests/test-oo_style/test_oo_style.ml @@ -8,6 +8,9 @@ open OUnit2 open Ctypes +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) + +[@@@warning "-6-27-37"] module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = @@ -75,7 +78,7 @@ struct class chorse ~colour = object - inherit animalc (new_chorse (colour_num colour)) + inherit animalc (new_chorse(colour_num colour)) end let () = diff --git a/tests/test-passable/dune b/tests/test-passable/dune new file mode 100644 index 000000000..9274a3fc9 --- /dev/null +++ b/tests/test-passable/dune @@ -0,0 +1,4 @@ +(test + (name test_passable) + (package ctypes-foreign) + (libraries ctypes ctypes.stubs ctypes-foreign ounit2)) diff --git a/tests/test-passable/test_passable.ml b/tests/test-passable/test_passable.ml index 911cffe7e..7419e63f2 100644 --- a/tests/test-passable/test_passable.ml +++ b/tests/test-passable/test_passable.ml @@ -47,9 +47,9 @@ let test_unions_are_not_passable _ = let u : u union typ = union "u" let (-:) ty label = field u label ty - let c = int -: "c" - let f = double -: "f" - let p = ptr u -: "p" + let _c = int -: "c" + let _f = double -: "f" + let _p = ptr u -: "p" let () = seal u let _ = begin diff --git a/tests/test-passing-ocaml-values/dune b/tests/test-passing-ocaml-values/dune new file mode 100644 index 000000000..52b91a1c8 --- /dev/null +++ b/tests/test-passing-ocaml-values/dune @@ -0,0 +1,11 @@ +(test + (name test_passing_ocaml_values) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_passing_ocaml_values_stubs + test_passing_ocaml_values_bindings + tests_common)) diff --git a/tests/test-passing-ocaml-values/stub-generator/dune b/tests/test-passing-ocaml-values/stub-generator/dune new file mode 100644 index 000000000..23d265b4f --- /dev/null +++ b/tests/test-passing-ocaml-values/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_passing_ocaml_values_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_passing_ocaml_values_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-passing-ocaml-values/stubs/dune b/tests/test-passing-ocaml-values/stubs/dune new file mode 100644 index 000000000..1fd469bc3 --- /dev/null +++ b/tests/test-passing-ocaml-values/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_passing_ocaml_values_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-passing-ocaml-values/test_passing_ocaml_values.ml b/tests/test-passing-ocaml-values/test_passing_ocaml_values.ml index 37c5afd72..c15b8a8c7 100644 --- a/tests/test-passing-ocaml-values/test_passing_ocaml_values.ml +++ b/tests/test-passing-ocaml-values/test_passing_ocaml_values.ml @@ -9,9 +9,6 @@ open OUnit2 open Ctypes open Foreign - -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) - module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = struct @@ -100,7 +97,7 @@ let test_ocaml_types_rejected_as_return_types _ = Test that pointers to OCaml values cannot be dereferenced. *) let test_pointers_to_ocaml_types_cannot_be_dereferenced _ = - let p = allocate_n char 10 in + let p = allocate_n char ~count:10 in let po = coerce (ptr char) (ptr ocaml_string) p in begin diff --git a/tests/test-pointers/dune b/tests/test-pointers/dune new file mode 100644 index 000000000..99cc25c45 --- /dev/null +++ b/tests/test-pointers/dune @@ -0,0 +1,15 @@ +(test + (name test_pointers) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_pointers_stubs + test_pointers_bindings + tests_common + stdlib-shims)) diff --git a/tests/test-pointers/stub-generator/dune b/tests/test-pointers/stub-generator/dune new file mode 100644 index 000000000..280b0c050 --- /dev/null +++ b/tests/test-pointers/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_pointers_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_pointers_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-pointers/stubs/dune b/tests/test-pointers/stubs/dune new file mode 100644 index 000000000..68d0583a5 --- /dev/null +++ b/tests/test-pointers/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_pointers_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-pointers/test_pointers.ml b/tests/test-pointers/test_pointers.ml index 756e839a9..d9ec45d3b 100644 --- a/tests/test-pointers/test_pointers.ml +++ b/tests/test-pointers/test_pointers.ml @@ -11,8 +11,9 @@ open OUnit2 open Ctypes open Foreign +[@@@warning "-6"] -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) +let testlib = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/test-raw/dune b/tests/test-raw/dune new file mode 100644 index 000000000..35ef1152a --- /dev/null +++ b/tests/test-raw/dune @@ -0,0 +1,4 @@ +(test + (name test_raw) + (package ctypes-foreign) + (libraries ctypes ctypes-foreign ounit2)) diff --git a/tests/test-raw/test_raw.ml b/tests/test-raw/test_raw.ml index 08164fa5b..6f1a2f9f8 100644 --- a/tests/test-raw/test_raw.ml +++ b/tests/test-raw/test_raw.ml @@ -9,7 +9,8 @@ open OUnit2 open Ctypes_memory_stubs -open Ctypes_std_view_stubs + +[@@@warning "-6-33"] (* Tests for the low-level module on which the public high-level interface is based. diff --git a/tests/test-returning-errno-lwt-jobs/dune b/tests/test-returning-errno-lwt-jobs/dune new file mode 100644 index 000000000..76b051005 --- /dev/null +++ b/tests/test-returning-errno-lwt-jobs/dune @@ -0,0 +1,65 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_returning_errno_lwt_jobs_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_returning_errno) + (package ctypes-foreign) + (modules test_returning_errno) + (action + (run %{test} -runner sequential)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_returning_errno_lwt_jobs_stubs + test_functions + test_returning_errno_lwt_jobs_bindings + tests_common)) diff --git a/tests/test-returning-errno-lwt-jobs/stub-generator/dune b/tests/test-returning-errno-lwt-jobs/stub-generator/dune new file mode 100644 index 000000000..d3cd7fae1 --- /dev/null +++ b/tests/test-returning-errno-lwt-jobs/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_returning_errno_lwt_jobs_stubs tests_common)) diff --git a/tests/test-returning-errno-lwt-jobs/stubs/dune b/tests/test-returning-errno-lwt-jobs/stubs/dune new file mode 100644 index 000000000..7bc5fdcd0 --- /dev/null +++ b/tests/test-returning-errno-lwt-jobs/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_returning_errno_lwt_jobs_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-returning-errno-lwt-jobs/test_returning_errno.ml b/tests/test-returning-errno-lwt-jobs/test_returning_errno.ml index a6fded25a..6b238af8f 100644 --- a/tests/test-returning-errno-lwt-jobs/test_returning_errno.ml +++ b/tests/test-returning-errno-lwt-jobs/test_returning_errno.ml @@ -8,6 +8,7 @@ open OUnit2 open Ctypes +[@@@warning "-27"] module Bindings = Functions.Stubs(Generated_bindings) module Constants = Types.Struct_stubs(Generated_struct_bindings) diff --git a/tests/test-returning-errno-lwt-preemptive/dune b/tests/test-returning-errno-lwt-preemptive/dune new file mode 100644 index 000000000..079456149 --- /dev/null +++ b/tests/test-returning-errno-lwt-preemptive/dune @@ -0,0 +1,65 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_returning_errno_lwt_preemptive_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_returning_errno) + (modules test_returning_errno) + (package ctypes-foreign) + (action + (run %{test} -runner sequential)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_returning_errno_lwt_preemptive_stubs + test_functions + test_returning_errno_lwt_preemptive_bindings + tests_common)) diff --git a/tests/test-returning-errno-lwt-preemptive/stub-generator/dune b/tests/test-returning-errno-lwt-preemptive/stub-generator/dune new file mode 100644 index 000000000..de502a026 --- /dev/null +++ b/tests/test-returning-errno-lwt-preemptive/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_returning_errno_lwt_preemptive_stubs tests_common)) diff --git a/tests/test-returning-errno-lwt-preemptive/stubs/dune b/tests/test-returning-errno-lwt-preemptive/stubs/dune new file mode 100644 index 000000000..195fe0591 --- /dev/null +++ b/tests/test-returning-errno-lwt-preemptive/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_returning_errno_lwt_preemptive_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-returning-errno-lwt-preemptive/test_returning_errno.ml b/tests/test-returning-errno-lwt-preemptive/test_returning_errno.ml index a6fded25a..6b238af8f 100644 --- a/tests/test-returning-errno-lwt-preemptive/test_returning_errno.ml +++ b/tests/test-returning-errno-lwt-preemptive/test_returning_errno.ml @@ -8,6 +8,7 @@ open OUnit2 open Ctypes +[@@@warning "-27"] module Bindings = Functions.Stubs(Generated_bindings) module Constants = Types.Struct_stubs(Generated_struct_bindings) diff --git a/tests/test-returning-errno/dune b/tests/test-returning-errno/dune new file mode 100644 index 000000000..21b0b0120 --- /dev/null +++ b/tests/test-returning-errno/dune @@ -0,0 +1,65 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_returning_errno_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_returning_errno) + (modules test_returning_errno) + (action + (run %{test} -runner sequential)) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_returning_errno_stubs + test_functions + test_returning_errno_bindings + tests_common)) diff --git a/tests/test-returning-errno/stub-generator/dune b/tests/test-returning-errno/stub-generator/dune new file mode 100644 index 000000000..5cb7a4a82 --- /dev/null +++ b/tests/test-returning-errno/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_returning_errno_stubs tests_common)) diff --git a/tests/test-returning-errno/stubs/dune b/tests/test-returning-errno/stubs/dune new file mode 100644 index 000000000..af5633fd0 --- /dev/null +++ b/tests/test-returning-errno/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_returning_errno_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-roots/dune b/tests/test-roots/dune new file mode 100644 index 000000000..cf4d4831a --- /dev/null +++ b/tests/test-roots/dune @@ -0,0 +1,5 @@ +(test + (name test_roots) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (libraries ctypes ctypes-foreign ounit2)) diff --git a/tests/test-roots/test_roots.ml b/tests/test-roots/test_roots.ml index 57299b5bd..698e5badb 100644 --- a/tests/test-roots/test_roots.ml +++ b/tests/test-roots/test_roots.ml @@ -10,7 +10,7 @@ open Ctypes open Foreign -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) +let testlib = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) (* diff --git a/tests/test-sizeof/dune b/tests/test-sizeof/dune new file mode 100644 index 000000000..a0c14bd2a --- /dev/null +++ b/tests/test-sizeof/dune @@ -0,0 +1,4 @@ +(test + (name test_sizeof) + (package ctypes-foreign) + (libraries ctypes ctypes-foreign ounit2)) diff --git a/tests/test-sizeof/test_sizeof.ml b/tests/test-sizeof/test_sizeof.ml index 3eafbd184..88d02210c 100644 --- a/tests/test-sizeof/test_sizeof.ml +++ b/tests/test-sizeof/test_sizeof.ml @@ -8,6 +8,7 @@ open OUnit2 open Ctypes +[@@@warning "-27-32"] (* Test some relationships between the sizes of primitive types. @@ -106,7 +107,7 @@ let test_sizeof_structs _ = let () = for i = 1 to 10 do let homogeneous : h structure typ = structure "h" in - for j = 1 to i do + for _j = 1 to i do ignore (field homogeneous "_" int); done; seal homogeneous; diff --git a/tests/test-structs/dune b/tests/test-structs/dune new file mode 100644 index 000000000..dde44e783 --- /dev/null +++ b/tests/test-structs/dune @@ -0,0 +1,68 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_structs_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_structs) + (modules test_structs) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (action + (run %{test} -runner sequential)) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_structs_stubs + test_functions + test_structs_bindings + tests_common)) diff --git a/tests/test-structs/stub-generator/dune b/tests/test-structs/stub-generator/dune new file mode 100644 index 000000000..1c8a2adaa --- /dev/null +++ b/tests/test-structs/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_structs_stubs tests_common)) diff --git a/tests/test-structs/stubs/dune b/tests/test-structs/stubs/dune new file mode 100644 index 000000000..9cf612671 --- /dev/null +++ b/tests/test-structs/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_structs_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-structs/test_structs.ml b/tests/test-structs/test_structs.ml index 8146b2b74..ad8889a6d 100644 --- a/tests/test-structs/test_structs.ml +++ b/tests/test-structs/test_structs.ml @@ -5,11 +5,12 @@ * See the file LICENSE for details. *) +[@@@warning "-32-33-34"] open OUnit2 open Ctypes -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) +let testlib = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) module Build_foreign_tests(S : Cstubs.FOREIGN with type 'a result = 'a diff --git a/tests/test-stubs/dune b/tests/test-stubs/dune new file mode 100644 index 000000000..fd297a845 --- /dev/null +++ b/tests/test-stubs/dune @@ -0,0 +1,4 @@ +(test + (name test_stubs) + (package ctypes-foreign) + (libraries ctypes-foreign ounit2)) diff --git a/tests/test-stubs/test_stubs.ml b/tests/test-stubs/test_stubs.ml index 07ad8781c..fcc81f97d 100644 --- a/tests/test-stubs/test_stubs.ml +++ b/tests/test-stubs/test_stubs.ml @@ -13,11 +13,11 @@ let missing = "_60d2dd04_1b66_4b79_a2ea_8375157da563" let test_missing _ = let miss = foreign missing ~stub:true (int @-> int @-> (returning int)) in - begin try ignore (miss 2 3); assert_failure "should raise" with exn -> () end; + begin try ignore (miss 2 3); assert_failure "should raise" with _exn -> () end; try let _miss = foreign missing ~stub:false (int @-> int @-> (returning int)) in assert_failure "should raise" - with exn -> () + with _exn -> () let suite = diff --git a/tests/test-threads/dune b/tests/test-threads/dune new file mode 100644 index 000000000..d44766479 --- /dev/null +++ b/tests/test-threads/dune @@ -0,0 +1,14 @@ +(test + (name test_threads) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_threads_stubs + test_threads_bindings + tests_common)) diff --git a/tests/test-threads/stub-generator/dune b/tests/test-threads/stub-generator/dune new file mode 100644 index 000000000..8c70c5d8d --- /dev/null +++ b/tests/test-threads/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_threads_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_threads_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-threads/stubs/dune b/tests/test-threads/stubs/dune new file mode 100644 index 000000000..87bc19079 --- /dev/null +++ b/tests/test-threads/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_threads_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-threads/test_threads.ml b/tests/test-threads/test_threads.ml index 2f43fc0c9..eca420341 100644 --- a/tests/test-threads/test_threads.ml +++ b/tests/test-threads/test_threads.ml @@ -5,6 +5,7 @@ * See the file LICENSE for details. *) +[@@@warning "-33-35"] open Ctypes open OUnit2 open Foreign @@ -12,7 +13,7 @@ open Foreign let () = (* temporary workaround due to flexlink limitations *) if Sys.os_type = "Win32" then - ignore (Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW])) + ignore (Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW])) let callback_with_pointers = Foreign.foreign "passing_pointers_to_callback" @@ -136,7 +137,7 @@ let test_register_thread _ = else if Hashtbl.length htl_res <> succ n_threads then false else - Hashtbl.fold ( fun k v ac -> + Hashtbl.fold ( fun _k v ac -> if v = n_callback then ac else false ) htl_res true in diff --git a/tests/test-type_printing/dune b/tests/test-type_printing/dune new file mode 100644 index 000000000..e3c6b7377 --- /dev/null +++ b/tests/test-type_printing/dune @@ -0,0 +1,63 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_type_printing_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_type_printing) + (modules test_type_printing) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_type_printing_stubs + test_functions + test_type_printing_bindings + tests_common)) diff --git a/tests/test-type_printing/stub-generator/dune b/tests/test-type_printing/stub-generator/dune new file mode 100644 index 000000000..ad47493c0 --- /dev/null +++ b/tests/test-type_printing/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_type_printing_stubs tests_common)) diff --git a/tests/test-type_printing/stubs/dune b/tests/test-type_printing/stubs/dune new file mode 100644 index 000000000..9fa191643 --- /dev/null +++ b/tests/test-type_printing/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_type_printing_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-type_printing/stubs/types.ml b/tests/test-type_printing/stubs/types.ml index 233354bb6..7e75383bd 100644 --- a/tests/test-type_printing/stubs/types.ml +++ b/tests/test-type_printing/stubs/types.ml @@ -5,8 +5,6 @@ * See the file LICENSE for details. *) -open Ctypes - module Stubs(S : Ctypes.TYPE) = struct open S diff --git a/tests/test-unions/dune b/tests/test-unions/dune new file mode 100644 index 000000000..7465ac3fd --- /dev/null +++ b/tests/test-unions/dune @@ -0,0 +1,68 @@ +(rule + (targets generated_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:stub-generator/driver.exe} --ml-file %{targets}))) + +(rule + (targets generated_struct_stubs.c) + (action + (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets}))) + +(rule + (targets ml-stub-generator.exe) + (deps + generated_struct_stubs.c + ../clib/test_functions.h + ../config/test-cflags) + (action + (run + %{cc} + %{read-lines:../config/test-cflags} + -I + ../clib + -I + %{ocaml-config:standard_library} + -o + %{targets} + generated_struct_stubs.c))) + +(rule + (targets generated_struct_bindings.ml) + (deps ml-stub-generator.exe) + (action + (with-stdout-to + %{targets} + (run %{deps})))) + +(library + (name test_unions_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings generated_struct_bindings) + (libraries ctypes test_functions lwt.unix)) + +(test + (name test_unions) + (modules test_unions) + (deps ../clib/clib%{ext_dll}) + (package ctypes-foreign) + (action + (run %{test} -runner sequential)) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_unions_stubs + test_functions + test_unions_bindings + tests_common)) diff --git a/tests/test-unions/stub-generator/dune b/tests/test-unions/stub-generator/dune new file mode 100644 index 000000000..24df84d10 --- /dev/null +++ b/tests/test-unions/stub-generator/dune @@ -0,0 +1,4 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_unions_stubs tests_common)) diff --git a/tests/test-unions/stubs/dune b/tests/test-unions/stubs/dune new file mode 100644 index 000000000..3803659a4 --- /dev/null +++ b/tests/test-unions/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_unions_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-unions/test_unions.ml b/tests/test-unions/test_unions.ml index 6d66ab725..54de9a780 100644 --- a/tests/test-unions/test_unions.ml +++ b/tests/test-unions/test_unions.ml @@ -10,7 +10,7 @@ open Ctypes open Unsigned -let testlib = Dl.(dlopen ~filename:"clib/libtest_functions.so" ~flags:[RTLD_NOW]) +let testlib = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) (* @@ -246,8 +246,8 @@ let test_adding_fields_through_views _ = let module M = struct let union_u = union "union_u" let u = typedef union_u "u" - let x = field u "x" int - let y = field u "y" float + let _x = field u "x" int + let _y = field u "y" float let () = seal u end in () @@ -300,8 +300,8 @@ let suite = "Union tests" >::: "test adding fields to tagless unions" >:: Struct_stubs_tests.test_tagless_unions; - (* "test layout of unions with missing fields" *) - (* >:: Struct_stubs_tests.test_missing_fields; *) + "test layout of unions with missing fields" + >:: Struct_stubs_tests.test_missing_fields; ] diff --git a/tests/test-value_printing/dune b/tests/test-value_printing/dune new file mode 100644 index 000000000..08bd535f7 --- /dev/null +++ b/tests/test-value_printing/dune @@ -0,0 +1,14 @@ +(test + (name test_value_printing) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries + ounit2 + ctypes + ctypes.stubs + ctypes-foreign + test_value_printing_stubs + test_value_printing_bindings + tests_common)) diff --git a/tests/test-value_printing/stub-generator/dune b/tests/test-value_printing/stub-generator/dune new file mode 100644 index 000000000..70dd564a7 --- /dev/null +++ b/tests/test-value_printing/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_value_printing_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_value_printing_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-value_printing/stubs/dune b/tests/test-value_printing/stubs/dune new file mode 100644 index 000000000..c0a1f7efb --- /dev/null +++ b/tests/test-value_printing/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_value_printing_stubs) + (wrapped false) + (libraries ctypes)) diff --git a/tests/test-value_printing/test_value_printing.ml b/tests/test-value_printing/test_value_printing.ml index 6d7c672e2..8b377c0c8 100644 --- a/tests/test-value_printing/test_value_printing.ml +++ b/tests/test-value_printing/test_value_printing.ml @@ -8,6 +8,7 @@ open OUnit2 open Ctypes +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) let strip_whitespace = Str.(global_replace (regexp "[\n ]+") "") diff --git a/tests/test-variadic/dune b/tests/test-variadic/dune new file mode 100644 index 000000000..9fd44be77 --- /dev/null +++ b/tests/test-variadic/dune @@ -0,0 +1,10 @@ +(test + (name test_variadic) + (package ctypes-foreign) + (libraries + ounit2 + ctypes + integers + test_variadic_stubs + test_variadic_bindings + tests_common)) diff --git a/tests/test-variadic/stub-generator/dune b/tests/test-variadic/stub-generator/dune new file mode 100644 index 000000000..d5db7d42d --- /dev/null +++ b/tests/test-variadic/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_variadic_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_variadic_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-variadic/stubs/dune b/tests/test-variadic/stubs/dune new file mode 100644 index 000000000..8cb664746 --- /dev/null +++ b/tests/test-variadic/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_variadic_stubs) + (wrapped false) + (libraries ctypes integers)) diff --git a/tests/test-variadic/test_variadic.ml b/tests/test-variadic/test_variadic.ml index eeab29bc6..1ab6c8ab4 100644 --- a/tests/test-variadic/test_variadic.ml +++ b/tests/test-variadic/test_variadic.ml @@ -11,7 +11,7 @@ open OUnit2 open Ctypes - +[@@@warning "-6"] module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = @@ -28,7 +28,7 @@ struct let bufsz = 128 in let write snprintf apply = let buf = allocate_n char bufsz in - ignore (apply (snprintf buf bufsz)); + let _ : int = apply (snprintf buf bufsz) in coerce (ptr char) string buf in begin diff --git a/tests/test-views/dune b/tests/test-views/dune new file mode 100644 index 000000000..db051f84d --- /dev/null +++ b/tests/test-views/dune @@ -0,0 +1,7 @@ +(test + (name test_views) + (package ctypes-foreign) + (deps ../clib/clib%{ext_dll}) + (link_flags + (:include ../flags/link-flags.sexp)) + (libraries ounit2 ctypes test_views_stubs test_views_bindings tests_common)) diff --git a/tests/test-views/stub-generator/dune b/tests/test-views/stub-generator/dune new file mode 100644 index 000000000..e7b4a2f02 --- /dev/null +++ b/tests/test-views/stub-generator/dune @@ -0,0 +1,23 @@ +(executable + (name driver) + (modules driver) + (libraries ctypes test_views_stubs tests_common)) + +(rule + (targets generated_stubs.c) + (action + (run %{exe:driver.exe} --c-file %{targets}))) + +(rule + (targets generated_bindings.ml) + (action + (run %{exe:driver.exe} --ml-file %{targets}))) + +(library + (name test_views_bindings) + (wrapped false) + (foreign_stubs + (language c) + (names generated_stubs)) + (modules generated_bindings) + (libraries ctypes test_functions)) diff --git a/tests/test-views/stubs/dune b/tests/test-views/stubs/dune new file mode 100644 index 000000000..319a9c3ac --- /dev/null +++ b/tests/test-views/stubs/dune @@ -0,0 +1,4 @@ +(library + (name test_views_stubs) + (wrapped false) + (libraries ctypes ctypes-foreign)) diff --git a/tests/test-views/test_views.ml b/tests/test-views/test_views.ml index 1ad1076e9..8205540ff 100644 --- a/tests/test-views/test_views.ml +++ b/tests/test-views/test_views.ml @@ -8,6 +8,9 @@ open OUnit2 open Ctypes +let _ = Dl.(dlopen ~filename:"../clib/clib.so" ~flags:[RTLD_NOW]) + +[@@@warning "-3-35"] module Common_tests(S : Cstubs.FOREIGN with type 'a result = 'a and type 'a return = 'a) = diff --git a/tests/tests-common/dune b/tests/tests-common/dune new file mode 100644 index 000000000..6ccdb52ff --- /dev/null +++ b/tests/tests-common/dune @@ -0,0 +1,3 @@ +(library + (name tests_common) + (libraries ctypes ctypes.stubs ctypes-foreign)) diff --git a/tests/tests-common/tests_common.ml b/tests/tests-common/tests_common.ml index 474e5a7f7..f28f8b168 100644 --- a/tests/tests-common/tests_common.ml +++ b/tests/tests-common/tests_common.ml @@ -7,9 +7,7 @@ (* Functions for test stub generation. *) -open Ctypes - -let filenames argv = +let filenames _argv = let usage = "arguments: [--ml-file $filename] [--c-file $filename]" in let ml_filename = ref "" and c_filename = ref "" @@ -55,7 +53,7 @@ let with_open_formatter filename f = close_channel (); raise e -let header = "#include \"clib/test_functions.h\"" +let header = "#include \"test_functions.h\"" let run ?concurrency ?errno ?(cheader="") argv ?structs specs = let ml_filename, c_filename, c_struct_filename = filenames argv