blob: 5503fa4ef64560c48a46f82ca851c91fae172fce [file] [log] [blame] [edit]
###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
# text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################
include $(SRC_TOP)bindings.mk
OCAML_OK = @OCAML_OK@
OCAMLC = @OCAMLC@
OCAMLOPT = @OCAMLOPT@
OCAMLMKLIB = @OCAMLMKLIB@
OCAMLMKLIB_FLAGS = -dllib dll$(API_NAME)_stubs.so -cclib -l$(API_NAME)_stubs -cclib -l$(API_NAME)
OCAMLMKLIBOPT_FLAGS = -cclib -l$(API_NAME)_stubs -cclib -l$(API_NAME)
OCAMLBEST = @OCAMLBEST@
OCAMLVERSION = @OCAMLVERSION@
OCAMLLIB = @OCAMLLIB@
OCAMLWIN32 = @OCAMLWIN32@
OCAMLFIND = @OCAMLFIND@
OCAML_INSTALL_TARGET = @OCAML_INSTALL_TARGET@
OCAML_UNINSTALL_TARGET = @OCAML_UNINSTALL_TARGET@
OCAML_LIB = $(API_NAME)
OCAML_BCLIB = $(OCAML_LIB).cma
OCAML_NCLIB = @OCAML_NCLIB@
OCAML_MISC = $(SRC_DIR)/META brlapi.mli brlapi.cmi
OCAML_CLIBS = @OCAML_CLIBS@
OCAML_DESTDIR = $(INSTALL_ROOT)$(OCAMLLIB)
OCAML_PKGDIR = $(OCAML_DESTDIR)/$(OCAML_LIB)
OCAML_STUBDIR = $(OCAML_DESTDIR)/stublibs
OCAML_STUB = dll$(OCAML_LIB)_stubs.so
OCAML_OWNER = $(OCAML_STUB).owner
OCAML_FILES = $(OCAML_MISC) $(OCAML_CLIBS) $(OCAML_BCLIB) $(OCAML_NCLIB)
.PHONY: all clean
.PHONY: install install-with-findlib install-without-findlib
.PHONY: uninstall uninstall-with-findlib uninstall-without-findlib
all: $(OCAML_FILES)
$(OCAML_CLIBS): brlapi_stubs.$O | brlapi
$(OCAMLMKLIB) -ldopt "$(LDFLAGS)" $(API_LDFLAGS) -oc $(OCAML_LIB)_stubs brlapi_stubs.$O
$(OCAML_BCLIB): $(OCAML_CLIBS) brlapi.cmo
$(OCAMLC) -a $(OCAMLMKLIB_FLAGS) -o $(OCAML_LIB).cma brlapi.cmo
$(OCAML_NCLIB): $(OCAML_CLIBS) brlapi.cmx
$(OCAMLMKLIB) -ldopt "$(LDFLAGS)" $(OCAMLMKLIBOPT_FLAGS) -o $(OCAML_LIB) brlapi.cmx
brlapi.cmi: brlapi.mli
$(OCAMLC) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.mli
brlapi.cmo: brlapi.ml brlapi.cmi
$(OCAMLC) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.ml
brlapi.cmx: brlapi.ml brlapi.cmi
$(OCAMLOPT) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.cmx brlapi.ml
brlapi_stubs.$O: $(SRC_DIR)/brlapi_stubs.c
$(OCAMLC) -cc $(CC) -ccopt "$(LIBCFLAGS)" -I $(BLD_TOP)$(PGM_DIR) -I $(SRC_TOP)$(PGM_DIR) -c $(SRC_DIR)/brlapi_stubs.c
brlapi.mli: $(SRC_DIR)/main.mli constants.mli
cat $(SRC_DIR)/main.mli constants.mli > $@
brlapi.ml: $(SRC_DIR)/main.ml constants.ml
cat $(SRC_DIR)/main.ml constants.ml > $@
constants.mli: constants.ml
$(OCAMLC) -o /dev/null -c -i constants.ml > $@
constants.ml: $(CONSTANTS_DEPENDENCIES)
$(AWK) $(CONSTANTS_ARGUMENTS) >$@
clean::
-rm -f -- *.cm* *.a *.so constants.ml* brlapi.ml*
install: all $(OCAML_INSTALL_TARGET)
install-without-findlib:
$(INSTALL_DIRECTORY) $(OCAML_PKGDIR)
for file in $(OCAML_FILES); do $(INSTALL) $$file $(OCAML_PKGDIR); done
$(INSTALL_DIRECTORY) $(OCAML_STUBDIR)
[ ! -f "$(OCAML_PKGDIR)/$(OCAML_STUB)" ] || mv $(OCAML_PKGDIR)/$(OCAML_STUB) $(OCAML_STUBDIR)
echo >$(OCAML_STUBDIR)/$(OCAML_OWNER) $(OCAML_LIB)
OCAML_LDCONF = $(OCAML_DESTDIR)/ld.conf
install-with-findlib:
$(INSTALL_DIRECTORY) $(OCAML_DESTDIR)
[ ! -d "$(OCAML_DESTDIR)/$(OCAML_LIB)" ] || \
$(OCAMLFIND) remove -destdir "$(OCAML_DESTDIR)" $(OCAML_LIB)
set -- -destdir "$(OCAML_DESTDIR)"; \
[ -f "$(OCAML_LDCONF)" ] && set -- "$${@}" -ldconf "$(OCAML_LDCONF)" || set -- "$${@}" -ldconf ignore; \
$(OCAMLFIND) install "$${@}" $(OCAML_LIB) $(OCAML_FILES)
uninstall: $(OCAML_UNINSTALL_TARGET)
uninstall-without-findlib:
-rm -f -r -- $(OCAML_PKGDIR)
-rm -f -- $(OCAML_STUBDIR)/$(OCAML_STUB)
-rm -f -- $(OCAML_STUBDIR)/$(OCAML_OWNER)
uninstall-with-findlib:
-$(OCAMLFIND) remove -destdir "$(OCAML_DESTDIR)" $(OCAML_LIB)