#!/bin/sh # # configure script for ghdl (c) 2014 Tristan Gingold # backend=mcode CC=${CC:-gcc} CFLAGS=${CFLAGS:--g} GNATMAKE=${GNATMAKE:-gnatmake} prefix=/usr/local libdirsuffix=lib/ghdl libdirreverse=../.. gcc_src_dir= gcc_version=unknown llvm_prefix= build= show_help=no progname=$0 subst_vars="CC GNATMAKE CFLAGS build srcdir prefix backend libdirsuffix libdirreverse gcc_src_dir llvm_prefix" # Find srcdir srcdir=`dirname $progname` if test x$srcdir = x; then srcdir=. fi # Check echo -n / echo \c if test x`echo -n` = x"-n" ; then echon= echoc="\c" else echon="-n" echoc= fi # Read gcc version from README file gcc_version=`grep '^gcc version' $srcdir/README | sed -e 's/gcc version \([0-9.]*\) \[.*\]\.$/\1/'` # Decode options for opt do optarg=`expr x"$opt" : 'x[^=]*=\(.*\)'` case "$opt" in CC=*|CFLAGS=*|GNATMAKE=*) optvar=`expr x"$opt" : 'x\([^=]*\)=.*'` eval $optvar=\"$optarg\" ;; --prefix=*) prefix="$optarg";; --srcdir=*) srcdir="$optarg";; --with-gcc=*) gcc_src_dir="$optarg"; backend=gcc;; --with-llvm=*) llvm_prefix="$optarg"; backend=llvm;; -h|-help|--help) show_help=yes;; *) echo "$0: unknown option $opt; try $0 --help" exit 1 ;; esac done # Help if test $show_help != no; then cat < /dev/null; then echo "Sorry, you need GNAT to build GHDL. See the README" echo "(gnatmake executable is: $GNATMAKE)" exit 1 fi # Check that compiler exists if ! $CC -v 2> /dev/null; then echo "Sorry, you need a C compiler to build GHDL. See the README" exit 1 fi # For mcode, check that gcc emits i386 if test $backend = mcode; then if ! $CC $CFLAGS -dumpmachine | grep -q "[3-6]86"; then echo "WARNING: GHDL for mcode is supported only on x86 (32 bits)" echo "continuing, but build failure expected (See the README)" fi fi # For gcc backend, check version if test $backend = gcc; then if ! test -f $gcc_src_dir/gcc/BASE-VER; then echo "cannot found gcc/BASE-VER in $gcc_src_dir" exit 1 fi base_ver=`cat $gcc_src_dir/gcc/BASE-VER` if test x$base_ver != x$gcc_version; then echo "Mismatch gcc version from $gcc_src_dir" echo "Need gcc version $gcc_version" exit 1 fi fi # For llvm backend, check llvm-config if test $backend = llvm; then llvm_cmd="$llvm_prefix/bin/llvm-config --version" if ! $llvm_cmd 2> /dev/null; then echo "cannot run $llvm_cmd" exit 1 fi fi # Compute build machine if test x$build = x; then build=`$CC $CFLAGS -dumpmachine` fi echo "Build machine is: $build" # Generate config.status rm -f config.status { echo "#! /bin/sh" echo "# Generated by configure." echo "# Run this file to recreate the current configuration." echo echo "# Generated by:" echo $echon "# $progname"$echoc for opt do echo $echon \ \"$opt\"$echoc done echo echo echo subst_vars=\"$subst_vars\" for v in $subst_vars; do eval vval=\$$v echo $v=\"$vval\" done sed_opts=`echo $subst_vars | sed -e "s/\\([a-zA-Z_]*\\)/-e \"s%@\1@%\$\1%g\"/g"` echo 'echo "Creating ghdl.gpr"' echo sed $sed_opts '< $srcdir/ghdl.gpr.in > ghdl.gpr' echo 'echo "Creating Makefile"' echo sed $sed_opts '< $srcdir/Makefile.in > Makefile' } > config.status || \ { echo "$progname: cannot create config.status" exit 1 } chmod +x ./config.status # Run config.status to generate files if ! sh ./config.status; then echo "$progname: cannot execute config.status" exit 1 fi # Generate ortho_code-x86-flags if test $backend = mcode; then case "$build" in *darwin*) ortho_flags="Flags_Macosx" ;; *mingw32*) ortho_flags="Flags_Windows" ;; *linux*) ortho_flags="Flags_Linux" ;; *) echo "Unsupported $build build for mcode"; exit 1;; esac echo "Generate ortho_code-x86-flags.ads" { echo "with Ortho_Code.X86.$ortho_flags;" echo "package Ortho_Code.X86.Flags renames Ortho_Code.X86.$ortho_flags;" } > ortho_code-x86-flags.ads fi # Generate default_pathes.ads echo "Generate default_pathes.ads" curdir=`pwd` sed -e "s%@COMPILER_GCC@%ghdl1-gcc%" \ -e "s%@COMPILER_DEBUG@%ghdl1-debug%" \ -e "s%@COMPILER_MCODE@%ghdl1-mcode%" \ -e "s%@COMPILER_LLVM@%bin/ghdl1-llvm%" \ -e "s%@POST_PROCESSOR@%oread-gcc%" \ -e "s%@INSTALL_PREFIX@%$prefix%" \ -e "s%@LIB_PREFIX@%$libdirsuffix%" \ < $srcdir/src/ghdldrv/default_pathes.ads.in > default_pathes.ads exit 0