6262# Library compilation
6363define ocaml_byte_code_lib
6464
65- _ALL += $(1).cma
65+ _ALL += $(1).cma
6666$(1)_MLO = $(call ocaml_sources,$(2))
6767$(1)_CMO = $$(patsubst %.ml,%.cmo,$$($(1)_MLO))
6868$(1)_MLLO = $$(filter %.mll,$(2))
@@ -84,14 +84,14 @@ $(1).cma: $$($(1)_CMO)
8484 $$(OCAMLC) -a $$($(1)_LDFLAGS) $$(OCAMLC_LDFLAGS) -o $$@ $$($(1)_CMO) $$(OCAMLC_LIBS)
8585
8686_install_$(1)_CMA:
87- install -d $(OCAML_SITE)/$(1)
88- install $(1).cma $$($(1)_CMIO) $(OCAML_SITE)/$(1)
89-
87+ install -d $(OCAML_SITE)/FrontC
88+ install $(1).cma $$($(1)_CMIO) $(OCAML_SITE)/FrontC
89+
9090endef
9191
9292define ocaml_native_lib
9393
94- _ALL += $(1).cmxa
94+ _ALL += $(1).cmxa $(1).cmxs
9595$(1)_MLX = $(call ocaml_sources,$(2))
9696$(1)_CMX = $$(patsubst %.ml,%.cmx,$$($(1)_MLX))
9797$(1)_MLLX = $$(filter %.mll,$(2))
@@ -107,16 +107,23 @@ _CLEAN += $$($(1)_CMX) \
107107 $$(patsubst %.mly,%.ml,$$($(1)_MLYX)) \
108108 $$(patsubst %.mly,%.mli,$$($(1)_MLYX))
109109_DIST += $(2)
110- _BINARY_DIST += $(1).cmxa $(1).a $(patsubst %.cmx,%.cmi,$$($(1)_CMX))
111- _INSTALL += _install_$(1)_CMXA
110+ _BINARY_DIST += $(1).cmxa $(1).cmxs $(1). a $(patsubst %.cmx,%.cmi,$$($(1)_CMX))
111+ _INSTALL += _install_$(1)_CMXA _install_$(1)_CMXS
112112
113113$(1).cmxa: $$($(1)_CMX)
114114 $$(OCAMLOPT) -a $$($(1)_LDFLAGS) $$(OCAMLOPT_LDFLAGS) -o $$@ $$($(1)_CMX) $$(OCAMLOPT_LIBS)
115115
116+ $(1).cmxs: $$($(1).cmxa)
117+ $$(OCAMLOPT) -shared -linkall $$($(1).cmxa) -o $$@
118+
116119_install_$(1)_CMXA:
117- install -d $(OCAML_SITE)/$(1)
118- install $(1).cmxa $(1).a $$($(1)_CMIX) $(OCAML_SITE)/$(1)
119-
120+ install -d $(OCAML_SITE)/FrontC
121+ install $(1).cmxa $(1).a $$($(1)_CMIX) $(OCAML_SITE)/FrontC
122+
123+ _install_$(1)_CMXS:
124+ install -d $(OCAML_SITE)/FrontC
125+ install $(1).cmxs $(OCAML_SITE)/FrontC
126+
120127endef
121128
122129define ocaml_lib
0 commit comments