119 lines
4.7 KiB
PHP
119 lines
4.7 KiB
PHP
# Copyright (c) 2005-2016 Intel Corporation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
#
|
|
#
|
|
#
|
|
|
|
ifneq (mic,$(offload))
|
|
$(error File mic.offload.inc should not be included directly. Use offload=mic instead.)
|
|
endif
|
|
ifneq (icc,$(compiler))
|
|
$(error Only Intel(R) Compiler is supported for MIC offload compilation)
|
|
endif
|
|
|
|
# The same build prefix should be used in mic.linux.inc
|
|
mic_tbb_build_prefix=mic_icc$(CPF_SUFFIX)
|
|
MIC_OFFLOAD_NATIVE_PATH?=../$(mic_tbb_build_prefix)_$(cfg)
|
|
|
|
ifdef BUILDING_PHASE
|
|
ifeq ($(BUILDING_PHASE),1)
|
|
# Tests
|
|
export MIC_OFFLOAD_NATIVE_PATH
|
|
LINK_TBB_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(TBB.LIB)
|
|
LINK_TBB.LIB=-qoffload-option,mic,ld,"$(LINK_TBB_NATIVE.LIB)" $(TBB.LIB)
|
|
LINK_MALLOC_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(MALLOC.DLL)
|
|
LINK_MALLOC.LIB=-qoffload-option,mic,ld,"$(LINK_MALLOC_NATIVE.LIB)" $(MALLOC.LIB)
|
|
LINK_MALLOCPROXY_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(MALLOCPROXY.DLL)
|
|
LINK_MALLOCPROXY.LIB=-qoffload-option,mic,ld,"$(LINK_MALLOCPROXY_NATIVE.LIB)" $(MALLOCPROXY.LIB)
|
|
|
|
# Export extensions for test_launcher
|
|
export DLL
|
|
export TEST_EXT=offload.exe
|
|
OBJ=offload.o
|
|
|
|
# Do not use -Werror because it is too strict for the early offload compiler.
|
|
# Need to set anything because WARNING_AS_ERROR_KEY should not be empty.
|
|
# Treat #2426 as a warning. Print errors only.
|
|
tbb_strict=0
|
|
WARNING_AS_ERROR_KEY = Warning as error
|
|
WARNING_KEY = -diag-warning 2426 -w0
|
|
|
|
CXX_MIC_STUFF = -qoffload-attribute-target=mic -D__TBB_MIC_OFFLOAD=1 -qoffload-option,mic,compiler,"-D__TBB_MIC_OFFLOAD=1 $(CXX_MIC_NATIVE_STUFF)"
|
|
CXX_MIC_NATIVE_STUFF = -DHARNESS_INCOMPLETE_SOURCES=1 -D__TBB_MIC_NATIVE -DTBB_USE_EXCEPTIONS=0
|
|
CPLUS_FLAGS += $(CXX_MIC_STUFF)
|
|
|
|
# Some tests require that an executable exports its symbols.
|
|
LINK_FLAGS += -qoffload-option,mic,ld,"--export-dynamic"
|
|
|
|
# libcoi_device.so is needed for COIProcessProxyFlush used in Harness.
|
|
LINK_FLAGS += -qoffload-option,mic,ld,"-lcoi_device"
|
|
|
|
# DSO-linking semantics forces linking libpthread and librt to a test.
|
|
LINK_FLAGS += -qoffload-option,mic,ld,"-lpthread -lrt"
|
|
|
|
.PHONY: FORCE
|
|
FORCE:
|
|
|
|
$(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL): FORCE
|
|
@$(MAKE) --no-print-directory -C "$(MIC_OFFLOAD_NATIVE_PATH)" target=mic offload= -f$(tbb_root)/build/Makefile.$(TESTFILE) $*_dll.$(DLL)
|
|
%_dll.$(DLL): $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL) FORCE
|
|
@$(MAKE) --no-print-directory offload= -f$(tbb_root)/build/Makefile.$(TESTFILE) $*_dll.$(DLL)
|
|
|
|
.PRECIOUS: $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL)
|
|
|
|
%.$(TEST_EXT): LINK_FILES+=-qoffload-option,mic,ld,"$(addprefix $(MIC_OFFLOAD_NATIVE_PATH)/,$(TEST_LIBS))"
|
|
|
|
TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
|
|
|
|
ifdef MIC_LD_LIBRARY_PATH
|
|
export MIC_LD_LIBRARY_PATH := $(MIC_OFFLOAD_NATIVE_PATH):$(MIC_LD_LIBRARY_PATH)
|
|
else
|
|
export MIC_LD_LIBRARY_PATH := $(MIC_OFFLOAD_NATIVE_PATH)
|
|
endif
|
|
else
|
|
# Examples
|
|
export UI = con
|
|
export x64 = 64
|
|
endif
|
|
else
|
|
# Libraries
|
|
LIB_TARGETS = tbb tbbmalloc tbbproxy rml
|
|
addsuffixes = $(foreach suff,$(1),$(addsuffix $(suff),$(2)))
|
|
|
|
.PHONY: $(call addsuffixes, _debug _release _debug_mic _release_mic,$(LIB_TARGETS))
|
|
|
|
# The dependence on *_debug and *_release targets unifies the offload support
|
|
# for top-level Makefile and src/Makefile
|
|
$(LIB_TARGETS): %: %_release %_debug
|
|
|
|
# "override offload=" suppresses the "offload" variable value for nested makes
|
|
$(LIB_TARGETS) $(call addsuffixes, _debug _release,$(LIB_TARGETS)): override offload=
|
|
# Apply overriding for library builds
|
|
export offload
|
|
export tbb_build_prefix
|
|
# Add the dependency on target libraries
|
|
$(call addsuffixes, _debug _release,$(LIB_TARGETS)): %: %_mic
|
|
|
|
# tbb_build_prefix should be overridden since we want to restart make in "clear" environment
|
|
$(call addsuffixes, _debug_mic _release_mic,$(LIB_TARGETS)): override tbb_build_prefix=
|
|
$(call addsuffixes, _debug_mic _release_mic,$(LIB_TARGETS)): %_mic:
|
|
@$(MAKE) --no-print-directory -C "$(full_tbb_root)/src" $* target=mic tbb_root=..
|
|
|
|
mic_clean: override tbb_build_prefix=
|
|
mic_clean:
|
|
@$(MAKE) --no-print-directory -C "$(full_tbb_root)/src" clean offload= target=mic tbb_root=..
|
|
clean: mic_clean
|
|
endif
|