accelerator/third_party/AMBuilder
sappho 1d60f3746a
overhaul -> overhaul (#21)
* overhaul the repository

add protobuf

change repo url

try to restore github python syntax highlighter

move breakpad into third_party, update packagescript

* AMBuildifying

remove unnecessary files

Move the git patching into ambuild

move lss to a patch

Add windows compilation support

remove breakpad.bat

move postlink libs

* Overhaul CI (#4)

* Dockerbuild (#5)

* make cwd_cmd spew stdout and stderr

* add proper docker build support

* Overhaul ci (#6)

* Setup CI

* fix checkout

* fix yaml syntax

* no fail fast

* setup CI cache

* Fix pip install

* remove pip git

* update actions, ditch node 16

* small syntax cleanups

* more CI changes

* github doc lied

---------

Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>

* final push for perfect dockerbuilds in every scenario that i have been able to find

* rename cicd->dockerbuild

---------

Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>

* Add readme, remode duplicate -fPIC

update names of dockerbuild folder in sh files

* cleanup dockerfile (#7)

* Update 0002-Write-FUNC-records-instead-of-PUBLIC-for-ELF-symbols.patch

* Statically link libz, libgcc & libstdc++

* fix submodule path

* Review change + comment patch

---------

Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>
Co-authored-by: Benoist <14257866+Kenzzer@users.noreply.github.com>
2024-10-10 21:59:28 -04:00

173 lines
5.8 KiB
Python

# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os, sys
def AddSourceFilesFromDir(path, files):
list = []
for file in files:
list.append(os.path.join(path, file))
return list
builder.SetBuildFolder('./third_party')
libz = builder.StaticLibraryProject('libz')
libz.sources = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'zlib'),[
'adler32.c',
'compress.c',
'crc32.c',
'deflate.c',
'gzclose.c',
'gzlib.c',
'gzread.c',
'gzwrite.c',
'infback.c',
'inffast.c',
'inflate.c',
'inftrees.c',
'trees.c',
'uncompr.c',
'zutil.c'
])
for cxx in Accelerator.targets:
if cxx.target.platform == 'linux':
binary = Accelerator.ConfigureLibrary(libz, cxx, builder)
binary.compiler.cflags += ['-Wno-implicit-function-declaration']
Accelerator.libz = builder.Add(libz)
libbreakpad_client = builder.StaticLibraryProject('libbreakpad_client')
libbreakpad_client.sources = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'breakpad', 'src'),[
'common/convert_UTF.cc',
'common/string_conversion.cc',
])
libbreakpad_client_linux = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'breakpad', 'src'),[
'client/minidump_file_writer.cc',
'client/linux/crash_generation/crash_generation_client.cc',
'client/linux/crash_generation/crash_generation_server.cc',
'client/linux/dump_writer_common/thread_info.cc',
'client/linux/dump_writer_common/ucontext_reader.cc',
'client/linux/handler/exception_handler.cc',
'client/linux/handler/minidump_descriptor.cc',
'client/linux/log/log.cc',
'client/linux/microdump_writer/microdump_writer.cc',
'client/linux/minidump_writer/linux_core_dumper.cc',
'client/linux/minidump_writer/linux_dumper.cc',
'client/linux/minidump_writer/linux_ptrace_dumper.cc',
'client/linux/minidump_writer/minidump_writer.cc',
'client/linux/minidump_writer/pe_file.cc',
'common/linux/elf_core_dump.cc',
'common/linux/elfutils.cc',
'common/linux/file_id.cc',
'common/linux/guid_creator.cc',
'common/linux/linux_libc_support.cc',
'common/linux/memory_mapped_file.cc',
'common/linux/safe_readlink.cc'
])
libbreakpad_client_windows = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'breakpad', 'src'),[
'client/windows/crash_generation/client_info.cc',
'client/windows/crash_generation/crash_generation_client.cc',
'client/windows/crash_generation/crash_generation_server.cc',
'client/windows/crash_generation/minidump_generator.cc',
'client/windows/handler/exception_handler.cc',
'common/windows/guid_string.cc'
])
libbreakpad = builder.StaticLibraryProject('libbreakpad')
libbreakpad.sources = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'breakpad', 'src'),[
'processor/basic_code_modules.cc',
'processor/basic_source_line_resolver.cc',
'processor/call_stack.cc',
'processor/cfi_frame_info.cc',
'processor/convert_old_arm64_context.cc',
'processor/disassembler_x86.cc',
'processor/dump_context.cc',
'processor/dump_object.cc',
'processor/exploitability.cc',
'processor/exploitability_linux.cc',
'processor/exploitability_win.cc',
'processor/fast_source_line_resolver.cc',
'processor/logging.cc',
'processor/microdump.cc',
'processor/microdump_processor.cc',
'processor/minidump.cc',
'processor/minidump_processor.cc',
'processor/module_comparer.cc',
'processor/module_serializer.cc',
'processor/pathname_stripper.cc',
'processor/process_state.cc',
'processor/proc_maps_linux.cc',
'processor/simple_symbol_supplier.cc',
'processor/source_line_resolver_base.cc',
'processor/stack_frame_cpu.cc',
'processor/stack_frame_symbolizer.cc',
'processor/stackwalk_common.cc',
'processor/stackwalker.cc',
'processor/stackwalker_amd64.cc',
'processor/stackwalker_arm.cc',
'processor/stackwalker_arm64.cc',
'processor/stackwalker_address_list.cc',
'processor/stackwalker_mips.cc',
'processor/stackwalker_ppc.cc',
'processor/stackwalker_ppc64.cc',
'processor/stackwalker_riscv.cc',
'processor/stackwalker_riscv64.cc',
'processor/stackwalker_sparc.cc',
'processor/stackwalker_x86.cc',
'processor/symbolic_constants_win.cc',
'processor/tokenize.cc'
])
libbreakpad_linux = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'breakpad', 'src'),[
'common/linux/scoped_pipe.cc',
'common/linux/scoped_tmpfile.cc',
'processor/disassembler_objdump.cc'
])
libbreakpad_windows = []
libdisasm = builder.StaticLibraryProject('libdisasm')
libdisasm.sources = AddSourceFilesFromDir(os.path.join(builder.currentSourcePath, 'breakpad', 'src', 'third_party', 'libdisasm'),[
'ia32_implicit.c',
'ia32_insn.c',
'ia32_invariant.c',
'ia32_modrm.c',
'ia32_opcode_tables.c',
'ia32_operand.c',
'ia32_reg.c',
'ia32_settings.c',
'x86_disasm.c',
'x86_format.c',
'x86_imm.c',
'x86_insn.c',
'x86_misc.c',
'x86_operand_list.c'
])
libraries = [libbreakpad_client, libbreakpad, libdisasm]
libraries_platform_src = [(libbreakpad_client_linux, libbreakpad_client_windows), (libbreakpad_linux, libbreakpad_windows), ([],[])]
for cxx in Accelerator.targets:
for (library, (linux_src, windows_src)) in zip(libraries, libraries_platform_src):
binary = Accelerator.ConfigureLibrary(library, cxx, builder)
compiler = binary.compiler
# Wait for breakpad to be patched
compiler.sourcedeps += Accelerator.breakpad_patch
if compiler.target.platform == 'linux':
# Link against our zlib if linux
Accelerator.link_libz(cxx, builder)
binary.sources += linux_src
if compiler.target.platform == 'windows':
binary.sources += windows_src
compiler.cxxincludes += [
os.path.join(builder.currentSourcePath, 'breakpad', 'src')
]
compiler.defines += ['UNICODE']
Accelerator.libbreakpad = builder.Add(libbreakpad)
Accelerator.libbreakpad_client = builder.Add(libbreakpad_client)
Accelerator.libdisasm = builder.Add(libdisasm)