Files
oot/tools/spec.h
T
Dragorn421 22d4ca0be7 spec: change include to ignore duped includes across spec (#2777)
* spec: impl `include_once` and error on duped includes across spec

* duped includes fixups

* rm get_single_segment_by_name from spec.c (unused code)

* replace include logic with include_once's
2026-08-03 16:42:52 +02:00

61 lines
1.1 KiB
C

#ifndef SPEC_H
#define SPEC_H
#include <stdint.h>
#include <stdbool.h>
typedef enum {
STMT_address,
STMT_after,
STMT_align,
STMT_beginseg,
STMT_compress,
STMT_endseg,
STMT_entry,
STMT_flags,
STMT_include,
STMT_name,
STMT_number,
STMT_romalign,
STMT_stack,
STMT_increment,
STMT_pad_text,
} STMTId;
enum {
FLAG_BOOT = (1 << 0),
FLAG_OBJECT = (1 << 1),
FLAG_RAW = (1 << 2),
FLAG_NOLOAD = (1 << 3),
FLAG_SYMS = (1 << 4),
FLAG_OVL = (1 << 5)
};
struct Include {
char* fpath;
int linkerPadding;
};
typedef struct Segment {
uint32_t fields;
char* name;
char* after;
uint32_t flags;
uint32_t address;
uint32_t stack;
uint32_t align;
uint32_t romalign;
uint32_t increment;
uint32_t entry;
uint32_t number;
struct Include* includes;
int includesCount;
bool compress;
} Segment;
void parse_rom_spec(char* spec, struct Segment** segments, int* segment_count);
void free_rom_spec(struct Segment* segments, int segment_count);
#endif