diff --git a/projects/rocprofiler/bin/build_kernel.sh b/projects/rocprofiler/bin/build_kernel.sh index e89cf5618d..b6f33ab888 100755 --- a/projects/rocprofiler/bin/build_kernel.sh +++ b/projects/rocprofiler/bin/build_kernel.sh @@ -1,4 +1,5 @@ #!/bin/sh -x +SO_EXT="hsaco" TEST_NAME=$1 DST_DIR=$2 @@ -7,9 +8,10 @@ TGT_LIST=$4 if [ -z "$TEST_NAME" ] ; then echo "Usage: $0 " - echo " Will look for .cl and will build .so dynamic object library" + echo " Will look for .cl and will build .$SO_EXT dynamic code object library" exit 1 fi +OBJ_NAME=$(echo "_$(basename $TEST_NAME)" | sed -e 's/_./\U&\E/g' -e 's/_//g') if [ -z "$DST_DIR" ] ; then DST_DIR=$(dirname TEST_NAME) @@ -29,21 +31,34 @@ if [ -z "$TGT_LIST" ] ; then fi OCL_VER="2.0" -OCL_DIR=$ROCM_DIR/opencl -LLVM_DIR=$ROCM_DIR/hcc -CLANG=$LLVM_DIR/bin/clang +if [ -e $ROCM_DIR/llvm ] ; then + LLVM_DIR=$ROCM_DIR/llvm + LIB_DIR=$ROCM_DIR/lib/bitcode +else + LLVM_DIR=$ROCM_DIR/hcc + LIB_DIR=$LLVM_DIR/lib +fi + +CLANG_ROOT=$LLVM_DIR/lib/clang +CLANG_DIR=`ls -d $CLANG_ROOT/* | head -n 1` +if [ "$CLANG_DIR" = "" ] ; then + echo "Error: LLVM clang library was not found" + exit 1 +fi + +BIN_DIR=$LLVM_DIR/bin +INC_DIR=$CLANG_DIR/include BITCODE_OPTS="\ - -Xclang -mlink-bitcode-file -Xclang $LLVM_DIR/lib/opencl.amdgcn.bc \ - -Xclang -mlink-bitcode-file -Xclang $LLVM_DIR/lib/ockl.amdgcn.bc \ - -Xclang -mlink-bitcode-file -Xclang $LLVM_DIR/lib/ocml.amdgcn.bc" + -Xclang -mlink-bitcode-file -Xclang $LIB_DIR/opencl.amdgcn.bc \ + -Xclang -mlink-bitcode-file -Xclang $LIB_DIR/ockl.amdgcn.bc \ + -Xclang -mlink-bitcode-file -Xclang $LIB_DIR/ocml.amdgcn.bc" for GFXIP in $TGT_LIST ; do OBJ_PREF=$GFXIP - OBJ_NAME=$(echo "_$(basename $TEST_NAME)" | sed -e 's/_./\U&\E/g' -e 's/_//g') - OBJ_FILE=${OBJ_PREF}_${OBJ_NAME}.hsaco - $CLANG -cl-std=CL$OCL_VER -include $OCL_DIR/include/opencl-c.h $BITCODE_OPTS -target amdgcn-amd-amdhsa -mcpu=$GFXIP -mno-code-object-v3 $TEST_NAME.cl -o $DST_DIR/$OBJ_FILE - echo "'$OBJ_FILE' is generated for '$GFXIP'" + OBJ_FILE="${OBJ_PREF}_${OBJ_NAME}.$SO_EXT" + $BIN_DIR/clang -cl-std=CL$OCL_VER -include $INC_DIR/opencl-c.h $BITCODE_OPTS -target amdgcn-amd-amdhsa -mcpu=$GFXIP -mno-code-object-v3 $TEST_NAME.cl -o $DST_DIR/$OBJ_FILE + echo "'$OBJ_FILE' generated" done exit 0