flex
Version:
Implementation CSS layout using pure Reason - powered by css-layout project.
101 lines (67 loc) • 3.32 kB
Plain Text
OCAMLDEP=ocamldep
BUILDDIR=_build
SRCDIR=src
CAML_INIT=$(BUILDDIR)/stub/init.o
EXTDLL:=.o
$(shell mkdir -p $(BUILDDIR) $(BUILDDIR)/stub $(BUILDDIR)/$(SRCDIR) $(BUILDDIR)/test)
$(shell nopam)
GENERATOR_FILES=$(BUILDDIR)/stub/bindings.re
# The files used to build the stub generator.
LIBFILES=$(BUILDDIR)/stub/bindings.cmx $(BUILDDIR)/stub/Yoga.o
SOURCES := $(shell find $(SRCDIR) -name '*.re')
SOURCES_IN_BUILD := $(addprefix $(BUILDDIR)/,$(SOURCES))
MODULES=Spec HardCodedEncoding FixedEncoding FloatEncoding ReJsPrelude LayoutTypes LayoutSupport LayoutPrint Layout LayoutTestUtils
CMXS=$(addsuffix .cmx,$(MODULES))
CMXS_IN_BUILD=$(addprefix $(BUILDDIR)/src/,$(CMXS))
GENERATOR = $(BUILDDIR)/generate
PACKAGES=
TOOLCHAIN=
ARMV7BIN=
OCAMLFLAGS=-noassert -inline 100
EXTRAOCAMLCCOPTFLAGS=
all: sharedlib
android: TOOLCHAIN=-toolchain android
android: $(BUILDDIR)/librelayout$(EXTDLL)
android64: $(BUILDDIR)/librelayout$(EXTDLL)
sharedlib: $(CAML_INIT) $(CMXS_IN_BUILD) $(LIBFILES)
ocamlfind opt $(OCAMLFIND) -o $(BUILDDIR)/librelayout.so -thread unix.cmxa threads.cmxa -linkpkg -runtime-variant _pic -verbose -ccopt -dynamiclib $(EXTRAOCAMLCCOPTFLAGS) $(PACKAGES) $^
@echo "sharedlib genereated at: $@"
$(BUILDDIR)/%.re: %.re
mkdir -p $(dir $@)
cp $< $@
$(BUILDDIR)/%.ml: %.ml
mkdir -p $(dir $@)
cp $< $@
$(BUILDDIR)/%.re: %.ml
refmt -print re -parse ml $< > $@
%.cmx: %.re $(SOURCES_IN_BUILD)
ocamlfind $(TOOLCHAIN) opt $(OCAMLFLAGS) $(EXTRAOCAMLCCOPTFLAGS) -ccopt -fPIC -thread -w -40 -pp 'refmt --print binary' -c -o $@ -I $(BUILDDIR)/src $(PACKAGES) -impl $<
$(BUILDDIR)/%.o: %.c
ocamlfind $(TOOLCHAIN) opt $(OCAMLFLAGS) $(EXTRAOCAMLCCOPTFLAGS) -ccopt -fPIC -ccopt -std=c11 -c $< -o $@
mkdir -p $(dir $@)
mv $(notdir $@) $@
$(BUILDDIR)/librelayout.o: $(CAML_INIT) $(CMXS_IN_BUILD) $(LIBFILES)
ocamlfind $(TOOLCHAIN) opt $(OCAMLFLAGS) $(EXTRAOCAMLCCOPTFLAGS) -thread unix.cmxa threads.cmxa -ccopt -fno-omit-frame-pointer -ccopt -fPIC -ccopt -O3 -o $(BUILDDIR)/librelayout.o -linkpkg -output-complete-obj -linkall -runtime-variant _pic -output-obj -verbose $(PACKAGES) $^
android-armv7: clean android
$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar rc $(BUILDDIR)/librelayout.a $(BUILDDIR)/librelayout.o
$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ranlib $(BUILDDIR)/librelayout.a
@echo "lib genereated at: $(BUILDDIR)/librelayout.a"
@echo "lib type:"
@file $(BUILDDIR)/librelayout.a
android-x86: clean android
$(ANDROID_NDK)/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-ar rc $(BUILDDIR)/librelayout.a $(BUILDDIR)/librelayout.o
$(ANDROID_NDK)/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-ranlib $(BUILDDIR)/librelayout.a
@echo "lib genereated at: $(BUILDDIR)/librelayout.a"
@echo "lib type:"
@file $(BUILDDIR)/librelayout.a
clean:
rm -rf $(BUILDDIR)
test: all
$(MAKE) -C stub_test
testperf: OCAMLFLAGS=-nodynlink -noassert -inline 100 -S -g -p
testperf: EXTRAOCAMLCCOPTFLAGS=-ccopt -g -ccopt -pg
testperf: all
$(MAKE) testperf -C stub_test
depend: $(SOURCES_IN_BUILD) $(GENERATOR_FILES)
$(OCAMLDEP) -I _build/src -I -pp 'refmt --print binary' -ml-synonym .re -mli-synonym .rei $^ > .depend
include .depend