@@ -97,29 +97,34 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE)
9797 COMMAND clang-tool -cc1 ${CMCL_INCLUDES} ${VC_INCLUDES}
9898 ${EXTRA_CLANG_INCLUDES} ${SPECIAL_CLANG_ARG} ${IGC_BUILD__OPAQUE_POINTERS_DEFAULT_ARG_CLANG} ${EXTRA_CLANG_FLAGS}
9999 -x cl -cl-std=clc++ -triple=${SPIR_TARGET}
100- -O2 -disable-llvm-passes -discard-value -names -emit-llvm-bc -o "${BIF_CLANG_BC_NAME } " ${CMCL_SRC}
100+ -O2 -disable-llvm-passes -discard-value -names -emit-llvm-bc -o "${BIF_CLANG_BC_PATH } " ${CMCL_SRC}
101101 COMMENT "vc_build_bif: Compiling CMCL source ${CMCL_SRC} to BC ${BIF_CLANG_BC_NAME} "
102102 DEPENDS clang-tool "${CMCL_SRC} " ${EXTRA_DEPENDS}
103103 COMMAND_EXPAND_LISTS )
104- list (APPEND BC_PATH_LIST ${BIF_CLANG_BC_PATH} )
104+ list (APPEND BC_PATH_LIST ${BIF_CLANG_BC_PATH} )
105105 endforeach ()
106-
106+
107+ set (OPT_BC_DEPENDS ${BC_PATH_LIST} )
107108 if (LENGTH_CMCL_SRC_PATH GREATER 1)
108109 add_custom_command (OUTPUT ${BIF_CLANG_BC_PATH_FINAL}
109- COMMAND ${LLVM_LINK_EXE} ${OPT_OPAQUE_ARG} ${BC_PATH_LIST} -o ${BIF_CLANG_BC_NAME_FINAL }
110+ COMMAND ${LLVM_LINK_EXE} ${OPT_OPAQUE_ARG} ${BC_PATH_LIST} -o ${BIF_CLANG_BC_PATH_FINAL }
110111 COMMENT "vc_build_bif: Link ${BC_PATH_LIST} together to BC ${BIF_CLANG_BC_NAME_FINAL} "
111112 DEPENDS ${LLVM_LINK_EXE} ${BC_PATH_LIST}
112113 COMMAND_EXPAND_LISTS )
114+ set (OPT_BC_DEPENDS ${BIF_CLANG_BC_PATH_FINAL} )
113115 endif ()
116+
117+ add_custom_command (
118+ OUTPUT ${BIF_OPT_BC_PATH}
119+ COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME} "
120+ COMMAND CMCLTranslatorTool ${OPT_OPAQUE_ARG} -o ${BIF_CMCL_BC_PATH} ${BIF_CLANG_BC_PATH_FINAL}
121+ COMMAND ${LLVM_OPT_EXE} ${OPT_OPAQUE_ARG} --O2 -o ${BIF_OPT_BC_PATH} ${BIF_CMCL_BC_PATH}
122+ DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${OPT_BC_DEPENDS} )
114123
115124 add_custom_target (${TARGET}
116- COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME} "
117- COMMAND CMCLTranslatorTool ${OPT_OPAQUE_ARG} -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL}
118- COMMAND ${LLVM_OPT_EXE} ${OPT_OPAQUE_ARG} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME}
119- DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${BIF_CLANG_BC_PATH_FINAL}
120- BYPRODUCTS ${BIF_OPT_BC_PATH}
125+ DEPENDS ${BIF_OPT_BC_PATH}
121126 SOURCES ${CMCL_SRC_PATH} )
122- set (${RES_FILE} ${BIF_OPT_BC_NAME } PARENT_SCOPE)
127+ set (${RES_FILE} ${BIF_OPT_BC_PATH } PARENT_SCOPE)
123128endfunction ()
124129
125130# Takes binary data as an input (LLVM bitcode is expected) and converts input
@@ -130,20 +135,23 @@ endfunction()
130135# The name for the variable is: {BIF_NAME, PTR_BIT_SIZE, "RawData_size" }.
131136# Args:
132137# RES_FILE - variable name to put generated file path into.
133- # BIF_OPT_BC_NAME - path to the binary data that needs to be embedded.
138+ # BIF_OPT_BC_PATH - path to the binary data that needs to be embedded.
134139# MANGLED_BIF_NAME - the desired name for the embeddable source file.
135140# Path to resulting CPP source code is stored in the specified cmake variable.
136- function (vc_generate_embeddable_source TARGET RES_FILE BIF_OPT_BC_NAME MANGLED_BIF_NAME)
141+ function (vc_generate_embeddable_source TARGET RES_FILE BIF_OPT_BC_PATH MANGLED_BIF_NAME)
137142 set (BIF_CPP_NAME ${MANGLED_BIF_NAME} .cpp)
138143 set (BIF_CPP_PATH ${CMAKE_CURRENT_BINARY_DIR} /${BIF_CPP_NAME} )
139- set (BIF_OPT_BC_PATH ${CMAKE_CURRENT_BINARY_DIR} / ${BIF_OPT_BC_NAME } )
144+ file (RELATIVE_PATH BIF_OPT_BC_NAME ${CMAKE_CURRENT_BINARY_DIR} ${BIF_OPT_BC_PATH } )
140145 set (BIF_SYMBOL ${MANGLED_BIF_NAME} RawData)
141146
142- add_custom_target (${TARGET}
147+ add_custom_command (
148+ OUTPUT ${BIF_CPP_PATH}
143149 COMMENT "vc_generate_embeddable_source: encoding LLVM IR as C array data: ${BIF_OPT_BC_NAME} -> ${BIF_CPP_NAME} "
144- COMMAND ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_NAME} ${BIF_CPP_NAME} ${BIF_SYMBOL} no_attr
145- DEPENDS ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_PATH}
146- BYPRODUCTS ${BIF_CPP_PATH} )
150+ COMMAND ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_PATH} ${BIF_CPP_PATH} ${BIF_SYMBOL} no_attr
151+ DEPENDS ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_PATH} )
152+
153+ add_custom_target (${TARGET}
154+ DEPENDS ${BIF_CPP_PATH} )
147155 set (${RES_FILE} ${BIF_CPP_PATH} PARENT_SCOPE)
148156endfunction ()
149157
@@ -162,13 +170,12 @@ endfunction()
162170# done by VCB tool that is invoked with "-BiFUnique" argument.
163171# Args:
164172# RES_FILE - variable name to put generated file path into.
165- # BIF_OPT_BC_NAME - path to generic library (in a form of bitcode).
173+ # BIF_OPT_BC_PATH - path to generic library (in a form of bitcode).
166174# MANGLED_BIF_NAME - the desired name for the generated source file.
167175# Path to resulting CPP source code is stored in the specified cmake variable.
168- function (vc_generate_optimized_bif TARGET RES_FILE BIF_OPT_BC_NAME MANGLED_BIF_NAME)
176+ function (vc_generate_optimized_bif TARGET RES_FILE BIF_OPT_BC_PATH MANGLED_BIF_NAME)
169177 set (BIF_CPP_NAME ${MANGLED_BIF_NAME} .cpp)
170178 set (BIF_CPP_PATH ${CMAKE_CURRENT_BINARY_DIR} /${BIF_CPP_NAME} )
171- set (BIF_OPT_BC_PATH ${CMAKE_CURRENT_BINARY_DIR} /${BIF_OPT_BC_NAME} )
172179 set (BIF_SYMBOL ${MANGLED_BIF_NAME} RawData)
173180 set (BIF_CONF_NAME "${MANGLED_BIF_NAME} .conf" )
174181 set (BIF_CONF_PATH ${CMAKE_CURRENT_BINARY_DIR} /${BIF_CONF_NAME} )
@@ -178,21 +185,25 @@ function(vc_generate_optimized_bif TARGET RES_FILE BIF_OPT_BC_NAME MANGLED_BIF_N
178185 foreach (PLTF IN LISTS SUPPORTED_VC_PLATFORMS)
179186 set (PLTF_BC_NAME "${MANGLED_BIF_NAME} _${PLTF} .vccg.bc" )
180187 set (PLTF_BC_PATH ${CMAKE_CURRENT_BINARY_DIR} /${PLTF_BC_NAME} )
181- add_custom_target ("${TARGET} -${PLTF} -BC"
188+ add_custom_command (
189+ OUTPUT ${PLTF_BC_PATH}
182190 COMMENT "vc_generate_optimized_bif: compile optimized BiF for ${PLTF} "
183- COMMAND ${VCB_EXE} ${OPT_OPAQUE_ARG} -o ${PLTF_BC_NAME} -cpu ${PLTF} ${BIF_OPT_BC_NAME}
184- DEPENDS ${VCB_EXE} ${BIF_OPT_BC_PATH}
185- BYPRODUCTS ${PLTF_BC_NAME} )
191+ COMMAND ${VCB_EXE} ${OPT_OPAQUE_ARG} -o ${PLTF_BC_PATH} -cpu ${PLTF} ${BIF_OPT_BC_PATH}
192+ DEPENDS ${VCB_EXE} ${BIF_OPT_BC_PATH} )
193+ add_custom_target ("${TARGET} -${PLTF} -BC"
194+ DEPENDS ${PLTF_BC_PATH} )
186195 list (APPEND PLTF_BC_PATH_LIST ${PLTF_BC_PATH} )
187196 endforeach ()
188197
189198 configure_file ("${CMAKE_CURRENT_SOURCE_DIR} /builtins.conf.in"
190199 "${BIF_CONF_PATH} " @ONLY)
191- add_custom_target (${TARGET}
200+ add_custom_command (
201+ OUTPUT ${BIF_CPP_PATH}
192202 COMMENT "vc_generate_optimized_bif: create hashed version of optimized functions"
193- COMMAND ${VCB_EXE} -BiFUnique -symb ${BIF_SYMBOL} -o ${BIF_CPP_NAME} ${BIF_CONF_NAME}
194- DEPENDS ${VCB_EXE} ${BIF_CONF_PATH} ${PLTF_BC_PATH_LIST}
195- BYPRODUCTS ${BIF_CPP_PATH} )
203+ COMMAND ${VCB_EXE} -BiFUnique -symb ${BIF_SYMBOL} -o ${BIF_CPP_PATH} ${BIF_CONF_PATH}
204+ DEPENDS ${VCB_EXE} ${BIF_CONF_PATH} ${PLTF_BC_PATH_LIST} )
205+ add_custom_target (${TARGET}
206+ DEPENDS ${BIF_CPP_PATH} )
196207 set (${RES_FILE} ${BIF_CPP_PATH} PARENT_SCOPE)
197208endfunction ()
198209
0 commit comments