Skip to content

Commit dd6f2a8

Browse files
authored
Added get-aocc script (#240)
* Added get-aocc
1 parent 1d421fc commit dd6f2a8

File tree

4 files changed

+167
-0
lines changed

4 files changed

+167
-0
lines changed

script/get-aocc/customize.py

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
from mlc import utils
2+
import os
3+
4+
5+
def predeps(i):
6+
os_info = i['os_info']
7+
8+
env = i['env']
9+
if env.get('MLC_AOCC_TAR_FILE_PATH', '') != '':
10+
env['MLC_AOCC_NEEDS_TAR'] = 'yes'
11+
12+
return {'return': 0}
13+
14+
15+
def preprocess(i):
16+
17+
os_info = i['os_info']
18+
19+
env = i['env']
20+
21+
exe_c = 'clang.exe' if os_info['platform'] == 'windows' else 'clang'
22+
23+
if env.get('MLC_AOCC_DIR_PATH', '') != '' and env.get(
24+
'MLC_AOCC_BIN_WITH_PATH', '') == '':
25+
for f in os.listdir(env['MLC_AOCC_DIR_PATH']):
26+
if os.path.exists(os.path.join(
27+
env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c)):
28+
env['MLC_AOCC_BIN_WITH_PATH'] = os.path.join(
29+
env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c)
30+
31+
if env.get('MLC_HOST_OS_FLAVOR', '') == 'rhel':
32+
if "12" in env.get('MLC_VERSION', '') or "12" in env.get(
33+
'MLC_VERSION_MIN', ''):
34+
if env.get('MLC_TMP_PATH', '') == '':
35+
env['MLC_TMP_PATH'] = ''
36+
env['MLC_TMP_PATH'] += "/opt/rh/aocc/root/usr/bin"
37+
env['MLC_TMP_PATH_IGNORE_NON_EXISTANT'] = 'yes'
38+
39+
if 'MLC_AOCC_BIN_WITH_PATH' not in env:
40+
r = i['automation'].find_artifact({'file_name': exe_c,
41+
'env': env,
42+
'os_info': os_info,
43+
'default_path_env_key': 'PATH',
44+
'detect_version': True,
45+
'env_path_key': 'MLC_AOCC_BIN_WITH_PATH',
46+
'run_script_input': i['run_script_input'],
47+
'recursion_spaces': i['recursion_spaces']})
48+
if r['return'] > 0:
49+
50+
return r
51+
52+
return {'return': 0}
53+
54+
55+
def detect_version(i):
56+
r = i['automation'].parse_version({'match_text': r'AMD\s+clang\sversion\s([\d.]+)',
57+
'group_number': 1,
58+
'env_key': 'MLC_AOCC_VERSION',
59+
'which_env': i['env']})
60+
if r['return'] > 0:
61+
return r
62+
version = r['version']
63+
64+
print(i['recursion_spaces'] + ' Detected version: {}'.format(version))
65+
66+
return {'return': 0, 'version': version}
67+
68+
69+
def postprocess(i):
70+
71+
env = i['env']
72+
r = detect_version(i)
73+
if r['return'] > 0:
74+
return r
75+
76+
env['MLC_COMPILER_FAMILY'] = 'AOCC'
77+
version = r['version']
78+
env['MLC_COMPILER_VERSION'] = env['MLC_AOCC_VERSION']
79+
env['MLC_AOCC_CACHE_TAGS'] = 'version-' + version
80+
env['MLC_COMPILER_CACHE_TAGS'] = 'version-' + version + ',family-aocc'
81+
82+
found_file_path = env['MLC_AOCC_BIN_WITH_PATH']
83+
84+
found_path = os.path.dirname(found_file_path)
85+
86+
env['MLC_AOCC_INSTALLED_PATH'] = found_path
87+
88+
file_name_c = os.path.basename(found_file_path)
89+
file_name_cpp = file_name_c.replace('clang', 'clang++')
90+
env['FILE_NAME_CPP'] = file_name_cpp
91+
92+
env['MLC_AOCC_BIN'] = file_name_c
93+
94+
# General compiler for general program compilation
95+
env['MLC_C_COMPILER_BIN'] = file_name_c
96+
env['MLC_C_COMPILER_FLAG_OUTPUT'] = '-o '
97+
env['MLC_C_COMPILER_WITH_PATH'] = found_file_path
98+
env['MLC_C_COMPILER_FLAG_VERSION'] = '--version'
99+
100+
env['MLC_CXX_COMPILER_BIN'] = file_name_cpp
101+
env['MLC_CXX_COMPILER_WITH_PATH'] = os.path.join(found_path, file_name_cpp)
102+
env['MLC_CXX_COMPILER_FLAG_OUTPUT'] = '-o '
103+
env['MLC_CXX_COMPILER_FLAG_VERSION'] = '--version'
104+
105+
env['MLC_COMPILER_FLAGS_FAST'] = "-O3"
106+
env['MLC_LINKER_FLAGS_FAST'] = "-O3"
107+
env['MLC_COMPILER_FLAGS_DEBUG'] = "-O0"
108+
env['MLC_LINKER_FLAGS_DEBUG'] = "-O0"
109+
env['MLC_COMPILER_FLAGS_DEFAULT'] = "-O2"
110+
env['MLC_LINKER_FLAGS_DEFAULT'] = "-O2"
111+
112+
return {'return': 0, 'version': version}

script/get-aocc/meta.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
alias: get-aocc
2+
automation_alias: script
3+
automation_uid: 5b4e0237da074764
4+
cache: true
5+
category: Compiler automation
6+
clean_files: []
7+
deps:
8+
- tags: detect,os
9+
- tags: extract,file
10+
update_tags_from_env_with_prefix:
11+
_path.:
12+
- MLC_AOCC_TAR_FILE_PATH
13+
force_cache: true
14+
env:
15+
MLC_EXTRACT_FINAL_ENV_NAME: MLC_AOCC_DIR_PATH
16+
MLC_EXTRACT_TO_FOLDER: aocc_install
17+
enable_if_env:
18+
MLC_AOCC_NEEDS_TAR:
19+
- yes
20+
21+
input_mapping:
22+
tar_file_path: MLC_AOCC_TAR_FILE_PATH
23+
24+
name: Detect or install AOCC compiler
25+
new_env_keys:
26+
- MLC_AOCC_*
27+
- MLC_C_COMPILER_*
28+
- MLC_CXX_COMPILER_*
29+
- MLC_COMPILER_*
30+
- MLC_LINKER_*
31+
- + CFLAGS
32+
- + CXXFLAGS
33+
- + FFLAGS
34+
- + LDFLAGS
35+
- +MLC_HOST_OS_DEFAULT_INCLUDE_PATH
36+
- +PATH
37+
post_depsq:
38+
- tags: get,compiler-flags
39+
sort: 500
40+
tags:
41+
- compiler
42+
- get
43+
- aocc
44+
uid: 1ceb0656e99a44ec

script/get-aocc/run.bat

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
%MLC_AOCC_BIN_WITH_PATH% --version > tmp-ver.out
2+
IF %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%
3+

script/get-aocc/run.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
aocc_bin=${MLC_AOCC_BIN_WITH_PATH}
3+
echo "${aocc_bin} --version"
4+
5+
${aocc_bin} --version > tmp-ver.out
6+
test $? -eq 0 || exit $?
7+
8+
cat tmp-ver.out

0 commit comments

Comments
 (0)