NEW features of smake-1.2.4: *** 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 - The job processing code has been moved from smake/make.c -> smake/job.c This is another preparation to allow to deal with future versions os smake that will unclude support for parallel job execution. - Include file reordering in smake to avoid warnings on older platforms - dirname -> dir_name in smake to avoid a gcc warning - Fixed a bug in smake/job.c (a leftover variable "lpid" that was formerly used systems that come with bash == /bin/sh) - Added uname.c and include/schily/windows.h to the files that need to be copied for the smake bootstrap compilation "psmake". Thanks to Wolfram Schmid Fixed the scripts "cpfiles", "lnfiles" and "rmfiles" from the bootstrap section of "smake". Added uname.c to the list of files to be compiled. - psmake (the bootstrap smake compile environment) again compiles on Solaris (and probably others). This has been achieved by using -DNO_FPRFORMAT -DNO_NL_ARGS to deactivate recent enhancements in printf() - Fixed a bug in smake that caused $(CLANG_OPT$(C_ARCH:clang%=%)) not to be expanded but aborted with: smake: Missing ')' in macro call 'C_ARCH' This happened because searching for a ':' did not honor the macro nesting level. - smake/archconf.c include file reodering - libschily/format.c fixed to compile again with K&R C that does not support "long double". - Fixed the autoconf test for #pragma weak, so it will not believe that "clang" supports #pragma weak in a compatible way. This is needed in order to compile libmdigest/sha2.c using clang. - New autoconf tests added for: libexpat libpcsclite / winscard.lib libcrypto / libeay32.lib libssl / ssleay32.lib - New autoconf test for expat.h - The makefile system added the INVERSE_SUBARCHDIR= to allow local autoconfiguration for shared libraries. - RULES/rules.top now also calls MKLINKS in the directory TEMPLATES - New compiler configuration files: RULES/cc-clang.rul RULES/cc-clang32.rul RULES/cc-clang64.rul - The Mac OS X related rules now support a new macro: LDFRAMEWORKS= that allows to add Apple specific libraries. - Added a new WIN32_LIBS= macro for Win-DOS specific libraries. These libraries have to be specified in the portable -lfoo format for "libfoo" and also work when compiling for MinGW32. When cl.exe is used, -lfoo is converted to foo.lib. - New configuration files: RULES/i386-darwin-clang.rul RULES/i386-darwin-clang32.rul RULES/i386-darwin-clang64.rul - New configuration files: RULES/i386-freebsd-clang.rul RULES/i586-linux-clang.rul RULES/i86pc-sunos5-clang.rul RULES/sun4-sunos5-clang.rul Note that these files have not been tested yet. - RULES/cc-sunpro.rul now also includes rules for RULES/cc-sunpro32.rul and RULES/cc-sunpro64.rul - RULES/cc-gcc.rul now also includes rules for RULES/cc-gcc32.rul and RULES/cc-gcc64.rul - RULES/cc-sunpro32.rul added for orthogonality - RULES/cc-sunpro32.rul and RULES/cc-sunpro64.rul are symlinks to RULES/cc-sunpro.rul and RULES/cc-sunpro.rul uses a macro to include cc-sunpro.rul cc-sunpro32.rul cc-sunpro64.rul as needed - RULES/i86pc-sunos5-cc.rul now also includes rules for RULES/i86pc-sunos5-cc32.rul and RULES/i86pc-sunos5-cc64.rul - RULES/i86pc-sunos5-gcc.rul now also includes rules for RULES/i86pc-sunos5-gcc32.rul and RULES/i86pc-sunos5-gcc64.rul - RULES/sun4-sunos5-cc.rul now also includes rules for RULES/sun4-sunos5-cc32.rul and RULES/sun4-sunos5-cc64.rul - RULES/sun4-sunos5-gcc.rul now also includes rules for RULES/sun4-sunos5-gcc32.rul and RULES/sun4-sunos5-gcc64.rul - RULES/i586-linux-suncc.rul now also includes rules for RULES/i586-linux-suncc32.rul and RULES/i586-linux-suncc64.rul - RULES/9000-725-hp-ux-cc.rul now also includes rules for RULES/9000-725-hp-ux-cc32.rul and RULES/9000-725-hp-ux-cc64.rul - RULES/i486-cygwin32_nt-cc.rul now also includes rules for RULES/i486-cygwin32_nt-cc32.rul and RULES/i486-cygwin32_nt-cc64.rul - RULES/i486-cygwin32_nt-gcc.rul now also includes rules for RULES/i486-cygwin32_nt-gcc32.rul and RULES/i486-cygwin32_nt-gcc64.rul - RULES/ip22-irix-cc.rul now also includes rules for RULES/ip22-irix-cc64.rul - RULES/ip22-irix-gcc.rul now also includes rules for RULES/ip22-irix-gcc64.rul - RULES/power-macintosh-darwin-cc.rul now also includes rules for RULES/power-macintosh-darwin-cc32.rul and RULES/power-macintosh-darwin-cc64.rul - RULES/power-macintosh-darwin-gcc.rul now also includes rules for RULES/power-macintosh-darwin-gcc32.rul and RULES/power-macintosh-darwin-gcc64.rul - conf/makeinc now knows that a compiler name may not follow the "cc*" text rule. This helps to support "clang". - conf/cc-config.sh has been enhanced to detect whether "cc" or "gcc" are emulated via "clang". - New files in TEMPLATES/ related to "clang" - TEMPLATES/ now includes config files for gcc32 and gcc64 - TEMPLATES/ now includes config files for clang, clang32 and clang64 - Add comment to DEFAULTS_CSW/sparc-cc.defs - No longer use fgets() for fgetaline(), fgetline() and fgetstr() as fgets() cannot deal with embedded '\0' chars before the '\n'. - So speudo static compilation environments for Linux & ARM are now supported - Better comment in include/schily/getargs.h - include/schily/inttypes.h now includes - New #define DEV_NULL that us "NUL" on MinGW - Some minor typo corrections in include/schily/prototyp.h - Support for setting nanoseconds in include/schily/stat.h have been added. - Struct timespec was added to include/schily/time.h - Some minor typo fixes in include/schily/standard.h - include/schily/unistd.h now includes schily/inttypes.h - va_lists_t as a struct warpper for va_list has been added to include/schily/varargs.h - include/schily/stdio.h now includes a fast putc_unlocked macro for Solaris in 64 bit mode. - include/schily/timeb.h was added - include/schily/stdarg.h was added - include/schily/poll.h was added - include/schily/sunos4_proto.h was added - include/schily/shedit.h was added - include/schily/err_type.h was added - autoconf/config.guess now supports AMD 64 Mac OS X - README.compile has been updated - New functions xcomerr() and xcomerrno() in libschily/comerr.c - libschily/eaccess.c no longer calls access() in case the the OS does not implement eaccess() but rather first checks whether uid == euid and gid == egid. - libschily/getargs.c avoid coredumps in some cases when combining single char boolean flags into a single arg. - libschily::format.c (printf) now supports length modifiers like h hh l ll t z for the %n format. - libschily::format.c has been restructured for parsing the field width parameters in a way that would allow to later introduce support for %n$ - a bug in libschily/format.c that caused %.*s to be printed incorrectly has been fixed. - libschily/format.c has been redesigned to allow the code to be reused for fprformat() via #include. - libschily/fprformat.c New function fprformat() in libschily is implementing the same direct interface as doprnt() from libc and thus allows to implement printf() faster than the printf() from libc on Solaris. - libschily/jsprintf.c For Solaris, jsprintf() now is implemented based on fprformat(). This allows printf() from libschily to be aprox. 33% faster than printf() from libc on Solaris and aprox. 2x as fast as jsprintf() in libschily has been before. This gives another performance boost for printf() bound programs like hdump/od that is used as a OSS replacement for the closed source od(1) on OpenSolaris. This now makes the OSS od(1) on OpenSolaris typically 5x faster then the closed source version. - libschily/format.c (the low level printf() implementation) now implements support for %n$ argument repositioning for the case that "n" is 1..30, or if larger points to an int type arg. - libschily/fprformat.c fixed a bug that would prevent to use stdio macros with newer OpenSolaris versions, making printf() not as fast as expected. 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