| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 | #!/bin/bash# StarPU --- Runtime system for heterogeneous multicore architectures.## StarPU is free software; you can redistribute it and/or modify# it under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or (at# your option) any later version.## StarPU is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.## See the GNU Lesser General Public License in COPYING.LGPL for more details.ROOT_DIR=$(dirname $0)cat > ./mic-config.log << EOFThis file was created by StarPU mic-configure $ $0 $*EOFprefix="/usr/local"coi_dir="/opt/intel/mic/coi"scif_dir="/opt/intel/mic/scif"mic_host="x86_64-k1om-linux"declare -a host_paramsdeclare -a mic_paramsunset host_paramsunset mic_paramsnative_mic=0mpi=0for arg in "$@"do	case $arg in		--prefix=*)			prefix="${arg#--prefix=}"			;;		--with-coi-dir=*)			coi_dir="${arg#--with-coi-dir=}"			;;		--with-scif-dir=*)			scif_dir="${arg#--with-scif-dir=}"			;;		--mic-host=*)			mic_host="${arg#--mic-host=}"			;;	        --enable-native-mic)		        native_mic=1		        ;;		--with-compiler=*)			compiler="${arg#--with-compiler=}"			;;		--with-mic-param=*)			mic_params+=("${arg#--with-mic-param=}")			;;		--with-host-param=*)			host_params+=("${arg#--with-host-param=}")			;;		--with-mpi*)			mpi=1			;;		--help)			cat << EOFmic-configure specific options:  --with-coi-dir=DIR	Specify directory that contains			device-linux-release/lib/libcoi_device and 			host-linux-release/lib/libcoi_host and   --with-scif-dir=DIR	Specify directory that contains			device-linux-release/lib/libscif_device and 			host-linux-release/lib/libscif_host and   --mic-host=HOST	Specify the precise Phi host to build for			(default: k1om)  --with-compiler=[icc|gcc]			Specify whether to build with icc or with gcc  --enable-native-mic	Only build the Phi binaries  --with-mic-param=--OPTION			Pass --OPTION to the Phi configure script  --with-host-param=--OPTION			Pass --OPTION to the host configure scriptEOF			;;	esacdoneif [ -z "$compiler" ]then    # Test gcc compiler    x=$(type -t ${mic_host}-gcc)    if [ -z "$x" ]    then	# Test icc compiler	echo "int main(int argc, char **argv) { return 0; }" > /tmp/icc_$USER_$$.c	icc -mmic /tmp/icc_$USER_$$.c > /dev/null 2>/tmp/icc_$USER_$$.err	l=$(grep -c "invalid argument" /tmp/icc_$USER_$$.err)	if [ "$l" != "0" ]	then	    echo "[error] no compiler found. please add path to either ${mic_host}-gcc or to an enabled mic icc compiler in your PATH"	    exit 1	else	    compiler="icc"	fi    else	compiler="gcc"    fifidev_list="host mic"if [ "$native_mic" -eq "1" ]then    dev_list="mic"fi# prepend mic_params with "--with-mpicc=mpicc -mmic", to allow possible override by the userif [ $mpi = 1 ]then	mic_params=("--with-mpicc=mpicc -mmic" "${mic_params[@]}")	mic_params=("--with-mpifort=mpifort -mmic" "${mic_params[@]}")fifor arch in $dev_list #host micdo	# We call the configure script from a build directory further in the	# arborescence	case $ROOT_DIR in		/*) command="${ROOT_DIR}/configure";;		*) command="../${ROOT_DIR}/configure";;	esac	declare -a params	params=("--prefix=$prefix/$arch" "--disable-fstack-protector-all")	if [ "$arch" = mic ] ; then		if [ $compiler = "icc" ] ; then		    export CC="icc -mmic"		    export CXX="icc -mmic"		    export LD="icc -mmic"		    export CXXLD="icc -mmic"		    export F77="ifort -mmic"		    export FC="ifort -mmic"		else		    # let configure auto-detect GNU cross-building tools		    unset CC		    unset CXX		    unset LD		    unset CXXLD		    unset F77		    unset FC		    params+=(--disable-fortran)		fi	fi	if [ "$native_mic" -eq "0" ]	then		params+=(--enable-mic "--with-coi-dir=$coi_dir" "--with-scif-dir=$scif_dir")	fi	if test x$arch = xmic ; then	    params+=(--host=$mic_host --disable-build-doc)	    if [ "$native_mic" -eq "1" ]	    then		params+=(--enable-maxcpus=250)	    else		params+=("--with-coi-lib-dir=$coi_dir/device-linux-release/lib" "--with-scif-lib-dir=$scif_dir/device-linux-release/lib")	    fi	else	    params+=("--with-coi-lib-dir=$coi_dir/host-linux-release/lib" "--with-scif-lib-dir=$scif_dir/host-linux-release/lib")	fi	# If the build directory doesn't exist yet, create it	if [ ! -d "build_${arch}" ] ; then		mkdir "build_${arch}"	fi	cd "build_${arch}"	if test x$arch = xmic ; then		LIBRARY_PATH=$SINK_LIBRARY_PATH:$MIC_LIBRARY_PATH \		INCLUDE=$SINK_INCLUDE \		C_INCLUDE_PATH=$SINK_C_INCLUDE_PATH \		CPLUS_INCLUDE_PATH=$SINK_CPLUS_INCLUDE_PATH \		PKG_CONFIG_PATH=$SINK_PKG_CONFIG_PATH \		$command "$@" "${params[@]}" "${mic_params[@]}"		MIC_BUILD_ENV="\LIBRARY_PATH=$SINK_LIBRARY_PATH:$MIC_LIBRARY_PATH \\	INCLUDE=$SINK_INCLUDE \\	C_INCLUDE_PATH=$SINK_C_INCLUDE_PATH \\	CPLUS_INCLUDE_PATH=$SINK_CPLUS_INCLUDE_PATH \\	PKG_CONFIG_PATH=$SINK_PKG_CONFIG_PATH \\\"	else		$command "$@" "${params[@]}""${host_params[@]}"	fi	if [ "$?" != 0 ]	then		exit $?	fi	cd ..doneif [ "$native_mic" -eq "1" ]thencat > Makefile << EOFall:	$MIC_BUILD_ENV	\$(MAKE) \$(MFLAGS) -C build_micclean:	\$(MAKE) \$(MFLAGS) -C build_mic cleandistclean: clean	rm -f Makefilecheck:	$MIC_BUILD_ENV	\$(MAKE) \$(MFLAGS) -C build_mic checkshowcheck:	\$(MAKE) \$(MFLAGS) -C build_mic showcheckinstall:	$MIC_BUILD_ENV	\$(MAKE) \$(MFLAGS) -C build_mic install	ln -sf "${prefix}/mic/lib/pkgconfig/starpu-1.3.pc" "${prefix}/mic/lib/pkgconfig/starpu-1.3-mic.pc"EOFelsecat > Makefile << EOFall:	\$(MAKE) \$(MFLAGS) -C build_host	$MIC_BUILD_ENV	\$(MAKE) \$(MFLAGS) -C build_micclean:	\$(MAKE) \$(MFLAGS) -C build_host clean	\$(MAKE) \$(MFLAGS) -C build_mic cleandistclean: clean	rm -f Makefilecheck:	\$(MAKE) \$(MFLAGS) -C build_host check	$MIC_BUILD_ENV	\$(MAKE) \$(MFLAGS) -C build_mic check ; \	RET=\$\$? ; \	STARPU_NCPUS=0 \$(MAKE) \$(MFLAGS) -C build_mic check && [ \$\$RET == 0 ]showcheck:	\$(MAKE) \$(MFLAGS) -C build_host showcheck	\$(MAKE) \$(MFLAGS) -C build_mic showcheckinstall:	\$(MAKE) \$(MFLAGS) -C build_host install	$MIC_BUILD_ENV	\$(MAKE) \$(MFLAGS) -C build_mic install	ln -sf "${prefix}/mic/lib/pkgconfig/starpu-1.3.pc" "${prefix}/mic/lib/pkgconfig/starpu-1.3-mic.pc"EOFfi
 |