Commit Graph

256 Commits

Author SHA1 Message Date
tg
8ca51f5ff3 retain Build.sh path for test.sh (e.g. if /bin/ed != /usr/xpg4/bin/ed – on
Solaris some tools are weird, I recommend to prefix /usr/xpg4/bin to $PATH
even for dot.mkshrc because /usr/bin/id sucks, /usr/xpg4/bin/id works…)
2007-04-30 19:18:37 +00:00
tg
8d1ede2697 do not “-fwhole-program --combine” since it at least breaks FORTIFY_SOURCE
on SuSE and causes http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=408850
so I'll assume it's a gcc bug

thanks to Pascal “loki” Bleser (yaloki), darix, Martin Zobel-Helas, Steve
Langasek (vorlon) for tracking this bug down in two different instances
2007-04-30 19:12:18 +00:00
tg
7a775ab0cf some wording and #if 0 cleanup 2007-04-24 10:44:58 +00:00
tg
1a0b51b697 • arc4random, arc4random_push: use our own protos to check
XXX u_int32_t is not ISO C99, but seems to work well enough
  XXX if it fails anywhere, we'll see in the build logs
  XXX apple doesn't have the standard uint32_t and API doesn't specify it
• sys_siglist_defn: rename to sys_siglist_decl as we're really checking
  for the declaration in the headers; change wording to “check if … does
  not need to be declared” since we don't need to declare if we don't use
• scan for arc4random, arc4random_push, confstr declarations too
• sh.h: confstr declaration is no longer #ifdef __sun__; sort
2007-04-24 10:42:02 +00:00
tg
2cf5695f69 • mention HP-UX, AIX success
• mention Darwin failure in R29c, fix in -current
• also clean up core dump file
• on HP-UX 11i v2, <stdint.h> requires <stdarg.h> because it pulls in
  a <wchar.h> generated from gcc's fixincludes… dunno, but it works…
• HP-UX 11i v2 on ia64 only works with -mlp64; the default seems to be
  -milp32 which generates SIGBUS due to misalignment (due to optimisation?)

-> in theory, HP-UX works on both PA-RISC and IA64 in R29c
-> R29c doesn't contain support for AIX or Mac OSX though…
2007-04-23 22:33:20 +00:00
tg
c3d8ca7f82 fix multi-rcsid test broken in 100462D18E37B6B8D16 2007-04-23 21:36:02 +00:00
tg
eb6e4d4bbb fix case matching 2007-04-23 21:31:58 +00:00
tg
03488df380 clean up used files better 2007-04-23 21:15:44 +00:00
tg
c4826b28b8 possibly fix the last issue on AIX: NSIG is (63 +1) 2007-04-23 20:57:50 +00:00
tg
615a7794a6 AIX has sys_siglist[] but doesn't define it anywhere, so add a means to
scan for defns and use it here; bug reported by Kurt Telep
2007-04-23 20:37:16 +00:00
tg
24f650213a according to Kurt Telep, AIX _does_ require -lcrypt, and, when using
it, apps are expected to export certain symbols; thanks for the help
2007-04-23 20:17:58 +00:00
tg
d38897a75d when we're starting to talk sensible default values, begin here:
if $LIBS is empty (i.e. not " " or so), use "-lcrypt" on Interix

AIX seems to require some too…
2007-04-23 14:06:47 +00:00
tg
ec4dea6cfa $ uname -a; (gcc -v) 2>&1 | tail -1; echo $KSH_VERSION
HP-UX td192 B.11.11 U 9000/800 1839940656 unlimited-user license
gcc version 3.4.2
@(#)MIRBSD KSH R29 2007/04/17

it apparently works, but there's no POSIX.pm, and the backspace
key acts as abort key (probably all things that can be fixed)
2007-04-23 12:13:03 +00:00
tg
4c9511e7a4 • strlcpy.c: remove superfluous rcs ids in comments
• Build.sh: NetBSD® gives an ignorable link-time warning in mirtoconf
• Build.sh: GNU (HURD) and GNU/kFreeBSD are no longer experimental, I think
2007-04-23 11:33:26 +00:00
tg
67addd064f support crazy ones that still haven't gotten rid of zsh 2007-04-01 01:48:31 +00:00
tg
e867a4c669 mirtoconf for large file support vars, requested by bsiegert@ 2007-03-19 22:58:19 +00:00
tg
b08848c7ff • improve description why we use -fno-tree-vrp; this is thanks
to http://blog.fefe.de/?ts=bb2654d4 by the way
• simplify a.out / a.exe distinguishation
2007-03-10 19:19:12 +00:00
tg
219bc99362 check for -fno-tree-vrp (existence and if it is required to würg around a gcc 4.1.1 bug) 2007-03-10 18:51:59 +00:00
tg
95eaf0c9bb try to add -fstack-protector-all – it's in gcc 4.1+, so why not… 2007-03-10 17:29:53 +00:00
tg
e0e432347b Minix 3 has no S_ISSOCK (probably not even UNIX® domain sockets)
and lacks other things (rlimit stuff), so it won't make it today
2007-03-04 05:14:10 +00:00
tg
95632ee53b better tr, better descr 2007-03-04 05:03:57 +00:00
tg
2e11e89d8b • _NSIG seems to be more standard than NSIG (non-POSIX)
• allow off-by-one (sigmax eq NSIG not NSIG-1)
2007-03-04 04:53:06 +00:00
tg
67ff737230 some tr(1) are more weird than others 2007-03-04 04:52:28 +00:00
tg
2cbd686fc4 cppflags for Minix 3 2007-03-04 04:45:36 +00:00
tg
0a20bb8dd4 • Minix 3 doesn't have <sys/mman.h>
• Some OSes might need <stdint.h> for int32_t (Minix 3 with GCC)
2007-03-04 04:36:45 +00:00
tg
0f291e9ff5 Support old versions of ash 2007-03-04 04:28:58 +00:00
tg
3844d3629e fix a warning 2007-03-04 03:48:50 +00:00
tg
83c2ee87f4 • remove strcasestr.c, use home-grown implementation¹, call it stricmp,
and have it return an API-correct const char *
• enhance and stylify comments
• a little KNF and simplifications
• #ifdef DEBUG: replace strchr and strstr with ucstrchr and ucstrstr
  that take and return a non-const char *, and fix the violations
• new cstrchr, cstrstr (take and give const char *)
• new vstrchr, vstrstr (take const or not, give boolean value)
• new afreechk(x) = afreechv(x,x) = if (x1) afree(x2, ATEMP)
• new ksh_isdash(str) = (str != NULL) && !strcmp(str, "-")
• replace the only use of strrchr with inlined code to shrink
• minor man page fixes
• Minix 3 signames are autogenerated with gcc
• rename strlfun.c to strlcpy.c since we don't do strlcat(3) anyway,
  only strlcpy(3), and shorten it
• dot.mkshrc: move MKSH=… down to the export line
  to not disturb the PS1 visual impression ☺
• dot.mkshrc: Lstripcom(): optimise
• bump version

¹) side effect from creating API-correct cstrchr, cstrstr, etc.
   uses goto so it must be better ☻

tested on mirbsd-current via both Makefile and Build.sh
2007-03-04 03:04:28 +00:00
tg
e31b852abc mirtoconf the checks if to use persistent history support 2007-03-03 21:36:08 +00:00
tg
6485b06eed * From the Solaris tr(1) manual page:
o  Each input character found in the array  specified  by
           string1 is replaced by the character in the same rela-
           tive position in the array specified by string2.  When
           the array specified by string2 is shorter that the one
           specified by string1, the results are unspecified.
  So give tr <everythingbutalphanum> _ the appropriate number of underscores.
* Also strip dashes from header names.
2007-02-27 00:31:17 +00:00
tg
e9d1b0fb7b /usr/ucb/tr chokes to freeze state on tr -d -c 2007-02-27 00:23:20 +00:00
tg
e0e4c992fc • embed MKSH_ASSUME_UTF8 and MKSH_NEED_MKNOD in Build.sh
• have mksh with BSD makefiles always enable MKSH_ASSUME_UTF8
• sync BSD makefiles with Build.sh output
2007-02-18 16:24:13 +00:00
tg
ebaf8ed5b5 add CPPFLAGS for The HURD 2007-02-13 12:26:46 +00:00
tg
83b2f7d316 * _POSIX_C_SOURCE=2 is redundant and _BSD_SOURCE makes ancient BSD have
precedence over POSIX/SUSv3 stuff and requires libbsd-compat which is
  something we don't desire; _GNU_SOURCE even in Linux libc5 always has
  included _POSIX_C_SOURCE=2 and BSD functions since at least Feb 1995.
* sync GNU/kFreeBSD with GNU/Linux, it uses glibc2

First mentioned and second response on inquiry by Bastian "waldi" Blank
Thanks!
2007-02-02 10:27:21 +00:00
tg
890da93291 * GNU/kFreeBSD: seems to work, except for missing defns of
strcasestr, setres[ug]id - probably needs same cflags as linux
* Linux: default HAVE_REVOKE to 0 since it's unimplemented anyway
2007-01-28 20:05:29 +00:00
tg
d62686fdf8 don't scan for revoke() if mksh_small since use_chvt isn't used then 2007-01-26 18:25:01 +00:00
tg
dec386d3f5 fix test for flock() on Debian 4.0 2007-01-18 20:40:39 +00:00
tg
9a442d732e oops, persistent history also depends on MKSH_FULL 2007-01-18 16:06:22 +00:00
tg
6d157ffe47 autoscan for persistent history support 2007-01-18 16:05:05 +00:00
tg
7b903e4aa9 header overhaul: replace all #ifdef __OS__ with mirtoconf checks
(except the persistent history one)
2007-01-18 15:50:32 +00:00
tg
44af708ac8 remove a line which shows the other possible values of $s
separate commit for educational & hysteric purposes
2007-01-18 03:31:50 +00:00
tg
1ea10f62cd more ldstatic fuckup, late night reverse logic errors 2007-01-18 03:31:24 +00:00
tg
ef81fd0b75 simplify this LDSTATIC shit and fix -nd in the process *sigh*
found on ecce!GNU/Linux 1.0, all tests pass, mksh-current
is exactly half the size of bash 2.01.1(1)r, both dynamic
2007-01-18 02:54:19 +00:00
tg
21bceac32e autoscan for the correct ed(1) type
XXX amend check_categories with stuff like persist history, etc.
2007-01-18 01:10:55 +00:00
tg
9e0001d315 pasto, and add more comments 2007-01-18 00:16:26 +00:00
tg
65a86d2f67 bring back sig_t as void pointer in the rare case we
don't have sighandler_t or __sighandler_t either
2007-01-18 00:10:16 +00:00
tg
ecc6beb7d5 scan for sig_t (and friends) 2007-01-17 23:54:39 +00:00
tg
2099f1765d prevent confusion 2007-01-17 23:50:26 +00:00
tg
bca0f4d603 * Build.sh, histrap.c: prevent testing of strsignal() if we have sys_siglist[]
* mksh.1: .Nm is never used with "" as argument, fixes GNU groff 1.15
2007-01-17 23:47:15 +00:00
tg
65a2806e81 scan for revoke() 2007-01-17 23:27:47 +00:00
tg
af606537e2 if we don't have rlim_t, assume it's long 2007-01-17 23:18:55 +00:00
tg
c3de1d7564 <sys/sysmacros.h> contains major/minor/makedev on Linux 2.0 2007-01-17 23:04:19 +00:00
tg
4c82f74d2b new option -nd to force static linking of mksh but not mirtoconf tests 2007-01-17 22:59:25 +00:00
tg
da2f916010 remove -x (cross-build) option, use -d instead, it does the same
side effect: TARGET_OS is now honoured without -x too
2007-01-17 22:55:47 +00:00
tg
ddd2dac47d * support old environments without libgen.h (ancient GNU/Linux)
and stdbool.h (ancient GNU/Linux; NetBSD® 1.6.1)
* __dead must come after, not before, to accomodate gcc 2.7.2.3
2007-01-17 22:51:47 +00:00
tg
8fea7398d3 we need "$CC -E -" as cpp, not "$CC -E"
found on
Linux ecce 2.0.38 #1 Wed Jul 26 22:05:46 2000 i686 unknown
Reading specs from /usr/lib/gcc-lib/i386-linux/2.7.2.3/specs
gcc version 2.7.2.3

Note: during the entire compile, there are warnings like
| gcc: unrecognized option `-std=gnu99'
but these won't trigger -Werror since they are in the driver,
not in the front-end, so they are harmless, I guess. (I don't
know of a way to make them vanish, either.)
2007-01-17 22:35:09 +00:00
tg
ceb5a7dba0 check if __RCSID() can be used multiple times; req'd eg. on Mac 2007-01-17 21:42:23 +00:00
tg
42783fdfd9 only call nroff to see if it's gnroff if -r is not given 2007-01-17 17:57:31 +00:00
tg
f077c0ab5a list all "known good" OSes in the $TARGET_OS switch,
echo a warning (but continue) for unknown OSes, with
the desire the porter should send in diffs
2007-01-17 17:46:18 +00:00
tg
8620379fcc * add #ifdef MKSH_NOPWNAM to prevent pulling in getpwnam()
* document possible "functionality omission defines" in Build.sh
* sort and sectionise mirtoconf checks; add big comments
2007-01-17 17:42:22 +00:00
tg
c231ab8cc4 * order tests: we want to use correct NOWARN as much as possible
* "$e" and "echo" fixes for if the stuff begins with a -, and
  quoting cleanup (where feasible, feel free to send diffs)
* cosmetics

I hereby name this baby "Mirtoconf".
2007-01-17 17:31:59 +00:00
tg
f946d405f8 if both "$CPP" (from parent) and "$CC -E" fail, try "cpp" (from $PATH) and
"/usr/libexec/cpp" and "/lib/cpp" last
2007-01-17 17:14:25 +00:00
tg
8211416e5a make a loop (removes dup code) 2007-01-17 17:12:43 +00:00
tg
478374ba3b autoscan for c præprocessor now prefers $CPP to "$CC -E" 2007-01-17 17:08:34 +00:00
tg
da03ad5be2 autoconf for -O2 (if CFLAGS is _empty_), -Wall, -fwrapv, -fno-strict-aliasing
XXX untested
2007-01-17 17:03:59 +00:00
tg
d4b4ca5e92 simplify 2007-01-17 16:57:41 +00:00
tg
e19a99efaf more creative use of ac_flags() 2007-01-17 16:52:00 +00:00
tg
f6dbde5115 thinko 2007-01-17 16:44:19 +00:00
tg
bcb0852dcc new shell function for autoconfing compiler flags, reduces redundancy 2007-01-17 16:39:55 +00:00
tg
69584be3bb add two TODOs 2007-01-17 01:59:38 +00:00
tg
263f518dfd * Build.sh: add -fwrapv to standard CFLAGS, just to be on the safe
side (I don't have capacities to scan 71711 files in MirOS for a
  standards-compliance whack)
* copyright: mention CVS changelogs as place of contributors' name
  and credit information, too
* check.t, sh.h: bump
2007-01-17 01:24:29 +00:00
tg
a00fbd3eb7 autoconf for -std=gnu99 (not c99 because of brokenness in the field)
from ankon -> solaris 10 with gcc 3.4.6 from sunfreeware
2007-01-14 21:38:25 +00:00
tg
03e8f0ec83 CPP is honoured now as well (but only needed for the siglist) 2007-01-12 03:30:40 +00:00
tg
9c888e103a oops… really unbreak -d 2007-01-12 03:20:07 +00:00
tg
22538dcf0d unbreak -d 2007-01-12 03:17:08 +00:00
tg
e9d944e825 user should be able to override if he wants setlocale calls in his
extra small mksh…
2007-01-12 02:46:27 +00:00
tg
ca7a9c3eb0 ] scn.c:1: warning: ISO C forbids an empty source file
yeaaah, we #error out anyway, but…
2007-01-12 02:40:18 +00:00
tg
e768017c58 gcc 4.1.2 pedantic warning free configure 2007-01-12 02:37:32 +00:00
tg
2c46d96042 * instead of setting LDSTATIC='' for OSes which did not support it
until now, set it to '@'
* if LDSTATIC is '@' make it '-static' if MKSH_SMALL, '' otherwise

Yep, this might break, e.g. Darwin or Cygwin. But let's test that.
2007-01-12 02:34:46 +00:00
tg
21e2397c1b disallow the user to specify (overload) SRCS, if there is special
target platform specific crap, it belongs into LIBS instead
2007-01-12 02:27:40 +00:00
tg
6e5437f86b interesting way to break things… oeps ☺ 2007-01-12 02:12:16 +00:00
tg
552aebd24f more verbose 2007-01-12 02:09:10 +00:00
tg
80393db1b6 fix configuration on solaris 8 with whitespaces in both curdir and
srcdir, mostly due to 'eval' issues and a picky /bin/sh (yeaaah…)
2007-01-12 02:01:48 +00:00
tg
5891915f1b * Scan for __attribute__((...)) in general (the earliest was 2.5,
where we had 'noreturn' etc. but no '__noreturn__')
* Scan for __attribute__((bounded)) and __attribute__((used))
  if we have __attribute__((noreturn))
* To be able to scan if certain attributes give warnings,
  scan for -Werror with a simple programme which hopefully triggers none
* Convert __attribute__((unused)) to __unused, noreturn -> __dead
* Unify other attributes
* Clean up typography a little more
2007-01-12 01:49:29 +00:00
tg
70eb6d19c2 solaris /bin/sh:
| v() { ... }
| v=1
undefines v()
2007-01-12 01:44:32 +00:00
tg
636ef70a24 underline actual autoconf results (test names are in bold)
FWIW, works ATM, even with spaces in directory name
2007-01-12 01:32:27 +00:00
tg
6fb4af0a9d * typo
* include path
2007-01-12 01:27:28 +00:00
tg
5309e33974 implement colouring of "autoconf" output. yay!
NB: only if stdout isatty
2007-01-12 01:17:10 +00:00
tg
2f15a11c55 Clean up the signal mess, saves 172 Bytes:
* 'sigseen' in Build.sh goes away
* Signal name existence is checked in this order:
  have our own¹ -> sys_signame[] -> _sys_signame[] -> build our own²
* Signal description existence is checked in this order:
  sys_siglist[] -> _sys_siglist[] -> strsignal() -> NULL³
¹ Predefined list of items, for operating systems where we
  cannot build² them, i.e. Plan 9 and Minix 3 (e.g. no $CPP -dD)
² The usual cpp(1) stuff
³ Changed later, see below
* Make $CPP test dependent on $NEED_MKSH_SIGNAME (others can
  be added here, this is not absolute)
* Make signal name list generation² dependent on $NEED_MKSH_SIGNAME
* Fix check if the generation worked
* Guarantee that sigtraps[*].name and sigtraps[*].mess are valid
  C strings; this makes the code shorter *and* removes a few pos-
  sible nil pointer dereferences
* Embed autoconf'd usages of sys_sig* / strsignal / mksh_sigpairs
  into inittraps()
* Check for each signal 0<=i<=NSIG that
  name is not NULL or "" -> replace with ("%d", i)
  mess is not NULL or "" -> replace with ("Signal %d", i)
  name does not start (case-insensitive) with "SIG" -> name += 3
* In gettrap(), fix check if signal name starts, case-sensitive
  or case-insensitive, depending on need, with "SIG" (bug from millert@)

Other changes:
* Build.sh: ac_test[n]() are documented
* Build.sh: ac_test[n]() can have negative prereqs as well now
* Build.sh: use <<-'EOF' consistently
* bump patchlevel to today
2007-01-12 00:25:40 +00:00
tg
3b63b986c3 * pasto (patcho?)
* improve output readability

I wonder if I should use ANSI escapes to make the results
from the configuration bold… but then, this'd look worse
in e.g. mc or less. Suggestions?
2007-01-11 03:03:34 +00:00
tg
3b6b37c671 make use of the new $CPP variable (and enable the cpp check if needed)
@Benny:	this is why I don't use GNU autoconf: writing configure.in
	files is, supposedly, easy - but nobody teaches you which
	changes you have to apply to your source files. Here I know.
2007-01-11 02:41:53 +00:00
tg
4d2624fd1d add test how to run the C preprocessor and fix the $NOWARN check and docs 2007-01-11 02:37:40 +00:00
tg
546e97621a small mkshs also shouldn't pull in the entire locale package,
so don't even call setlocale, lest alone nl_langinfo (already
disabled before)
2007-01-11 02:11:46 +00:00
tg
e269c4ed29 if building a small mksh, don't check for persistent history,
since it's not supported anyway; makes regression tests pass there
2007-01-11 02:08:50 +00:00
tg
f3168d3e9d introduce TARGET_OS, for crossbuilds, contains uname -s output 2007-01-11 00:57:56 +00:00
tg
8bfc693178 this double-backtick in double-backtick (SunOS /bin/sh) stuff
looked waay too weird to me, use a temporary variable instead
and make the two occurencies of the code look more alike
2007-01-11 00:47:40 +00:00
tg
8dc1a064fa use the same matching for NSIG as for the others - cut off
everything which doesn't look like a dec/hex/oct number
2007-01-11 00:44:08 +00:00
tg
c822cbedd8 oops, match hex numbers; seen while looking at ankon's (FreeBSD) problem 2007-01-11 00:38:37 +00:00
tg
a080fc385d add a TODO here 2006-12-11 19:58:37 +00:00
tg
2122e253e7 fix bitching of: gcc version 3.3.5 (Debian 1:3.3.5-13) 2006-11-21 21:45:24 +00:00