summaryrefslogblamecommitdiffstats
path: root/configure.in
blob: 095ffa790ccc3edaab306de7d3377e86c38041a7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10



                                                                  





                                                                       


                                                                          

                               


                                                                              

                                                               




                                                                      
 







                                                                     

                                                                                   




                                                                              
 
                    
                                                                                
                        
                                 
                                 
                                                                   
                                
 
                      
                                                                        




                                                               





                                                                           

                                           


                           



                   
            









                                                               

                         
 
                     

                        










                                                         

                         

                             



                                        





                                                               




                                                                   
 
                   

                                 
                          

                          
                       
                                
                             


                              
                       

                                                        
                       

                              
                
                         
                              
          
                            
                      

                                                         
                       

                              

                                  


          
                          


                                                           
                                                                  



                  




                                       
 
                                     
                                                       




















                                                                     
      

  
                                              
                                                  
 



                                                   








                                                                             
                                                  








                                            







                              
                                                   



                                                    
 

                                                                  

                                                     











                                                          
                      




                                                                   
 
                         


                                                                  




                        
                            
                             
                        
                          
                             

                          


                        




                                                         
 
                                             

           
          

                   



                                 


                                       





                               


                         





                                    
          

                             
                        






                                                                      
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.12)
AC_INIT(README)

dnl Checks for programs.
AC_PROG_MAKE_SET
AC_CANONICAL_SYSTEM
AC_ARG_WITH(cross-host,[  --with-cross-host=HOST      host (cygnus)], \
host=$withval)

AC_ARG_ENABLE(gmake-print-directory, \
[  --enable-gmake-print-directory    enable GNU Make's print directory], \
[case "${enableval}" in
  yes) RTEMS_USE_OWN_PDIR=no ;;
  no) RTEMS_USE_OWN_PDIR=yes ;;
  *)  AC_MSG_ERROR(bad value ${enableval} for gmake-print-directory option) ;;
esac],[RTEMS_USE_OWN_PDIR=yes])

AC_ARG_ENABLE(posix, \
[  --disable-posix 	     	    disable posix interface], \
[case "${enableval}" in 
  yes) RTEMS_HAS_POSIX_API=yes ;;
  no) RTEMS_HAS_POSIX_API=no ;;
  *)  AC_MSG_ERROR(bad value ${enableval} for disable-posix option) ;;
esac],[RTEMS_HAS_POSIX_API=yes])

AC_ARG_ENABLE(ka9q, \
[  --disable-ka9q                disable KA9Q TCP/IP stack], \
[case "${enableval}" in
  yes) RTEMS_HAS_KA9Q=yes ;;
  no) RTEMS_HAS_KA9Q=no ;;
  *)  AC_MSG_ERROR(bad value ${enableval} for disable-ka9q option) ;;
esac],[RTEMS_HAS_KA9Q=yes])

AC_ARG_ENABLE(rtems-inlines, \
[  --disable-rtems-inlines 	    disable RTEMS inline functions (use macros)], \
[case "${enableval}" in 
  yes) RTEMS_USE_MACROS=yes ;;
  no) RTEMS_USE_MACROS=no ;;
  *)  AC_MSG_ERROR(bad value ${enableval} for disable-rtems-inlines option) ;;
esac],[RTEMS_USE_MACROS=no])

AC_ARG_ENABLE(cpp, \
[  --enable-cpp            enable C++ support, and build the rtems++ library], \
[case "${enableval}" in 
  yes) RTEMS_HAS_CPLUSPLUS=yes ;;
  no) RTEMS_HAS_CPLUSPLUS=no   ;;
  *)  AC_MSG_ERROR(bad value ${enableval} for enable-cpp option) ;;
esac], [RTEMS_HAS_CPLUSPLUS=no])

AC_ARG_ENABLE(gcc28, \
[  --enable-gcc28		    enable use of gcc 2.8.x features], \
[case "${enableval}" in 
  yes) RTEMS_USE_GCC272=no ;;
  no) RTEMS_USE_GCC272=yes ;;
  *)  AC_MSG_ERROR(bad value ${enableval} for gcc-28 option) ;;
esac],[RTEMS_USE_GCC272=yes])

AC_ARG_ENABLE(libcdir, \
[  --enable-libcdir=directory	    set the directory for the C library], \
[ RTEMS_LIBC_DIR="${enableval}" ; \
test -d ${enableval} || AC_MSG_ERROR("$enableval is not a directory" ) ] )

RTEMS_PREFIX=${target_cpu}-${target_vendor}

dnl BEGIN configure.host.in

AC_PATH_PROG(CAT,cat)
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(MV,mv)
AC_PATH_PROG(LN,ln)
AC_PROG_LN_S
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(SORT,sort)

dnl check mkdir behaviour, try to get mkdir -p -m 0755
RTEMS_PATH_MKDIR
RTEMS_PROG_MKDIR_M
RTEMS_PROG_MKDIR_P
test "$rtems_cv_prog_MKDIR_P" = "yes" && MKDIR="$MKDIR -p"
test "$rtems_cv_prog_MKDIR_M" = "yes" && MKDIR="$MKDIR -m 0755"

AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(CMP,cmp)

AC_PATH_PROG(SED,sed)
AC_PATH_PROGS(M4,gm4 m4)

dnl NOTE: prefer bash over ksh over sh
AC_PATH_PROGS(KSH,bash ksh sh)

if test -z "$KSH"; then
dnl NOTE: This cannot happen -- /bin/sh must always exist
AC_MSG_ERROR(
[***]
[    Cannot determine a usable shell bash/ksh/sh]
[    Please contact your system administrator] );
fi

dnl END configure.host.in

dnl BEGIN configure.target.in

dnl echo "TARGET"
dnl echo "    cpu    --> $target_cpu"
dnl echo "    os     --> $target_os"
dnl echo "    vendor --> $target_vendor"

dnl canonicalize target name
dnl NOTE: Most rtems targets do not fullfil autoconf 
dnl targets naming conventions "processor-vendor-os"
dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
dnl and we have to fix it for rtems ourselves 
dnl 
dnl The original plan was to do CPU-BSP-rtems or CPU-rtems to
dnl imply all BSPs.  Eventually we would like to build a collection
dnl of CPU model specific RTEMS libraries which in conjunction with
dnl a BSP library would be used to link an application.

case "${target}" in
  # hpux unix port should go here
  hppa1.1-rtems*)
	target_cpu=hppa1_1
	;;
  i[[3456]]86-go32-rtems*)
	target_cpu=i386
	rtems_bsp="go32 go32_p5"
       	skip_startfiles="yes"
	RTEMS_HAS_POSIX_API=no
	;;
  i[[3456]]86-rtems*)
	target_cpu=i386
	;;
  i[[3456]]86-pc-linux*)         # unix "simulator" port
	target_cpu=unix
	RTEMS_HAS_POSIX_API=no
	;;
  no_cpu-rtems*)
        target_cpu=no_cpu
	RTEMS_HAS_POSIX_API=no
	;;
  powerpc-rtems*|ppc-rtems*)
	target_cpu=ppc
	;;
  sparc-sun-solaris*)             # unix "simulator" port
	target_cpu=unix
	RTEMS_HAS_POSIX_API=no
	;;
  *) 
	RTEMS_CANONICAL_TARGET_CPU
	;;
esac

# Is this a supported CPU?
AC_MSG_CHECKING([if cpu $target_cpu is supported])
if test -d "$srcdir/c/src/exec/score/cpu/$target_cpu"; then
  AC_MSG_RESULT(yes)
  makefiles="$makefiles c/src/exec/score/cpu/$target_cpu/Makefile"
else
  AC_MSG_ERROR(no)
fi

# find all the Executive Makefiles
RTEMS_CHECK_MAKEFILE(c/src/exec/rtems)
RTEMS_CHECK_MAKEFILE(c/src/exec/posix)
RTEMS_CHECK_MAKEFILE(c/src/exec/sapi)
RTEMS_CHECK_MAKEFILE(c/src/exec/wrapup)

# find all the Makefiles for the BSPs
if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
  makefiles="$makefiles c/src/lib/libbsp/$target_cpu/Makefile"

  if test -z "$rtems_bsp"; then
    AC_MSG_CHECKING([for bsps])
    files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
    for file in $files; do
      case $file in
        shared*);;
        Makefile*);;
        READ*);;
        CVS*);;
        go32*);;   # so the i386 port can pick up the other Makefiles
        *) rtems_bsp="$rtems_bsp $file";;
      esac;
    done
    AC_MSG_RESULT([$rtems_bsp])
  fi

  # collect makefiles for each bsp
  for i in $rtems_bsp; do
    RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/$target_cpu/$i)
  done
fi

# find all the CPU dependent library Makefiles
RTEMS_CHECK_MAKEFILE(c/src/lib/libcpu/$target_cpu)

dnl Workaround for go32
if test "$skip_startfiles" != "yes"; then
  RTEMS_CHECK_MAKEFILE(c/src/lib/start/$target_cpu)
fi

dnl END configure.target.in


#
#  Target configurations are listed in alphabetical order.  
#  The BSPs for a target configuration are also listed in alphabetical order.
#

dnl NOTE: host_os is automatically set by autoconf

if [[ "${program_prefix}" = "NONE" ]] ; then
  if [[ "${target}" = "${host}" ]] ; then
    program_prefix=
  else
    program_prefix=${target}-
  fi
fi

dnl AC_PROG_CC
dnl AC_PROG_CXX

RTEMS_BSP=$rtems_bsp
RTEMS_HOST=$host_os
RTEMS_ROOT=`cd $srcdir/c; pwd`
PROJECT_ROOT=`pwd;`

# For now always generate the KA9Q TCP/IP Makefiles
makefiles="$makefiles c/src/lib/libka9q/Makefile"

# For now always generate the C++ Makefiles
makefiles="$makefiles c/src/lib/librtems++/Makefile"

# If the tests are enabled, then find all the test suite Makefiles
AC_MSG_CHECKING([Are the test suites enabled? ])
AC_ARG_ENABLE(tests, \
[  --disable-tests 	     	    disable tests], \
   AC_MSG_ERROR(no), \
   AC_MSG_RESULT(yes) \
     RTEMS_CHECK_MAKEFILE(c/src/tests/tools/$target_cpu) \
     RTEMS_CHECK_MAKEFILE(c/src/tests/libtests) \
     RTEMS_CHECK_MAKEFILE(c/src/tests/sptests) \
     RTEMS_CHECK_MAKEFILE(c/src/tests/tmtests) \
     RTEMS_CHECK_MAKEFILE(c/src/tests/mptests) \
     RTEMS_CHECK_MAKEFILE(c/src/tests/psxtests) \
)

# If the HWAPI is enabled, the find the HWAPI Makefiles
AC_MSG_CHECKING([Is the HWAPI enabled? ])
AC_ARG_ENABLE(hwapi, \
  [  --enable-hwapi		    enable hardware API library], \
      AC_MSG_RESULT(yes) \
        RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi), \
      AC_MSG_ERROR(no) \
)

AC_ARG_ENABLE(rtemsbsp, \
  [  --enable-rtemsbsp=bsp1 bsp2 ..   BSPs to include in build], \
      RTEMS_BSP=$enableval \
)

AC_SUBST(RTEMS_BSP)
AC_SUBST(RTEMS_HOST)
AC_SUBST(RTEMS_LIBC_DIR)
AC_SUBST(RTEMS_ROOT)
AC_SUBST(RTEMS_USE_OWN_PDIR)
AC_SUBST(RTEMS_HAS_POSIX_API)
AC_SUBST(RTEMS_HAS_KA9Q)
AC_SUBST(RTEMS_USE_MACROS)
AC_SUBST(RTEMS_HAS_CPLUSPLUS)
AC_SUBST(RTEMS_USE_GCC272)
AC_SUBST(RTEMS_LIBC_DIR)
AC_SUBST(PROJECT_ROOT)
AC_SUBST(program_prefix)

# pick up all the Makefiles in required parts of the tree
RTEMS_CHECK_MAKEFILE(c/build-tools)
RTEMS_CHECK_MAKEFILE(c/make)
RTEMS_CHECK_MAKEFILE(c/src/lib/libmisc)
RTEMS_CHECK_MAKEFILE(c/src/tests/samples)

# try not to explicitly list a Makefile here 
AC_OUTPUT( 
Makefile
c/Makefile
c/src/Makefile
c/src/exec/Makefile
c/src/exec/score/Makefile
c/src/exec/score/cpu/Makefile
c/src/exec/score/headers/Makefile
c/src/exec/score/inline/Makefile
c/src/exec/score/src/Makefile
c/src/exec/score/tools/Makefile
c/src/exec/score/tools/generic/Makefile
c/src/lib/Makefile
c/src/lib/include/Makefile
c/src/lib/libbsp/Makefile
c/src/lib/libbsp/shmdr/Makefile
c/src/lib/libc/Makefile
c/src/lib/libcpu/Makefile
c/src/lib/start/Makefile
c/src/lib/wrapup/Makefile
c/src/tests/Makefile
c/src/tests/support/Makefile
c/src/tests/support/include/Makefile
c/src/tests/support/stubdr/Makefile
c/src/tests/support/wrapup/Makefile
c/src/tests/tools/Makefile
c/src/tests/tools/generic/Makefile
$makefiles
c/make/host.cfg
c/make/Templates/Makefile.inc
c/update-tools/Makefile)

echo
echo target architecture: $target_cpu.
echo available BSPs: $rtems_bsp.
echo \'make all\' will build the following BSPs: $RTEMS_BSP.
echo other BSPs can be built with \'make RTEMSBSP=\"bsp1 bsp2 ...\"\' 
echo