def generate_pxd(): """ Uses cwrap (https://github.com/geggo/cwrap) and c_defines_to_pxd_enum.py (hacked for this example) """ from cwrap.config import Config, File import sys import os import glob # Run cwrap (output in CWRAP_OUT) # if not LLVM_BIN_PATH in sys.path: # sys.path.append(LLVM_BIN_PATH) if not os.path.exists(CWRAP_OUT): os.makedirs(CWRAP_OUT) umfpack_headers = glob.glob(os.path.join( SUITESPARSE_INC, 'umfpack*')) cwrap_header_files = list(map(File, umfpack_headers)) config_clang = Config('clang', files=cwrap_header_files, save_dir = CWRAP_OUT, include_dirs = [SUITESPARSE_INC] ) config_clang.generate() # Extract #define style enums (output to PXD_ENUM_OUT) import c_defines_to_pxd_enum if not os.path.exists(PXD_ENUM_OUT): os.makedirs(PXD_ENUM_OUT) c_defines_to_pxd_enum.main(umfpack_headers, PXD_ENUM_OUT) # Join resp. pxd files in cython_umfpack/ for cwrap_pxd in glob.glob(os.path.join( CWRAP_OUT, '*.pxd')): pxd_basename = os.path.basename(cwrap_pxd) sources = [cwrap_pxd] enum_pxd = os.path.join(PXD_ENUM_OUT, pxd_basename) if os.path.isfile(enum_pxd): sources.append(enum_pxd) dest_basename = pxd_basename[1:] if pxd_basename.startswith('_') else pxd_basename dest = os.path.join('./cython_umfpack', dest_basename) cat(sources, dest)
from cwrap.config import Config, File import sys print(sys.argv) if len(sys.argv) > 1: files = [File(f) for f in sys.argv[1:]] else: files = [File('test.h')] if __name__ == '__main__': #config = Config('gccxml', files=files, save_dir = 'tests/result_gccxml') #config.generate() print('------------------------') print() config_clang = Config( 'clang', files=files, save_dir='tests/result_clang', #include_dirs = [], #/usr/include/c++/4.2.1 #extern_name = '', #implementation_name = '', #language = 'c++', ) config_clang.generate()
from cwrap.config import Config, File if __name__ == '__main__': config = Config('gccxml', files=[File('test.h')]) config.generate()
from cwrap.config import Config, File import sys print sys.argv if len(sys.argv) > 1: files = [File(f) for f in sys.argv[1:]] else: files = [File('test.h')] if __name__ == '__main__': #config = Config('gccxml', files=files, save_dir = 'tests/result_gccxml') #config.generate() print '------------------------' print config_clang = Config('clang', files=files, save_dir = 'tests/result_clang', #include_dirs = [], #/usr/include/c++/4.2.1 #extern_name = '', #implementation_name = '', #language = 'c++', ) config_clang.generate()