| # |
| #//===----------------------------------------------------------------------===// |
| #// |
| #// The LLVM Compiler Infrastructure |
| #// |
| #// This file is dual licensed under the MIT and the University of Illinois Open |
| #// Source Licenses. See LICENSE.txt for details. |
| #// |
| #//===----------------------------------------------------------------------===// |
| # |
| |
| ifndef omp_os |
| |
| # Windows sets environment variable OS; for other systems, ask uname |
| ifeq ($(OS),) |
| OS:=$(shell uname) |
| ifeq ($(OS),) |
| $(error "Cannot detect operating system") |
| endif |
| export omp_os=$(OS) |
| endif |
| |
| ifeq ($(OS), Windows_NT) |
| export omp_os=windows |
| endif |
| ifeq ($(OS), Linux) |
| export omp_os=linux |
| endif |
| ifeq ($(OS), FreeBSD) |
| export omp_os=freebsd |
| endif |
| ifeq ($(OS), Darwin) |
| export omp_os=macos |
| endif |
| |
| endif # !omp_os |
| |
| # Compiling for the Intel(R) Many Integrated Core architecture is non-trivial at the next layer |
| # of script down, but we can make it consistent here. |
| ifeq "$(arch)" "mic" |
| # I really do mean this... |
| override arch:=32e |
| override mic:=yes |
| else |
| override mic:=no |
| endif |
| |
| ifeq (,$(wildcard $(omp_root)/tools/$(omp_os).inc)) |
| $(error "$(omp_os)" is not supported. Add tools/$(omp_os).inc file with os-specific settings ) |
| endif |
| |
| # detect arch and runtime versions, provide common host-specific definitions |
| include $(omp_root)/tools/$(omp_os).inc |
| |
| ifeq ($(arch),) |
| $(error Architecture not detected) |
| endif |
| |
| # Setting defaults |
| mode?=release |
| |
| ifeq "$(filter 32 32e 64,$(arch))" "" |
| compiler?=gcc |
| else |
| ifeq "$(omp_os)" "windows" |
| compiler?=icl |
| else |
| compiler?=icc |
| endif |
| endif |
| |
| ifneq "$(mic)" "no" |
| ifeq "$(compiler)" "gcc" |
| $(error Compiling the runtime with gcc is not supported on Intel\(R\) Many Integrated Core Architecture) |
| endif |
| |
| # Magic flags for the build script! |
| build_args += --os=lrb --mic-arch=knc --mic-os=lin --mic-comp=offload |
| |
| # Check that the binutils for Intel(R) Many Integrated Core Architecture are available |
| # First we see whether the objdump on the user's path supports the k1om architecture. |
| hask1om = $(shell if (objdump --help | grep -s k1om); then echo OK; else echo KO; fi) |
| ifneq "$(hask1om)" "OK" |
| # Appropriate binutils are not already set up, so try to add them from the default place. |
| micBinPath = /usr/linux-k1om-4.7/x86_64-k1om-linux/bin |
| micBinPresent = $(shell if test -d $(micBinPath); then echo OK; else echo KO; fi) |
| ifneq "$(micBinPresent)" "OK" |
| # We can't find them in the normal place, so complain. |
| $(error Compiling for Intel\(R\) Many Integrated Core Architecture requires that the cross-hosted binutils are available in $(micBinPath).\ |
| See the Tools tab at http://software.intel.com/mic-developer) |
| endif |
| export PATH := $(micBinPath):${PATH} |
| endif |
| endif |
| |
| export BUILD_COMPILER := $(compiler) |
| |
| |