OCAMLMAKEFILE = ../OCamlMakefile

SOURCES = \
  common_stubs.c \
  read_stubs.c \
  write_stubs.c \
  nat0.mli nat0.ml \
  common.mli common.ml \
  unsafe_common.mli unsafe_common.ml \
  unsafe_write_c.mli unsafe_write_c.ml \
  write_ml.mli write_ml.ml \
  unsafe_read_c.mli unsafe_read_c.ml \
  size.mli size.ml \
  read_ml.mli read_ml.ml \
  write_c.mli write_c.ml \
  read_c.mli read_c.ml \
  type_class.mli type_class.ml \
  map_to_safe.ml \
  binable.ml \
  utils.mli utils.ml

ifeq ($(shell uname -m), x86_64)
  export ARCH_FLAGS = -DARCH_SIXTYFOUR
endif

ifeq ($(shell uname -s), Darwin)
  export BIN_PROT_CPP = cc -E -no-cpp-precomp -x c -w
else
  export BIN_PROT_CPP = cpp
endif

LIB_PACK_NAME = bin_prot
INCDIRS = +camlp4
CFLAGS = \
  -pipe -g -fPIC -O2 -fomit-frame-pointer \
  -Wall -pedantic -Wextra -Wunused -Werror -Wno-long-long
PACKS = bigarray type-conv
RESULT = bin_prot

TRASH = pa_bin_prot.cmi pa_bin_prot.cmo pa_bin_prot.annot

all: \
	pack-byte-code pack-native-code \
	byte-code-library native-code-library \
	pa_bin_prot.cmi pa_bin_prot.cmo

LIBINSTALL_FILES = \
  common.mli nat0.mli read_c.mli read_ml.mli size.mli \
  unsafe_common.mli unsafe_read_c.mli unsafe_write_c.mli \
  utils.mli write_c.mli write_ml.mli map_to_safe.ml \
  bin_prot.cmi bin_prot.cma bin_prot.cmxa bin_prot.a libbin_prot_stubs.a \
  pa_bin_prot.cmi pa_bin_prot.cmo dllbin_prot_stubs.so

install:	libinstall
uninstall:	libuninstall

clean::	clean-doc

-include $(OCAMLMAKEFILE)
