freebsd-ports/lang/seed7/Makefile
Pietro Cerutti 09e4bcc464 lang/seed7: update to 05_20221218
20221218:
- Examples for reading from the keyboard have been added to the manual.
- In src/read_me.txt and src/read_me.htm the description "compiling
  Seed7 under windows with cl from MSVC" has been improved. The
  description of possible C compiler warnings has also been improved.
- Support for the ternary operator ?: has been added to the types
  bitset, color, duration and time.
- The graphic keyboard test program gkbd.sd7 has been improved to
  support super/windows keys.
- Definitions of KEY_SUPER, KEY_LEFT_SUPER and KEY_RIGHT_SUPER have
  been added to the libraries keybd.s7i and keydescr.s7i.
- The tls.s7i library has been improved to reopen a socket if the
  old session cannot be reused.
- In gif.s7i a small error in reading a GIF header has been fixed.
- The compiler (s7c.sd7) has been improved:
  - Unsupported Seed7 compiler options trigger a warning now.
  - Better optimizations for abs(), mdiv and mod are done.
  - More integer overflow checks of abs(), <<, *, div, mdiv, mod and
    rem are optimized away (with option -oc3).
  - More division by zero checks are optimized away.
  - Computing the range of possible integer results for abs(),
    bitLength(), log2(), log10(), sqrt() +, -, <<, >>, - (negate), *
    and ?: (ternary operator) has been improved. This also helps in
    reducing the number of integer overflow checks.
  - The statistics about integer overflow checks and division checks
    have been improved.
  - A warning is written at a catch of otherwise when checks for an
    exception have been suppressed (this is done with -w2).
- The code coverage of the integer tests in chkint.sd7 and
  chkovf.sd7 has been increased. Now, all code in comp/int_act.s7i
  is tested (except code for non-twos-complement computers).
- Several tests in chkint.sd7 have been refactored to avoid
  optimizations that skip tests (Expressions are compared with
  intExpr(value) instead of just value).
- Documentation comments have been improved in time.s7i.
- The graphic driver for windows (drw_win.c) has been improved:
  - Windows are now created with a size that includes decorations.
  - The windows class is registered with with RegisterClassExW() now.
    This triggers the creation of Unicode windows (where keypresses
    return Unicode characters).
  - A function to draw filled chords (drwPFArcChord) under windows has
    been added.
  - An empty window is just created once on initialization and stored
    globally.
- The graphic keyboard driver for windows (gkb_win.c) has been
  improved:
  - The function getc(GRAPH_KEYBOARD) now returns Unicode characters.
  - Dead keys are returned directly and are not combined with the next
    character pressed (this combining can be done by the program).
  - Holding down a windows/super key and pressing a cursor key is
    supported now (this resizes and moves the current active window).
    In this case the program now receives KEY_RESIZE characters (if
    they have been requested with selectInput()).
  - Combinations of CTRL + ALT + letter are now recognized correctly
    (CTRL is preferred over ALT in combinations with a letter).
  - The combination of cursor, function and mouse keys with modifier
    keys now prefers SHIFT over the other modifiers and CTRL over ALT.
  - The recognition of button presses in gkbButtonPressed() has been
    improved to also work for Unicode characters.
  - Now wide char functions (CreateWindowW(), CreateWindowExW(),
    MapVirtualKeyW(), PeekMessageW(), GetMessageW()) are used and only
    correctly received messages are processed.
  - The lowest four bits of a system command (wParam of WM_SYSCOMMAND
    message) are ignored now.
  - Macros are used to recognize mouse wheel and xbuttons.
  - Macro definitions have been added, as some C compilers do not
    provide them.
- The graphic keyboard drivers (gkb_win.c and gkb_x11.c) have been
  improved to support super/windows keys.
- The support for the unused action CHR_CONV has been removed.
- The number of C compiler warnings has been reduced.
- Unnecessary initialisations and assignments have been removed in
  several C files.
- Usages of strcpy() and wcscpy() have been reduced.
- In hshlib.c the hash table for-loops have been adjusted to process
  the elements in the same succession as in compiled programs. The
  code has also been simplified.
- The program chkccomp.c has been improved:
  - Now, a backup copy of the source file (e.g. ctest123.cbak) is
    created if a test program fails.
  - Now, an empty output of a test program is recognized and the test
    is repeated (Some anti-virus software of Windows may trigger this).
  - Now, it considers wasm files for an Emscripten build.
  - The macros os_setmode, os_fdopen and os_fileno are determined.
- Usages of isatty(), fdopen() and fileno() have been replaced by
  os_isatty(), os_fdopen() and os_fileno() respectively.
- Some fixes for Emscripten have been done:
  - The files mk_emccl.mak and mk_emccw.mak have been adjusted for the
    newest version of Emscripten. Now, there is source information in a
    stack trace, and the stack size used by Emscipten has been
    increased.
  - In chkccomp.c wasm files are considered now.
  - The size of functions has been reduced in chkchr.sd7, chkint.sd7
    and chkstr.sd7. This avoids a stack overflow in Node.js.
- Logging functions have been added or improved in drw_win.c,
  gkb_win.c, gkb_x11.c and intlib.c.
2022-12-28 13:50:27 +00:00

90 lines
2.9 KiB
Makefile

PORTNAME= seed7
DISTVERSION= 05_20221218
PORTREVISION= 0
CATEGORIES= lang
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${DISTNAME}/
DISTNAME= ${PORTNAME}_${DISTVERSION}
MAINTAINER= gahr@FreeBSD.org
COMMENT= High-level, extensible programming language
WWW= http://seed7.sourceforge.net/
# The language libraries are licensed under the LGPL21 license. Starting from
# version 05_20140601, the compiler libraries are also distributed. These are
# licensed under the GPLv2 and can be found in ${PREFIX}/lib/seed7/lib/comp.
LICENSE= GPLv2 LGPL21
LICENSE_COMB= multi
ONLY_FOR_ARCHS= amd64 armv7 i386 powerpc powerpc64 powerpc64le sparc64
LIB_DEPENDS= libodbc.so:databases/unixODBC
USES= mysql:client ncurses pgsql sqlite tar:tgz xorg
OPTIONS_DEFINE= DOCS EXAMPLES
USE_XORG= x11 xrender
WANT_PGSQL= client
WRKSRC= ${WRKDIR}/${PORTNAME}/src
MAKE_ENV+= S7_LIB_DIR=${S7_LIB_DIR} \
SEED7_LIBRARY=${SEED7_LIBRARY} \
C_COMPILER=${CC} \
CPLUSPLUS_COMPILER=${CPP}
SEED7_LIBRARY= ${PREFIX}/lib/${PORTNAME}/lib
S7_LIB_DIR= ${PREFIX}/lib/${PORTNAME}/bin
S7_LIBS= s7_comp.a s7_con.a s7_draw.a s7_data.a seed7_05.a
PORTEXAMPLES= *
PORTDOCS= *
MAKEFILE= mk_freebsd.mk
post-patch:
${REINPLACE_CMD} \
-e 's|%%LOCALBASE%%|${LOCALBASE}|g;' \
-e 's|^CFLAGS = |CFLAGS = -I${NCURSESINC} |' \
${WRKSRC}/${MAKEFILE}
${REINPLACE_CMD} \
-e 's|/opt/X11/include|${LOCALBASE}/include|' \
${WRKSRC}/chkccomp.c
do-configure:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} -f ${MAKEFILE} depend
do-build:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} -f ${MAKEFILE} s7 s7c
do-install:
# install interpreter and compiler
${INSTALL_PROGRAM} ${WRKSRC}/../bin/s7 ${STAGEDIR}${PREFIX}/bin
${INSTALL_PROGRAM} ${WRKSRC}/../prg/s7c ${STAGEDIR}${PREFIX}/bin
# install seed7 library
${INSTALL} -d ${STAGEDIR}${SEED7_LIBRARY}/comp
cd ${WRKSRC}/../lib && ${COPYTREE_SHARE} '*.s7i' ${STAGEDIR}${SEED7_LIBRARY}
cd ${WRKSRC}/../lib/comp && ${COPYTREE_SHARE} '*.s7i' ${STAGEDIR}${SEED7_LIBRARY}/comp
# install static libraries
${INSTALL} -d ${STAGEDIR}${S7_LIB_DIR}
# install vim and nano syntax files
${INSTALL} -d ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKSRC}/../doc/seed7.vim ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKSRC}/../doc/sd7.vim ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKSRC}/../doc/seed7.nanorc ${STAGEDIR}${DATADIR}
.for s7_lib in ${S7_LIBS}
${INSTALL_DATA} ${WRKSRC}/../bin/${s7_lib} ${STAGEDIR}${S7_LIB_DIR}
.endfor
# install PORTDOCS
${INSTALL} -d ${STAGEDIR}${DOCSDIR}
cd ${WRKSRC}/../doc && ${COPYTREE_SHARE} \* ${STAGEDIR}${DOCSDIR}
# install PORTEXAMPLES
${INSTALL} -d ${STAGEDIR}${EXAMPLESDIR}
cd ${WRKSRC}/../prg && ${COPYTREE_SHARE} '*.dna *.sd7 *.dat *.s7i' ${STAGEDIR}${EXAMPLESDIR}
# insall man pages
${INSTALL_DATA} ${WRKSRC}/../doc/s7.1 ${STAGEDIR}${PREFIX}/man/man1
${INSTALL_DATA} ${WRKSRC}/../doc/s7c.1 ${STAGEDIR}${PREFIX}/man/man1
do-test:
cd ${WRKSRC} && ${MAKE} -f ${MAKEFILE} test
.include <bsd.port.mk>