Moving to a ninja-based build system

This commit is contained in:
Justin C. Miller
2019-02-02 02:59:45 -08:00
parent 523d0b3b8c
commit 0f8efdb55e
24 changed files with 604 additions and 507 deletions

View File

@@ -4,7 +4,16 @@
#include <efi/eficompiler.h>
#include <efi/efisetjmp_arch.h>
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
#if ! __has_builtin(setjmp)
extern UINTN setjmp(jmp_buf *env) __attribute__((returns_twice));
#endif
#if ! __has_builtin(longjmp)
extern VOID longjmp(jmp_buf *env, UINTN value) __attribute__((noreturn));
#endif
#endif /* GNU_EFI_SETJMP_H */

48
src/include/elf.h Normal file
View File

@@ -0,0 +1,48 @@
#pragma once
/* elf.h - basic defines for external code written assuming <elf.h> works. Only
* Elf64 values are included.
*/
typedef uint16_t Elf64_Half;
typedef uint32_t Elf64_Word;
typedef int32_t Elf64_Sword;
typedef uint64_t Elf64_Xword;
typedef int64_t Elf64_Sxword;
typedef uint64_t Elf64_Addr;
typedef uint64_t Elf64_Off;
typedef uint16_t Elf64_Section;
typedef Elf64_Half Elf64_Versym;
typedef struct {
Elf64_Addr r_offset;
Elf64_Xword r_info;
} Elf64_Rel;
typedef struct {
Elf64_Addr r_offset;
Elf64_Word r_info;
Elf64_Sword r_addend;
} Elf64_Rela;
typedef struct {
Elf64_Sxword d_tag;
union {
Elf64_Xword d_val;
Elf64_Addr d_ptr;
} d_un;
} Elf64_Dyn;
#define ELF64_R_TYPE(x) ((x) & 0xffffffff)
typedef enum {
DT_NULL = 0,
DT_RELA = 7,
DT_RELASZ = 8,
DT_RELAENT = 9
} ElfDynTag;
typedef enum {
R_X86_64_NONE = 0,
R_X86_64_RELATIVE = 8
} Elf_x86_64_RelType;

View File

@@ -1,12 +0,0 @@
Import('target')
env = target.Clone()
env.Append(
CPPPATH = ['.', 'include', '#src/libraries/kutil/include'],
)
lib = env.Library('elf', Glob('*.cpp'))
Return('lib')
# vim: ft=python et

View File

@@ -1,12 +0,0 @@
Import('target')
env = target.Clone()
env.Append(
CPPPATH = ['.', 'include', '#src/libraries/kutil/include'],
)
lib = env.Library('initrd', Glob('*.cpp'))
Return('lib')
# vim: ft=python et

View File

@@ -1,12 +0,0 @@
Import('target')
env = target.Clone()
env.Append(
CPPPATH = ['.', 'include'],
)
lib = env.Library('kutil', Glob('*.cpp'))
Return('lib')
# vim: ft=python et

View File

@@ -5,11 +5,13 @@ namespace std {
enum class __attribute__ ((__type_visibility("default"))) align_val_t : size_t { };
}
#ifndef KUTIL_EXCLUDE_NEW_DELETE
void * operator new(size_t n, std::align_val_t) { return kutil::malloc(n); }
void * operator new (size_t n) { return kutil::malloc(n); }
void * operator new[] (size_t n) { return kutil::malloc(n); }
void operator delete (void *p) noexcept { return kutil::free(p); }
void operator delete[] (void *p) noexcept { return kutil::free(p); }
#endif
namespace kutil {