pkgsrc/lang/chicken/Makefile
asau 9b2398f67c Update Chicken to version 4.7.0
Provided by Peter Bex on IRC.


Changes in 4.7.0

- Build system
  - On BSD, libchicken.so is linked with -lpthread, as this seems
    to be required for linking libraries that require pthreads
  - The C header-files are now installed in a subdirectory below
    the "PRFIX/include" directory to allow installation of multiple
    chickens with different PROGRAM_PREFIX/PROGRAM_SUFFIX settings
    in the same prefix; to avoid conflicts with existing CHICKEN
    headers, it is recommended to completely remove any old
    installation before installing the new version
  - the PROGRAM_PREFIX and PROGRAM_SUFFIX configuration settings
    are applied to generated files and directories which allows
    perform differently named installations into the same PREFIX
  - increaded binary-compatibility version from 5 to 6, which
    means installed extensions in an existing installations will
    have to be re-installed
  - bugfixes in mingw/msys makefiles
  - Sven Hartrumpf contributed a bugfix to the internal helper
    script for creating distribution directories
  - Peter Bex has cleaned up the makefiles heavily, making the
    build more maintainable and easier to modify; thanks to all
    who helped testing this new build
  - renamed the makefile to `GNUmakefile' to catch using the
    a make(3) other than GNU make
  - configuration-header fix for BSD systems (thanks to Peter Bex
    and Christian Kellermann)


- Core libraries
  - the `regex' library unit has been removed and is separately
    available as an extension which should be fully backwards-
    compatible
  - `irregex' is now a core library unit and replaces the  `regex' API
  - "extras" unit
    - fixed pretty-printer output of certain escaped character
      sequences inside strings (thanks to Mario Domenech Goulart,
      thanks to Kon Lovett for pointing out a missing test-file)
    - The pretty printer did not escape some control characters correctly
      (reported by Alan Post)
    - control-characters in symbol-names are now properly escaped if
     the symbol is printed readably (thanks to Alaric Snell-Pym
     for pointing this out)
    - the deprecated `random-seed' function has been removed
  - "files" unit
    - fixed bug in `normalize-pathname'
    - `file-copy' and `file-move' check whether the source-file is a
      directory
    - `delete-directory' now optionally deletes directories recursively
  - "irregex" unit
    - Peter Bex has contributed various bugfixes and performance
      enhancements
  - "library" unit
    - Added "condition->list" (thanks to Christian Kellermann)
    - The reader accepts now escaped octal character codes in string
      literals
    - Read-syntax can return zero values to indicate ignored objects
    - R5RS output output routines now always return a "void" result
    - "\|" was not correctly escaped when occurring inside
      symbol print names
    - added `condition->list', contributed by Christian Kellermann
    - added `equal=?'
    - removed deprecated `getenv', `left-section', `right-section',
      `project', `c-runtime' and `noop'
    - added missing import-library entry for `vector-copy!' (thanks
      to Jules Altfas)
    - circular or excessively deeply nested data generates a more
      useful error message when encountered by `equal?'
    - `list-tail' gives now a better error message when passed a
      non-list argument
    - fixed bug in `getter-with-setter' that modified the first
      argument if it already had a setter procedure attached
    - fixed incorrect size of internal data vector used in `time'
      (thanks to Kon Lovett)
  - "lolevel" unit
    - removed deprecated `global-bound?', `global-make-unbound',
      `global-ref' and `global-set!' procedures
    - added support for `pointer-vectors':
      -  make-pointer-vector
      -  pointer-vector?
      -  pointer-vector-length
      -  pointer-vector-ref
      -  pointer-vector-set!
  - "posix" unit
    - "close-input-pipe" did not return the status code of a
      terminated process on Windows (reported by Mario Domenech Goulart)
    - added `file-creation-mode' (suggested by Mario Domenech Goulart)
  - "setup-api" unit
    - `required-extension-version' and `required-chicken-version' have
       been deprecated
  - "srfi-18" unit
    - removed deprecated `milliseconds->time' and `time->milliseconds'
      procedures
    - `make-mutex' incorrectly created mutexes as initially owned by
      the current threads (thanks to Joerg Wittenberger)
    - the file-descriptor handling in the scheduler has been simplified
      and performs some sanity checks
    - deadlock in the scheduler now terminates the process instead of
      attempting to throw an error
    - added some sanity checks to the scheduler
  - "tcp" unit
    - Fixed bug in "tcp-abandon-port" (reported by Jim Ursetto)
  - "utils" unit
    - `compile-file' now returns `#f' when the compilation fails,
       instead of raising an error


- Compiler
  - Removed unreliable lambda-lifting optimization (now, really!);
    the "-lambda-lift" option is still accepted but produces a
    warning
  - When "-scrutinize" is given, installed ".types" files will be
    automatically consulted for extensions and used units
  - Fixed optimizer bug in handling of "let" forms with multiple
    bindings which could result in toplevel assignments being
    silently dropped (reported by Moritz Heidkamp)
  - the `-accumulate-profile' option did not provide a way to
    specify the target profile data file - now `-profile-name'
    must always be given when accumulated profiling is done
    (thanks to Taylor Venable)
  - added `-module' option, which wraps the code into an implicit
    module
  - removed check for unsafe toplevel calls in safe mode
  - intrinsic handling of `exact->inexact' and `string->number' is
    now more efficient
  - fixed bug in leaf-routine optimization (thanks to David
    Dreisigmeyer)
  - unit-toplevel entry-points are now named differently, which
    may break binary-compatibility with existing compiled Scheme
    code modules
  - fixed invalid dropping of unused external entry-points in
    block-mode
  - fixed incorrect lambda-list check in scrutinizer (thanks to
    Alan Post)
  - Kon Lovett reported numerous bugs in the type-database used
    by the scrutinizer
  - `-fwrapv' is disabled on OpenBSD, since the default compiler
     does not support this option (thanks to Christian Kellermann)
  - on Solaris `gcc' is used by default, override `C_COMPILER'
    to use the Sun compiler instead
  - declaring a function `notinline' will prevent direct-call
    optimization for known procedure calls
  - the implementation of overflow-detection for arithmetic operations
    on fixnums have been replaced and now allow using the full 63-bit
    range of fixnums on 64-bit systems
  - fixed serious inlining-bug (thanks to Sven Hartrumpf)
  - constant-folding in the compiler has been simplified and
    is more reliable (thanks to Sven Hartrumpf)
  - optimization-levels 3 and higher imply `-unboxing -inline-global'
  - added new declaration `unsafe-specialized-arithmetic' which allows
    optimizing unboxed floating-point arithmetic in safe mode
  - removed `scrutinize' declaration
  - the warning shown when unimported identifiers are used in compiled
    modules now also shows the name of the procedure where the
    identifier is referenced (suggested by Alaric Snell-Pym)


- Documentation
  - Added list of installed files to README
  - Documented remaining "c...r" standard procedures (thanks to
    Juergen Lorenz)
  - The manual is now installed in HTML format in
    PREFIX/share/chicken/doc, many thanks to Jim Ursetto for
    contributing is excellent `manual-labor' extension which made
    this possible


- Foreign function interface
  - Added support for missing "(const [XXX-]c-string)" foreign type
    (thanks to Moritz Heidkamp)
  - removed deprecated `pointer', `nonnull-pointer', `byte-vector'
    and `nonnull-byte-vector' types
  - added missing result-type handling for `unsigned-integer64'
    (thanks to Moritz Heidkamp)
  - added `foreign-type-size' macro
  - added the new foreign type `size_t' (suggested by Moritz
    Heidkamp)
  - added the missing `unsigned-integer64' foreign type (thanks
    to Moritz for catching this)
  - added new foreign type `pointer-vector' which maps to `void **'
    and provided a low-level API in the `lolevel' library unit for
    manipulating pointer vectors


- Runtime system
  - Fixed typo in "runtime.c" (thanks to Sven Hartrumpf)
  - Little-endian detection on MIPS systems was not correct (thanks
    to Christian Kellermann)
  - Fixed bug in handling of runtime-options with arguments (also
    reported by Christian Kellermann)
  - `equal?' does not compare procedures recursively anymore
  - fixed incorrect use of alloca.h on OpenBSD (thanks to
    Christian Kellermann and Alan Post)
  - checks for NaN and infinity are now done using ISO C99
    operations, which required various changes to `chicken.h'
    to make the code compile in ISO C99 mode
  - remaining debris regarding MSVC builds has been removed
  - fixed bug in argument-type check for 64-bit integer (thanks
    to Kon Lovett)
  - increased default trace-buffer size from 10 to 16
  - fixed bug in low-level termination routine (thanks to
    Jeronimo Pellegrini)
  - the scheduler handles violations of internal invariants
    regarding threads slightly more gracefully (thanks to Jim
    Ursetto)
  - fixed broken sleep-time conversion (thanks to Karel Miklav)
  - repaired broken handling of multiple finalizers that referred
    to the same object (reported by Moritz Heidkamp)
  - fixed problem with reader and escaping of single-char symbols


- Syntax expander
  - For-syntax syntax definitions where not correctly retained inside
    modules
  - Peter Bex fixed various critical bugs in the expander
  - The simplification for quasiquote expressions was unable
    to handle certain circular data (reported by Moritz Heidkamp)
  - `syntax-rules' now supports tail-patterns and is now fully
    SRFI-46 compatible - many thanks to Peter Bex for implementing
    this
  - Peter Bex provided a bugfix for resolution of primitive imports
  - handling of internal definitions with shadowed defining
    forms is now done correctly - fix once again from Peter Bex
  - corrected non-standard behaviour of quasiquote with respect
    to nested quasiquotations - another bugfix by our mighty macro
    master
  - removed stub-implementation of `define-macro'
  - handled case where a global redefinition of `cons' influenced
    a non-inlined internal use in the expander (thanks to David
    Steiner)
  - `define-record' now allows defining SRFI-17 setter procedures
    for accessing slots
  - the expansion of DSSSL lambda-lists uses now `let-optionals*'
    internally instead of `let-optionals' and so allows
    back-references to earlier formal variables; this also results in
    faster and more compact code for argument-list destructuring
    (thanks to Alan Post)
  - new "implicit renaming" macro facility contributed by Peter Bex
    (see `ir-macro-transformer')
  - record-definitions are now made local to the module in which
    they are defined (thanks to Jim Ursetto)
  - parameters are now settable and can be modified using `set!'
    (SRFI-17)
  - added a SRFI-17 setter to `list-ref'
  - added literal blob syntax ("#{ ... }")


- Tools
  - chicken-install
    - option "-deploy" does not compile deployed extensions with
      "-setup-mode" anymore to avoid problems with dynamic loading on
      some platforms (specifically Mac OS X)
    - option "-deploy" option did not copy the correct library
      (including the version-number) (thanks to Christian Kellermann)
    - added support for proxy-authentification (thanks to Iruata Souza)
    - when installing from a local directory `chicken-install' now
      removes existing `*.so' files in that location to avoid stale
      binaries when the `make' syntax is used in setup scripts
  - chicken-bug
    - removed disabled e-mail support
  - csc
    - removed `-static-extension' option
    - removed deprecated `-windows' option
    - fixed incorrect use of `chicken.rc' on non-Windows platforms
      in `-gui' mode (thanks to "ddp")
    - when compiling in C++ mode, the compiler will be called with the
      `-Wno-write-strings' option
    - `-frwapv' has been added to the default C compiler options
  - csi
    - the ",m" toplevel command now accepts "#f" to switch back to
      the initial empty module context (suggested by Christian Kellermann)
    - fixed broken `,g' toplevel command
    - deprecated `script' feature identifier (use `chicken-script'
      instead)
    - options `-p' and `-P' and `-e' imply `-no-init'
    - the call-trace reported will not include exception-handler code
      anymore (suggested by Christian Kellermann)
2011-05-26 20:06:13 +00:00

56 lines
1.5 KiB
Makefile

# $NetBSD: Makefile,v 1.44 2011/05/26 20:06:13 asau Exp $
DISTNAME= chicken-4.7.0
CATEGORIES= lang
MASTER_SITES= http://code.call-cc.org/releases/${PKGVERSION_NOREV}/
MAINTAINER= asau@inbox.ru #, airhead@users.sourceforge.net
HOMEPAGE= http://www.call-cc.org/
COMMENT= Scheme to C compiler, handling R5RS
LICENSE= modified-bsd
PKG_DESTDIR_SUPPORT= user-destdir
MAKE_JOBS_SAFE= no
USE_LIBTOOL= yes
USE_TOOLS+= gmake
UNLIMIT_RESOURCES= datasize
INSTALLATION_DIRS= share/chicken
OWN_DIRS= ${PREFIX}/lib/chicken ${PREFIX}/lib/chicken/6
BUILD_TARGET= all
.include "../../mk/bsd.prefs.mk"
# PLATFORM detection:
.if !empty(OPSYS:M*BSD) || ${OPSYS} == "DragonFly"
PLATFORM= bsd
.elif ${OPSYS} == "Linux"
PLATFORM= linux
.elif ${OPSYS} == "Darwin"
PLATFORM= macosx
.elif ${OPSYS} == "SunOS"
PLATFORM= solaris
.elif ${OPSYS} == "Haiku"
PLATFORM= haiku
.else
#PLATFORM+= ${OPSYS} == "Interix"
# possible choices left: mingw-msys mingw cygwin cross-linux-mingw
PKG_FAIL_REASON= "${OPSYS} is not supported"
.endif
MAKE_FILE= GNUmakefile
MAKE_ENV+= C_COMPILER=$(CC:Q)
MAKE_ENV+= HOST= # fix ${HOST} prepending ${CC}
# Need to have these in MAKE_FLAGS, MAKE_ENV is not enough due to the
# way the build system overrides them.
MAKE_FLAGS+= PLATFORM=${PLATFORM:Q} PREFIX=${PREFIX:Q} DESTDIR=${DESTDIR:Q}
MAKE_FLAGS+= TOPMANDIR=${PREFIX:Q}/${PKGMANDIR}
MAKE_FLAGS+= INFODIR=${PREFIX:Q}/${PKGINFODIR:Q}
MAKE_FLAGS+= DOCDIR=${PREFIX:Q}/share/doc/${PKGNAME_NOREV}
TEST_TARGET= check # works only after installation
.include "../../mk/bsd.pkg.mk"