Skip to content
This repository has been archived by the owner on May 14, 2024. It is now read-only.

Commit

Permalink
Merge pull request #112 from ROCm-Developer-Tools/amd/dev/kzhuravl/cl…
Browse files Browse the repository at this point in the history
…eanup-whitespaces

Cleanup existing double quote handling
  • Loading branch information
kzhuravl authored Jul 27, 2023
2 parents 091ca75 + ddf54b3 commit 863ece8
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 15 deletions.
31 changes: 18 additions & 13 deletions bin/hipcc.pl
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ BEGIN

use hipvars;
$isWindows = $hipvars::isWindows;
$doubleQuote = $hipvars::doubleQuote;
$HIP_RUNTIME = $hipvars::HIP_RUNTIME;
$HIP_PLATFORM = $hipvars::HIP_PLATFORM;
$HIP_COMPILER = $hipvars::HIP_COMPILER;
Expand All @@ -131,6 +132,10 @@ BEGIN
$HIP_VERSION = $hipvars::HIP_VERSION;
$HIP_ROCCLR_HOME = $hipvars::HIP_ROCCLR_HOME;

sub get_normalized_path {
return $doubleQuote . $_[0] . $doubleQuote;
}

if ($HIP_PLATFORM eq "amd") {
$HIP_INCLUDE_PATH = "$HIP_ROCCLR_HOME/include";
if (!defined $HIP_LIB_PATH) {
Expand All @@ -155,17 +160,17 @@ BEGIN
if($isWindows) {
$execExtension = ".exe";
}
$HIPCC="\"$HIP_CLANG_PATH/clang++" . $execExtension . "\"";
$HIPCC=get_normalized_path("$HIP_CLANG_PATH/clang++" . $execExtension);

# If $HIPCC clang++ is not compiled, use clang instead
if ( ! -e $HIPCC ) {
$HIPCC="\"$HIP_CLANG_PATH/clang" . $execExtension . "\"";
$HIPCC=get_normalized_path("$HIP_CLANG_PATH/clang" . $execExtension);
$HIPLDFLAGS = "--driver-mode=g++";
}
# to avoid using dk linker or MSVC linker
if($isWindows) {
$HIPLDFLAGS .= " -fuse-ld=lld";
$HIPLDFLAGS .= " --ld-path=\"$HIP_CLANG_PATH/lld-link.exe\"";
$HIPLDFLAGS .= " --ld-path=" . get_normalized_path("$HIP_CLANG_PATH/lld-link.exe");
}

# get Clang RT Builtin path
Expand Down Expand Up @@ -201,21 +206,21 @@ BEGIN
print ("CUDA_PATH=$CUDA_PATH\n");
}

$HIPCC="\"$CUDA_PATH/bin/nvcc\"";
$HIPCC=get_normalized_path("$CUDA_PATH/bin/nvcc");
$HIPCXXFLAGS .= " -Wno-deprecated-gpu-targets ";
$HIPCXXFLAGS .= " -isystem \"$CUDA_PATH/include\"";
$HIPCFLAGS .= " -isystem \"$CUDA_PATH/include\"";
$HIPCXXFLAGS .= " -isystem " . get_normalized_path("$CUDA_PATH/include");
$HIPCFLAGS .= " -isystem " . get_normalized_path("$CUDA_PATH/include");

$HIPLDFLAGS = " -Wno-deprecated-gpu-targets -lcuda -lcudart -L\"$CUDA_PATH/lib64\"";
$HIPLDFLAGS = " -Wno-deprecated-gpu-targets -lcuda -lcudart -L" . get_normalized_path("$CUDA_PATH/lib64");
} else {
printf ("error: unknown HIP_PLATFORM = '$HIP_PLATFORM'");
printf (" or HIP_COMPILER = '$HIP_COMPILER'");
exit (-1);
}

# Add paths to common HIP includes:
$HIPCXXFLAGS .= " -isystem \"$HIP_INCLUDE_PATH\"" ;
$HIPCFLAGS .= " -isystem \"$HIP_INCLUDE_PATH\"" ;
$HIPCXXFLAGS .= " -isystem " . get_normalized_path("$HIP_INCLUDE_PATH");
$HIPCFLAGS .= " -isystem " . get_normalized_path("$HIP_INCLUDE_PATH");

my $compileOnly = 0;
my $needCXXFLAGS = 0; # need to add CXX flags to compile step
Expand Down Expand Up @@ -294,7 +299,7 @@ BEGIN

if ($skipOutputFile) {
# TODO: handle filename with shell metacharacters
$toolArgs .= " \"$arg\"";
$toolArgs .= " " . get_normalized_path("$arg");
$prevArg = $arg;
$skipOutputFile = 0;
next;
Expand Down Expand Up @@ -466,7 +471,7 @@ BEGIN
if (not $isWindows and $escapeArg) {
$arg =~ s/[^-a-zA-Z0-9_=+,.\/]/\\$&/g;
}
$toolArgs .= " \"$arg\"" unless $swallowArg;
$toolArgs .= " $arg" unless $swallowArg;
$prevArg = $arg;
}

Expand Down Expand Up @@ -561,14 +566,14 @@ BEGIN

# If the HIP_PATH env var is defined, pass that path to Clang
if ($ENV{'HIP_PATH'}) {
my $hip_path_flag = " --hip-path=\"$HIP_PATH\"";
my $hip_path_flag = " --hip-path=" . get_normalized_path("$HIP_PATH");
$HIPCXXFLAGS .= $hip_path_flag;
$HIPLDFLAGS .= $hip_path_flag;
}

if ($hasHIP) {
if (defined $DEVICE_LIB_PATH) {
$HIPCXXFLAGS .= " --hip-device-lib-path=\"$DEVICE_LIB_PATH\"";
$HIPCXXFLAGS .= " --hip-device-lib-path=" . get_normalized_path("$DEVICE_LIB_PATH");
}
}

Expand Down
9 changes: 7 additions & 2 deletions bin/hipvars.pm
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ sub can_run {
}

$isWindows = ($^O eq 'MSWin32' or $^O eq 'msys');
$doubleQuote = "\"";

#
# TODO: Fix rpath LDFLAGS settings
Expand All @@ -86,6 +87,10 @@ if (-e "$HIP_PATH/bin/rocm_agent_enumerator") {
$ROCM_PATH=$ENV{'ROCM_PATH'} // "/opt/rocm";
}
$CUDA_PATH=$ENV{'CUDA_PATH'} // '/usr/local/cuda';
if ($isWindows and defined $ENV{'CUDA_PATH'}) {
$CUDA_PATH =~ s/^"(.*)"$/$1/;
$CUDA_PATH =~ s/\\/\//g;
}

# Windows/Distro's have a different structure, all binaries are with hipcc
if ($isWindows or -e "$HIP_PATH/bin/clang") {
Expand Down Expand Up @@ -124,9 +129,9 @@ if (defined $HIP_RUNTIME and $HIP_RUNTIME eq "rocclr" and !defined $HIP_ROCCLR_H
}

if (not defined $HIP_PLATFORM) {
if (can_run("\"$HIP_CLANG_PATH/clang++\"") or can_run("clang++")) {
if (can_run($doubleQuote . "$HIP_CLANG_PATH/clang++" . $doubleQuote) or can_run("clang++")) {
$HIP_PLATFORM = "amd";
} elsif (can_run("$CUDA_PATH/bin/nvcc") or can_run("nvcc")) {
} elsif (can_run($doubleQuote . "$CUDA_PATH/bin/nvcc" . $doubleQuote) or can_run("nvcc")) {
$HIP_PLATFORM = "nvidia";
$HIP_COMPILER = "nvcc";
$HIP_RUNTIME = "cuda";
Expand Down

0 comments on commit 863ece8

Please sign in to comment.