You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							170 lines
						
					
					
						
							8.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							170 lines
						
					
					
						
							8.6 KiB
						
					
					
				| # Copyright 2005-2013 Intel Corporation.  All Rights Reserved. | |
| # | |
| # This file is part of Threading Building Blocks. | |
| # | |
| # Threading Building Blocks is free software; you can redistribute it | |
| # and/or modify it under the terms of the GNU General Public License | |
| # version 2 as published by the Free Software Foundation. | |
| # | |
| # Threading Building Blocks 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 General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with Threading Building Blocks; if not, write to the Free Software | |
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | |
| # | |
| # As a special exception, you may use this file as part of a free software | |
| # library without restriction.  Specifically, if other files instantiate | |
| # templates or use macros or inline functions from this file, or you compile | |
| # this file and link it with other files to produce an executable, this | |
| # file does not by itself cause the resulting executable to be covered by | |
| # the GNU General Public License.  This exception does not however | |
| # invalidate any other reasons why the executable file might be covered by | |
| # the GNU General Public 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 | |
| 
 | |
| tbb_offload_build_prefix?=mic_offload_icc$(CPF_SUFFIX) | |
| # The same build prefix should be used in mic.linux.inc | |
| export tbb_mic_build_prefix?=mic_icc$(CPF_SUFFIX) | |
| initial_tbb_root:=$(tbb_root) | |
| 
 | |
| ifndef BUILDING_PHASE | |
| tbb_native_debug: | |
| 	$(MAKE) tbb_debug target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbb_native_release: | |
| 	$(MAKE) tbb_release target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbbmalloc_native_debug: | |
| 	$(MAKE) tbbmalloc_debug target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbbmalloc_native_release: | |
| 	$(MAKE) tbbmalloc_release target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| rml_native_debug: | |
| 	$(MAKE) rml_debug target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| rml_native_release: | |
| 	$(MAKE) rml_release target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbb_native: | |
| 	$(MAKE) tbb target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbbmalloc_native: | |
| 	$(MAKE) tbbmalloc target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| rml_native: | |
| 	$(MAKE) rml target=mic compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbb_host_debug: | |
| 	$(MAKE) tbb_debug compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbb_host_release: | |
| 	$(MAKE) tbb_release compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbbmalloc_host_debug: | |
| 	$(MAKE) tbbmalloc_debug compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| tbbmalloc_host_release: | |
| 	$(MAKE) tbbmalloc_release compiler=icc offload= tbb_root=$(initial_tbb_root) | |
| 
 | |
| # The work_dir variable can not be set via target-specific variable mechanism | |
| # since it will affect other targets on which the target depends. | |
| # So work_dir is set via eval function inside the recipe. | |
| prepare_test_offload_dir_debug: initial_tbb_build_dir:=$(tbb_build_dir) | |
| prepare_test_offload_dir_debug: tbb_host_debug tbbmalloc_host_debug tbb_native_debug tbbmalloc_native_debug | |
| 	$(eval work_dir=$(initial_tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix)) | |
| 	$(shell $(MD) "$(work_dir)_debug$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_build_prefix)_debug$(SLASH)lib"* "$(work_dir)_debug" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_mic_build_prefix)_debug$(SLASH)lib"* "$(work_dir)_debug$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(eval export TEST_COMPILATION=1) | |
| 
 | |
| prepare_test_offload_dir_release: initial_tbb_build_dir:=$(tbb_build_dir) | |
| prepare_test_offload_dir_release: tbb_host_release tbbmalloc_host_release tbb_native_release tbbmalloc_native_release | |
| 	$(eval work_dir=$(initial_tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix)) | |
| 	$(shell $(MD) "$(work_dir)_release$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_build_prefix)_release$(SLASH)lib"* "$(work_dir)_release" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_mic_build_prefix)_release$(SLASH)lib"* "$(work_dir)_release$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(eval export TEST_COMPILATION=1) | |
| 
 | |
| prepare_test_offload_dir: initial_tbb_build_dir:=$(tbb_build_dir) | |
| prepare_test_offload_dir: tbb tbbmalloc tbb_native tbbmalloc_native | |
| 	$(eval work_dir=$(initial_tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix)) | |
| 	$(shell $(MD) "$(work_dir)_debug$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(MD) "$(work_dir)_release$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_build_prefix)_debug$(SLASH)lib"* "$(work_dir)_debug" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_build_prefix)_release$(SLASH)lib"* "$(work_dir)_release" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_mic_build_prefix)_debug$(SLASH)lib"* "$(work_dir)_debug$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(shell $(CP) "$(initial_tbb_build_dir)$(SLASH)$(tbb_mic_build_prefix)_release$(SLASH)lib"* "$(work_dir)_release$(SLASH)mic" >$(NUL) 2>$(NUL)) | |
| 	$(eval export TEST_COMPILATION=1) | |
| 
 | |
| test: prepare_test_offload_dir | |
| tbb_test_debug: prepare_test_offload_dir_debug | |
| tbb_test_release: prepare_test_offload_dir_release | |
| tbbmalloc_test_debug: prepare_test_offload_dir_debug | |
| tbbmalloc_test_release: prepare_test_offload_dir_release | |
| rml_test_debug: rml_native_debug prepare_test_offload_dir_debug | |
| rml_test_release: rml_native_release prepare_test_offload_dir_release | |
| 
 | |
| debug_% test_% stress_% time_% perf_%:: work_dir:=$(tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix) | |
| debug_% test_% stress_% time_% perf_%:: export TEST_COMPILATION=1 | |
| 
 | |
| clean: work_dir:=$(tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix) | |
| # The _clean* targets begin with an underscore symbol to prevent a collision with the clean_% template | |
| clean: _clean_mic_subdir_debug _clean_mic_subdir_release _clean_host _clean_mic | |
| clean_release: work_dir:=$(tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix) | |
| clean_release: _clean_mic_subdir_release _clean_host_release _clean_mic_release | |
| clean_debug: work_dir:=$(tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix) | |
| clean_debug: _clean_mic_subdir_debug _clean_host_debug _clean_mic_debug | |
| clean_%:: work_dir:=$(tbb_build_dir)$(SLASH)$(tbb_offload_build_prefix) | |
| 
 | |
| _clean_mic_subdir_debug: | |
| 	$(shell $(RM) $(work_dir)_debug$(SLASH)mic/$(SLASH)*.* >$(NUL) 2>$(NUL)) | |
| 	$(shell $(RD) $(work_dir)_debug$(SLASH)mic >$(NUL) 2>$(NUL)) | |
| _clean_mic_subdir_release: | |
| 	$(shell $(RM) $(work_dir)_release$(SLASH)mic/$(SLASH)*.* >$(NUL) 2>$(NUL)) | |
| 	$(shell $(RD) $(work_dir)_release$(SLASH)mic >$(NUL) 2>$(NUL)) | |
| _clean_host: | |
| 	$(MAKE) clean tbb_root=$(initial_tbb_root) offload= | |
| _clean_mic: | |
| 	$(MAKE) clean target=mic tbb_root=$(initial_tbb_root) offload= | |
| _clean_host_release: | |
| 	$(MAKE) clean_release tbb_root=$(initial_tbb_root) offload= | |
| _clean_host_debug: | |
| 	$(MAKE) clean_debug tbb_root=$(initial_tbb_root) offload= | |
| _clean_mic_release: | |
| 	$(MAKE) clean_release target=mic tbb_root=$(initial_tbb_root) offload= | |
| _clean_mic_debug: | |
| 	$(MAKE) clean_debug target=mic tbb_root=$(initial_tbb_root) offload= | |
| endif | |
| 
 | |
| ifeq ($(TEST_COMPILATION),1) | |
|   ifdef MIC_LD_LIBRARY_PATH | |
|     export MIC_LD_LIBRARY_PATH := ./mic:$(MIC_LD_LIBRARY_PATH) | |
|   else | |
|     export MIC_LD_LIBRARY_PATH := ./mic | |
|   endif | |
|   LINK_TBB.LIB=-offload-option,mic,ld,"./mic/$(TBB.LIB)" $(TBB.LIB) | |
|   LINK_MALLOC_LIB=-offload-option,mic,ld,"./mic/$(MALLOC.DLL)" $(MALLOC.DLL) | |
|   LINK_MALLOC_PROXY_LIB=-offload-option,mic,ld,"./mic/$(MALLOCPROXY.DLL)" $(MALLOCPROXY.DLL) | |
|   LINK_FLAGS = | |
|   LIB_LINK_FLAGS += $(DYLIB_KEY) | |
|   # 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 | |
|   override WARNING_AS_ERROR_KEY = Warning as error | |
|   override WARNING_KEY = -diag-warning 2426 -w0 | |
|   # Enable mic-specific stuff. | |
|   CXX_MIC_STUFF = -offload-attribute-target=mic -D__TBB_MIC_OFFLOAD=1 \ | |
|           -offload-option,mic,compiler,"-D__TBB_MIC_OFFLOAD=1 -DHARNESS_INCOMPLETE_SOURCES=1 -D__TBB_MIC_NATIVE -DTBB_USE_EXCEPTIONS=0" | |
|   CPLUS_FLAGS += $(CXX_MIC_STUFF) | |
|   export OFFLOAD_EXECUTION = 1 | |
|   # Workaround to skip the RML tests in the offload mode | |
|   TBB_DEP_NON_RML_TEST = | |
|   TBB_DEP_RML_TEST = | |
|   RML_TBB_CLIENT.OBJ =  | |
|   RML_OMP_CLIENT.OBJ = | |
| endif | |
| 
 | |
| # detects whether examples are being built. | |
| ifeq ($(BUILDING_PHASE),0) | |
|   export UI = con | |
|   export x64 = 64 | |
| endif # examples
 |