pkgsrc/lang/ocaml/Makefile.common

62 lines
1.7 KiB
Text
Raw Normal View History

# $NetBSD: Makefile.common,v 1.45 2015/09/07 12:02:05 jperkin Exp $
# used by x11/labltk/Makefile
# used by x11/ocaml-graphics/Makefile
DISTNAME= ocaml-4.02.3
CATEGORIES= lang
Update to ocaml 4.02.0. Main changes (apart from ocamldoc and bugfixes, see also upstream changelog): Language features: - Attributes and extension nodes - Generative functors - Module aliases * Alternative syntax for string literals {id|...|id} (can break comments) - Separation between read-only strings (type string) and read-write byte sequences (type bytes). Activated by command-line option -safe-string. Build system for the OCaml distribution: - Use -bin-annot when building. - Use GNU make instead of portable makefiles. - Updated build instructions for 32-bit Mac OS X on Intel hardware. Shedding weight: * Removed Camlp4 from the distribution, now available as third-party software. * Removed Labltk from the distribution, now available as a third-party library. Type system: * Keep typing of pattern cases independent in principal mode - Allow opening a first-class module or applying a generative functor in the body of a generative functor. Allow it also in the body of an applicative functor if no types are created * Module aliases are now typed in a specific way, which remembers their identity. In particular this changes the signature inferred by "module type of" - Slight change in the criterion to distinguish private abbreviations and private row types: create a private abbreviation for closed objects and fixed polymorphic variants. * Compare first class module types structurally rather than nominally. Value subtyping allows module subtyping as long as the internal representation is unchanged. Compilers: - More aggressive constant propagation, including float and int32/int64/nativeint arithmetic. Constant propagation for floats can be turned off with option -no-float-const-prop, for codes that change FP rounding modes at run-time. - New back-end optimization pass: common subexpression elimination (CSE). (Reuses results of previous computations instead of recomputing them.) - New back-end optimization pass: dead code elimination. (Removes arithmetic and load instructions whose results are unused.) - Optimization of sequences of string patterns - Experimental native code generator for AArch64 (ARM 64 bits) - Optimization of integer division and modulus by constant divisors - Add "-open" command line flag for opening a single module before typing * "-o" now sets module name to the output file name up to the first "." (it also applies when "-o" is not given, i.e. the module name is then the input file name up to the first ".") * better sharing of structured constants - new flag to keep locations in cmi files - issue warning 3 when referring to a value marked with the [@@ocaml.deprecated] attribute - a new format implementation based on GADTs * Constant exception constructors no longer allocate - avoid unnecessary boxing in let - Better compilation of optional arguments with default values - ocamlopt -opaque option for incremental native compilation Toplevel interactive system: - New "#show_*" directives Runtime system: - New configure option "-no-naked-pointers" to improve performance by avoiding page table tests during block darkening and the marking phase of the major GC. In this mode, all out-of-heap pointers must point at things that look like OCaml values: in particular they must have a valid header. The colour of said headers should be black. - Fixed bug in native code version of [caml_raise_with_string] that could potentially lead to heap corruption. - Blocks initialized by [CAMLlocal*] and [caml_alloc] are now filled with [Val_unit] rather than zero. - Fixed a major performance problem on large heaps (~1GB) by making heap increments proportional to heap size by default - Structural equality treats exception specifically - efficient comparison/indexing of exceptions - avoid using unsafe C library functions (strcpy, strcat, sprintf) - An ISO C99-compliant C compiler and standard library is now assumed. (Plus special exceptions for MSVC.) In particular, emulation code for 64-bit integer arithmetic was removed, the C compiler must support a 64-bit integer type. Standard library: * Add new modules Bytes and BytesLabels for mutable byte sequences. - add List.sort_uniq and Set.of_list - a faster version of "raise" which does not maintain the backtrace - support "Unix.kill pid Sys.sigkill" under Windows - speed improvement for Buffer - efficient creation of uninitialized float arrays - Improve documentation regarding finalisers and multithreading - Trigger warning 3 for all values marked as deprecated in the documentation.
2014-10-09 21:08:28 +02:00
MASTER_SITES= http://caml.inria.fr/pub/distrib/ocaml-4.02/
#EXTRACT_SUFX= .tar.bz2
MAINTAINER= jaapb@NetBSD.org
HOMEPAGE= http://caml.inria.fr/ocaml/
COMMENT= The latest implementation of the Caml dialect of ML
LICENSE= gnu-gpl-v2
USE_TOOLS+= gmake
HAS_CONFIGURE= yes
CONFIGURE_ENV+= BDB_LIBS=${BDB_LINK:Q}
CONFIGURE_ENV+= BDB_BUILTIN=${USE_BUILTIN.${BDB_TYPE}:Q}
CONFIGURE_ARGS+= -prefix ${PREFIX}
CONFIGURE_ARGS+= -libs ${LDFLAGS:Q}
CONFIGURE_ARGS+= -with-pthread
CONFIGURE_ARGS+= -host ${MACHINE_GNU_PLATFORM:Q}
CONFIGURE_ARGS+= -mandir ${PREFIX}/lib/ocaml/${PKGMANDIR}
CPPFLAGS+= -DDB_DBM_HSEARCH
DISTINFO_FILE= ${.CURDIR}/../../lang/ocaml/distinfo
PATCHDIR= ${.CURDIR}/../../lang/ocaml/patches
.include "../../mk/bsd.prefs.mk"
.if ${OPSYS} == "Linux"
INSTALL_UNSTRIPPED= yes
.endif
.if ${OPSYS} == "Darwin"
CONFIGURE_ARGS+= -cc "${CC} -arch ${MACHINE_ARCH}"
CONFIGURE_ARGS+= -aspp "${CC} -arch ${MACHINE_ARCH} -c"
CONFIGURE_ARGS+= -as "as -arch ${MACHINE_ARCH}"
.else
CONFIGURE_ARGS+= -cc ${CC}
.endif
.include "../../mk/bdb.buildlink3.mk"
BDB_LINK= ${BDB_LIBS}
.if empty(BDBBASE:M/usr)
BDB_LINK+= -L${BDBBASE}/lib ${COMPILER_RPATH_FLAG}${BDBBASE}/lib
.endif
post-extract: cp-power-bsd cp-gnu-config
.PHONY: cp-power-bsd
cp-power-bsd:
${CP} ${WRKSRC}/asmrun/power-elf.S ${WRKSRC}/asmrun/power-bsd.S
.PHONY: cp-gnu-config
cp-gnu-config:
${CP} ${PKGSRCDIR}/mk/gnu-config/config.guess ${WRKSRC}/config/gnu/
${CP} ${PKGSRCDIR}/mk/gnu-config/config.sub ${WRKSRC}/config/gnu/
.include "../../mk/pthread.buildlink3.mk"