Home | History | Annotate | Download | only in m4
      1 dnl
      2 dnl @synopsis ENUM_LLVM_TARGETS
      3 dnl
      4 dnl @summary enumlate LLVM Targets, set up variables:
      5 dnl   LLVM_ENUM_TARGETS
      6 dnl   LLVM_ENUM_LINKERS
      7 dnl
      8 dnl Luba Tang <lubatang (a] mediatek.com>
      9 
     10 AC_DEFUN([ENUM_LLVM_TARGETS],
     11 [dnl
     12 	dnl from ${LLVM}/autoconf/configure.ac
     13 	dnl Allow specific targets to be specified for building (or not)
     14 	TARGETS_TO_BUILD="";
     15 
     16 	AC_ARG_ENABLE([targets],
     17 		[AS_HELP_STRING([--enable-targets],
     18 			        [Build specific host targets: all or target1,target2,... Valid targets are:
     19 	     host, x86, x86_64, sparc, powerpc, alpha, arm, mips, spu,
     20 	     xcore, msp430, systemz, blackfin, ptx, cbe, and cpp (default=all)])],
     21 		[],
     22 		[enableval=all])
     23 
     24 	case "$enableval" in
     25 	  all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha ARM Mips CellSPU XCore MSP430 SystemZ Blackfin CBackend CppBackend MBlaze PTX" ;;
     26 	  *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
     27 	      case "$a_target" in
     28 		x86)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
     29 		x86_64)   TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
     30 		sparc)    TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
     31 		powerpc)  TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
     32 		alpha)    TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;;
     33 		arm)      TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
     34 		mips)     TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
     35 		spu)      TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
     36 		xcore)    TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
     37 		msp430)   TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
     38 		systemz)  TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
     39 		blackfin) TARGETS_TO_BUILD="Blackfin $TARGETS_TO_BUILD" ;;
     40 		cbe)      TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD" ;;
     41 		cpp)      TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
     42 		mblaze)   TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
     43 		ptx)      TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;;
     44 		*) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
     45 	      esac
     46 	  done
     47 	  ;;
     48 	esac
     49 	AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
     50 
     51 	dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
     52 	dnl target feature def files.
     53 	LLVM_ENUM_TARGETS=""
     54 	LLVM_ENUM_LINKERS=""
     55 	for target_to_build in $TARGETS_TO_BUILD; do
     56 	  if test -d ${srcdir}/lib/Target/${target_to_build} ; then
     57 	    LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
     58 	  fi
     59 	  if test -f ${srcdir}/lib/Target/${target_to_build}/*LDBackend.cpp ; then
     60 	    LLVM_ENUM_LINKERS="LLVM_LINKER($target_to_build) $LLVM_ENUM_LINKERS";
     61 	  fi
     62 	done
     63 	AC_SUBST(LLVM_ENUM_TARGETS)
     64 	AC_SUBST(LLVM_ENUM_LINKERS)
     65 ])
     66