2003-04-13 19:50:35 +00:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# tcc configure script (c) 2003 Fabrice Bellard
|
2010-06-15 15:02:35 +00:00
|
|
|
|
2003-04-13 19:50:35 +00:00
|
|
|
# set temporary file name
|
2013-02-14 05:53:07 +00:00
|
|
|
# if test ! -z "$TMPDIR" ; then
|
|
|
|
# TMPDIR1="${TMPDIR}"
|
|
|
|
# elif test ! -z "$TEMPDIR" ; then
|
|
|
|
# TMPDIR1="${TEMPDIR}"
|
|
|
|
# else
|
|
|
|
# TMPDIR1="/tmp"
|
|
|
|
# fi
|
|
|
|
#
|
2010-06-23 12:10:22 +00:00
|
|
|
# bashism: TMPN="${TMPDIR1}/tcc-conf-${RANDOM}-$$-${RANDOM}.c"
|
2010-06-15 15:02:35 +00:00
|
|
|
|
2013-02-14 05:53:07 +00:00
|
|
|
TMPN="./conftest-$$"
|
2010-06-15 15:02:35 +00:00
|
|
|
TMPH=$TMPN.h
|
2003-04-13 19:50:35 +00:00
|
|
|
|
|
|
|
# default parameters
|
2004-10-07 21:11:43 +00:00
|
|
|
prefix=""
|
2003-04-13 19:50:35 +00:00
|
|
|
execprefix=""
|
|
|
|
bindir=""
|
|
|
|
libdir=""
|
2005-04-14 23:51:24 +00:00
|
|
|
tccdir=""
|
2003-04-13 19:50:35 +00:00
|
|
|
includedir=""
|
|
|
|
mandir=""
|
2010-09-10 19:19:01 +00:00
|
|
|
infodir=""
|
2008-09-05 19:08:22 +00:00
|
|
|
sysroot=""
|
2003-04-13 19:50:35 +00:00
|
|
|
cross_prefix=""
|
2022-05-17 20:28:32 +00:00
|
|
|
cc="gcc"
|
2003-04-13 19:50:35 +00:00
|
|
|
ar="ar"
|
2013-02-14 05:53:07 +00:00
|
|
|
bigendian="no"
|
|
|
|
mingw32="no"
|
|
|
|
LIBSUF=".a"
|
|
|
|
EXESUF=""
|
2016-12-15 16:04:07 +00:00
|
|
|
DLLSUF=".so"
|
2020-05-22 03:27:30 +00:00
|
|
|
tcc_usrinclude=""
|
2011-08-06 14:11:12 +00:00
|
|
|
tcc_sysincludepaths=""
|
|
|
|
tcc_libpaths=""
|
|
|
|
tcc_crtprefix=""
|
|
|
|
tcc_elfinterp=""
|
2016-10-17 21:22:21 +00:00
|
|
|
triplet=
|
2013-02-14 05:53:07 +00:00
|
|
|
tcc_lddir=
|
2021-01-14 06:10:41 +00:00
|
|
|
confvars=
|
2017-05-13 06:59:06 +00:00
|
|
|
suggest="yes"
|
|
|
|
gcc_major=0
|
|
|
|
gcc_minor=0
|
2022-05-17 20:28:32 +00:00
|
|
|
cc_name="gcc"
|
2020-06-27 15:22:04 +00:00
|
|
|
ar_set=
|
2023-09-06 20:21:15 +00:00
|
|
|
cpu=
|
2021-01-24 15:20:48 +00:00
|
|
|
cpuver=
|
Add dwarf support
The new gcc12 release does not support stabs any more.
This was a good reason to add support for dwarf.
The stabs code still works and is used if configure option --dwarf
is not used.
Tested on x86_64, i386, arm, arm64, riscv64 with dwarf-5.
Some debuggers may not support dwarf-5. Try using older dwarf versions
i that case.
The tccmacho.c code probably need some support for dwarf.
arm-gen.c, arm64-gen.c, i386-gen.c, riscv64-gen.c, x86_64-gen.
- fix get_sym_ref symbol size
arm-link.c, arm64-link.c, i386-link.c, riscv64-link.c, x86_64-link.c
- add R_DATA_32U
libtcc.c:
- parse -gdwarf option
tcc.c:
- add dwarf option
tcc.h:
- add dwarf option and sections
tccelf.c:
- init dwarf sections
- avoid adding sh_addr for dwarf sections
- remove dwarf relocs for output dll
- add dwarf sections for tccrun
tccgen.c:
- add dwarf defines + global data
- add dwarf_* functions
- mix dwarf code with stabs code
- a trick is used to emit function name in .debug_line section so
only this section has to be parsed instead of .debug_info and
.debug_abbrev.
- fix init debug_modes
tccrun.c:
- add dwarf sections in rt_context
- init them in tcc_run
- add new dwarf code rt_printline_dwarf to find file/function
dwarf.h:
- New file
tcc-doc.texi:
- document dwarf
configure:
- add dwarf option
lib/Makefile
- change -gstabs into -gdwarf
lib/bt-exe.c, tests/tests2/Makefile, tests/tests2/126_bound_global:
- Add __bound_init call
- Add new testcase to test it
2022-05-05 07:10:37 +00:00
|
|
|
dwarf=
|
2023-09-06 20:21:15 +00:00
|
|
|
targetos=
|
|
|
|
build_cross=
|
2021-01-24 15:20:48 +00:00
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
# use CC/AR from environment when set
|
2022-05-17 20:28:32 +00:00
|
|
|
test -n "$CC" && cc="$CC"
|
2023-09-06 20:21:15 +00:00
|
|
|
test -n "$AR" && ar="$AR"
|
2024-09-27 18:26:21 +00:00
|
|
|
|
|
|
|
# set default CFLAGS if unset in environment
|
|
|
|
test -z "$CFLAGS" && CFLAGS="-Wall -O2"
|
2013-02-14 05:53:07 +00:00
|
|
|
|
|
|
|
# find source path
|
|
|
|
source_path=${0%configure}
|
|
|
|
source_path=${source_path%/}
|
2011-08-06 14:11:12 +00:00
|
|
|
|
2003-04-13 19:50:35 +00:00
|
|
|
for opt do
|
2013-02-14 05:53:07 +00:00
|
|
|
eval opt=\"$opt\"
|
2003-04-13 19:50:35 +00:00
|
|
|
case "$opt" in
|
2021-10-10 00:07:35 +00:00
|
|
|
--prefix=*) prefix=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--exec-prefix=*) execprefix=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--tccdir=*) tccdir=`echo $opt | cut -d '=' -f 2-`
|
2010-11-28 23:54:27 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--bindir=*) bindir=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--libdir=*) libdir=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--includedir=*) includedir=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--sharedir=*) sharedir=`echo $opt | cut -d '=' -f 2-`
|
2010-12-22 12:42:39 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--mandir=*) mandir=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--infodir=*) infodir=`echo $opt | cut -d '=' -f 2-`
|
2010-09-10 19:19:01 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--docdir=*) docdir=`echo $opt | cut -d '=' -f 2-`
|
2010-12-22 12:42:39 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--sysroot=*) sysroot=`echo $opt | cut -d '=' -f 2-`
|
2008-09-05 19:08:22 +00:00
|
|
|
;;
|
2023-09-06 20:21:15 +00:00
|
|
|
--targetos=*) targetos=`echo $opt | cut -d '=' -f 2-`
|
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--source-path=*) source_path=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--cc=*) cc=`echo $opt | cut -d '=' -f 2-`
|
2011-08-06 14:11:12 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--ar=*) ar=`echo $opt | cut -d '=' -f 2-` ; ar_set="yes"
|
2011-08-06 14:11:12 +00:00
|
|
|
;;
|
2016-10-01 19:06:33 +00:00
|
|
|
--extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
|
2011-08-06 14:11:12 +00:00
|
|
|
;;
|
2016-10-01 19:06:33 +00:00
|
|
|
--extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
|
2011-08-06 14:11:12 +00:00
|
|
|
;;
|
2016-10-01 19:06:33 +00:00
|
|
|
--extra-libs=*) extralibs="${opt#--extra-libs=}"
|
2016-05-20 12:27:22 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--sysincludepaths=*) tcc_sysincludepaths=`echo $opt | cut -d '=' -f 2-`
|
2014-04-12 08:20:12 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--libpaths=*) tcc_libpaths=`echo $opt | cut -d '=' -f 2-`
|
2014-04-12 08:20:12 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--crtprefix=*) tcc_crtprefix=`echo $opt | cut -d '=' -f 2-`
|
2014-04-12 08:20:12 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--elfinterp=*) tcc_elfinterp=`echo $opt | cut -d '=' -f 2-`
|
2014-04-12 08:20:12 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--triplet=*) triplet=`echo $opt | cut -d '=' -f 2-`
|
2016-10-17 21:22:21 +00:00
|
|
|
;;
|
2021-10-10 00:07:35 +00:00
|
|
|
--cpu=*) cpu=`echo $opt | cut -d '=' -f 2-`
|
2003-04-13 19:50:35 +00:00
|
|
|
;;
|
2024-11-21 11:03:32 +00:00
|
|
|
--dwarf=*) confvars="$confvars dwarf=${opt#*=}"
|
Add dwarf support
The new gcc12 release does not support stabs any more.
This was a good reason to add support for dwarf.
The stabs code still works and is used if configure option --dwarf
is not used.
Tested on x86_64, i386, arm, arm64, riscv64 with dwarf-5.
Some debuggers may not support dwarf-5. Try using older dwarf versions
i that case.
The tccmacho.c code probably need some support for dwarf.
arm-gen.c, arm64-gen.c, i386-gen.c, riscv64-gen.c, x86_64-gen.
- fix get_sym_ref symbol size
arm-link.c, arm64-link.c, i386-link.c, riscv64-link.c, x86_64-link.c
- add R_DATA_32U
libtcc.c:
- parse -gdwarf option
tcc.c:
- add dwarf option
tcc.h:
- add dwarf option and sections
tccelf.c:
- init dwarf sections
- avoid adding sh_addr for dwarf sections
- remove dwarf relocs for output dll
- add dwarf sections for tccrun
tccgen.c:
- add dwarf defines + global data
- add dwarf_* functions
- mix dwarf code with stabs code
- a trick is used to emit function name in .debug_line section so
only this section has to be parsed instead of .debug_info and
.debug_abbrev.
- fix init debug_modes
tccrun.c:
- add dwarf sections in rt_context
- init them in tcc_run
- add new dwarf code rt_printline_dwarf to find file/function
dwarf.h:
- New file
tcc-doc.texi:
- document dwarf
configure:
- add dwarf option
lib/Makefile
- change -gstabs into -gdwarf
lib/bt-exe.c, tests/tests2/Makefile, tests/tests2/126_bound_global:
- Add __bound_init call
- Add new testcase to test it
2022-05-05 07:10:37 +00:00
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--enable-cross) confvars="$confvars cross"
|
2010-12-03 04:16:32 +00:00
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--disable-static) confvars="$confvars static=no"
|
2005-04-14 23:51:24 +00:00
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--enable-static) confvars="$confvars static"
|
2010-04-24 09:35:43 +00:00
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--disable-rpath) confvars="$confvars rpath=no"
|
2017-02-13 18:03:29 +00:00
|
|
|
;;
|
2021-01-24 15:20:48 +00:00
|
|
|
--debug) confvars="$confvars debug"
|
2020-04-12 15:34:01 +00:00
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--with-libgcc) confvars="$confvars libgcc"
|
2011-06-17 20:22:04 +00:00
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--with-selinux) confvars="$confvars selinux"
|
2008-09-05 19:08:37 +00:00
|
|
|
;;
|
2022-05-17 20:28:32 +00:00
|
|
|
--tcc-switches=*) tcc_switches=`echo $opt | cut -d '=' -f 2-`
|
|
|
|
;;
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
--config-mingw32*) mingw32=$(echo "$opt=yes" | cut -d '=' -f 2)
|
|
|
|
;;
|
2017-05-13 06:59:06 +00:00
|
|
|
--config-*) confvars="$confvars ${opt#--config-}"; suggest="no"
|
2010-04-21 06:40:33 +00:00
|
|
|
;;
|
2009-09-01 09:24:58 +00:00
|
|
|
--help|-h) show_help="yes"
|
|
|
|
;;
|
2012-05-28 19:16:39 +00:00
|
|
|
*) echo "configure: WARNING: unrecognized option $opt"
|
2011-08-11 14:55:30 +00:00
|
|
|
;;
|
2003-04-13 19:50:35 +00:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
show_help() {
|
|
|
|
cat << EOF
|
|
|
|
Usage: configure [options]
|
|
|
|
Options: [defaults in brackets after descriptions]
|
|
|
|
|
|
|
|
Standard options:
|
|
|
|
--help print this message
|
|
|
|
--prefix=PREFIX install in PREFIX [$prefix]
|
|
|
|
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
|
|
|
[same as prefix]
|
|
|
|
--bindir=DIR user executables in DIR [EPREFIX/bin]
|
|
|
|
--libdir=DIR object code libraries in DIR [EPREFIX/lib]
|
|
|
|
--tccdir=DIR installation directory [EPREFIX/lib/tcc]
|
|
|
|
--includedir=DIR C header files in DIR [PREFIX/include]
|
|
|
|
--sharedir=DIR documentation root DIR [PREFIX/share]
|
|
|
|
--docdir=DIR documentation in DIR [SHAREDIR/doc/tcc]
|
|
|
|
--mandir=DIR man documentation in DIR [SHAREDIR/man]
|
|
|
|
--infodir=DIR info documentation in DIR [SHAREDIR/info]
|
|
|
|
|
|
|
|
Advanced options (experts only):
|
|
|
|
--source-path=PATH path of source code [$source_path]
|
|
|
|
--sysroot=PREFIX prepend PREFIX to library/include paths [$sysroot]
|
|
|
|
--cc=CC use C compiler CC [$cc]
|
|
|
|
--ar=AR create archives using AR [$ar]
|
|
|
|
--extra-cflags= specify compiler flags [$CFLAGS]
|
|
|
|
--extra-ldflags= specify linker options [$LDFLAGS]
|
2016-10-03 10:29:38 +00:00
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
--debug include debug info with resulting binaries
|
|
|
|
--disable-static make libtcc.so instead of libtcc.a
|
|
|
|
--enable-static make libtcc.a instead of libtcc.dll (win32)
|
|
|
|
--disable-rpath disable use of -rpath with libtcc.so
|
|
|
|
--with-libgcc use libgcc_s.so.1 instead of libtcc1.a
|
|
|
|
--with-selinux use mmap for executable memory (tcc -run)
|
|
|
|
--enable-cross build cross compilers (see also 'make help')
|
|
|
|
|
|
|
|
--sysincludepaths=... specify system include paths, colon separated
|
|
|
|
--libpaths=... specify system library paths, colon separated
|
|
|
|
--crtprefix=... specify locations of crt?.o, colon separated
|
|
|
|
--elfinterp=... specify elf interpreter
|
|
|
|
--triplet=... specify system library/include directory triplet
|
|
|
|
--tcc-switches=... specify implicit switches passed to tcc
|
|
|
|
|
|
|
|
--config-uClibc,-musl enable system specific configurations
|
|
|
|
--config-mingw32 build on windows using msys, busybox, etc.
|
|
|
|
--config-backtrace=no disable stack backtraces (with -run or -bt)
|
|
|
|
--config-bcheck=no disable bounds checker (-b)
|
|
|
|
--config-predefs=no do not compile tccdefs.h, instead just include
|
2024-11-21 11:03:32 +00:00
|
|
|
--config-new_macho=no|yes force apple object format (autodetect osx <= 10)
|
|
|
|
--config-new_dtags=yes use new ELF DTAGs (DT_RUNPATH instead of DT_RPATH)
|
2023-11-27 19:16:09 +00:00
|
|
|
--config-codesign=no do not use codesign on apple to sign executables
|
2024-11-21 11:03:32 +00:00
|
|
|
--config-dwarf=x use dwarf debug info instead of stabs (x=2..5)
|
2023-09-06 20:21:15 +00:00
|
|
|
|
|
|
|
Cross build options (experimental):
|
|
|
|
--cpu=CPU target CPU [$cpu]
|
|
|
|
--targetos=... target OS (Darwin,WIN32,Android/Termux) [$targetos]
|
|
|
|
--cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
|
|
|
|
EOF
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2024-12-02 08:22:23 +00:00
|
|
|
default() # set variable unless already set and not empty
|
2023-09-06 20:21:15 +00:00
|
|
|
{
|
2024-12-02 08:22:23 +00:00
|
|
|
test -n "$2" && eval : \${$1:=\$2} # ': ${foo:=$2}'
|
2023-09-06 20:21:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
default_conf() # add to confvars unless already present
|
|
|
|
{
|
2024-12-02 08:22:23 +00:00
|
|
|
test "${confvars%${1%=*}*}" = "${confvars}" && confvars="$confvars $1"
|
2023-09-06 20:21:15 +00:00
|
|
|
}
|
|
|
|
|
configure: avoid non-POSIX: test ... -a/-o ...
Shells do support those, and typically simple forms do work, but
these were removed in POSIX 2024 because they are notoriously hard
to parse correctly, and shells don't always agree on the result.
Instead, use standard forms which all shells support identically.
Extreme high level overview of quotes in POSIX shell:
- WORDs without $... or glob don't need quotes (echo, =, no, x86, ...).
- a= b=foo c=$... and case $d in ... all don't need quotes.
- IFS/glob affect command and arguments (not assignments or case..in):
- IFS only splits direct result of $..., quotes will prevent that.
- Glob then splits/matches *?[] and quotes will prevent that.
POSIX "test" (see Application Usage), and shell language (quotes):
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
My own quick guide:
https://gist.github.com/avih/6752ad1e20b334b56fef120cd09c766e
2024-12-03 00:04:46 +00:00
|
|
|
if test -z "${source_path#.}" ; then
|
2023-09-06 20:21:15 +00:00
|
|
|
source_path=$(pwd)
|
|
|
|
source_path_used="no"
|
|
|
|
else
|
|
|
|
source_path_used="yes"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# OS specific
|
|
|
|
buildos=$(uname)
|
2024-10-09 21:15:05 +00:00
|
|
|
cpu_sys=$(uname -m)
|
2023-09-06 20:21:15 +00:00
|
|
|
|
|
|
|
case $buildos in
|
|
|
|
Windows_NT|MINGW*|MSYS*|CYGWIN*)
|
|
|
|
buildos="WIN32"
|
2024-10-09 21:15:05 +00:00
|
|
|
test "$MSYSTEM" = "MINGW32" && cpu_sys=i386
|
2023-09-06 20:21:15 +00:00
|
|
|
;;
|
|
|
|
Linux)
|
|
|
|
if test "$(uname -o)" = "Android"; then
|
|
|
|
buildos=Android
|
|
|
|
if test -n "$TERMUX_VERSION"; then
|
|
|
|
buildos=Termux
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
if test "$mingw32" = "yes"; then
|
|
|
|
default targetos WIN32
|
|
|
|
else
|
|
|
|
default targetos "$buildos"
|
|
|
|
fi
|
2021-07-25 18:39:11 +00:00
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
default cpu "$cpu_sys"
|
|
|
|
|
|
|
|
# check for crpss build
|
configure: avoid non-POSIX: test ... -a/-o ...
Shells do support those, and typically simple forms do work, but
these were removed in POSIX 2024 because they are notoriously hard
to parse correctly, and shells don't always agree on the result.
Instead, use standard forms which all shells support identically.
Extreme high level overview of quotes in POSIX shell:
- WORDs without $... or glob don't need quotes (echo, =, no, x86, ...).
- a= b=foo c=$... and case $d in ... all don't need quotes.
- IFS/glob affect command and arguments (not assignments or case..in):
- IFS only splits direct result of $..., quotes will prevent that.
- Glob then splits/matches *?[] and quotes will prevent that.
POSIX "test" (see Application Usage), and shell language (quotes):
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
My own quick guide:
https://gist.github.com/avih/6752ad1e20b334b56fef120cd09c766e
2024-12-03 00:04:46 +00:00
|
|
|
if test "$cpu" != "$cpu_sys" ||
|
|
|
|
test "$targetos" != "$buildos" ||
|
|
|
|
test -n "$cross_prefix"
|
|
|
|
then
|
2023-09-06 20:21:15 +00:00
|
|
|
build_cross="yes"
|
|
|
|
cc="${cross_prefix}${cc}"
|
|
|
|
ar="${cross_prefix}${ar}"
|
2021-07-25 18:39:11 +00:00
|
|
|
fi
|
|
|
|
|
2016-10-03 10:29:38 +00:00
|
|
|
case "$cpu" in
|
|
|
|
x86|i386|i486|i586|i686|i86pc|BePC|i686-AT386)
|
2017-07-09 10:07:40 +00:00
|
|
|
cpu="i386"
|
2016-10-03 10:29:38 +00:00
|
|
|
;;
|
2017-02-20 17:58:08 +00:00
|
|
|
x86_64|amd64|x86-64)
|
|
|
|
cpu="x86_64"
|
2016-10-03 10:29:38 +00:00
|
|
|
;;
|
2021-01-17 09:02:00 +00:00
|
|
|
evbarm)
|
|
|
|
case "`uname -p`" in
|
|
|
|
aarch64|arm64)
|
2021-01-24 15:20:48 +00:00
|
|
|
cpu="arm64"
|
2021-01-17 09:02:00 +00:00
|
|
|
;;
|
|
|
|
earmv*)
|
|
|
|
cpu="arm"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
2020-12-23 19:08:26 +00:00
|
|
|
aarch64|arm64|evbarm)
|
2021-01-24 15:20:48 +00:00
|
|
|
cpu="arm64"
|
2020-12-13 09:22:15 +00:00
|
|
|
;;
|
2016-10-03 10:29:38 +00:00
|
|
|
arm*)
|
|
|
|
case "$cpu" in
|
|
|
|
arm|armv4l)
|
|
|
|
cpuver=4
|
|
|
|
;;
|
|
|
|
armv5tel|armv5tejl)
|
|
|
|
cpuver=5
|
|
|
|
;;
|
|
|
|
armv6j|armv6l)
|
|
|
|
cpuver=6
|
|
|
|
;;
|
2021-01-10 18:02:55 +00:00
|
|
|
armv7|armv7a|armv7l)
|
2016-10-03 10:29:38 +00:00
|
|
|
cpuver=7
|
|
|
|
;;
|
|
|
|
esac
|
2017-05-13 06:59:06 +00:00
|
|
|
cpu="arm"
|
2016-10-03 10:29:38 +00:00
|
|
|
;;
|
|
|
|
alpha)
|
|
|
|
cpu="alpha"
|
|
|
|
;;
|
|
|
|
"Power Macintosh"|ppc|ppc64)
|
2017-05-13 06:59:06 +00:00
|
|
|
cpu="ppc"
|
2016-10-03 10:29:38 +00:00
|
|
|
;;
|
|
|
|
mips)
|
|
|
|
cpu="mips"
|
|
|
|
;;
|
|
|
|
s390)
|
|
|
|
cpu="s390"
|
|
|
|
;;
|
2019-06-22 04:13:10 +00:00
|
|
|
riscv64)
|
|
|
|
cpu="riscv64"
|
|
|
|
;;
|
2016-10-03 10:29:38 +00:00
|
|
|
*)
|
2017-05-13 06:59:06 +00:00
|
|
|
echo "Unsupported CPU"
|
|
|
|
exit 1
|
2016-10-03 10:29:38 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
case $targetos in
|
|
|
|
Darwin)
|
2024-11-21 11:03:32 +00:00
|
|
|
confvars="$confvars OSX dwarf=4"
|
2023-11-27 19:16:09 +00:00
|
|
|
default_conf "codesign"
|
2023-09-06 20:21:15 +00:00
|
|
|
DLLSUF=".dylib"
|
|
|
|
if test -z "$build_cross"; then
|
|
|
|
cc=`command -v cc`
|
|
|
|
cc=`readlink $cc || echo clang`
|
|
|
|
tcc_usrinclude="`xcrun --show-sdk-path`/usr/include"
|
|
|
|
if test "${confvars%new_macho*}" = "${confvars}"; then
|
|
|
|
# if new_macho was not specified and (known) ver <= 10, use old (=no)
|
|
|
|
osxver=$(sw_vers -productVersion 2>/dev/null) # X.Y.Z
|
|
|
|
osxver=${osxver%%.*} # major version (or empty on sw_vers error)
|
|
|
|
[ "${osxver:-11}" -ge 11 ] || confvars="$confvars new_macho=no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
# on OSX M1 with --cpu=x86_64, build a tcc to run under rosetta entirely
|
configure: avoid non-POSIX: test ... -a/-o ...
Shells do support those, and typically simple forms do work, but
these were removed in POSIX 2024 because they are notoriously hard
to parse correctly, and shells don't always agree on the result.
Instead, use standard forms which all shells support identically.
Extreme high level overview of quotes in POSIX shell:
- WORDs without $... or glob don't need quotes (echo, =, no, x86, ...).
- a= b=foo c=$... and case $d in ... all don't need quotes.
- IFS/glob affect command and arguments (not assignments or case..in):
- IFS only splits direct result of $..., quotes will prevent that.
- Glob then splits/matches *?[] and quotes will prevent that.
POSIX "test" (see Application Usage), and shell language (quotes):
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
My own quick guide:
https://gist.github.com/avih/6752ad1e20b334b56fef120cd09c766e
2024-12-03 00:04:46 +00:00
|
|
|
if test "$cpu" = x86_64 && test "$cpu_sys" = arm64; then
|
2023-09-06 20:21:15 +00:00
|
|
|
CFLAGS="$CFLAGS -arch $cpu"
|
|
|
|
LDFLAGS="$LDFLAGS -arch $cpu"
|
2017-04-25 19:01:54 +00:00
|
|
|
fi
|
2023-09-06 20:21:15 +00:00
|
|
|
;;
|
|
|
|
DragonFly|OpenBSD|FreeBSD|NetBSD)
|
|
|
|
confvars="$confvars BSD ldl=no"
|
|
|
|
;;
|
|
|
|
Android|Termux)
|
|
|
|
if test "$targetos" = "Termux"; then
|
|
|
|
targetos=Android
|
|
|
|
default sysroot "/data/data/com.termux/files/usr"
|
|
|
|
else
|
|
|
|
default sysroot "/usr"
|
|
|
|
fi
|
|
|
|
default prefix "${sysroot}"
|
2024-11-21 11:03:32 +00:00
|
|
|
confvars="$confvars Android new_dtags rpath=no"
|
2023-09-06 20:21:15 +00:00
|
|
|
test "${cpu}" != "i386" && confvars="$confvars pie"
|
|
|
|
default_conf "static=no"
|
|
|
|
if test "${cpu}" = "arm"; then
|
|
|
|
default triplet "arm-linux-androideabi"
|
|
|
|
cpuver=7
|
|
|
|
else
|
2024-11-21 11:03:32 +00:00
|
|
|
default triplet "${cpu}-linux-android"
|
2023-09-06 20:21:15 +00:00
|
|
|
fi
|
|
|
|
test "${cpu%64}" != "${cpu}" && S="64" || S=""
|
|
|
|
default tcc_sysincludepaths "{B}/include:{R}/include:{R}/include/${triplet}"
|
|
|
|
default tcc_libpaths "{B}:{R}/lib:/system/lib${S}"
|
|
|
|
default tcc_crtprefix "{R}/lib"
|
|
|
|
default tcc_elfinterp "/system/bin/linker${S}"
|
2024-02-16 18:11:56 +00:00
|
|
|
default tcc_switches "-Wl,-rpath=$sysroot/lib"
|
2023-09-06 20:21:15 +00:00
|
|
|
;;
|
|
|
|
WIN32)
|
|
|
|
mingw32="yes"
|
2024-11-21 11:03:32 +00:00
|
|
|
confvars="WIN32 $confvars"
|
2023-09-06 20:21:15 +00:00
|
|
|
default prefix "C:/Program Files/tcc"
|
|
|
|
default tccdir "${prefix}"
|
|
|
|
default bindir "${tccdir}"
|
|
|
|
default docdir "${tccdir}/doc"
|
|
|
|
default libdir "${tccdir}/libtcc"
|
2024-11-21 11:03:32 +00:00
|
|
|
# set tccdir at runtime from executable path
|
2023-09-06 20:21:15 +00:00
|
|
|
test "$tccdir" = "$bindir" && tccdir_auto="yes"
|
2024-12-02 23:13:03 +00:00
|
|
|
# chech $cc to avoid mingw gcc dependencies such as 'libgcc_s_dw2-1.dll'
|
|
|
|
# (no confirmed $cc_name yet, and also will never have if cross compiling)
|
|
|
|
test "${cc%gcc*}" = "$cc" || default LDFLAGS "-static"
|
2013-02-14 05:53:07 +00:00
|
|
|
LIBSUF=".lib"
|
|
|
|
EXESUF=".exe"
|
2016-12-15 16:04:07 +00:00
|
|
|
DLLSUF=".dll"
|
2023-09-06 20:21:15 +00:00
|
|
|
if test "$source_path_used" = "no"; then
|
|
|
|
source_path="."
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
fi
|
2023-09-06 20:21:15 +00:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
;;
|
|
|
|
esac
|
2013-02-14 05:53:07 +00:00
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
if test "$mingw32" = "no"; then
|
|
|
|
default prefix "/usr/local"
|
|
|
|
default execprefix "${prefix}"
|
|
|
|
default libdir "${execprefix}/lib"
|
|
|
|
default bindir "${execprefix}/bin"
|
|
|
|
default tccdir "${libdir}/tcc"
|
|
|
|
default includedir "${prefix}/include"
|
|
|
|
default sharedir "${prefix}/share"
|
|
|
|
default docdir "${sharedir}/doc"
|
|
|
|
default mandir "${sharedir}/man"
|
|
|
|
default infodir "${sharedir}/info"
|
|
|
|
fi
|
2021-01-24 15:20:48 +00:00
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
if test x"$show_help" = "xyes" ; then
|
|
|
|
show_help
|
2013-02-14 05:53:07 +00:00
|
|
|
fi
|
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
if test -z "$build_cross"; then
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
CONFTEST=./conftest$EXESUF
|
2022-10-14 18:10:38 +00:00
|
|
|
if ! $cc -o $CONFTEST $source_path/conftest.c ; then
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
echo "configure: error: '$cc' failed to compile conftest.c."
|
|
|
|
else
|
2020-06-27 15:22:04 +00:00
|
|
|
cc_name="$($CONFTEST compiler)"
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
gcc_major="$($CONFTEST version)"
|
|
|
|
gcc_minor="$($CONFTEST minor)"
|
2020-06-27 15:22:04 +00:00
|
|
|
bigendian="$($CONFTEST bigendian)"
|
|
|
|
_triplet="$($CONFTEST triplet)"
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
fi
|
2017-02-13 18:03:29 +00:00
|
|
|
if test "$mingw32" = "no" ; then
|
configure: avoid non-POSIX: test ... -a/-o ...
Shells do support those, and typically simple forms do work, but
these were removed in POSIX 2024 because they are notoriously hard
to parse correctly, and shells don't always agree on the result.
Instead, use standard forms which all shells support identically.
Extreme high level overview of quotes in POSIX shell:
- WORDs without $... or glob don't need quotes (echo, =, no, x86, ...).
- a= b=foo c=$... and case $d in ... all don't need quotes.
- IFS/glob affect command and arguments (not assignments or case..in):
- IFS only splits direct result of $..., quotes will prevent that.
- Glob then splits/matches *?[] and quotes will prevent that.
POSIX "test" (see Application Usage), and shell language (quotes):
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
My own quick guide:
https://gist.github.com/avih/6752ad1e20b334b56fef120cd09c766e
2024-12-03 00:04:46 +00:00
|
|
|
if test -z "$triplet" && test -n "$_triplet"; then
|
2023-09-06 20:21:15 +00:00
|
|
|
if test -f "/usr/lib/$_triplet/crti.o"; then
|
2020-06-27 15:22:04 +00:00
|
|
|
triplet="$_triplet"
|
2016-10-17 21:22:21 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test -z "$triplet"; then
|
configure: avoid non-POSIX: test ... -a/-o ...
Shells do support those, and typically simple forms do work, but
these were removed in POSIX 2024 because they are notoriously hard
to parse correctly, and shells don't always agree on the result.
Instead, use standard forms which all shells support identically.
Extreme high level overview of quotes in POSIX shell:
- WORDs without $... or glob don't need quotes (echo, =, no, x86, ...).
- a= b=foo c=$... and case $d in ... all don't need quotes.
- IFS/glob affect command and arguments (not assignments or case..in):
- IFS only splits direct result of $..., quotes will prevent that.
- Glob then splits/matches *?[] and quotes will prevent that.
POSIX "test" (see Application Usage), and shell language (quotes):
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
My own quick guide:
https://gist.github.com/avih/6752ad1e20b334b56fef120cd09c766e
2024-12-03 00:04:46 +00:00
|
|
|
case $cpu in x86_64|arm64|riscv64)
|
2016-11-28 13:48:54 +00:00
|
|
|
if test -f "/usr/lib64/crti.o" ; then
|
|
|
|
tcc_lddir="lib64"
|
|
|
|
fi
|
configure: avoid non-POSIX: test ... -a/-o ...
Shells do support those, and typically simple forms do work, but
these were removed in POSIX 2024 because they are notoriously hard
to parse correctly, and shells don't always agree on the result.
Instead, use standard forms which all shells support identically.
Extreme high level overview of quotes in POSIX shell:
- WORDs without $... or glob don't need quotes (echo, =, no, x86, ...).
- a= b=foo c=$... and case $d in ... all don't need quotes.
- IFS/glob affect command and arguments (not assignments or case..in):
- IFS only splits direct result of $..., quotes will prevent that.
- Glob then splits/matches *?[] and quotes will prevent that.
POSIX "test" (see Application Usage), and shell language (quotes):
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
My own quick guide:
https://gist.github.com/avih/6752ad1e20b334b56fef120cd09c766e
2024-12-03 00:04:46 +00:00
|
|
|
esac
|
2013-02-14 14:39:35 +00:00
|
|
|
fi
|
2017-05-13 06:59:06 +00:00
|
|
|
if test "$suggest" = "yes"; then
|
|
|
|
if test -f "/lib/ld-uClibc.so.0" ; then
|
|
|
|
echo "Perhaps you want ./configure --config-uClibc"
|
|
|
|
fi
|
2024-11-21 11:03:32 +00:00
|
|
|
if test -f "/lib/ld-musl-${cpu}.so.1"; then
|
2017-05-13 06:59:06 +00:00
|
|
|
echo "Perhaps you want ./configure --config-musl"
|
|
|
|
fi
|
2013-02-14 20:15:56 +00:00
|
|
|
fi
|
2013-02-14 05:53:07 +00:00
|
|
|
fi
|
|
|
|
else
|
2023-09-06 20:21:15 +00:00
|
|
|
# can only make guesses about compiler and target
|
|
|
|
if test "${cc%tcc*}" != "$cc"; then
|
|
|
|
cc_name="tcc"
|
|
|
|
elif test "${cc%clang*}" != "$cc"; then
|
|
|
|
cc_name="clang"
|
|
|
|
fi
|
2013-02-14 05:53:07 +00:00
|
|
|
case $cpu in
|
2017-05-13 06:59:06 +00:00
|
|
|
ppc|mips|s390) bigendian=yes;;
|
2013-02-14 05:53:07 +00:00
|
|
|
esac
|
2023-09-06 20:21:15 +00:00
|
|
|
case $targetos in
|
|
|
|
Linux)
|
2024-11-21 11:03:32 +00:00
|
|
|
default triplet "${cpu}-linux-gnu"
|
2023-09-06 20:21:15 +00:00
|
|
|
esac
|
2013-02-14 05:53:07 +00:00
|
|
|
fi
|
|
|
|
|
2017-05-13 06:59:06 +00:00
|
|
|
if test "$bigendian" = "yes" ; then
|
|
|
|
confvars="$confvars BIGENDIAN"
|
|
|
|
fi
|
|
|
|
|
2023-09-06 20:21:15 +00:00
|
|
|
if test "$cpu" = "arm"; then
|
|
|
|
if test "${triplet%eabihf}" != "$triplet" ; then
|
|
|
|
confvars="$confvars arm_eabihf arm_vfp"
|
|
|
|
elif test "${triplet%eabi}" != "$triplet" ; then
|
|
|
|
confvars="$confvars arm_eabi arm_vfp"
|
|
|
|
elif test -z "$build_cross"; then
|
|
|
|
if test "${_triplet%eabihf}" != "$_triplet" ; then
|
|
|
|
confvars="$confvars arm_eabihf arm_vfp"
|
|
|
|
elif test "${_triplet%eabi}" != "$_triplet" ; then
|
|
|
|
confvars="$confvars arm_eabi arm_vfp"
|
|
|
|
elif grep -s -q "^Features.* \(vfp\|iwmmxt\) " /proc/cpuinfo ; then
|
|
|
|
confvars="$confvars arm_vfp"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2015-03-04 07:57:13 +00:00
|
|
|
# a final configuration tuning
|
2020-06-27 15:22:04 +00:00
|
|
|
if test "$cc_name" != "tcc"; then
|
2024-11-21 11:03:32 +00:00
|
|
|
OPT1="-Wdeclaration-after-statement" #-fno-strict-aliasing
|
2017-05-13 06:59:06 +00:00
|
|
|
# we want -Wno- but gcc does not always reject unknown -Wno- options
|
2020-06-27 15:22:04 +00:00
|
|
|
if test "$cc_name" = "clang"; then
|
2024-11-21 11:03:32 +00:00
|
|
|
OPT2= #"-Wstring-plus-int"
|
|
|
|
else
|
|
|
|
OPT2="-Wunused-result"
|
2017-05-13 06:59:06 +00:00
|
|
|
fi
|
|
|
|
$cc $OPT1 $OPT2 -o a.out -c -xc - < /dev/null > cc_msg.txt 2>&1
|
|
|
|
for o in $OPT1; do # enable these options
|
|
|
|
if ! grep -q -- $o cc_msg.txt; then CFLAGS="$CFLAGS $o"; fi
|
|
|
|
done
|
|
|
|
for o in $OPT2; do # disable these options
|
|
|
|
if ! grep -q -- $o cc_msg.txt; then CFLAGS="$CFLAGS -Wno-${o#-W*}"; fi
|
|
|
|
done
|
|
|
|
# cat cc_msg.txt
|
|
|
|
# echo $CFLAGS
|
|
|
|
rm -f cc_msg.txt a.out
|
2020-06-27 15:22:04 +00:00
|
|
|
else # cc is tcc
|
|
|
|
test "$ar_set" || ar="$cc -ar"
|
2017-05-13 06:59:06 +00:00
|
|
|
fi
|
2015-03-04 07:57:13 +00:00
|
|
|
|
2017-05-13 06:59:06 +00:00
|
|
|
fcho() { if test -n "$2"; then echo "$1$2"; fi }
|
2016-10-17 21:22:21 +00:00
|
|
|
|
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
2017-10-11 16:13:43 +00:00
|
|
|
fcho "Binary directory " "$bindir"
|
|
|
|
fcho "TinyCC directory " "$tccdir"
|
|
|
|
fcho "Library directory " "$libdir"
|
|
|
|
fcho "Include directory " "$includedir"
|
|
|
|
fcho "Manual directory " "$mandir"
|
|
|
|
fcho "Info directory " "$infodir"
|
|
|
|
fcho "Doc directory " "$docdir"
|
2016-10-17 21:22:21 +00:00
|
|
|
fcho "Target root prefix " "$sysroot"
|
2020-05-22 03:27:30 +00:00
|
|
|
fcho "/usr/include dir " "$tcc_usrinclude"
|
2016-10-01 19:06:33 +00:00
|
|
|
echo "Source path $source_path"
|
2024-02-29 19:20:39 +00:00
|
|
|
echo "Build OS $(uname -m -s)"
|
2017-07-23 19:24:11 +00:00
|
|
|
echo "C compiler $cc ($gcc_major.$gcc_minor)"
|
2016-10-01 19:06:33 +00:00
|
|
|
echo "Target OS $targetos"
|
|
|
|
echo "CPU $cpu"
|
2016-10-17 21:22:21 +00:00
|
|
|
fcho "Triplet " "$triplet"
|
2023-09-06 20:21:15 +00:00
|
|
|
fcho "Libs " "$tcc_libpaths"
|
|
|
|
fcho "Sysinclude " "$tcc_sysincludepaths"
|
|
|
|
fcho "Crt " "$tcc_crtprefix"
|
|
|
|
fcho "Elfinterp " "$tcc_elfinterp"
|
|
|
|
fcho "Switches " "$tcc_switches"
|
2017-05-13 06:59:06 +00:00
|
|
|
fcho "Config " "${confvars# }"
|
2003-04-13 19:50:35 +00:00
|
|
|
echo "Creating config.mak and config.h"
|
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
version=`head $source_path/VERSION`
|
|
|
|
|
2012-12-21 12:49:15 +00:00
|
|
|
cat >config.mak <<EOF
|
|
|
|
# Automatically generated by configure - do not modify
|
|
|
|
prefix=$prefix
|
|
|
|
bindir=\$(DESTDIR)$bindir
|
|
|
|
tccdir=\$(DESTDIR)$tccdir
|
|
|
|
libdir=\$(DESTDIR)$libdir
|
|
|
|
includedir=\$(DESTDIR)$includedir
|
|
|
|
mandir=\$(DESTDIR)$mandir
|
|
|
|
infodir=\$(DESTDIR)$infodir
|
|
|
|
docdir=\$(DESTDIR)$docdir
|
2013-01-30 17:39:09 +00:00
|
|
|
CC=$cc
|
2020-06-27 15:22:04 +00:00
|
|
|
CC_NAME=$cc_name
|
2013-01-30 17:39:09 +00:00
|
|
|
GCC_MAJOR=$gcc_major
|
2013-02-14 05:53:07 +00:00
|
|
|
GCC_MINOR=$gcc_minor
|
2013-01-30 17:39:09 +00:00
|
|
|
AR=$ar
|
2012-12-14 16:18:03 +00:00
|
|
|
LIBSUF=$LIBSUF
|
|
|
|
EXESUF=$EXESUF
|
2016-12-15 16:04:07 +00:00
|
|
|
DLLSUF=$DLLSUF
|
2024-11-21 11:03:32 +00:00
|
|
|
CFLAGS=$CFLAGS
|
|
|
|
LDFLAGS=$LDFLAGS
|
|
|
|
ARCH=$cpu
|
|
|
|
TARGETOS=$targetos
|
|
|
|
BUILDOS=$buildos
|
|
|
|
VERSION=$version
|
2015-05-10 06:57:11 +00:00
|
|
|
EOF
|
2011-08-06 14:11:12 +00:00
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
if test "$source_path_used" = "yes" ; then
|
|
|
|
case $source_path in
|
|
|
|
/*) echo "TOPSRC=$source_path";;
|
|
|
|
*) echo "TOPSRC=\$(TOP)/$source_path";;
|
|
|
|
esac >>config.mak
|
|
|
|
else
|
|
|
|
echo 'TOPSRC=$(TOP)' >>config.mak
|
|
|
|
fi
|
|
|
|
|
2024-12-02 08:22:23 +00:00
|
|
|
# $1: macro name, $2: val to set - quoted [, $3: non-empty for #ifndef]
|
2024-11-21 11:03:32 +00:00
|
|
|
print_str() {
|
2024-12-02 08:22:23 +00:00
|
|
|
if test -n "$2"; then
|
2024-11-21 11:03:32 +00:00
|
|
|
test -n "$3" && echo "#ifndef $1" >> $TMPH
|
2024-12-02 08:22:23 +00:00
|
|
|
echo "#define $1 \"$2\"" >> $TMPH
|
2024-11-21 11:03:32 +00:00
|
|
|
test -n "$3" && echo "#endif" >> $TMPH
|
2013-02-14 05:53:07 +00:00
|
|
|
fi
|
|
|
|
}
|
2017-05-13 06:59:06 +00:00
|
|
|
|
2024-12-02 08:22:23 +00:00
|
|
|
# $1: macro name, $2: val to set [, $3: non-empty for #ifndef]
|
2024-11-21 11:03:32 +00:00
|
|
|
print_num() {
|
2024-12-02 08:22:23 +00:00
|
|
|
if test -n "$2"; then
|
2024-11-21 11:03:32 +00:00
|
|
|
test -n "$3" && echo "#ifndef $1" >> $TMPH
|
2024-12-02 08:22:23 +00:00
|
|
|
echo "#define $1 $2" >> $TMPH
|
2024-11-21 11:03:32 +00:00
|
|
|
test -n "$3" && echo "#endif" >> $TMPH
|
2017-05-13 06:59:06 +00:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
cat >$TMPH <<EOF
|
|
|
|
/* Automatically generated by configure - do not modify */
|
2013-01-30 17:39:09 +00:00
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
#define TCC_VERSION "$version"
|
2003-04-13 19:50:35 +00:00
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
#define CC_NAME CC_$cc_name
|
2020-04-12 15:34:01 +00:00
|
|
|
#define GCC_MAJOR $gcc_major
|
|
|
|
#define GCC_MINOR $gcc_minor
|
2024-11-21 11:03:32 +00:00
|
|
|
|
|
|
|
#if !CONFIG_TCC_CROSS
|
2020-04-12 15:34:01 +00:00
|
|
|
EOF
|
2003-04-13 19:50:35 +00:00
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
predefs=1
|
|
|
|
# options that are applied only to the native tcc
|
|
|
|
for v in $cpu $confvars ; do
|
|
|
|
if test "${v%=*}" = "$v"; then
|
|
|
|
v="$v=yes"
|
|
|
|
fi
|
|
|
|
R="CONFIG_$v"
|
|
|
|
echo "$R" >> config.mak
|
|
|
|
case "$R" in
|
|
|
|
# CPU
|
|
|
|
CONFIG_i386=yes) print_num TCC_TARGET_I386 1 ;;
|
|
|
|
CONFIG_x86_64=yes) print_num TCC_TARGET_X86_64 1 ;;
|
|
|
|
CONFIG_arm64=yes) print_num TCC_TARGET_ARM64 1 ;;
|
|
|
|
CONFIG_riscv64=yes) print_num TCC_TARGET_RISCV64 1 ;;
|
|
|
|
CONFIG_arm=yes) print_num TCC_TARGET_ARM 1
|
|
|
|
print_num CONFIG_TCC_CPUVER "$cpuver" ;;
|
|
|
|
CONFIG_arm_eabihf=yes) print_num TCC_ARM_EABI 1
|
|
|
|
print_num TCC_ARM_HARDFLOAT 1 ;;
|
|
|
|
CONFIG_arm_eabi=yes) print_num TCC_ARM_EABI 1 ;;
|
|
|
|
CONFIG_arm_vfp=yes) print_num TCC_ARM_VFP 1 ;;
|
|
|
|
# OS
|
|
|
|
CONFIG_WIN32=yes) print_num TCC_TARGET_PE 1 ;;
|
|
|
|
CONFIG_OSX=yes) print_num TCC_TARGET_MACHO 1 ;;
|
|
|
|
CONFIG_Android=yes) print_num TARGETOS_ANDROID 1 ;;
|
|
|
|
CONFIG_BSD=yes) print_num TARGETOS_$targetos 1
|
|
|
|
case "$targetos" in
|
|
|
|
FreeBSD) default tcc_elfinterp "/libexec/ld-elf.so.1";;
|
|
|
|
FreeBSD_kernel)
|
|
|
|
case "$cpu" in
|
|
|
|
x86_64) default tcc_elfinterp "/lib/ld-kfreebsd-x86-64.so.1";;
|
|
|
|
*) default tcc_elfinterp "/lib/ld.so.1";;
|
|
|
|
esac ;;
|
|
|
|
DragonFly) default tcc_elfinterp "/usr/libexec/ld-elf.so.2";;
|
|
|
|
NetBSD) default tcc_elfinterp "/usr/libexec/ld.elf_so";;
|
|
|
|
OpenBSD) default tcc_elfinterp "/usr/libexec/ld.so";;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
CONFIG_uClibc=yes) print_num CONFIG_TCC_UCLIBC 1
|
|
|
|
default tcc_elfinterp "/lib/ld-uClibc.so.0"
|
|
|
|
;;
|
|
|
|
CONFIG_musl=yes) print_num CONFIG_TCC_MUSL 1
|
|
|
|
case "$cpu" in
|
|
|
|
arm64) default tcc_elfinterp "/lib/ld-musl-aarch64.so.1";;
|
|
|
|
*) default tcc_elfinterp "/lib/ld-musl-${cpu}.so.1";;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
# other
|
|
|
|
CONFIG_libgcc=yes) print_num CONFIG_USE_LIBGCC 1 ;;
|
|
|
|
CONFIG_selinux=yes) print_num CONFIG_SELINUX 1 ;;
|
|
|
|
CONFIG_pie=yes) print_num CONFIG_TCC_PIE 1 ;;
|
|
|
|
CONFIG_pic=yes) print_num CONFIG_TCC_PIC 1 ;;
|
|
|
|
CONFIG_new_dtags=yes) print_num CONFIG_NEW_DTAGS 1 ;;
|
|
|
|
CONFIG_codesign=yes) print_num CONFIG_CODESIGN 1 ;;
|
|
|
|
CONFIG_new_macho=no) print_num CONFIG_NEW_MACHO 0 ;;
|
|
|
|
CONFIG_bcheck=no) print_num CONFIG_TCC_BCHECK 0 ;;
|
|
|
|
CONFIG_backtrace=no) print_num CONFIG_TCC_BACKTRACE 0 ;;
|
|
|
|
CONFIG_dwarf=*) print_num CONFIG_DWARF_VERSION ${R#*=} ;;
|
|
|
|
CONFIG_semlock=*) print_num CONFIG_TCC_SEMLOCK ${R#*=} ;;
|
|
|
|
CONFIG_predefs=no) predefs=0 ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
print_str CONFIG_USR_INCLUDE "$tcc_usrinclude"
|
|
|
|
print_str CONFIG_TCC_SYSINCLUDEPATHS "$tcc_sysincludepaths"
|
|
|
|
print_str CONFIG_TCC_LIBPATHS "$tcc_libpaths"
|
|
|
|
print_str CONFIG_TCC_CRTPREFIX "$tcc_crtprefix"
|
|
|
|
print_str CONFIG_TCC_ELFINTERP "$tcc_elfinterp"
|
|
|
|
print_str CONFIG_TCC_SWITCHES "$tcc_switches"
|
|
|
|
print_str CONFIG_LDDIR "$tcc_lddir"
|
|
|
|
print_str CONFIG_TRIPLET "$triplet"
|
|
|
|
echo "#endif" >> $TMPH && echo >> $TMPH
|
|
|
|
|
|
|
|
print_str CONFIG_SYSROOT "$sysroot" x
|
|
|
|
test "$tccdir_auto" = "yes" || print_str CONFIG_TCCDIR "$tccdir" x
|
|
|
|
print_num CONFIG_TCC_PREDEFS "$predefs"
|
|
|
|
|
2015-07-29 20:53:57 +00:00
|
|
|
diff $TMPH config.h >/dev/null 2>&1
|
2003-04-13 19:50:35 +00:00
|
|
|
if test $? -ne 0 ; then
|
2015-07-29 20:53:57 +00:00
|
|
|
mv -f $TMPH config.h
|
2003-04-13 19:50:35 +00:00
|
|
|
else
|
2007-12-16 18:24:44 +00:00
|
|
|
echo "config.h is unchanged"
|
2003-04-13 19:50:35 +00:00
|
|
|
fi
|
|
|
|
|
2024-11-21 11:03:32 +00:00
|
|
|
echo "@set VERSION $version" > config.texi
|
|
|
|
|
2013-02-14 05:53:07 +00:00
|
|
|
rm -f $TMPN* $CONFTEST
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# build tree in object directory if source path is different from current one
|
|
|
|
|
|
|
|
fn_makelink()
|
|
|
|
{
|
2016-10-01 19:06:33 +00:00
|
|
|
tgt=$1/$2
|
|
|
|
case $2 in
|
|
|
|
*/*) dn=${2%/*}
|
|
|
|
test -d $dn || mkdir -p $dn
|
|
|
|
case $1 in
|
|
|
|
/*) ;;
|
|
|
|
*) while test $dn ; do
|
|
|
|
tgt=../$tgt; dn=${dn#${dn%%/*}}; dn=${dn#/}
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
2016-10-10 11:41:33 +00:00
|
|
|
|
|
|
|
ln -sfn $tgt $2 || ( echo "ln failed. Using cp instead."; cp -f $1/$2 $2 )
|
2013-02-14 05:53:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if test "$source_path_used" = "yes" ; then
|
2016-10-01 19:06:33 +00:00
|
|
|
FILES="Makefile lib/Makefile tests/Makefile tests/tests2/Makefile tests/pp/Makefile"
|
2013-02-14 05:53:07 +00:00
|
|
|
for f in $FILES ; do
|
|
|
|
fn_makelink $source_path $f
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|