summaryrefslogtreecommitdiffstats
path: root/src/ocaml-native.mk
blob: b2993dbd30004f081a235069ec2ae4d7155a38fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# This file is part of MXE. See LICENSE.md for licensing information.

PKG             := ocaml-native
$(PKG)_WEBSITE  := http://caml.inria.fr/
$(PKG)_DESCR    := ocaml
$(PKG)_IGNORE   :=
$(PKG)_VERSION  := 4.00.1
$(PKG)_CHECKSUM := b48d5c7d3bf4a0cd6125f8fdfc1f654dd65586087399dc9f14716d7b9535e87a
$(PKG)_SUBDIR   := ocaml-$($(PKG)_VERSION)
$(PKG)_FILE     := ocaml-$($(PKG)_VERSION).tar.gz
$(PKG)_URL      := http://caml.inria.fr/pub/distrib/ocaml-$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE)
$(PKG)_DEPS     := gcc

define $(PKG)_UPDATE
    $(WGET) -q -O- 'http://caml.inria.fr/download.en.html' | \
    $(SED) -n 's,.*ocaml-\([0-9][^>]*\)\.tar.*,\1,p' | \
    head -1
endef

define $(PKG)_BUILD
    # the following script would require ocamlbuild with an option '-ocamlfind'
    # to work:
    #(echo '#!/bin/sh'; \
    # echo 'exec $(PREFIX)/bin/ocamlbuild -use-ocamlfind -ocamlfind $(TARGET)-ocamlfind "$$@"') \
    # > '$(PREFIX)/bin/$(TARGET)-ocamlbuild'
    # chmod 0755 '$(PREFIX)/bin/$(TARGET)-ocamlbuild'
    # As it is not the case, we patche ocaml source to get ocamlbuild use $(TARGET)-ocamlc, $(TARGET)-ocamlfind, ...
    cd '$(1)' && ./configure \
        -prefix '$(PREFIX)/$(TARGET)' \
        -bindir '$(PREFIX)/$(TARGET)/bin/ocaml-native' \
        -libdir '$(PREFIX)/$(TARGET)/lib/ocaml-native' \
        -no-tk \
        -no-shared-libs \
        -verbose
    $(MAKE) -C '$(1)' -j 1 world opt
    $(SED) -i "s,@target@,$(TARGET),g" $(1)/ocamlbuild/options.ml
    $(SED) -i "s,@target@,$(TARGET),g" $(1)/ocamlbuild/findlib.ml
    $(MAKE) -C '$(1)' -j '$(JOBS)' ocamlbuild.native
    cp -f '$(1)/_build/ocamlbuild/ocamlbuild.native' $(PREFIX)/bin/$(TARGET)-ocamlbuild
    $(MAKE) -C '$(1)' install
    # Rename all the binaries to target-binary
    for f in camlp4 camlp4oof camlp4of camlp4o camlp4rf camlp4r camlp4orf \
      ocamldoc ocamllex ocamlyacc; do \
        cp -f $(PREFIX)/$(TARGET)/bin/ocaml-native/$$f $(PREFIX)/bin/$(TARGET)-$$f; \
    done
    # test will be done once cross ocamlopt is built in package ocaml-core
endef

$(PKG)_BUILD_x86_64-w64-mingw32 =

$(PKG)_BUILD_SHARED =