# Note that OCaml is compiled on all architectures. However # on some (rare) architectures, only bytecode compilation is # available. Use these macros to find out if native code # compilation is available on a particular architecture. # Architectures that support the OCaml native code compiler. %ocaml_native_compiler aarch64 %{power64} riscv64 s390x x86_64 x86_64_v2 # Architectures that support native dynamic linking of OCaml code. %ocaml_natdynlink aarch64 %{power64} riscv64 s390x x86_64 x86_64_v2 # Architectures that support profiling of native code (ocamlopt -p). # This was removed in OCaml 4.09. # https://github.com/ocaml/ocaml/pull/2314 %ocaml_native_profiling %{nil} # Toplevel OCaml directory %ocamldir %{_libdir}/ocaml # Common elements for all OCaml packages. # # ExcludeArch: OCaml packages have not been built on i686 since OCaml 5 was # introduced in Fedora 39. # -d: most OCaml packages have no ELF objects when built on a bytecode-only # architecture, so debuginfo generation is suppressed. Use this flag to # enable a debuginfo package on such architectures; i.e., when the package # contains an ELF object even on bytecode-only architectures. %ocaml_pkg(d) %{lua: print("ExcludeArch: %{ix86}\\n") if not opt.d then local arch = rpm.expand("%{_target_cpu}") local native = rpm.expand("%{ocaml_native_compiler}") if not string.find(native, arch) then rpm.define('debug_package %{nil}') end end } # Generate %package and %files definitions for a doc subpackage, # containing content generated by odoc. # Use on the top-level only, preferably just before %prep. # # Options: # -L: specify the license file name. Example: # %odoc_package -L LICENSE %odoc_package(L:) %{expand: %package doc BuildArch: noarch BuildRequires: ocaml-odoc Summary: Documentation for %{name} %description doc Developer documentation for %{name}. %files doc %doc _build/default/_doc/_html/* %{?-L:%%license %{-L*} %*}}