~mirabilos/mksh/MAIN

« back to all changes in this revision

Viewing changes to Build.sh

  • Committer: tg
  • Date: 2024-02-02 04:58:40 UTC
  • Revision ID: tg-20240202045840-x1lgbx04ks4bglbi
more portability work thanks to RT

• retire MKSH_TYPEDEF_SSIZE_T, define SSIZE_MIN/SSIZE_MAX/ssize_t via
  cpp and early, so mbsdint.h et al. can use it as well
  ‣ this is probably still needing work (e.g. could autodetect-ish it),
    maybe when mirtoconf’ing the mbsdint testsuthe
• try to detect SCDE (Standard C Development Environment) as compiler
  on SINIX and SVR4
• default CC to 'cc -Xa' on SINIX and (for now) SVR4
• Dell UNIX (SVR4) has no ssize_t, either
• GCC/Dell UNIX needs -U__STDC__ -D__STDC__=0 to find NSIG
• drop remnant of older NSIG hack
• refresh MirBSD Makefiles

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/bin/sh
2
 
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.853 2023/12/13 15:01:55 tg Exp $'
 
2
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.854 2024/02/02 04:58:40 tg Exp $'
3
3
set +evx
4
4
#-
5
5
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
6
6
#               2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019,
7
 
#               2020, 2021, 2022, 2023
 
7
#               2020, 2021, 2022, 2023, 2024
8
8
#       mirabilos <m@mirbsd.org>
9
9
#
10
10
# Provided that these terms and disclaimer and all copyright notices
841
841
        ;;
842
842
esac
843
843
 
 
844
# SVR4 (some) workaround
 
845
int_as_ssizet() {
 
846
        cpp_define SSIZE_MIN INT_MIN
 
847
        cpp_define SSIZE_MAX INT_MAX
 
848
        cpp_define ssize_t int
 
849
}
 
850
 
844
851
cmplrflgs=
845
852
 
846
853
# Configuration depending on OS name
1173
1180
        cmplrflgs=-DMKSH_MAYBE_QUICK_C
1174
1181
        cpp_define MKSH__NO_SETEUGID 1
1175
1182
        : "${HAVE_SETRESUGID=0}"
1176
 
        cpp_define MKSH_TYPEDEF_SSIZE_T int
 
1183
        int_as_ssizet
1177
1184
        cpp_define MKSH_UNEMPLOYED 1
1178
1185
        : "${HAVE_POSIX_UTF8_LOCALE=0}${HAVE_TERMIOS_H=0}"
1179
1186
        ;;
1199
1206
        cpp_define MKSH_UNEMPLOYED 1
1200
1207
        cpp_define MKSH_DISABLE_TTY_WARNING 1
1201
1208
        ;;
 
1209
SINIX-Z)
 
1210
        : "${CC=cc -Xa}"
 
1211
        cmplrflgs=-DMKSH_MAYBE_SCDE
 
1212
        ;;
1202
1213
skyos)
1203
1214
        oswarn="; it has minor issues"
1204
1215
        ;;
1213
1224
        ;;
1214
1225
ULTRIX)
1215
1226
        : "${CC=cc -YPOSIX}"
1216
 
        cpp_define MKSH_TYPEDEF_SSIZE_T int
 
1227
        int_as_ssizet
1217
1228
        : "${HAVE_POSIX_UTF8_LOCALE=0}"
1218
1229
        ;;
1219
1230
UnixWare|UNIX_SV)
1238
1249
        cpp_define _setjmp setjmp
1239
1250
        cpp_define _longjmp longjmp
1240
1251
        cpp_define USE_REALLOC_MALLOC 0
1241
 
        cpp_define MKSH_TYPEDEF_SSIZE_T int
 
1252
        int_as_ssizet
1242
1253
        # per http://www.polarhome.com/service/man/?qf=signal&of=Xenix
1243
1254
        cpp_define MKSH_USABLE_SIGNALFUNC signal
1244
1255
        cpp_define MKSH_UNEMPLOYED 1
1251
1262
        ;;
1252
1263
_svr4)
1253
1264
        # generic target for SVR4 Unix with uname -s = uname -n
1254
 
        # this duplicates the * target below
1255
1265
        oswarn='; it may or may not work'
 
1266
        : "${CC=cc -Xa}"
 
1267
        cmplrflgs=-DMKSH_MAYBE_SCDE
 
1268
        int_as_ssizet #XXX maybe not for *all* _svr4? here for Dell UNIX
1256
1269
        ;;
1257
1270
*)
1258
1271
        oswarn='; it may or may not work'
1393
1406
#elif defined(MKSH_MAYBE_KENCC)
1394
1407
/* and none of the above matches */
1395
1408
ct="kencc"
 
1409
#elif defined(MKSH_MAYBE_SCDE)
 
1410
ct="tryscde"
1396
1411
#else
1397
1412
ct="unknown"
1398
1413
#endif
1419
1434
int main(void) { return (isatty(0)); }
1420
1435
EOF
1421
1436
test_z "$Cg" || Cg=-g  # generic
 
1437
case $ct:$TARGET_OS in
 
1438
tryscde:*)
 
1439
        case `LC_ALL=C; export LC_ALL; $CC -V 2>&1` in
 
1440
        *'Standard C Development Environment'*)
 
1441
                ct=scde ;;
 
1442
        *)
 
1443
                ct=unknown ;;
 
1444
        esac
 
1445
        ;;
 
1446
gcc:_svr4)
 
1447
        # weirdly needed to find NSIG
 
1448
        case $CC$CPPFLAGS in
 
1449
        *STDC*) ;;
 
1450
        *) CC="$CC -U__STDC__ -D__STDC__=0" ;;
 
1451
        esac
 
1452
        ;;
 
1453
esac
1422
1454
case $ct in
1423
1455
ack)
1424
1456
        # work around "the famous ACK const bug"
1552
1584
        # no version information
1553
1585
        : "${HAVE_ATTRIBUTE_EXTENSION=0}"  # skip checking as we know it absent
1554
1586
        ;;
 
1587
scde)
 
1588
        vv '|' "$CC $CFLAGS $Cg $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
 
1589
        : "${HAVE_ATTRIBUTE_EXTENSION=0}"  # skip checking as we know it absent
 
1590
        ;;
1555
1591
sdcc)
1556
1592
        echo >&2 'Warning: sdcc (http://sdcc.sourceforge.net), the small devices
1557
1593
    C compiler for embedded systems detected. This has not yet
1715
1751
        ;;
1716
1752
quickc)
1717
1753
        ;;
 
1754
scde)
 
1755
        ;;
1718
1756
sunpro)
1719
1757
        test x"$save_NOWARN" = x"" && save_NOWARN='-errwarn=%none'
1720
1758
        ac_flags 0 errwarnnone "$save_NOWARN"
1767
1805
        ac_flags 1 otwo +O2
1768
1806
        phase=x
1769
1807
        ;;
1770
 
kencc|quickc|tcc|tendra)
 
1808
kencc|quickc|scde|tcc|tendra)
1771
1809
        # no special optimisation
1772
1810
        ;;
1773
1811
sunpro)
2845
2883
#define cfg_NSIG (SIGMAX + 1)
2846
2884
#elif defined(_SIGMAX)
2847
2885
#define cfg_NSIG (_SIGMAX + 1)
2848
 
#else
2849
 
/*XXX better error out, see sh.h */
2850
 
#define cfg_NSIG 64
2851
2886
#endif
2852
2887
int
2853
2888
mksh_cfg= cfg_NSIG
3395
3430
MKSH_SMALL_BUT_FAST             disable some hard-for-size optim. (modern sys.)
3396
3431
MKSH_S_NOVI=1                   disable Vi editing mode (default if MKSH_SMALL)
3397
3432
MKSH_TYPEDEF_SIG_ATOMIC_T       define to e.g. 'int' if sig_atomic_t is missing
3398
 
MKSH_TYPEDEF_SSIZE_T            define to e.g. 'long' if your OS has no ssize_t
3399
3433
MKSH_UNEMPLOYED                 disable job control (but not jobs/co-processes)
3400
3434
USE_REALLOC_MALLOC              define as 0 to not use realloc as malloc
3401
3435