OCAMLFINDPACKAGES = "ulex,unix,expat,camlp4.macro" OCAMLFINDSYNTAX = camlp4o OCAMLFINDPPOPTS = $(addprefix "-ppopt ", @CAMLP4FLAGS@ -I include) OCAMLFINDINCLUDES = $(addprefix "-I ", src) OCAMLFINDFLAGS = -syntax $(OCAMLFINDSYNTAX) -package $(OCAMLFINDPACKAGES) \ $(OCAMLFINDPPOPTS) $(OCAMLFINDINCLUDES) OCAMLFINDLINKFLAGS = -linkpkg ODEP=tools/odeps.sh @OCAMLDEP@ BIN=@PACKAGE_TARNAME@ EXE=@EXE@ Remakefile: Remakefile.in config.status ./config.status Remakefile configure config.status: configure.in autoconf ./config.status --recheck src/%.native: base=${1%.native} src=${base}.ml obj=${base}.cmx dir=$(dirname $1) ./remake -v OCAMLDEPNATIVE=-native "$obj" SRCS=$(ls "$dir"/*.cmx | sed 's/\.cmx/.ml/g') OBJS=$(@OCAMLDEP@ $OCAMLDEPNATIVE $OCAMLFINDFLAGS -modules $SRCS | tools/osort.sh cmx) @OCAMLOPT@ -o "$1" @OCAMLFLAGS@ @OCAMLOPTFLAGS@ $OCAMLFINDLINKFLAGS $OCAMLFINDFLAGS $OBJS src/%.byte: base=${1%.byte} src=${base}.ml obj=${base}.cmo dir=$(dirname $1) ./remake "$obj" OBJS="" for i in "$dir"/*.cmi; do ibase=${i%.cmi} if test -f "${ibase}.ml" -o -d "${ibase}" -o -f "${ibase}.mly" -o -f "${ibase}.mll"; then OBJS="$OBJS ${ibase}.cmo" fi done ./remake $OBJS SRCS=$(ls "$dir"/*.cmo | sed 's/\.cmo/.ml/g') SORTED_OBJS=$(@OCAMLDEP@ $OCAMLFINDFLAGS -modules $SRCS | tools/osort.sh cmo) @OCAMLC@ -o "$1" @OCAMLFLAGS@ @OCAMLCFLAGS@ $OCAMLFINDLINKFLAGS $OCAMLFINDFLAGS $SORTED_OBJS %.cmx: target="$1" base="${target%.cmx}" src="${base}.ml" if [ -f "$src" ]; then ./remake "$src" DEPS=$( $ODEP -native $OCAMLFINDFLAGS $PACKINCLUDE "$src" ) echo "$DEPS" | ./remake -v PACKINCLUDE="$PACKINCLUDE" -v OCAMLDEPNATIVE=-native -v OCAMLFORPACK="$OCAMLFORPACK" -r "$target" @OCAMLOPT@ -o "$target" -c @OCAMLFLAGS@ @OCAMLOPTFLAGS@ $OCAMLFORPACK $OCAMLFINDFLAGS $PACKINCLUDE "$src" elif [ -d "$base" ]; then modname=$(basename "$base") packname=$(echo "$modname" | sed 's/\(.*\)/\u\1/') OBJS=$(ls "$base"/*.ml | sed 's/\.ml/.cmx/g') ./remake -v PACKINCLUDE="-I $base" -v OCAMLFORPACK="-for-pack $packname" $OBJS SORTED_OBJS=$(@OCAMLDEP@ -native $OCAMLFINDFLAGS -I $base -modules "$base"/*.ml | tools/osort.sh cmx) @OCAMLOPT@ -o "$target" -pack $SORTED_OBJS elif [ -f "$base".mly ]; then ./remake "$base".mly @OCAMLYACC@ "$base".mly $ODEP $OCAMLDEPNATIVE $OCAMLFINDFLAGS "$src" | \ ./remake -v PACKINCLUDE="$PACKINCLUDE" -v OCAMLDEPNATIVE=-native -v OCAMLFORPACK="$OCAMLFORPACK" -r "$target" @OCAMLOPT@ -o "$target" -c @OCAMLFLAGS@ @OCAMLOPTFLAGS@ $OCAMLFORPACK $OCAMLFINDFLAGS $PACKINCLUDE "$src" fi %.cmo: target="$1" base="${target%.cmo}" src="${base}.ml" if [ -f "$src" ]; then ./remake "$src" DEPS=$( $ODEP $OCAMLFINDFLAGS $PACKINCLUDE "$src" ) echo "$DEPS" | ./remake -v PACKINCLUDE="$PACKINCLUDE" -r "$target" @OCAMLC@ -o "$target" -c @OCAMLFLAGS@ @OCAMLCFLAGS@ $OCAMLFINDFLAGS $PACKINCLUDE "$src" elif [ -d "$base" ]; then modname=$(basename "$base") packname=$(echo "$modname" | sed 's/\(.*\)/\u\1/') OBJS=$(ls "$base"/*.ml | sed 's/\.ml/.cmo/g') ./remake -v PACKINCLUDE="-I $base" $OBJS SORTED_OBJS=$(@OCAMLDEP@ $OCAMLFINDFLAGS -I $base -modules "$base"/*.ml | tools/osort.sh cmo) @OCAMLC@ -o "$target" -pack $SORTED_OBJS elif [ -f "$base".mly ]; then ./remake "$base".mly @OCAMLYACC@ "$base".mly $ODEP $OCAMLFINDFLAGS $PACKINCLUDE "$src" | ./remake -v PACKINCLUDE="$PACKINCLUDE" -r "$target" @OCAMLC@ -o "$target" -c @OCAMLFLAGS@ @OCAMLCFLAGS@ $OCAMLFINDFLAGS $PACKINCLUDE "$src" fi %.cmi: target="$1" base=${target%.cmi} if test -f "$base".mli; then ./remake "$base".mli src=${base}.mli DEPS=$($ODEP $OCAMLDEPNATIVE $OCAMLFINDFLAGS $PACKINCLUDE "$src") echo "$DEPS" | ./remake -v PACKINCLUDE="$PACKINCLUDE" -v OCAMLDEPNATIVE="$OCAMLDEPNATIVE" -v OCAMLFORPACK="$OCAMLFORPACK" -r "$target" if test -z "$OCAMLDEPNATIVE"; then @OCAMLC@ -o "$target" -c @OCAMLFLAGS@ @OCAMLCFLAGS@ $OCAMLFINDFLAGS $PACKINCLUDE "$src" else @OCAMLOPT@ -o "$target" -c @OCAMLFLAGS@ @OCAMLOPTFLAGS@ $OCAMLFINDFLAGS $PACKINCLUDE "$src" fi else if test -z "$OCAMLDEPNATIVE"; then obj=${base}.cmo else obj=${base}.cmx fi ./remake -v PACKINCLUDE="$PACKINCLUDE" -v OCAMLDEPNATIVE="$OCAMLDEPNATIVE" -v OCAMLFORPACK="$OCAMLFORPACK" "$obj" fi clean: find src -name '*.cm*' -o -name '*.o' -o -name '*.byte' -o -name '*.native' -o -name '*.mll' -o -name '*.mly' | while read file; do case "$file" in *.mll) rm -f "${file%.mll}.ml" ;; *.mly) rm -f "${file%.mly}.ml" "${file%.mly}.mli" ;; *) rm -f "$file" ;; esac done