NEW features of smake-1.2.5: *** WARNING *** *** Need new smake *** *** Due to the fact that schily-tools 2014-04-03 introduced to use new macro *** expansions and a related bug fix in smake, you need a new smake *** to compile this source. To ensure this, call: cd ./psmake ./MAKE-all cd .. psmake/smake psmake/smake install - Smake now allows to disable the built-in echo command by specifying make COPTX=-DNO_MYECHO - smake no longer dumps core if a colon is seen after no target. Thanks to Heiko Eißfeldt for running "american fuzzy lop" on smake and reporting the bug. - smake no longer endlessly searches for the right implicit rule in rare cases. Thanks to Heiko Eißfeldt for running "american fuzzy lop" on smake and reporting the bug. - smake no longer goes into an apparent endless wait if something like: $r66666666666666666 was seen in a makefile. Thanks to Heiko Eißfeldt for running "american fuzzy lop" on smake and reporting the bug. - smake no longer dumps core when in rare cases a buffer resize happens before the "F" operator (take basename of path) is evaluated. Thanks to Heiko Eißfeldt for running for doing some handcrafted tests based on makefiles created by "american fuzzy lop". - Heiko Eißfeldt has checked smake with a test system that tries to push programs into unusual code paths. This is why we discovered a lot of bugs that did not hit during the past 30 years. The name of the test program is "american fuzzy lop". - smake: several typos in the comment and in strings have been fixed. - smake: With help from Heiko Eißfeldt, we fixed two more places where smake did not correctly realign local pointers into the string stack. Note that the related coredumps did not happen on Solaris due to a different environment length and did not happen with Makefiles of usual langth. In both cases, the buffer relocation takes place at different places in the code and thus does not trigger a core dump. - smake: Heiko Eißfeldt discovered that one has to be careful even with strlcpy() as it expects a null-terminated from-string. This was not the case for some cases in the parser when a token was read-in and the buffer had to be expanded. Smake not first temporarily null-terminates the current buffer before using strlcpy() to copy the old content to the new grown buffer. - smake: Heiko Eißfeldt discovered that under rare conditions, the functions extr_filenames() and extr_dirnames() could overwrite the growable string stack. These functions now check and grow (if needed) the string stack before appending another iteration of text. - smake: Heiko Eißfeldt discovered that cvtvpath() could overwrite the intermediate buffer. - smake: Heiko Eißfeldt presented a makefile that contains the character '\377' at offset 2048 and thus triggered a long known bug in mygetc() that made it impossible to distinct '\377' from EOF. The problem is now fixed - smake: Heiko Eißfeldt presented a makefile that triggered a object dereference from a warning where only the null object was present. Smake now prints "" instead of dumping core. - smake: Heiko Eißfeldt discovered a problem with a not correctly inialized sub_ptr from getshvar() that caused problens in dosh() -> sub_c_put() - smake: Heiko Eißfeldt discovered a problem with blown up memory from a direct recusive dependency. This was so far detected in the interpreter but not in the parser already. A new check in the parser prevents smake from allocating infinite amounts of memory. - smake: Heiko Eißfeldt discovered a problem in getobjname() getname() getln() and getcmd(): growgbuf() needs probably be called before the null-byte is added to the string. - smake: Heiko Eißfeldt discovered a problem resulting from a bug in update.c::patr_src() where a name pointer was erreneously repeatedly incremented instead of adding an offset to the the base name when doing a second iteration. This could cause core dumps with some makefiles. - Support for FreBSD & clang was added: i386-freebsd-clang.rul i386-freebsd-clang.rul i386-freebsd-clang.rul amd64-freebsd-clang.rul amd64-freebsd-clang32.rul amd64-freebsd-clang64.rul - Some documentation now mentions SourceForge instead of BerliOS as OSS hoster - The makefile rules for installing man pages have been changed so that OBJ//man/ is no longer a direct dependency of the man page. This results in repeated "make install" calls not to reinstall up-to-date man pages again. - The makefile rules for installing localized sripts have been changed so hat OBJ// is no longer a direct dependency of the man page. This results in repeated "make install" calls not to reinstall up-to-date scripts again. - New autoconf test whether printf() supports %z TODO: Smake would need to implement an undocumented feature from historical UNIX make implementations that is used by Xorg at one place: target: *.o do-something-with *.o Which expands *.o from the filesystem. Meanwhile, use smake -N to compile Xorg. After pattern expansion has been implemented, smake-1.2 final will be released. P.P.S.: As Xorg changed it's build system, we may delay this feature to something past 1.2-final. WARNING: Do not use 'winzip' to extract the tar file! Winzip cannot extract symbolic links correctly. Joerg