• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python shared.path_from_root函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中shared.path_from_root函数的典型用法代码示例。如果您正苦于以下问题:Python path_from_root函数的具体用法?Python path_from_root怎么用?Python path_from_root使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了path_from_root函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: build_libc

 def build_libc(lib_filename, files):
     o_s = []
     prev_cxx = os.environ.get("EMMAKEN_CXX")
     if prev_cxx:
         os.environ["EMMAKEN_CXX"] = ""
     musl_internal_includes = shared.path_from_root("system", "lib", "libc", "musl", "src", "internal")
     for src in files:
         o = in_temp(os.path.basename(src) + ".o")
         execute(
             [
                 shared.PYTHON,
                 shared.EMCC,
                 shared.path_from_root("system", "lib", src),
                 "-o",
                 o,
                 "-I",
                 musl_internal_includes,
             ]
             + lib_opts,
             stdout=stdout,
             stderr=stderr,
         )
         o_s.append(o)
     if prev_cxx:
         os.environ["EMMAKEN_CXX"] = prev_cxx
     shared.Building.link(o_s, in_temp(lib_filename))
     return in_temp(lib_filename)
开发者ID:prixeus,项目名称:emscripten,代码行数:27,代码来源:system_libs.py


示例2: create_wasm_compiler_rt

 def create_wasm_compiler_rt(libname):
   srcdir = shared.path_from_root('system', 'lib', 'compiler-rt', 'lib', 'builtins')
   filenames = ['addtf3.c', 'ashlti3.c', 'ashrti3.c', 'comparetf2.c', 'divtf3.c', 'divti3.c', 'udivmodti4.c',
                'extenddftf2.c', 'extendsftf2.c',
                'fixdfti.c', 'fixsfti.c', 'fixtfdi.c', 'fixtfsi.c', 'fixtfti.c',
                'fixunsdfti.c', 'fixunssfti.c', 'fixunstfdi.c', 'fixunstfsi.c', 'fixunstfti.c',
                'floatditf.c', 'floatsitf.c', 'floattidf.c', 'floattisf.c',
                'floatunditf.c', 'floatunsitf.c', 'floatuntidf.c', 'floatuntisf.c', 'lshrti3.c',
                'modti3.c', 'multf3.c', 'multi3.c', 'subtf3.c', 'udivti3.c', 'umodti3.c', 'ashrdi3.c',
                'ashldi3.c', 'fixdfdi.c', 'floatdidf.c', 'lshrdi3.c', 'moddi3.c',
                'trunctfdf2.c', 'trunctfsf2.c', 'umoddi3.c', 'fixunsdfdi.c', 'muldi3.c',
                'divdi3.c', 'divmoddi4.c', 'udivdi3.c', 'udivmoddi4.c']
   files = (os.path.join(srcdir, f) for f in filenames)
   o_s = []
   commands = []
   for src in files:
     o = in_temp(os.path.basename(src) + '.o')
     # Use clang directly instead of emcc. Since emcc's intermediate format (produced by -S) is LLVM IR, there's no way to
     # get emcc to output wasm .s files, which is what we archive in compiler_rt.
     commands.append([shared.CLANG_CC, '--target=wasm32', '-S', shared.path_from_root('system', 'lib', src), '-O2', '-o', o] + shared.EMSDK_OPTS)
     o_s.append(o)
   run_commands(commands)
   lib = in_temp(libname)
   run_commands([[shared.LLVM_AR, 'cr', '-format=gnu', lib] + o_s])
   return lib
开发者ID:ProgArt,项目名称:WebAssembly_emscripten,代码行数:25,代码来源:system_libs.py


示例3: create_wasm_libc

  def create_wasm_libc(libname):
    # in asm.js we just use Math.sin etc., which is good for code size. But wasm doesn't have such builtins, so
    # we need to bundle in more code
    # we also build in musl versions of things that we have hand-optimized asm.js for
    files = ([shared.path_from_root('system', 'lib', 'libc', 'musl', 'src', 'math', x) for x in ('cos.c', 'cosf.c', 'cosl.c', 'sin.c', 'sinf.c', 'sinl.c', 'tan.c', 'tanf.c', 'tanl.c', 'acos.c', 'acosf.c', 'acosl.c', 'asin.c', 'asinf.c', 'asinl.c', 'atan.c', 'atanf.c', 'atanl.c', 'atan2.c', 'atan2f.c', 'atan2l.c', 'exp.c', 'expf.c', 'expl.c', 'log.c', 'logf.c', 'logl.c', 'pow.c', 'powf.c', 'powl.c')] +
             [shared.path_from_root('system', 'lib', 'libc', 'musl', 'src', 'string', x) for x in ('memcpy.c', 'memset.c', 'memmove.c')])

    return build_libc(libname, files, ['-O2'])
开发者ID:ProgArt,项目名称:WebAssembly_emscripten,代码行数:8,代码来源:system_libs.py


示例4: create_dlmalloc_split

 def create_dlmalloc_split(libname):
   dlmalloc_o = in_temp('dl' + libname)
   check_call([shared.PYTHON, shared.EMCC, shared.path_from_root('system', 'lib', 'dlmalloc.c'), '-o', dlmalloc_o, '-O2', '-DMSPACES', '-DONLY_MSPACES'])
   split_malloc_o = in_temp('sm' + libname)
   check_call([shared.PYTHON, shared.EMCC, shared.path_from_root('system', 'lib', 'split_malloc.cpp'), '-o', split_malloc_o, '-O2'])
   lib = in_temp(libname)
   shared.Building.link([dlmalloc_o, split_malloc_o], lib)
   return lib
开发者ID:AmesianX,项目名称:emscripten,代码行数:8,代码来源:system_libs.py


示例5: create_load_wasm_worker

def create_load_wasm_worker():
  emscripten.logging.debug('building load-wasm-worker')
  output = emscripten.Cache.get_path('load-wasm-worker.js')
  emscripten.try_delete(output)
  check_call([PYTHON, emscripten.EMCC, emscripten.path_from_root('third_party', 'wasm-polyfill', 'src', 'unpack.cpp'),
                      emscripten.path_from_root('tools', 'optimizer', 'parser.cpp'),
                      '-o', output] + \
                      '-O3 -std=c++11 --memory-init-file 0 --llvm-lto 1 -s TOTAL_MEMORY=67108864 -s WASM=0'.split(' '))
  assert os.path.exists(output)
  open(output, 'a').write(open(emscripten.path_from_root('third_party', 'wasm-polyfill', 'src', 'load-wasm-worker.js')).read())
  return output
开发者ID:4ian,项目名称:emscripten,代码行数:11,代码来源:wasmator.py


示例6: build_libc

 def build_libc(lib_filename, files):
   o_s = []
   prev_cxx = os.environ.get('EMMAKEN_CXX')
   if prev_cxx: os.environ['EMMAKEN_CXX'] = ''
   musl_internal_includes = ['-I', shared.path_from_root('system', 'lib', 'libc', 'musl', 'src', 'internal'), '-I', shared.path_from_root('system', 'lib', 'libc', 'musl', 'arch', 'js')]
   for src in files:
     o = in_temp(os.path.basename(src) + '.o')
     execute([shared.PYTHON, shared.EMCC, shared.path_from_root('system', 'lib', src), '-o', o] + musl_internal_includes + lib_opts, stdout=stdout, stderr=stderr)
     o_s.append(o)
   if prev_cxx: os.environ['EMMAKEN_CXX'] = prev_cxx
   shared.Building.link(o_s, in_temp(lib_filename))
   return in_temp(lib_filename)
开发者ID:AdrienCog,项目名称:emscripten,代码行数:12,代码来源:system_libs.py


示例7: create_pack_asmjs

def create_pack_asmjs():
  emscripten.logging.debug('building pack-asmjs')
  output = emscripten.Cache.get_path('pack-asmjs.js')
  emscripten.try_delete(output)
  check_call([PYTHON, emscripten.EMCC, emscripten.path_from_root('third_party', 'wasm-polyfill', 'src', 'pack-asmjs.cpp'),
                      emscripten.path_from_root('third_party', 'wasm-polyfill', 'src', 'unpack.cpp'),
                      emscripten.path_from_root('tools', 'optimizer', 'parser.cpp'),
                      '-o', output] + \
                      '-O3 -std=c++11 -DCHECKED_OUTPUT_SIZE --memory-init-file 0 --llvm-lto 1 -s TOTAL_MEMORY=67108864 -s WASM=0 -s INVOKE_RUN=0'.split(' ') + \
                     ['-I' + emscripten.path_from_root('tools', 'optimizer')])
  assert os.path.exists(output)
  open(output, 'a').write(open(emscripten.path_from_root('third_party', 'wasm-polyfill', 'src', 'pack-asmjs.js')).read())
  return output
开发者ID:4ian,项目名称:emscripten,代码行数:13,代码来源:wasmator.py


示例8: build_libc

 def build_libc(lib_filename, files, lib_opts):
   o_s = []
   musl_internal_includes = ['-I', shared.path_from_root('system', 'lib', 'libc', 'musl', 'src', 'internal'), '-I', shared.path_from_root('system', 'lib', 'libc', 'musl', 'arch', 'js')]
   commands = []
   # Hide several musl warnings that produce a lot of spam to unit test build server logs.
   # TODO: When updating musl the next time, feel free to recheck which of their warnings might have been fixed, and which ones of these could be cleaned up.
   c_opts = ['-Wno-dangling-else', '-Wno-unknown-pragmas', '-Wno-shift-op-parentheses', '-Wno-string-plus-int', '-Wno-logical-op-parentheses', '-Wno-bitwise-op-parentheses', '-Wno-visibility']
   for src in files:
     o = in_temp(os.path.basename(src) + '.o')
     commands.append([shared.PYTHON, shared.EMCC, shared.path_from_root('system', 'lib', src), '-o', o] + musl_internal_includes + default_opts + c_opts + lib_opts)
     o_s.append(o)
   run_commands(commands)
   shared.Building.link(o_s, in_temp(lib_filename))
   return in_temp(lib_filename)
开发者ID:imvu,项目名称:emscripten,代码行数:14,代码来源:system_libs.py


示例9: create_compiler_rt

  def create_compiler_rt(libname):
    srcdir = shared.path_from_root('system', 'lib', 'compiler-rt')
    filenames = ['divdc3.c', 'divsc3.c', 'muldc3.c', 'mulsc3.c']
    files = (os.path.join(srcdir, f) for f in filenames)

    o_s = []
    commands = []
    for src in files:
      o = in_temp(os.path.basename(src) + '.o')
      commands.append([shared.PYTHON, shared.EMCC, shared.path_from_root('system', 'lib', src), '-O2', '-o', o])
      o_s.append(o)
    run_commands(commands)
    shared.Building.link(o_s, in_temp(libname))
    return in_temp(libname)
开发者ID:AmesianX,项目名称:emscripten,代码行数:14,代码来源:system_libs.py


示例10: create_libc

 def create_libc(libname):
   logging.debug(' building libc for cache')
   libc_files = [
   ]
   musl_srcdir = shared.path_from_root('system', 'lib', 'libc', 'musl', 'src')
   blacklist = set(
     ['ipc', 'passwd', 'thread', 'signal', 'sched', 'ipc', 'time', 'linux', 'aio', 'exit', 'legacy', 'mq', 'process', 'search', 'setjmp', 'env', 'ldso', 'conf'] + # musl modules
     ['memcpy.c', 'memset.c', 'memmove.c', 'getaddrinfo.c', 'getnameinfo.c', 'inet_addr.c', 'res_query.c', 'gai_strerror.c', 'proto.c', 'gethostbyaddr.c', 'gethostbyaddr_r.c', 'gethostbyname.c', 'gethostbyname2_r.c', 'gethostbyname_r.c', 'gethostbyname2.c', 'usleep.c', 'alarm.c', 'syscall.c'] + # individual files
     ['abs.c', 'cos.c', 'cosf.c', 'cosl.c', 'sin.c', 'sinf.c', 'sinl.c', 'tan.c', 'tanf.c', 'tanl.c', 'acos.c', 'acosf.c', 'acosl.c', 'asin.c', 'asinf.c', 'asinl.c', 'atan.c', 'atanf.c', 'atanl.c', 'atan2.c', 'atan2f.c', 'atan2l.c', 'exp.c', 'expf.c', 'expl.c', 'log.c', 'logf.c', 'logl.c', 'sqrt.c', 'sqrtf.c', 'sqrtl.c', 'fabs.c', 'fabsf.c', 'fabsl.c', 'ceil.c', 'ceilf.c', 'ceill.c', 'floor.c', 'floorf.c', 'floorl.c', 'pow.c', 'powf.c', 'powl.c', 'round.c', 'roundf.c'] # individual math files
   )
   # TODO: consider using more math code from musl, doing so makes box2d faster
   for dirpath, dirnames, filenames in os.walk(musl_srcdir):
     for f in filenames:
       if f.endswith('.c'):
         if f in blacklist: continue
         dir_parts = os.path.split(dirpath)
         cancel = False
         for part in dir_parts:
           if part in blacklist:
             cancel = True
             break
         if not cancel:
           libc_files.append(os.path.join(musl_srcdir, dirpath, f))
   args = ['-Os']
   if shared.Settings.USE_PTHREADS:
     args += ['-s', 'USE_PTHREADS=1']
     assert '-mt' in libname
   else:
     assert '-mt' not in libname
   return build_libc(libname, libc_files, args)
开发者ID:AmesianX,项目名称:emscripten,代码行数:30,代码来源:system_libs.py


示例11: create_gl

 def create_gl():
   prev_cxx = os.environ.get('EMMAKEN_CXX')
   if prev_cxx: os.environ['EMMAKEN_CXX'] = ''
   o = in_temp('gl.o')
   check_call([shared.PYTHON, shared.EMCC, shared.path_from_root('system', 'lib', 'gl.c'), '-o', o])
   if prev_cxx: os.environ['EMMAKEN_CXX'] = prev_cxx
   return o
开发者ID:Acidburn0zzz,项目名称:emscripten,代码行数:7,代码来源:system_libs.py


示例12: create_optimizer

 def create_optimizer():
   shared.logging.debug('building native optimizer: ' + name)
   output = shared.Cache.get_path(name)
   shared.try_delete(output)
   for compiler in [shared.CLANG, 'g++', 'clang++']: # try our clang first, otherwise hope for a system compiler in the path
     shared.logging.debug('  using ' + compiler)
     try:
       subprocess.Popen([compiler,
                         shared.path_from_root('tools', 'optimizer', 'parser.cpp'),
                         shared.path_from_root('tools', 'optimizer', 'simple_ast.cpp'),
                         shared.path_from_root('tools', 'optimizer', 'optimizer.cpp'),
                         '-O3', '-std=c++11', '-fno-exceptions', '-fno-rtti', '-o', output] + args).communicate()
     except OSError:
       if compiler == shared.CLANG: raise # otherwise, OSError is likely due to g++ or clang++ not being in the path
     if os.path.exists(output): return output
   raise NativeOptimizerCreationException()
开发者ID:kidanger,项目名称:emscripten,代码行数:16,代码来源:js_optimizer.py


示例13: build_libcxx

 def build_libcxx(src_dirname, lib_filename, files):
   o_s = []
   for src in files:
     o = in_temp(src + '.o')
     srcfile = shared.path_from_root(src_dirname, src)
     execute([shared.PYTHON, shared.EMXX, srcfile, '-o', o, '-std=c++11'] + lib_opts, stdout=stdout, stderr=stderr)
     o_s.append(o)
   shared.Building.link(o_s, in_temp(lib_filename))
   return in_temp(lib_filename)
开发者ID:AdrienCog,项目名称:emscripten,代码行数:9,代码来源:system_libs.py


示例14: create_gl

 def create_gl():
     prev_cxx = os.environ.get("EMMAKEN_CXX")
     if prev_cxx:
         os.environ["EMMAKEN_CXX"] = ""
     o = in_temp("gl.o")
     execute([shared.PYTHON, shared.EMCC, shared.path_from_root("system", "lib", "gl.c"), "-o", o])
     if prev_cxx:
         os.environ["EMMAKEN_CXX"] = prev_cxx
     return o
开发者ID:prixeus,项目名称:emscripten,代码行数:9,代码来源:system_libs.py


示例15: build_libcxx

 def build_libcxx(src_dirname, lib_filename, files, lib_opts):
   o_s = []
   commands = []
   for src in files:
     o = in_temp(src + '.o')
     srcfile = shared.path_from_root(src_dirname, src)
     commands.append([shared.PYTHON, shared.EMXX, srcfile, '-o', o, '-std=c++11'] + default_opts + lib_opts)
     o_s.append(o)
   run_commands(commands)
   shared.Building.link(o_s, in_temp(lib_filename))
   return in_temp(lib_filename)
开发者ID:Acidburn0zzz,项目名称:emscripten,代码行数:11,代码来源:system_libs.py


示例16: apply_libc

 def apply_libc(need):
   # libc needs some sign correction. # If we are in mode 0, switch to 2. We will add our lines
   try:
     if shared.Settings.CORRECT_SIGNS == 0: raise Exception('we need to change to 2')
   except: # we fail if equal to 0 - so we need to switch to 2 - or if CORRECT_SIGNS is not even in Settings
     shared.Settings.CORRECT_SIGNS = 2
   if shared.Settings.CORRECT_SIGNS == 2:
     shared.Settings.CORRECT_SIGNS_LINES = [shared.path_from_root('src', 'dlmalloc.c') + ':' + str(i+4) for i in [4816, 4191, 4246, 4199, 4205, 4235, 4227]]
   # If we are in mode 1, we are correcting everything anyhow. If we are in mode 3, we will be corrected
   # so all is well anyhow too.
   return True
开发者ID:Acidburn0zzz,项目名称:emscripten,代码行数:11,代码来源:system_libs.py


示例17: create_optimizer

 def create_optimizer():
   shared.logging.debug('building native optimizer')
   output = shared.Cache.get_path('optimizer.exe')
   shared.try_delete(output)
   errs = []
   for compiler in [shared.CLANG, 'g++', 'clang++']: # try our clang first, otherwise hope for a system compiler in the path
     shared.logging.debug('  using ' + compiler)
     out, err = subprocess.Popen([compiler, shared.path_from_root('tools', 'optimizer', 'optimizer.cpp'), '-O3', '-std=c++11', '-fno-exceptions', '-fno-rtti', '-o', output], stderr=subprocess.PIPE).communicate()
     # for profiling/debugging: '-g', '-fno-omit-frame-pointer'
     if os.path.exists(output): return output
     errs.append(err)
   raise Exception('failed to build native optimizer, errors from each attempt: ' + '\n=================\n'.join(errs))
开发者ID:Acidburn0zzz,项目名称:emscripten,代码行数:12,代码来源:js_optimizer.py


示例18: create_optimizer

 def create_optimizer():
     shared.logging.debug("building native optimizer: " + name)
     output = shared.Cache.get_path(name)
     shared.try_delete(output)
     for compiler in [
         shared.CLANG,
         "g++",
         "clang++",
     ]:  # try our clang first, otherwise hope for a system compiler in the path
         shared.logging.debug("  using " + compiler)
         try:
             out, err = subprocess.Popen(
                 [
                     compiler,
                     shared.path_from_root("tools", "optimizer", "parser.cpp"),
                     shared.path_from_root("tools", "optimizer", "simple_ast.cpp"),
                     shared.path_from_root("tools", "optimizer", "optimizer.cpp"),
                     shared.path_from_root("tools", "optimizer", "optimizer-main.cpp"),
                     "-O3",
                     "-std=c++11",
                     "-fno-exceptions",
                     "-fno-rtti",
                     "-o",
                     output,
                 ]
                 + args,
                 stdout=subprocess.PIPE,
                 stderr=subprocess.PIPE,
             ).communicate()
             outs.append(out)
             errs.append(err)
         except OSError:
             if compiler == shared.CLANG:
                 raise  # otherwise, OSError is likely due to g++ or clang++ not being in the path
         if os.path.exists(output):
             return output
     raise NativeOptimizerCreationException()
开发者ID:awtcode,项目名称:emscripten,代码行数:37,代码来源:js_optimizer.py


示例19: build_libcxx

 def build_libcxx(src_dirname, lib_filename, files, lib_opts, has_noexcept_version=False):
   o_s = []
   commands = []
   opts = default_opts + lib_opts
   if has_noexcept_version and shared.Settings.DISABLE_EXCEPTION_CATCHING:
     opts += ['-fno-exceptions']
   for src in files:
     o = in_temp(src + '.o')
     srcfile = shared.path_from_root(src_dirname, src)
     commands.append([shared.PYTHON, shared.EMXX, srcfile, '-o', o, '-std=c++11'] + opts)
     o_s.append(o)
   run_commands(commands)
   if lib_filename.endswith('.bc'):
     shared.Building.link(o_s, in_temp(lib_filename))
   elif lib_filename.endswith('.a'):
     shared.Building.emar('cr', in_temp(lib_filename), o_s)
   else:
     raise Exception('unknown suffix ' + lib_filename)
   return in_temp(lib_filename)
开发者ID:AmesianX,项目名称:emscripten,代码行数:19,代码来源:system_libs.py


示例20: len

while 1:
  print 'Tried %d, notes: %s' % (tried, notes)
  print '1) Generate C'
  shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--no-packed-struct'],# +
                 #['--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'],
                 stdout=open(filename + '.c', 'w'))
  #shutil.copyfile(filename + '.c', 'testcase%d.c' % tried)
  print '1) Generate C... %.2f K of C source' % (len(open(filename + '.c').read())/1024.)

  tried += 1

  print '2) Compile natively'
  shared.try_delete(filename)
  shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename + '1'] + CSMITH_CFLAGS, stderr=PIPE) #  + shared.EMSDK_OPTS
  shared.execute([shared.CLANG_CC, '-O2', '-emit-llvm', '-c', '-Xclang', '-triple=i386-pc-linux-gnu', filename + '.c', '-o', filename + '.bc'] + CSMITH_CFLAGS + shared.EMSDK_OPTS, stderr=PIPE)
  shared.execute([shared.path_from_root('tools', 'nativize_llvm.py'), filename + '.bc'], stdout=PIPE, stderr=PIPE)
  shutil.move(filename + '.bc.run', filename + '2')
  shared.execute([shared.CLANG_CC, filename + '.c', '-o', filename + '3'] + CSMITH_CFLAGS, stderr=PIPE)
  print '3) Run natively'
  try:
    correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 3)
    if 'Segmentation fault' in correct1 or len(correct1) < 10: raise Exception('segfault')
    correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 3)
    if 'Segmentation fault' in correct2 or len(correct2) < 10: raise Exception('segfault')
    correct3 = shared.timeout_run(Popen([filename + '3'], stdout=PIPE, stderr=PIPE), 3)
    if 'Segmentation fault' in correct3 or len(correct3) < 10: raise Exception('segfault')
    if correct1 != correct3: raise Exception('clang opts change result')
  except Exception, e:
    print 'Failed or infinite looping in native, skipping', e
    notes['invalid'] += 1
    continue
开发者ID:nagyist,项目名称:emscripten,代码行数:31,代码来源:csmith_driver.py



注:本文中的shared.path_from_root函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python shared.run_peru_command函数代码示例发布时间:2022-05-27
下一篇:
Python shared.create_dir函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap