source_files += duckdb_sources include_directories = duckdb_includes + include_directories libduckdb = Extension('duckdb', include_dirs=include_directories, sources=source_files, extra_compile_args=toolchain_args, extra_link_args=toolchain_args, language='c++') else: sys.path.append(os.path.join(script_path, '..', '..', 'scripts')) import package_build toolchain_args += ['-I' + x for x in package_build.includes(extensions)] result_libraries = package_build.get_libraries(existing_duckdb_dir, libraries, extensions) library_dirs = [x[0] for x in result_libraries if x[0] is not None] libnames = [x[1] for x in result_libraries if x[1] is not None] libduckdb = Extension('duckdb', include_dirs=include_directories, sources=['duckdb_python.cpp'], extra_compile_args=toolchain_args, extra_link_args=toolchain_args, libraries=libnames, library_dirs=library_dirs, language='c++') # Only include pytest-runner in setup_requires if we're invoking tests if {'pytest', 'test', 'ptr'}.intersection(sys.argv): setup_requires = ['pytest-runner']
import package_build # check if we are doing a build from an existing DuckDB installation if 'DUCKDB_R_BINDIR' in os.environ and 'DUCKDB_R_CFLAGS' in os.environ and 'DUCKDB_R_LIBS' in os.environ: existing_duckdb_dir = os.environ['DUCKDB_R_BINDIR'] compile_flags = os.environ['DUCKDB_R_CFLAGS'].replace('\\', '').replace(' ', ' ') libraries = [x for x in os.environ['DUCKDB_R_LIBS'].split(' ') if len(x) > 0] # use existing installation: set up Makevars with open(os.path.join('src', 'Makevars.in'), 'r') as f: text = f.read() compile_flags += package_build.include_flags() # find libraries result_libs = package_build.get_libraries(existing_duckdb_dir, libraries) link_flags = '' for rlib in result_libs: libdir = rlib[0] libname = rlib[1] if libdir != None: link_flags += ' -L' + libdir if libname != None: link_flags += ' -l' + libname text = text.replace('{{ SOURCES }}', '') text = text.replace('{{ INCLUDES }}', compile_flags.strip()) text = text.replace('{{ LINK_FLAGS }}', link_flags.strip()) # now write it to the output Makevars