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.
		
		
		
		
		
			
		
			
				
					
					
						
							129 lines
						
					
					
						
							4.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							129 lines
						
					
					
						
							4.5 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.
							 | 
						|
								
							 | 
						|
								ifeq ($(tbb_strict),1)
							 | 
						|
								  ifeq ($(WARNING_AS_ERROR_KEY),)
							 | 
						|
								    $(error WARNING_AS_ERROR_KEY is empty)
							 | 
						|
								  endif
							 | 
						|
								  # Do not remove line below!
							 | 
						|
								  WARNING_KEY += $(WARNING_AS_ERROR_KEY)
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								ifndef TEST_EXT
							 | 
						|
								    TEST_EXT = exe
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								.PRECIOUS: %.$(OBJ) %.$(TEST_EXT) %.res
							 | 
						|
								
							 | 
						|
								INCLUDES += $(INCLUDE_KEY)$(tbb_root)/src $(INCLUDE_KEY)$(tbb_root)/src/rml/include $(INCLUDE_KEY)$(tbb_root)/include
							 | 
						|
								
							 | 
						|
								CPLUS_FLAGS += $(WARNING_KEY) $(CXXFLAGS)
							 | 
						|
								ifeq ($(tbb_cpf),1)
							 | 
						|
								CPLUS_FLAGS += $(DEFINE_KEY)__TBB_CPF_BUILD=1
							 | 
						|
								endif
							 | 
						|
								LINK_FLAGS += $(LDFLAGS)
							 | 
						|
								LIB_LINK_FLAGS += $(LDFLAGS)
							 | 
						|
								CPLUS_FLAGS_NOSTRICT = $(subst -strict-ansi,-ansi,$(CPLUS_FLAGS))
							 | 
						|
								
							 | 
						|
								LIB_LINK_CMD ?= $(CPLUS) $(PIC_KEY)
							 | 
						|
								ifeq ($(origin LIB_OUTPUT_KEY), undefined)
							 | 
						|
								    LIB_OUTPUT_KEY = $(OUTPUT_KEY)
							 | 
						|
								endif
							 | 
						|
								ifeq ($(origin LIB_LINK_LIBS), undefined)
							 | 
						|
								    LIB_LINK_LIBS = $(LIBDL) $(LIBS)
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								CONLY ?= $(CPLUS)
							 | 
						|
								
							 | 
						|
								# The most generic rules
							 | 
						|
								%.$(OBJ): %.cpp
							 | 
						|
									$(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
							 | 
						|
								
							 | 
						|
								%.$(OBJ): %.c
							 | 
						|
									$(CONLY) $(COMPILE_ONLY) $(C_FLAGS) $(INCLUDES) $<
							 | 
						|
								
							 | 
						|
								%.$(OBJ): %.asm
							 | 
						|
									$(ASM) $(ASM_FLAGS) $<
							 | 
						|
								
							 | 
						|
								%.$(OBJ): %.s
							 | 
						|
									cpp <$< | grep -v '^#' >$*.tmp
							 | 
						|
									$(ASM) $(ASM_FLAGS) -o $@ $*.tmp
							 | 
						|
								
							 | 
						|
								# Rule for generating .E file if needed for visual inspection
							 | 
						|
								# Note that due to mapping for ICL all uses of PREPROC_ONLY should be immediately followed by a file name
							 | 
						|
								%.E: %.cpp
							 | 
						|
									$(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $(PREPROC_ONLY) $< >$@
							 | 
						|
								
							 | 
						|
								# TODO Rule for generating .asm file if needed for visual inspection
							 | 
						|
								%.asm: %.cpp
							 | 
						|
									$(CPLUS) /c /FAs /Fa $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $<
							 | 
						|
								
							 | 
						|
								# TODO Rule for generating .s file if needed for visual inspection
							 | 
						|
								%.s: %.cpp
							 | 
						|
									$(CPLUS) -S $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $<
							 | 
						|
								
							 | 
						|
								# Customizations
							 | 
						|
								
							 | 
						|
								ifeq (1,$(TBB_NOSTRICT))
							 | 
						|
								# GNU 3.2.3 headers have a ISO syntax that is rejected by Intel compiler in -strict-ansi mode.
							 | 
						|
								# The Mac uses gcc, so the list is empty for that platform.
							 | 
						|
								# The files below need the -strict-ansi flag downgraded to -ansi to compile
							 | 
						|
								
							 | 
						|
								$(KNOWN_NOSTRICT): %.$(OBJ): %.cpp
							 | 
						|
									$(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS_NOSTRICT) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								$(KNOWN_WARNINGS): %.$(OBJ): %.cpp
							 | 
						|
									$(CPLUS) $(COMPILE_ONLY) $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
							 | 
						|
								
							 | 
						|
								tbb_misc.$(OBJ): tbb_misc.cpp version_string.ver
							 | 
						|
									$(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDE_KEY). $(INCLUDES) $<
							 | 
						|
								
							 | 
						|
								tbb_misc.E: tbb_misc.cpp version_string.ver
							 | 
						|
									$(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDE_KEY). $(INCLUDES) $(PREPROC_ONLY) $< >$@
							 | 
						|
								
							 | 
						|
								%.res: %.rc version_string.ver $(TBB.MANIFEST)
							 | 
						|
									rc /Fo$@ $(INCLUDES) $(filter /D%,$(CPLUS_FLAGS)) $<
							 | 
						|
								
							 | 
						|
								ifneq (,$(TBB.MANIFEST))
							 | 
						|
								$(TBB.MANIFEST):
							 | 
						|
									cmd /C "echo #include ^<stdio.h^> >tbbmanifest.c"
							 | 
						|
									cmd /C "echo int main(){return 0;} >>tbbmanifest.c"
							 | 
						|
									cl /nologo $(C_FLAGS) tbbmanifest.c
							 | 
						|
								
							 | 
						|
								version_string.ver: $(TBB.MANIFEST)
							 | 
						|
									$(MAKE_VERSIONS)
							 | 
						|
									cmd /C "echo #define TBB_MANIFEST 1 >> version_string.ver"
							 | 
						|
								
							 | 
						|
								else
							 | 
						|
								version_string.ver:
							 | 
						|
									$(MAKE_VERSIONS)
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								# Rules for generating a test DLL
							 | 
						|
								%_dll.$(OBJ): %.cpp
							 | 
						|
									$(CPLUS) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(CPLUS_FLAGS) $(PIC_KEY) $(DEFINE_KEY)_USRDLL $(INCLUDES) $<
							 |