***************** Important news **************************** For the 'Slottable Source Plugin Module' SSPM Features read README.SSPM ***************** Please Test ********************************* NEW features of cdrtools-3.01: This is the first localization step for cdrtools. All programs now (hopefully) call gettext() for all strings that need localization. - The next step will include dgettext() calls for the libraries. - The following step will include the extracted strings - The last step will include German translations and install support for the resulting binary message object files. ----------> Please test and report compilation problems! <--------- ***** NOTE: As mentioned since 2004, frontends to cdrtools should ***** ***** call all programs from cdrtools in the "C" locale ***** ***** by e.g. calling: LC_ALL=C cdrecord .... ***** ***** unless these frontends support localized strings ***** ***** used by the cdrtools with NLS support. ***** This version compiles on Win-DOS using the Microsoft compiler cl.exe but warning: due to missing POSIX compliance with basic features (e.g. stat() does not return inode numbers), there are many problems with the resulting code and thus it is recommended to better use a POSIX layer on top of WIN-DOS. *** WARNING *** *** Need new smake *** *** Due to the fact that schily-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, get a recent "schily" *** tarball from http://sourceforge.net/projects/schilytools/files/ *** and call: cd ./psmake ./MAKE-all cd .. psmake/smake psmake/smake install The new smake version mentioned above is smake-1.2.4. Note that smake-1.2.5 exists and is preferrable. Now you have a new smake that is able to compile this source. Note that the major makefile restructuring introduced in schily-2014-04-03 is now more than one month ago and thus seems to work without problems. WARNING: the new version of the isoinfo program makes use of the *at() series of functions that have been introduced by Sun in August 2001 and added to POSIX.1-2008. For older platforms, libschily now includes emulations for these functions but these emulations have not yet been tested thoroughly. Please report problems! All: - The macros XARCH_GEN & XARCH_OPT are now in RULES/cc-sunpro*.rul - The include file include/schily/ccomdefs.h now allows to disable the printf() format checks for GCC with -DNO_PRINTFLIKE This is needed in order to allow star to compile in the Solaris ON consolidation as GCC id too dumb for the printf() extensions. - All include files (even those created by autoconf) are now protected against multiple inclusion. - New autoconf test for pathconf() and fpathconf() - New autoconf test for /dev/stdin, /dev/stdout, /dev/stderr, /dev/fd/0, /dev/fd/1, /dev/fd2 - New autoconf tests for: qecvt() qfcvt() qgcvt() _ldecvt() _ldfcvt() _ldgcvt() _ldecvt_r() _ldfcvt_r() _ldgcvt_r() qeconvert() qfconvert() qgconvert() needed for long double support. - New autoconf test for _qecvt() _qfcvt() _qgcvt() and _qecvt_r() _qfcvt_r() _qgcvt_r() on AIX - All linker map files have been modified to allow platform dependent #ifdef's - include/schily/wchar.h now includes a workaround for platforms that do not have wcwidth(). - Make NLS the default (i.e. gettext() is called in case that schily/nlsdefs.h was included) - include/schily/nlsdefs.h now includes macros _(s) and __(s) to support gettext() and xgettext(1) - The makefile system now by default disables smake Simple Suffix Rules and the POSIX Suffix Rules in order to speed up inference rule search. - A new rule RULES/profiled.lnk allows to call: smake COPTX=-pg LDOPTX=-pg LINKMODE=profiled to create binaries that use gprof. - The Makefile System is now able to switch gmake-3.82 into a more POSIX compliant mode to tell the shell to report problems back to gmake. - New autoconf tests on whether printf supoorts %lld and %jd - Fixed the vc9-setup files to make VC9 work. - Newer Cygwin "tail" versions do no longer support UNIX syntax. change tail +2 to tail -n +2 in RULES/cc-mcs.rul to allow to use the Microsoft compiler again - A new environment variable MKLINKS_COPY allows to tell all MKLINKS scripts to generate file copies rather than symlinks. Call: MKLINKS_COPY=true export MKLINKS_COPY to enable this feature - Run an additional test -h command in MKLINKS to verify whether mingw supports symlinks - MKLINKS now creates copies instead of symlinks when we use MSC as MSC does not support to read symlink files - Fixed a typo in include/schily/libport.h (group functions have been defined to return struct passwd* instead of struct group* - Fixed wrong bracketing for C++ in include/schily/stdlib.h - Fixed wrong bracketing for C++ in include/schily/utypes.h - Added a workaround for MSC to include/schily/utypes.h MSC believes that a 32 bit int and a 32 bit long are incompatible and cannot even be casted, so we need to make uint32_t a n unsigned long - Let include/schily/archdefs.h define the standard processor #defines when compiling with MSC. - New include file include/schily/windows.h works around the oddities from the MSC include file windows.h - include/schily/stdio.h now defines popen()/pclose() to _popen()/_pclose() if on WIN-DOS - include/schily/limits.h now defines PIPE_BUF - include/schily/utsname.h now defines struct utsname for our MSC uname() emulation. - The setup for the PATHs needed by Visual Studio 9 has been corrected. - autoconf has been modified to avoid optimizing away code that is intended for testing. This help to work against a problem with detecting mbrtowc() on MinGW - autoconf now tests for mbtowc() and wctomb() - RULES/i*86-mingw32_nt-gcc.rul now link against -lmingw32 instead of -lmgw32. - include/schily/stat.h now defines S_IREAD/S_IWRITE/S_IEXEC These macros are available on typical UNIX systems but not on Android. The definition comes from UNIX V7 and is not in POSIX. Needed by SCCS and the Bourne Shell - include/schily/wait.h now defines WIFCONTINUED() if needed - include/schily/wchar.h now defines mbtowc() to mbrtowc() if needed (e.g. on Android) - include/schily/ccomdefs.h now correctly knows about the GCC release that introduced __attribute__ (used). - Android is not POSIX (by not defining various functions as functions in libc as required by POSIX) because it tries to define many functions that are part of the standard as inline macros in include files only. This breaks autoconf, so we needed to rewrite some tests (e.g for getpagesize, tcgetpgrp, tcsetpgrp) - The Schily autoconf system has been enhanced to support cross compilation. Schily autoconf is based on GNU autoconf and GNU autoconf does not support cross compilation because it needs to run scripts on the target system for some of the tests. The "configure" script that is delivered with the Schily makefile system runs 718 tests and 68 of them need to be run on the target system. The Schily autoconf system now supports a method to run these 68 tests natively on a target system. You either need a machine with remote login features or you need an emulator with a method to copy files into the emulated system and to run binaries on the emulated system as e.g. the Android emulator. We currently deliver three scripts for "remote" execution of programs on the target system: runrmt_ssh runs the commands remove via ssh runrmt_rsh runs the commands remove via rsh runrmt_android runs the commands remove via the debug bridge If you need to remotely run programs on a system that is not supported by one of there three scripts, you need to modify one of them to match your needs. To enable Cross Compilation use the following environment variables: CONFIG_RMTCALL= Set up to point to a script that does the remote execution, e.g.: CONFIG_RMTCALL=`pwd`/conf/runrmt_ssh CONFIG_RMTHOST= Set up to point to your remote host, e.g.: CONFIG_RMTHOST=hostname or CONFIG_RMTHOST=user@hostname use a dummy if you like to use something like to the Android emulator. CONFIG_RMTDEBUG= Set to something non-null in order to let the remote execution script mark remote commands. This will result in configure messages like: checking bits in minor device number... REMOTE 8 Note that smake includes automake features that automatically retrieve system ID information. For this reason, you need to overwrite related macros from the command line if you like to do a cross compilation. Related make macros: K_ARCH= # (sun4v) Kernel ARCH filled from uname -m / arch -k M_ARCH= # (sun4) Machine filled from arch P_ARCH= # (sparc) CPU ARCH filled from uname -p / mach OSNAME= # sunos, linux, .... OSREL= # 5.11 OSVERSION= # snv_130 CCOM= # generic compiler name (e.g. "gcc") CC_COM= # compiler to call (name + basic args) ARCH= overwrites M_ARCH and P_ARCH It is usually sufficient to set ARCH and OSNAME. In order to use a cross compiler environment instead of a native compiler, set the make macro CC_COM to something different than "cc". If you are on Linux and like to compile for Android, do the following: 1) set up CC acording to the instructions from the cross compiler tool chain 2) set environment variables CONFIG_RMTCALL / CONFIG_RMTHOST, e.g.: setenv CONFIG_RMTCALL `pwd`/conf/runrmt_android setenv CONFIG_RMTHOST NONE 3) call smake: smake ARCH=armv5 OSNAME=linux CCOM=gcc "CC_COM=$CC" - Several programs no longer test for HAVE_DEV_* but for HAVE__DEV_* as we did switch from hand written tests for /dev/tty, /dev/null and similar to AC_CHECK_FILES(/dev/tty /dev/null /dev/zero) - The Makefile system now links dynamic libraries on Mac OS X against libgcc_s.1 instead of libgcc. - The file COPYING has been reworded to be more obvious with explaining work limits. - A workaround for a bug in llvm-gcc-4.2 has been introduced in inc/avoffset.c. The llvm-gcc-4.2 bug caused an endless loop at an unexpected place. - New target "htmlxn" to only rebuild html versions of man pages only in case there was a change - The CSW packaging definitions in the schily makefilesystem was enhanced to permit referencing files in the package definition directory - include/schily/sigset.h added new macros: blocked_sigs(), block_sigs() - include/schily/fcntl.h now includes O_SEARCH for POSIX.1-2008 compliance. - Schily autoconf now tests for the size of mode_t, uid_t, gid_t, pid_t, dev_t, major_t, minor_t - Schily autoconf now defines a promoted type for mode_t that can be used together with varargs. This is needed as mode_t is smaller than int on some systems. - New autoconf tests for getdelim() and strncasecmp() - Added a workaround for a auto-dependency creation bug in the HP-UX c-compiler that resulted in wrong dependency files for all files in libshcily/stdio/ and for these files prevented an automated recompilation in case that an include file was changed. - Added links for: amd64-freebsd-cc.rul amd64-freebsd-gcc.rul amd64-openbsd-cc.rul amd64-openbsd-gcc.rul x86_64-darwin-cc.rul x86_64-darwin-gcc.rul x86_64-darwin-cc64.rul x86_64-darwin-gcc64.rul x86_64-darwin-cc32.rul x86_64-darwin-gcc32.rul - RULES/rules.loc now makes $(PTARGET) depend on $(ARCHDIR) to support make -j 2 - New include files include/schily/inttypes.h and include/schily/stdint.h - The script conf/makeinc is no longer confused by OpenBSD that has man.7 and mandoc.7 and both match on man* - conf/runrmt_android has been enhanced to better deal with the "runrmt -r file-to-test" calling variant. - configure now ignores a stramge directory that is created on Mac OS X when compiling with cc -g and that is in conflict with other rules. - Introduce a dependency for man page subdiretories to allow syncing parallel make calls. - Try to support Debian with FreeBSD kernel - Better support for Win32 sockets when using cl.exe - Avoid problems with the non-standard prototypes for link() unlink() read() and write() from cl.exe - Support for Pyro (a Syllable clone) was added.