{- Imports -} let prelude = https://raw.githubusercontent.com/vmchale/atspkg/master/ats-pkg/dhall/atspkg-prelude.dhall in let map = https://raw.githubusercontent.com/dhall-lang/dhall-lang/9f259cd68870b912fbf2f2a08cd63dc3ccba9dc3/Prelude/List/map in let not = https://raw.githubusercontent.com/dhall-lang/dhall-lang/9f259cd68870b912fbf2f2a08cd63dc3ccba9dc3/Prelude/Bool/not in {- Types -} let PreSrc = { atsSrc : Text, cTarget : Text } in {- Helper functions -} let asDats = λ(x : Text) → "ats-src/${x}.dats" in let hsDatsSrc = λ(x : Text) → { atsSrc = asDats x, cTarget = "cbits/${x}.c" } in let mapDatsSrc = λ(x : List Text) → map Text PreSrc hsDatsSrc x in let moduleNames = [ "combinatorics", "number-theory", "numerics" ] in {- Main -} λ(cfg : { sourceBld : Bool, staticLib : Bool, withBench : Bool }) → let test = if cfg.withBench then [ prelude.bin ⫽ { src = "ats-src/bench.dats" , target = "${prelude.atsProject}/bench" , libs = [ "gmp" ] , gcBin = True } ] else prelude.emptyBin in let atsSource = if cfg.sourceBld then prelude.mapSrc (mapDatsSrc moduleNames) else prelude.emptySrc in let libraries = if not cfg.sourceBld then let libCommon = { name = "numbertheory" , src = (map Text Text asDats moduleNames) , includes = [ "include/fast_arithmetic.h" ] } in if cfg.staticLib then [ prelude.staticLib ⫽ libCommon ⫽ { libTarget = "${prelude.atsProject}/libnumbertheory.a" } ] else [ prelude.lib ⫽ libCommon ⫽ { libTarget = "${prelude.atsProject}/libnumbertheory.so" } ] else prelude.emptyLib in let dependencies = prelude.mapPlainDeps ([ "atscntrb-hx-intinf" ] # (if cfg.sourceBld then [ "ats-includes" ] else [] : List Text) # (if cfg.withBench then [ "ats-bench" ] else [] : List Text)) in let libBuildFlag = if cfg.sourceBld then ([] : List Text) else [ "-DLIBRARY_BUILD" ] in let cc = prelude.cc in prelude.default ⫽ { atsSource = atsSource , test = test , libraries = libraries , dependencies = dependencies , cflags = libBuildFlag # (prelude.ccFlags cc) , ccompiler = prelude.printCompiler cc , debPkg = prelude.mkDeb (prelude.debian "fast-arithmetic" ⫽ { version = [0,6,4,1] , maintainer = "Vanessa McHale " , description = "Library for fast arithmetic in ATS" , libraries = [ "${prelude.atsProject}/libnumbertheory.a" ] , headers = [ "include/fast_arithmetic.h" ] }) }