Server IP : 103.119.228.120 / Your IP : 13.59.183.186 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/mysqlsh/lib/python3.9/site-packages/setuptools/_distutils/ |
Upload File : |
"""distutils.zosccompiler Contains the selection of the c & c++ compilers on z/OS. There are several different c compilers on z/OS, all of them are optional, so the correct one needs to be chosen based on the users input. This is compatible with the following compilers: IBM C/C++ For Open Enterprise Languages on z/OS 2.0 IBM Open XL C/C++ 1.1 for z/OS IBM XL C/C++ V2.4.1 for z/OS 2.4 and 2.5 IBM z/OS XL C/C++ """ import os from . import sysconfig from .errors import CompileError, DistutilsExecError from .unixccompiler import UnixCCompiler _cc_args = { 'ibm-openxl': [ '-m64', '-fvisibility=default', '-fzos-le-char-mode=ascii', '-fno-short-enums', ], 'ibm-xlclang': [ '-q64', '-qexportall', '-qascii', '-qstrict', '-qnocsect', '-Wa,asa,goff', '-Wa,xplink', '-qgonumber', '-qenum=int', '-Wc,DLL', ], 'ibm-xlc': [ '-q64', '-qexportall', '-qascii', '-qstrict', '-qnocsect', '-Wa,asa,goff', '-Wa,xplink', '-qgonumber', '-qenum=int', '-Wc,DLL', '-qlanglvl=extc99', ], } _cxx_args = { 'ibm-openxl': [ '-m64', '-fvisibility=default', '-fzos-le-char-mode=ascii', '-fno-short-enums', ], 'ibm-xlclang': [ '-q64', '-qexportall', '-qascii', '-qstrict', '-qnocsect', '-Wa,asa,goff', '-Wa,xplink', '-qgonumber', '-qenum=int', '-Wc,DLL', ], 'ibm-xlc': [ '-q64', '-qexportall', '-qascii', '-qstrict', '-qnocsect', '-Wa,asa,goff', '-Wa,xplink', '-qgonumber', '-qenum=int', '-Wc,DLL', '-qlanglvl=extended0x', ], } _asm_args = { 'ibm-openxl': ['-fasm', '-fno-integrated-as', '-Wa,--ASA', '-Wa,--GOFF'], 'ibm-xlclang': [], 'ibm-xlc': [], } _ld_args = { 'ibm-openxl': [], 'ibm-xlclang': ['-Wl,dll', '-q64'], 'ibm-xlc': ['-Wl,dll', '-q64'], } # Python on z/OS is built with no compiler specific options in it's CFLAGS. # But each compiler requires it's own specific options to build successfully, # though some of the options are common between them class zOSCCompiler(UnixCCompiler): src_extensions = ['.c', '.C', '.cc', '.cxx', '.cpp', '.m', '.s'] _cpp_extensions = ['.cc', '.cpp', '.cxx', '.C'] _asm_extensions = ['.s'] def _get_zos_compiler_name(self): zos_compiler_names = [ os.path.basename(binary) for envvar in ('CC', 'CXX', 'LDSHARED') if (binary := os.environ.get(envvar, None)) ] if len(zos_compiler_names) == 0: return 'ibm-openxl' zos_compilers = {} for compiler in ( 'ibm-clang', 'ibm-clang64', 'ibm-clang++', 'ibm-clang++64', 'clang', 'clang++', 'clang-14', ): zos_compilers[compiler] = 'ibm-openxl' for compiler in ('xlclang', 'xlclang++', 'njsc', 'njsc++'): zos_compilers[compiler] = 'ibm-xlclang' for compiler in ('xlc', 'xlC', 'xlc++'): zos_compilers[compiler] = 'ibm-xlc' return zos_compilers.get(zos_compiler_names[0], 'ibm-openxl') def __init__(self, verbose=False, dry_run=False, force=False): super().__init__(verbose, dry_run, force) self.zos_compiler = self._get_zos_compiler_name() sysconfig.customize_compiler(self) def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): local_args = [] if ext in self._cpp_extensions: compiler = self.compiler_cxx local_args.extend(_cxx_args[self.zos_compiler]) elif ext in self._asm_extensions: compiler = self.compiler_so local_args.extend(_cc_args[self.zos_compiler]) local_args.extend(_asm_args[self.zos_compiler]) else: compiler = self.compiler_so local_args.extend(_cc_args[self.zos_compiler]) local_args.extend(cc_args) try: self.spawn(compiler + local_args + [src, '-o', obj] + extra_postargs) except DistutilsExecError as msg: raise CompileError(msg) def runtime_library_dir_option(self, dir): return '-L' + dir def link( self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=False, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None, ): # For a built module to use functions from cpython, it needs to use Pythons # side deck file. The side deck is located beside the libpython3.xx.so ldversion = sysconfig.get_config_var('LDVERSION') if sysconfig.python_build: side_deck_path = os.path.join( sysconfig.get_config_var('abs_builddir'), f'libpython{ldversion}.x', ) else: side_deck_path = os.path.join( sysconfig.get_config_var('installed_base'), sysconfig.get_config_var('platlibdir'), f'libpython{ldversion}.x', ) if os.path.exists(side_deck_path): if extra_postargs: extra_postargs.append(side_deck_path) else: extra_postargs = [side_deck_path] # Check and replace libraries included side deck files if runtime_library_dirs: for dir in runtime_library_dirs: for library in libraries[:]: library_side_deck = os.path.join(dir, f'{library}.x') if os.path.exists(library_side_deck): libraries.remove(library) extra_postargs.append(library_side_deck) break # Any required ld args for the given compiler extra_postargs.extend(_ld_args[self.zos_compiler]) super().link( target_desc, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, export_symbols, debug, extra_preargs, extra_postargs, build_temp, target_lang, )