1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
# Copyright (c) 2005-2018 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.
#
#
#
#
# This file should be always located and called in $(tbb_root)/examples
# Usage:
# make [all] [clean] [release] [debug] [test]
# executes specified targets for all examples.
# make {example's dir}/{target}
# calls specified example with specified target.
# For instance: make task/tree_sum/all
tbb_root?=..
BUILDING_PHASE:=0
include ../build/common.inc
#check, if tbb_root is not absolute path (the filter keeps only /* paths)
ifeq ($(filter /% $(SLASH)%, $(subst :, ,$(tbb_root)) ),)
# also changes related variables like work_dir
override tbb_root := $(CWD)$(SLASH)..
export TBBROOT := $(tbb_root)
endif
override CXXFLAGS += $(CXX_STD_FLAGS)
# give stdver priotity over autodetection
ifneq (,$(stdver))
CXX0XFLAGS=-std=$(stdver)
endif
# empty CXX0XFLAGS exported as well, to have control over C++ autodetection
export CXX0XFLAGS
ifeq ($(tbb_os),windows)
ifeq ($(UNIXMODE),1)
EXAMPLE_MAKEFILE = Makefile
EXAMPLES = $(wildcard */*/$(EXAMPLE_MAKEFILE))
ifeq ($(compiler),gcc)
override CXXFLAGS += -Wl,--enable-auto-import
endif
export CPATH := $(CPATH);$(tbb_root)/include
export LIBRARY_PATH := $(LIBRARY_PATH);$(work_dir)_release;$(work_dir)_debug
export RM = cmd /C del /Q /F
else
EXAMPLE_MAKEFILE = Makefile.windows
EXAMPLES = $(wildcard */*/$(EXAMPLE_MAKEFILE))
EXAMPLE_MAKEFILE := $(if $(EXAMPLES),Makefile.windows,Makefile)
export INCLUDE := $(tbb_root)$(SLASH)include;$(INCLUDE)
export LIB := $(work_dir)_release;$(work_dir)_debug;$(LIB)
endif
work_dir := $(subst /,$(SLASH),$(work_dir))
export PATH := $(work_dir)_release;$(work_dir)_debug;$(PATH)
export TBB_ARCH_PLATFORM = $(arch)\$(runtime)
export TBB_TARGET_ARCH = $(arch)
else
EXAMPLE_MAKEFILE = Makefile
EXAMPLES := $(wildcard */*/$(EXAMPLE_MAKEFILE))
# platform-specific settings
ifeq ($(arch),ia64)
override CXXFLAGS += $(PIC_KEY)
endif
ifneq ($(filter suncc gcc clang,$(compiler)),)
ifeq ($(compiler),suncc)
override CXXFLAGS += -I$(tbb_root)$(SLASH)include -library=stlport4 -M$(tbb_root)/build/suncc.map.pause -erroff=unassigned,attrskipunsup,badargtype2w,badbinaryopw,wbadasg,wvarhidemem,wbadinit
endif
ifeq ($(arch),intel64)
override CXXFLAGS += -m64
endif
ifeq ($(arch),ia32)
override CXXFLAGS += -m32
endif
ifeq ($(arch),ppc64)
override CXXFLAGS += -m64
endif
ifeq ($(arch),ppc32)
override CXXFLAGS += -m32
endif
ifeq ($(arch),sparc)
override CXXFLAGS += -mcpu=v9 -m64
endif
endif
ifeq ($(compiler),xl)
# -qsuppress=1540-0198 suppresses warnings like "1540-0198 (W) The omitted keyword "private" is assumed for base class "no_copy"."
# -qsuppress=1540-1401 suppresses warnings like "1540-1401 (I) An unknown "pragma ivdep" is specified."
override CXXFLAGS += -I$(tbb_root)$(SLASH)include -qsuppress=1540-0198:1540-1401 -L$(work_dir)_release -L$(work_dir)_debug
ifeq ($(arch),intel64)
override CXXFLAGS += -q64
endif
ifeq ($(arch),ia32)
override CXXFLAGS += -q32
endif
ifeq ($(arch),ppc64)
override CXXFLAGS += -q64
endif
ifeq ($(arch),ppc32)
override CXXFLAGS += -q32
endif
endif
ifeq ($(tbb_os),macos)
export DYLD_LIBRARY_PATH := $(DYLD_LIBRARY_PATH):$(work_dir)_release:$(work_dir)_debug
override CXXFLAGS += -Wl,-rpath,$(work_dir)_release -Wl,-rpath,$(work_dir)_debug
else
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(work_dir)_release:$(work_dir)_debug
ifeq ($(findstring mic,$(offload) $(target)),mic)
mic_path=$(tbb_build_dir)$(SLASH)$(mic_tbb_build_prefix)
export MIC_LIBRARY_PATH := $(mic_path)_release:$(mic_path)_debug:$(MIC_LIBRARY_PATH)
export MIC_LD_LIBRARY_PATH := $(mic_path)_release:$(mic_path)_debug:$(MIC_LD_LIBRARY_PATH)
else
# -L necessary for non-native compilers which don't search $LIBRARY_PATH
override CXXFLAGS += -L$(work_dir)_release -L$(work_dir)_debug
endif
endif
export LIBS
export LIBRARY_PATH := $(LIBRARY_PATH):$(work_dir)_release:$(work_dir)_debug
export CPATH := $(CPATH):$(tbb_root)/include
endif
export CXXFLAGS
COMMON_TARGETS := all clean release debug test perf_build perf_run
# list of directories of examples
EXAMPLES_DIRS := $(foreach T,$(EXAMPLES),$(dir $(T)))
# targets to explicitly call example have format: {example's dir}/{example's target}
EXAMPLES_TARGETS := $(foreach T,$(COMMON_TARGETS),$(addsuffix $(T),$(EXAMPLES_DIRS)))
.PHONY: $(COMMON_TARGETS) $(EXAMPLES_TARGETS)
.DEFAULT: all
# execute standard targets for all examples
$(COMMON_TARGETS):: % : $(addsuffix %,$(EXAMPLES_DIRS))
# proxy rule for calling appropriate example
$(EXAMPLES_TARGETS)::
@echo ------------------------ $@ ------------------------
-$(MAKE) -C $(@D) -f $(EXAMPLE_MAKEFILE) $(notdir $@) CXX="$(CPLUS)" $(if $(run_cmd),run_cmd="$(run_cmd)",) $(if $(args),ARGS="$(args)",) $(if $(UI),UI="$(UI)")
printenv:
ifeq ($(tbb_os),windows)
@cmd /C set PATH
@cmd /C set LIB
@cmd /C set INCLUDE
else
@env | grep PATH
endif
|