subdir('d') r_bin_sources = [ 'bin.c', 'bin_write.c', 'addrline.c', 'demangle.c', 'demangle_stubs.c', 'format/dwarf/dwarf.c', 'format/dwarf/abbrev.c', 'format/dwarf/info.c', 'format/dwarf/index.c', 'format/dwarf/line.c', 'format/dwarf/aranges.c', 'format/dwarf/loc.c', 'format/dwarf/loclists.c', 'format/dwarf/dump.c', 'format/dwarf/eh_frame.c', 'blang.c', 'bfilter.c', 'bfile.c', 'bobj.c', 'trycatch.c', # plugins 'p/bin_io.c', 'p/bin_null.c', 'p/bin_art.c', 'p/bin_avr.c', 'p/bin_bf.c', 'p/bin_bflt.c', 'p/bin_mclf.c', 'p/bin_bios.c', 'p/bin_bootimg.c', 'p/bin_cgc.c', 'p/bin_coff.c', 'p/bin_off.c', # goff ibm 'p/bin_dex.c', 'p/bin_dis.c', 'p/bin_dmp64.c', 'p/bin_dol.c', 'p/bin_dyldcache.c', 'p/bin_elf.c', 'p/bin_elf64.c', 'p/bin_fs.c', 'p/bin_ftab.c', 'p/bin_gns1.c', 'p/bin_java.c', 'p/bin_ldr_linux.c', 'p/bin_le.c', 'p/bin_mach0.c', 'p/bin_mach064.c', 'p/bin_mbn.c', 'p/bin_mdmp.c', 'p/bin_menuet.c', 'p/bin_msx.c', 'p/bin_mz.c', 'p/bin_ne.c', 'p/bin_nes.c', 'p/bin_hunk.c', 'p/bin_nin3ds.c', 'p/bin_ninds.c', 'p/bin_ningb.c', 'p/bin_ningba.c', 'p/bin_nro.c', 'p/bin_nso.c', 'p/bin_omf.c', 'p/bin_p9.c', 'p/bin_pe.c', 'p/bin_pe64.c', 'p/bin_pebble.c', 'p/bin_pef.c', 'p/bin_prg.c', 'p/bin_prj.c', 'p/bin_psxexe.c', 'p/bin_qnx.c', 'p/bin_rel.c', 'p/bin_s390.c', 'p/bin_sfc.c', 'p/bin_smd.c', 'p/bin_sms.c', 'p/bin_symbols.c', 'p/bin_te.c', 'p/bin_vsf.c', 'p/bin_wad.c', 'p/bin_wasm.c', 'p/bin_write_elf.c', 'p/bin_write_elf64.c', 'p/bin_write_mach0.c', 'p/bin_write_mach064.c', 'p/bin_write_pe.c', 'p/bin_write_pe64.c', 'p/bin_xbe.c', 'p/bin_xcoff64.c', 'p/bin_xnu_kernelcache.c', 'p/bin_xtr_dyldcache.c', 'p/bin_xtr_ftab.c', 'p/bin_xtr_pemixed.c', 'p/bin_xtr_xalz.c', 'p/bin_z64.c', 'p/bin_zimg.c', 'p/bin_xtac.c', # implementation 'format/bflt/bflt.c', 'format/coff/coff.c', 'format/coff/xcoff64.c', 'format/dex/dex.c', 'format/dmp/dmp64.c', 'format/elf/elf.c', 'format/elf/elf64.c', 'format/elf/plt.c', 'format/elf/plt64.c', 'format/elf/elf64_write.c', 'format/elf/elf_write.c', 'format/mach0/coresymbolication.c', 'format/mach0/dyldcache.c', 'format/mach0/fatmach0.c', 'format/mach0/mach0.c', 'format/mach0/mach064.c', 'format/swift/swift.c', 'format/xnu/r_cf_dict.c', 'format/mdmp/mdmp.c', 'format/mdmp/mdmp_pe.c', 'format/mdmp/mdmp_pe64.c', 'format/le/le.c', 'format/ne/ne.c', 'format/mz/mz.c', 'format/nxo/nxo.c', 'format/objc/mach064_classes.c', 'format/objc/mach0_classes.c', 'format/omf/omf.c', 'format/p9/p9bin.c', 'format/pe/pe.c', 'format/pe/pe64.c', 'format/pe/pe64_write.c', 'format/pe/pe_write.c', 'format/pe/pemixed.c', 'format/pe/dotnet.c', 'format/te/te.c', 'format/wasm/wasm.c', 'format/zimg/zimg.c', # pdb microsoft format 'format/pdb/dbi.c', 'format/pdb/fpo.c', 'format/pdb/omap.c', 'format/pdb/pdb.c', 'format/pdb/pdb_downloader.c', 'format/pdb/stream_file.c', 'format/pdb/stream_pe.c', 'format/pdb/tpi.c', # language detection 'mangling/swift.c', 'mangling/java.c', ] demangle_c_args = [] need_cxx_demangler = bin_demangle_plugins.contains('cxx') or bin_demangle_plugins.contains('rust') if need_cxx_demangler demangle_c_args += ['-DR_BIN_DEMANGLE_CXX=1'] r_bin_sources += [ 'mangling/cxx.c', 'mangling/cxx2/itanium.c', 'mangling/cxx2/xlc.c', 'mangling/cxx2/gnu-v2.c', 'mangling/cxx2/armabi.c', ] if not get_option('nogpl') r_bin_sources += ['mangling/cxx/cp-demangle.c'] endif endif if bin_demangle_plugins.contains('cxx') r_bin_sources += ['p/bin_demangle_cxx.c'] endif if bin_demangle_plugins.contains('dlang') demangle_c_args += ['-DR_BIN_DEMANGLE_DLANG=1'] r_bin_sources += ['p/bin_demangle_dlang.c', 'mangling/dlang.c', 'mangling/cxx2/dlang.c'] endif if bin_demangle_plugins.contains('ibmxl') demangle_c_args += ['-DR_BIN_DEMANGLE_IBMXL=1'] r_bin_sources += ['p/bin_demangle_ibmxl.c', 'mangling/ibmxl.c'] if not need_cxx_demangler r_bin_sources += ['mangling/cxx2/xlc.c'] endif endif if bin_demangle_plugins.contains('java') demangle_c_args += ['-DR_BIN_DEMANGLE_JAVA=1'] r_bin_sources += ['p/bin_demangle_java.c'] endif if bin_demangle_plugins.contains('msvc') demangle_c_args += ['-DR_BIN_DEMANGLE_MSVC=1'] r_bin_sources += ['p/bin_demangle_msvc.c', 'mangling/msvc.c', 'mangling/microsoft.c', 'mangling/demangler.c'] endif if bin_demangle_plugins.contains('objc') demangle_c_args += ['-DR_BIN_DEMANGLE_OBJC=1'] r_bin_sources += ['p/bin_demangle_objc.c', 'mangling/objc.c'] endif if bin_demangle_plugins.contains('pascal') demangle_c_args += ['-DR_BIN_DEMANGLE_PASCAL=1'] r_bin_sources += ['p/bin_demangle_pascal.c', 'mangling/pascal.c'] endif if bin_demangle_plugins.contains('rust') demangle_c_args += ['-DR_BIN_DEMANGLE_RUST=1'] r_bin_sources += ['p/bin_demangle_rust.c', 'mangling/rust.c', 'mangling/cxx2/rust.c'] endif if bin_demangle_plugins.contains('swift') demangle_c_args += ['-DR_BIN_DEMANGLE_SWIFT=1'] r_bin_sources += ['p/bin_demangle_swift.c', 'mangling/swift-sd.c'] endif if bin_plugins.contains('pyc') or bin_plugins.contains('pickle') r_bin_sources += [ 'p/bin_pyc.c', 'format/pyc/marshal.c', 'format/pyc/pyc.c', 'format/pyc/pyc_magic.c', ] endif r_bin_sources += r_bin_d_sources r_bin_inc = [platform_inc, '../xps', include_directories('mangling', 'format')] if not get_option('use_sys_lz4') library_cflags += ['-DUSE_RLZ4'] endif r_bin = library('r_bin', r_bin_sources, include_directories: r_bin_inc, c_args: ['-DR_API_BIN_ONLY=1'] + demangle_c_args + library_cflags, dependencies: [ r_util_dep, r_cons_dep, r_io_dep, r_fs_dep, r_muta_dep, r_magic_dep, r_socket_dep, r_syscall_dep, java_dep, lz4_dep ], install: true, implicit_include_directories: false, install_rpath: rpath_lib, soversion: r2_libversion ) r_bin_dep = declare_dependency(link_with: r_bin, include_directories: r_bin_inc) if get_option('blob') r_bin_static = static_library('r_bin_static', r_bin_sources, include_directories: r_bin_inc, c_args: ['-DR_API_BIN_ONLY=1'] + demangle_c_args + library_cflags, dependencies: [ r_util_static_dep, r_cons_static_dep, r_io_static_dep, r_fs_static_dep, r_muta_static_dep, r_magic_static_dep, r_socket_static_dep, r_syscall_static_dep, java_static_dep, lz4_dep ], install: true, implicit_include_directories: false, ) r_bin_static_dep = declare_dependency(link_with: r_bin_static, include_directories: r_bin_inc) endif pkgconfig_mod.generate(r_bin, subdirs: 'libr', version: r2_version, name: 'r_bin', filebase: 'r_bin', libraries: pkgcfg_sanitize_libs, requires: pkgconfig_magic_requires + [ 'r_util', 'r_fs', 'r_io', 'r_socket', 'r_syscall' ], description: 'radare foundation libraries' )