2021-06-25 12:43:03 by Michael Baeuerle | Files touched by this commit (3) |
Log message:
devel/smake: Update to 1.5
Create OS rule for mips64eb architecture too (bulk build failed).
Changelog from AN-2021-05-19:
- smake: smake "MACRO += value" now works.
smake did implement command line macros like "MACRO=value" since
spring 1996 but did not yet support "MACRO +=value" as well.
- smake: smake "MACRO::=value" "MACRO:::=value", "MACRO \
+:= value"
now work as well.
- smake: The man page now mentions the new command line macro operators
::=, :::=, += and +:=
- smake: Version bumped to 1.5
Changelog from AN-2021-06-07:
- smake: the MAKEFLAGS parser has been enhanced to understand the
encoding used by the BSD make program "bmake". This is needed to
support something like "bmake INS_BASE=xxx" on FreeBSD while
compiling the schilytools.
This parser enhancement also covers some incompatibilities with
the MAKEFLAGS= values created by SunPro Make (e.g. a missing --
before the make macro definitions are added).
Thanks to Robert Clausecker for reporting.
- smake: The smake man page now also mentions SunPro make as dmake(1)
and make(1s) in the "SEE ALSO" section.
|
2021-04-26 12:38:11 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
devel/smake: Update to 1.4
Changelog from AN-2021-04-21:
- smake: We now support the idiosyncratic way, GNU make implements ::=
that results in unpredictable behavior with larger makefiles since ::=
creates a different macro type that causes the += operator to behave
different from the usual way introduced in January 1986 by SunPro Make.
+= does not expand the right hand side before appending to an existing
make macro since it has been introduced in January 1986.
+= now expands the right hand side before appending to an existing
::= typed macro. Such a macro is created if the first assignment
to that macro is done via ::=.
Using such a make macro does not expand such macros at use time.
This includes expansions to the left side and the right side of
a colon (:) dependency list and expansions for rule commands.
- smake: The new operators :::= and +:= have been introduced in
order to add an orthogonal (and thus better) counterpart to the
GNU make ::= feature that has become part of the upcoming POSIX
ISSUE 8.
We will propose this as a new POSIX feature soon. In special since
it has been implemented in smake and SunPro Make, see below.
:::= assigns a normal make macro after expanding the right hand side
+:= appends to any maro type after expanding the right hand side
This permits predictable behavior for larger or structured makefile
systems (based on the "include" statement), where it is not possible
to know easily whether a mace macro has been created with a
NAME=value assignment or with a NAME:=value assignment.
Note that the official method in make since 45 years (since make
exists) to prohibit macro expansion is not to use a ::= type macro
but rather to use two '$' signs in the related value of the macro.
- smake: The man page now mentions the new features
- smake: The option -j maxjobs is now supported, but ignored.
This makes smake compatible to the upcoming POSIX ISSUE 8
- smake: added a new function ungetch().
- smake: version bumped to 1.4
|
2020-11-25 16:24:46 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
smake: Update to 1.3nb15
Changelog from AN-2020-11-04:
- Makefile system: include/schily/nlsdefs.h no longer by default defines
the macro __() because this is in conflict with definitions that are
present in the system include files from newer HP-UX versions.
Thanks to Rudi Blom for reporting.
- smake: The new POSIX ::= assign macro feature has been implemented.
Today, this is an alias for :=, but we may make := compatible to the
SunPro Make feature := (conditional macro assignment) compatible:
target := MACRO = value
or
target := MACRO += value
- smake: The new POSIX ?= conditional macro assignment operator has
been added.
Note that like with +=, there is a need to have a space character
before ?= in order to be recognised. This is because smake and
SunPro Make support to have the characters '+' and '?' as part of
a macro name.
Note that some other make implementations that do not support
'+' and '?' as part of a macro name may be happy with something like
"MACRO+= value" or "MACRO?= value" but this is definitely not
portable.
Changelog from AN-2020-11-25:
- Makefile System: Added support for MacOS on arm64
Thanks to a hint from Ryan Schmidt from macports
Note that due to outstanding replies to recent changes in configure,
it could up to now not be verified that all configure tests now work in
a way that results in correct overall results. See below for an in
depth report on the changes.
- Makefile System: autoconf (config.guess & config.sub) now supports
the new arm64 Apple systems.
Thanks to Ryan Schmidt from macports for provinding the needed uname(1)
output.
- Makefile System: Added a new shell script "autoconf/uname" that helps
to create shell scrips that allow to emulate an alien host system in
order to test the correct behavior of configure.guess and configure.sub
on the main development platform.
This helps to adapt configure.guess and configure.sub to new platforms
in the future.
- Makefile System: The new clang compiler as published with the upcomming
ARM macs has been preconfigured with
-Werror -Wimplicit-function-declaration
as the default behavior and thus is in conflict with the existing base
assumption of the autoconf system that minimalistic C-code used for
compile/link allows to check for the existence of a specific function
in libc without a need to know which system #include file is used to
define a prototype for that function.
This clang version, as a result of this default, behaves like a C++
compiler and aborts if a function is used with no previous function
prototype. This caused most of the existing autoconf test to fail with
error messages about missing prototypes.
We implemented a workaround using these methods for the identified
problems:
- Most of the exit() calls in the various main() functions have
been replaced by return() to avoid a need to
#include <stdlib.h> in special since these test may be the
case for layered tests that #include files from the higher
level parts.
- Many autoconf tests programs now #include more system include
files, e.g. stdlib.h and unistd.h to avoid missing prototype
errors. This cannot reliably be done in tests that are used as
a base for higher level tests where the high level test
#includes own system include files, since older platforms do
not support to #include the same file twice.
So this is tricky...
- A test for a Linux glibc bug caused by incorect #pragma weak
usage inside glibc that prevents one or more functions from
ecvt()/fcvt()/gcvt() from being usable outside glibc now uses
hand-written prototypes for some of the libc interface
functions in order to avoid using the system includes. If we
did not do that, we could not use ecvt()/fcvt()/gcvt() on
MacOS anymore.
Thanks to Ryan Schmidt from macports for reporting and for the given
help that was needed for remote debugging.
Please send the needed feedback on whether the current state of the
configure script results on correct autoconf results on the M1 Macs.
|
2020-10-23 13:13:00 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
devel/smake: Update to 1.3nb14
New features with AN-2020-09-04:
- autoconf: congig.guess: FreeBSD on 64 bit ARM returns arm64 from
uname -m; this was previously not supported and rejected by config.sub.
We now convert "arm64" into "aarch64" in config.guess to \
get the usual
expected results.
- Makefile system: RULES/rules.env The environment variables FIGNORE,
LD_LIBRARY_PATH LD_LIBRARY_PATH_32 and LD_LIBRARY_PATH_64 are now
unexported from the enviroment.
In special FIGNORE is dangerous, as it is frequently used by bash
users but tells ksh93 to modify it's behavior with "echo *" and
this may cause strange things with our makefiles in case that
/bin/sh is ksh92. This applies e.g. to Oracle Solaris 11 and
OpenSolaris.
- smake: new version date, this had been forgotten with the last change
New features with AN-2020-10-09:
- autoconf: Added support for newer HP-UX versions on Itanium.
Thanks to Rudi Blom for reporting and making a change proposal.
|
2020-08-26 15:28:09 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
devel/smake: Update to 1.3nb13
New features with AN-2020-07-18:
- Makefile system: changed several "echo MAKING... && sh ./MKLINKS"
into "echo MAKING... ; sh ./MKLINKS"
This allows an optimization in smake to avoid a call to sh -c "cmd".
if the command is a simple command or a simple command prefixed by
"echo something ;". Since 2012, we implement an inline echo command
in smake to speed up makefile execution.
- smake: The -a option is now no longer missing in the smake -help
output. This has been forgotten when the option has been added in March.
New features with AN-2020-08-12:
- autoconf: added a new test for the existence of <sys/auxv.h>
- autoconf: added new tests for Linux getauxval() and FreeBSD elf_aux_info()
- libschily: getexecpath.c now uses getauxval() on Linux and elf_aux_info()
on FreeBSD. This was needed since readlink("/proc/curproc/file") on
FreeBSD returns random values for hardlinked files, making it impossible
to use the result in order to find out which behavior variant of a
fat binary is requested.
- smake: Added some code to allow better debugging of MAKEFLAGS related
problems.
- smake: we now use strdup() to remember the content of the MAKEFLAGS
environment as the content of a pointer into the environment array
did change unexpectedly on DJGPP.
Thanks to a hint from Albert Wik.
|
2020-07-22 12:19:45 by Michael Baeuerle | Files touched by this commit (1) |
Log message:
devel/smake: Add homepage
|
2020-07-17 13:41:42 by Michael Baeuerle | Files touched by this commit (1) |
Log message:
devel/smake: Whitespace corrected (space removed)
Found by pkglint.
|
2020-07-17 12:33:52 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
devel/smake: Update to 1.3nb12
Rebase to schilytools 20200701.
No changes documented.
Nevertheless bump PKGREVISION because binary package is not identical.
|
2020-06-05 18:48:16 by Michael Baeuerle | Files touched by this commit (3) |
Log message:
devel/smake: Update to 1.3nb11
- Rebase to schilytools release 2020-05-25
- Add helper code for tbl (man page table preprocessor) to Makefile.common
- Add helper code for OS specific man page sections to Makefile.common
- Bump PKGREVISION
|
2020-05-11 15:54:31 by Michael Baeuerle | Files touched by this commit (2) | |
Log message:
smake: Update to 1.3nb10
Changes from AN-2020-03-11:
- configure: The autoconfiguration now has an enhanced test for waitid()
that was needed since Mac OS is still not POSIX compliant and returns 0
instead of the signal number for a process that has been killed by a
signal. MacOS did pass the POSIX certification as a result of a missing
test for that problem.
Since every vertified OS needs to run an annual refresh the
certification with recent versions of the test, I guess that
Mac OS (Catalina updates) may become more compliant witin a year.
- psmake: The portable bootstrap compile environment for smake missed
a symlink for unsetenv.c to libschily since the related code has been
moved to libschily in 2018. This prevented compilation on IRIX.
Thanks to Kazuo Kuroi for reporting
Changes from AN-2020-03-27:
Changes from AN-2020-04-18:
- Makefile system: the IRIX compiler driver RULES/cc-sgi.rul has been
reduced to one single file and RULES/cc-sgi32.rul RULES/cc-sgi64.rul
are now symlinks to the file RULES/cc-sgi.rul
- Makefile system: IRIX now supports explicit 32 bit compilation targets
using:
smake CCOM=cc32
- smake: A new option -a has been added. This option allows to tell
smake not to set up the automake specific make macros MAKE_ARCH,
MAKE_OS and similar. The identifying macro MAKE_NAME=smake is still
set up in order to allow to select the right make specific include
rules.
- smake: the file archconf.c has been modified to use a simplified
interface in order to be able to use mostly identical code in
SunPro Make for ease of future maintenance.
Changes from AN-2020-05-11:
- Makefile system: A new version of the BSD make (bmake) program fixed
a bug in pattern macro substitution, so we are now able to detect
BSD make and to read BSD make program specific rules.
This could in theory allow us to support BSD make in the future,
but...
Note that we on the other side discovered a new bug with pattern
macro substitution in bsd make: The substitution:
$(FOO:%=bar/%)
is replaced by "bar/" with an empty "FOO", but of course, \
with an
empty FOO, the substitution should be empty as well.
This second bug (above) was fixed on May 6th, but we do not yet have
all needed make rules and we do not know whether other bugs may still
prevent the usability of BSD make. Supporting BSD make will be hard
as BSD make does not support pattern matching default rules and this
is important for placing the .o files into a sub-directory.
Also note that the portable program source for "bmake" from \
"pkgsrc"
is 2 years old and thus currently cannot be supported at all. If
you like to experiment on your own, you need to get this version:
http://crufty.net/help/sjg/bmake.html
see
http://www.crufty.net/ftp/pub/sjg/bmake.tar.gz
and replace the newer files from the netbsd.org CVS tree by hand in
order to fix the first and second mentioned pattern macro substitution
bug.
- Makefile system: RULES/MKLINKS was enhanced to create a new symlink
RULES/r-bsdmake.tag that points to RULES/r-make.tag
- Makefile system: The archive makefiles.tar.bz2 has been added to the
schilytools tree to allow easy reuse of the makefile system for own
projects.
|