#!/usr/bin/env python #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Copyright 2010 California Institute of Technology. ALL RIGHTS RESERVED. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # United States Government Sponsorship acknowledged. This software is subject to # U.S. export control laws and regulations and has been classified as 'EAR99 NLR' # (No [Export] License Required except when exporting to an embargoed country, # end user, or in support of a prohibited end use). By downloading this software, # the user agrees to comply with all applicable U.S. export laws and regulations. # The user has the responsibility to obtain export licenses, or other export # authority as may be required before exporting this software to any 'EAR99' # embargoed foreign country or citizen of those countries. # # Author: Giangi Sacco #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ import os Import('envGPUampcor') package = envGPUampcor['PACKAGE'] project = envGPUampcor['PROJECT'] build = envGPUampcor['PRJ_SCONS_BUILD'] + '/' + package + '/' + project + '/src' listFiles=['GPUamp.cu'] if envGPUampcor['GPU_ACC_ENABLED']: envGPUampcor.Install(build,listFiles) envGPUampcor.Alias('build', build) # Need to execute particular commands for Ampcor given its design, so build the objects directly into the build directory and link # them in the src/SConscript build_base = "nvcc " if 'NVCC_CCBIN' in envGPUampcor: print('User requested specific system compiler for nvcc.') build_base += "-ccbin " + envGPUampcor['NVCC_CCBIN'] + " " else: print('Assuming default system compiler for nvcc.') build_base += "-shared -Xcompiler -fPIC -O3 " build_cmd = build_base + "-dc -m64 -o $TARGET -c $SOURCE" built_path = os.path.join(build, 'gpu-ampcor.o') linked_path = os.path.join(build, 'gpu-ampcor-linked.o') envGPUampcor.Command(built_path, 'GPUamp.cu', build_cmd) link_cmd = build_base + "-dlink $SOURCE -o $TARGET -lcublas_static -lcufft_static -lculibos -lcublas_device -lcudart -lcudadevrt" envGPUampcor.Command(linked_path, built_path, link_cmd)