added configure support
This commit is contained in:
		
							parent
							
								
									5647993e79
								
							
						
					
					
						commit
						dd56ab8c77
					
				
					 5 changed files with 307 additions and 5 deletions
				
			
		|  | @ -8,6 +8,7 @@ version 0.9.17: | ||||||
| - sanitized string and character constant parsing | - sanitized string and character constant parsing | ||||||
| - fixed comment parse (signaled by Damian M Gryski) | - fixed comment parse (signaled by Damian M Gryski) | ||||||
| - fixed macro function bug (signaled by Philippe Ribet) | - fixed macro function bug (signaled by Philippe Ribet) | ||||||
|  | - added configure (initial patch by Mitchell N Charity) | ||||||
| 
 | 
 | ||||||
| version 0.9.16: | version 0.9.16: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										11
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								README
									
										
									
									
									
								
							|  | @ -32,13 +32,14 @@ Documentation: | ||||||
| 
 | 
 | ||||||
| *** TCC currently only works on Linux x86 with glibc >= 2.1 ***. | *** TCC currently only works on Linux x86 with glibc >= 2.1 ***. | ||||||
| 
 | 
 | ||||||
| Type 'make install' to compile and install tcc in /usr/local/bin and |    ./configure | ||||||
| /usr/local/lib/tcc. |    make | ||||||
|  |    make test | ||||||
|  |    make install | ||||||
| 
 | 
 | ||||||
| Or type 'make all' to only compile it. | By default, tcc is installed in /usr/local/bin. | ||||||
|  | ./configure --help  shows configuration options. | ||||||
| 
 | 
 | ||||||
| Type 'make libinstall' to compile and install libtcc. |  | ||||||
| Or type 'make libtcc_test' to only compile it. |  | ||||||
| 
 | 
 | ||||||
| 2) Introduction | 2) Introduction | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								TODO
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								TODO
									
										
									
									
									
								
							|  | @ -1,5 +1,9 @@ | ||||||
| TODO list: | TODO list: | ||||||
| 
 | 
 | ||||||
|  | - '-b' bug. | ||||||
|  | - atexit (Nigel Horne) | ||||||
|  | - see -lxxx bug (Michael Charity). | ||||||
|  | - empty 'default:' in switch. | ||||||
| - fix asm without input/output (no % preprocessing) | - fix asm without input/output (no % preprocessing) | ||||||
| - handle inline functions as macros. | - handle inline functions as macros. | ||||||
| - see transparent union pb in /urs/include/sys/socket.h | - see transparent union pb in /urs/include/sys/socket.h | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								VERSION
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								VERSION
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | 0.9.17 | ||||||
							
								
								
									
										295
									
								
								configure
									
										
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										295
									
								
								configure
									
										
									
									
										vendored
									
									
										Executable file
									
								
							|  | @ -0,0 +1,295 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # tcc configure script (c) 2003 Fabrice Bellard | ||||||
|  | # | ||||||
|  | # set temporary file name | ||||||
|  | if test ! -z "$TMPDIR" ; then | ||||||
|  |     TMPDIR1="${TMPDIR}" | ||||||
|  | elif test ! -z "$TEMPDIR" ; then | ||||||
|  |     TMPDIR1="${TEMPDIR}" | ||||||
|  | else | ||||||
|  |     TMPDIR1="/tmp" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | TMPC="${TMPDIR1}/tcc-conf-${RANDOM}-$$-${RANDOM}.c" | ||||||
|  | TMPO="${TMPDIR1}/tcc-conf-${RANDOM}-$$-${RANDOM}.o" | ||||||
|  | TMPE="${TMPDIR1}/tcc-conf-${RANDOM}-$$-${RANDOM}" | ||||||
|  | TMPS="${TMPDIR1}/tcc-conf-${RANDOM}-$$-${RANDOM}.S" | ||||||
|  | TMPH="${TMPDIR1}/tcc-conf-${RANDOM}-$$-${RANDOM}.h" | ||||||
|  | 
 | ||||||
|  | # default parameters | ||||||
|  | prefix="/usr/local" | ||||||
|  | execprefix="" | ||||||
|  | bindir="" | ||||||
|  | libdir="" | ||||||
|  | includedir="" | ||||||
|  | mandir="" | ||||||
|  | cross_prefix="" | ||||||
|  | cc="gcc" | ||||||
|  | host_cc="gcc" | ||||||
|  | ar="ar" | ||||||
|  | make="make" | ||||||
|  | strip="strip" | ||||||
|  | cpu=`uname -m` | ||||||
|  | case "$cpu" in | ||||||
|  |   i386|i486|i586|i686|i86pc|BePC) | ||||||
|  |     cpu="x86" | ||||||
|  |   ;; | ||||||
|  |   armv4l) | ||||||
|  |     cpu="armv4l" | ||||||
|  |   ;; | ||||||
|  |   alpha) | ||||||
|  |     cpu="alpha" | ||||||
|  |   ;; | ||||||
|  |   "Power Macintosh"|ppc|ppc64) | ||||||
|  |     cpu="powerpc" | ||||||
|  |   ;; | ||||||
|  |   mips) | ||||||
|  |     cpu="mips" | ||||||
|  |   ;; | ||||||
|  |   s390) | ||||||
|  |     cpu="s390" | ||||||
|  |   ;; | ||||||
|  |   *) | ||||||
|  |     cpu="unknown" | ||||||
|  |   ;; | ||||||
|  | esac | ||||||
|  | gprof="no" | ||||||
|  | bigendian="no" | ||||||
|  | 
 | ||||||
|  | # OS specific | ||||||
|  | targetos=`uname -s` | ||||||
|  | case $targetos in | ||||||
|  | *) ;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | # find source path | ||||||
|  | # XXX: we assume an absolute path is given when launching configure,  | ||||||
|  | # except in './configure' case. | ||||||
|  | source_path=${0%configure} | ||||||
|  | source_path=${source_path%/} | ||||||
|  | source_path_used="yes" | ||||||
|  | if test -z "$source_path" -o "$source_path" = "." ; then | ||||||
|  |     source_path=`pwd` | ||||||
|  |     source_path_used="no" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | for opt do | ||||||
|  |   case "$opt" in | ||||||
|  |   --prefix=*) prefix=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --exec-prefix=*) execprefix=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --bindir=*) bindir=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --libdir=*) libdir=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --includedir=*) includedir=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --mandir=*) mandir=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --source-path=*) source_path=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --cc=*) cc=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --make=*) make=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}" | ||||||
|  |   ;; | ||||||
|  |   --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}" | ||||||
|  |   ;; | ||||||
|  |   --extra-libs=*) extralibs=${opt#--extra-libs=} | ||||||
|  |   ;; | ||||||
|  |   --cpu=*) cpu=`echo $opt | cut -d '=' -f 2` | ||||||
|  |   ;; | ||||||
|  |   --enable-gprof) gprof="yes" | ||||||
|  |   ;; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Checking for CFLAGS | ||||||
|  | if test -z "$CFLAGS"; then | ||||||
|  |     CFLAGS="-O2" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | cc="${cross_prefix}${cc}" | ||||||
|  | ar="${cross_prefix}${ar}" | ||||||
|  | strip="${cross_prefix}${strip}" | ||||||
|  | 
 | ||||||
|  | if test -z "$cross_prefix" ; then | ||||||
|  | 
 | ||||||
|  | # --- | ||||||
|  | # big/little endian test | ||||||
|  | cat > $TMPC << EOF | ||||||
|  | #include <inttypes.h> | ||||||
|  | int main(int argc, char ** argv){ | ||||||
|  | 	volatile uint32_t i=0x01234567; | ||||||
|  | 	return (*((uint8_t*)(&i))) == 0x67; | ||||||
|  | } | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | if $cc -o $TMPE $TMPC 2>/dev/null ; then | ||||||
|  | $TMPE && bigendian="yes" | ||||||
|  | else | ||||||
|  | echo big/little test failed | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | else | ||||||
|  | 
 | ||||||
|  | # if cross compiling, cannot launch a program, so make a static guess | ||||||
|  | if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" ; then | ||||||
|  |     bigendian="yes" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # check gcc version | ||||||
|  | cat > $TMPC <<EOF | ||||||
|  | int main(void) { | ||||||
|  | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) | ||||||
|  | return 0; | ||||||
|  | #else | ||||||
|  | #error gcc < 3.2 | ||||||
|  | #endif | ||||||
|  | } | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | gcc_major="2" | ||||||
|  | if $cc -o $TMPO $TMPC 2> /dev/null ; then | ||||||
|  |    gcc_major="3" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if test x"$1" = x"-h" -o x"$1" = x"--help" ; then | ||||||
|  | cat << EOF | ||||||
|  | 
 | ||||||
|  | Usage: configure [options] | ||||||
|  | Options: [defaults in brackets after descriptions] | ||||||
|  | 
 | ||||||
|  | EOF | ||||||
|  | echo "Standard options:" | ||||||
|  | echo "  --help                   print this message" | ||||||
|  | echo "  --prefix=PREFIX          install in PREFIX [$prefix]" | ||||||
|  | echo "  --exec-prefix=EPREFIX    install architecture-dependent files in EPREFIX" | ||||||
|  | echo "                           [same as prefix]" | ||||||
|  | echo "  --bindir=DIR             user executables in DIR [EPREFIX/bin]" | ||||||
|  | echo "  --libdir=DIR             object code libraries in DIR [EPREFIX/lib]" | ||||||
|  | echo "  --includedir=DIR         C header files in DIR [PREFIX/include]" | ||||||
|  | echo "  --mandir=DIR             man documentation in DIR [PREFIX/man]" | ||||||
|  | echo "" | ||||||
|  | echo "Advanced options (experts only):" | ||||||
|  | echo "  --source-path=PATH       path of source code [$source_path]" | ||||||
|  | echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]" | ||||||
|  | echo "  --cc=CC                  use C compiler CC [$cc]" | ||||||
|  | echo "  --make=MAKE              use specified make [$make]" | ||||||
|  | echo "" | ||||||
|  | #echo "NOTE: The object files are build at the place where configure is launched" | ||||||
|  | exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if test x"$execprefix" = x""; then | ||||||
|  | execprefix="${prefix}" | ||||||
|  | fi | ||||||
|  | if test x"$bindir" = x""; then | ||||||
|  | bindir="${execprefix}/bin" | ||||||
|  | fi | ||||||
|  | if test x"$libdir" = x""; then | ||||||
|  | libdir="${execprefix}/lib" | ||||||
|  | fi | ||||||
|  | if test x"$includedir" = x""; then | ||||||
|  | includedir="${prefix}/include" | ||||||
|  | fi | ||||||
|  | if test x"$mandir" = x""; then | ||||||
|  | mandir="${prefix}/man" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "Binary  directory   $bindir" | ||||||
|  | echo "Library directory   $libdir" | ||||||
|  | echo "Include directory   $includedir" | ||||||
|  | echo "Manual  directory   $mandir" | ||||||
|  | echo "Source path      $source_path" | ||||||
|  | echo "C compiler       $cc" | ||||||
|  | echo "make             $make" | ||||||
|  | echo "CPU              $cpu" | ||||||
|  | echo "Big Endian       $bigendian" | ||||||
|  | echo "gprof enabled    $gprof" | ||||||
|  | 
 | ||||||
|  | echo "Creating config.mak and config.h" | ||||||
|  | 
 | ||||||
|  | echo "# Automatically generated by configure - do not modify" > config.mak | ||||||
|  | echo "/* Automatically generated by configure - do not modify */" > $TMPH | ||||||
|  | 
 | ||||||
|  | echo "prefix=$prefix" >> config.mak | ||||||
|  | echo "bindir=$bindir" >> config.mak | ||||||
|  | echo "libdir=$libdir" >> config.mak | ||||||
|  | echo "includedir=$includedir" >> config.mak | ||||||
|  | echo "mandir=$mandir" >> config.mak | ||||||
|  | echo "#define CONFIG_TCC_LIBDIR \"$libdir\"" >> $TMPH | ||||||
|  | echo "MAKE=$make" >> config.mak | ||||||
|  | echo "CC=$cc" >> config.mak | ||||||
|  | echo "GCC_MAJOR=$gcc_major" >> config.mak | ||||||
|  | echo "#define GCC_MAJOR $gcc_major" >> $TMPH | ||||||
|  | echo "HOST_CC=$host_cc" >> config.mak | ||||||
|  | echo "AR=$ar" >> config.mak | ||||||
|  | echo "STRIP=$strip -s -R .comment -R .note" >> config.mak | ||||||
|  | echo "CFLAGS=$CFLAGS" >> config.mak | ||||||
|  | echo "LDFLAGS=$LDFLAGS" >> config.mak | ||||||
|  | if test "$cpu" = "x86" ; then | ||||||
|  |   echo "ARCH=i386" >> config.mak | ||||||
|  |   echo "#define HOST_I386 1" >> $TMPH | ||||||
|  | elif test "$cpu" = "armv4l" ; then | ||||||
|  |   echo "ARCH=arm" >> config.mak | ||||||
|  |   echo "#define HOST_ARM 1" >> $TMPH | ||||||
|  | elif test "$cpu" = "powerpc" ; then | ||||||
|  |   echo "ARCH=ppc" >> config.mak | ||||||
|  |   echo "#define HOST_PPC 1" >> $TMPH | ||||||
|  | elif test "$cpu" = "mips" ; then | ||||||
|  |   echo "ARCH=mips" >> config.mak | ||||||
|  |   echo "#define HOST_MIPS 1" >> $TMPH | ||||||
|  | elif test "$cpu" = "s390" ; then | ||||||
|  |   echo "ARCH=s390" >> config.mak | ||||||
|  |   echo "#define HOST_S390 1" >> $TMPH | ||||||
|  | elif test "$cpu" = "alpha" ; then | ||||||
|  |   echo "ARCH=alpha" >> config.mak | ||||||
|  |   echo "#define HOST_ALPHA 1" >> $TMPH | ||||||
|  | else | ||||||
|  |   echo "Unsupported CPU" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | if test "$bigendian" = "yes" ; then | ||||||
|  |   echo "WORDS_BIGENDIAN=yes" >> config.mak | ||||||
|  |   echo "#define WORDS_BIGENDIAN 1" >> $TMPH | ||||||
|  | fi | ||||||
|  | if test "$gprof" = "yes" ; then | ||||||
|  |   echo "TARGET_GPROF=yes" >> config.mak | ||||||
|  |   echo "#define HAVE_GPROF 1" >> $TMPH | ||||||
|  | fi | ||||||
|  | echo -n "VERSION=" >>config.mak | ||||||
|  | head $source_path/VERSION >>config.mak | ||||||
|  | echo "" >>config.mak | ||||||
|  | echo -n "#define TCC_VERSION \"" >> $TMPH | ||||||
|  | head $source_path/VERSION >> $TMPH | ||||||
|  | echo "\"" >> $TMPH | ||||||
|  | 
 | ||||||
|  | # build tree in object directory if source path is different from current one | ||||||
|  | if test "$source_path_used" = "yes" ; then | ||||||
|  |     DIRS="tests" | ||||||
|  |     FILES="Makefile tests/Makefile" | ||||||
|  |     for dir in $DIRS ; do | ||||||
|  |             mkdir -p $dir | ||||||
|  |     done | ||||||
|  |     for f in $FILES ; do | ||||||
|  |         ln -sf $source_path/$f $f | ||||||
|  |     done | ||||||
|  | fi | ||||||
|  | echo "SRC_PATH=$source_path" >> config.mak | ||||||
|  | 
 | ||||||
|  | diff $TMPH config.h >/dev/null 2>&1 | ||||||
|  | if test $? -ne 0 ; then | ||||||
|  | 	mv -f $TMPH config.h | ||||||
|  | else | ||||||
|  | 	echo "config.h is unchanged" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | rm -f $TMPO $TMPC $TMPE $TMPS $TMPH | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue