#!/usr/bin/env python

from __future__ import print_function

import sys
import os
import traceback

if len(sys.argv) != 3:
    print('Usage: "generate_spirv_offline.py <compilation_cache_dir> <cl_device_info_file>"')
    exit(1)

compilation_cache_dir = sys.argv[1]
cl_device_info_filename = sys.argv[2]

def generate_spirv():
    print("Generating SPIR-V files")
    build_options = ''
    
    if os.path.exists(compilation_cache_dir):
        for root, dirs, files in os.walk(compilation_cache_dir):
            for file in files:
                if file.endswith('.cl'):
                    options_file_name = file[:-2] + "options"
                    if os.path.exists(os.path.join(root, options_file_name)):
                        optFile = open (os.path.join(root, options_file_name), 'r')
                        build_options = optFile.readline().strip()
                        print(build_options)
                    source_filename = os.path.join(root, file)
                    output_filename = os.path.join(root, file[:-2]) + "spv"

                    command_line = ("cl_offline_compiler" +
                                    " --source=" + source_filename +
                                    " --output=" + output_filename +
                                    " --cl-device-info=" + cl_device_info_filename +
                                    " --mode=spir-v -- " +
                                    '"' + build_options + '"')
                    print(command_line)
                    os.system(command_line)
    return 0

def main():
    try: 
        generate_spirv()
    except Exception: 
        traceback.print_exc(file=sys.stdout)
    sys.exit(0)

if __name__ == "__main__":
    main()