Source

ocaml-core / base / core / oasis.sh

Full commit
#!/bin/bash
set -e -u -o pipefail

here="$(dirname "${BASH_SOURCE[0]}")"

my_join () {
    local FIRST="true"
    while read line; do
        if [[ "$FIRST" != "true" ]]; then
            echo -n ","
        else
            FIRST="false"
        fi
        echo -n "$line"
    done
    echo
}

list_mods () {
    for i in "$here"/lib/*.ml; do
        bname="$(basename $i)"
        j=${bname%%.ml*};
        case $j in
            linux_ext) continue;;
            bigstring_marshal) continue;;
            inline_tests_runner) continue;;
            *);;
        esac
        echo -n "${j:0:1}" | tr "[:lower:]" "[:upper:]"; echo ${j:1};
    done
}

list_stubs () {
    for i in "$here"/lib/*.{c,h}; do
        bname="$(basename $i)"
        j=${bname%%.?};
        case $j in
            linux_ext_stubs) continue;;
            bigstring_marshal_stubs) continue;;
            *);;
        esac
        echo "$bname"
    done
}

MODULES="$(list_mods | sort -u | my_join)"

cat >$here/_oasis<<EOF
#AUTOGENERATED FILE; EDIT oasis.sh INSTEAD

OASISFormat:  0.2
OCamlVersion: >= 3.12
Name:         core
Version:      107.01
Synopsis:     Jane Street Capital's standard library overlay
Authors:      Jane street capital
Copyrights:   (C) 2008-2010 Jane Street Capital LLC
License:      LGPL-2.1 with OCaml linking exception
LicenseFile:  LICENSE
Plugins:      StdFiles (0.2),
              DevFiles (0.2),
              META (0.2)
BuildTools:   ocamlbuild
Description:  Jane Street Capital's standard library overlay
FindlibVersion: >= 1.2.7
XStdFilesAUTHORS: false
XStdFilesINSTALLFilename: INSTALL
XStdFilesREADME: false


Flag linux
  Description: Enable linux specific extensions
  Default$:    system(linux) || system(linux_elf)

if flag(linux)
  PostConfCommand: lib/discover.sh lib/config.mlh lib/config.h -DLINUX_EXT
else
  PostConfCommand: lib/discover.sh lib/config.mlh lib/config.h

PreBuildCommand:     mkdir -p _build; cp lib/*mlh _build/
PreDistCleanCommand: \$rm "lib/config.mlh" "lib/config.h"

Library core
  Path:               lib
  FindlibName:        core
  Pack:               true
  Modules:${MODULES}
  #This should actually be the result of calling `getconf LFS64_CFLAGS`
  CCOpt:              -D_LARGEFILE64_SOURCE
  #Hack to skip the compilation of linux_ext
  CSources:           config.h,$(list_stubs | sort -u|my_join)
  #Disabled for now: those fields cannot be conditional...
  #if flag(linux)
    CSources+:        linux_ext_stubs.c,bigstring_marshal_stubs.c
    Modules+:         Linux_ext,Bigstring_marshal
  if flag(linux)
    CCLib:            -lrt
  BuildDepends:       variantslib,
                      variantslib.syntax,
                      sexplib.syntax,
                      sexplib,
                      fieldslib.syntax,
                      fieldslib,
                      bin_prot,
                      bin_prot.syntax,
                      bigarray,
                      pa_ounit,
                      pa_pipebang,
                      res,
                      unix,
                      threads

Flag tests
  Description:        Build and run tests
  Default:            false

Executable test_runner
  Path:               lib_test
  MainIs:             test_runner.ml
  Build$:             flag(tests)
  Custom:             true
#  CompiledObject:     best
  Install:            false
  BuildDepends:       core,oUnit (>= 1.0.2)

Test test_runner
  Run\$:               flag(tests)
  Command:            \$test_runner
  WorkingDirectory:   lib_test

Document "core"
  Title:                Jane street's core library
  Type:                 ocamlbuild (0.2)
  BuildTools+:          ocamldoc
  XOCamlbuildPath:      lib
  XOCamlbuildLibraries: core

EOF

cat >$here/_tags <<EOF
# OASIS_START
# OASIS_STOP
<lib{,_test}/*.ml{,i}>: syntax_camlp4o
<lib/{std,core_int63,bigstring,core_mutex,core_unix,bigstring_marshal,linux_ext}.ml{,i}>:pkg_camlp4.macro
EOF

cd $here
oasis setup
./configure "$@"