mirror of
https://github.com/netwide-assembler/nasm
synced 2026-08-26 16:23:04 -04:00
Formalize the mechanism for storing mapped (non-filesystem) filenames in the filenames array. These are not compared against input or output files for overwrite checks. Add the infrastructure for comparing more than one input filename (future proofing.) Move the Makefile dependency target name to the filenames system. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
/* SPDX-License-Identifier: BSD-2-Clause */
|
|
/* Copyright 2026 The NASM Authors - All Rights Reserved */
|
|
|
|
#ifndef NASM_FILES_H
|
|
#define NASM_FILES_H 1
|
|
|
|
#include "compiler.h"
|
|
#include "nasmlib.h" /* For nasm_assert() */
|
|
|
|
/*
|
|
* Primary file names set on the command line etc.
|
|
* Wrapped in accessors to make them as constant as possible.
|
|
*
|
|
* The order of the sections in this enum is critical!
|
|
*/
|
|
enum filenames {
|
|
/* Input filenames. FN_INFILE MUST be the first entry. */
|
|
FN_INFILE, /* Primary input file - MUST BE FIRST */
|
|
|
|
/*
|
|
* Section: Output filenames.
|
|
* FN_OUTFILE MUST be the first entry.
|
|
*/
|
|
FN_OUTFILE, /* Primary output file - MUST BE FIRST */
|
|
FN_ERRFILE, /* Error message file */
|
|
FN_LISTFILE, /* Listing file */
|
|
FN_DEPENDFILE, /* Dependency file */
|
|
FN_MAPFILE, /* Map file (outbin) */
|
|
|
|
/* Total number of "real" filenames. */
|
|
FN_NFILES_REAL,
|
|
|
|
/*
|
|
* Section: Virtual filenames.
|
|
* Strings that don't necessarily correspond directly to paths
|
|
* in the host filesystem.
|
|
*/
|
|
FN_MAPPED_INFILE, /* Debug mapped input file name */
|
|
FN_DEPEND_TARGET, /* Output target name per -MF, -MD, -MQ */
|
|
|
|
/* Total fixed filename count */
|
|
FN_NFILES
|
|
};
|
|
|
|
extern const char *_filenames[FN_NFILES];
|
|
|
|
static inline const char *get_filename(enum filenames fn)
|
|
{
|
|
nasm_assert((size_t)fn < ARRAY_SIZE(_filenames));
|
|
return _filenames[fn];
|
|
}
|
|
|
|
/*
|
|
* copy_filename() makes a private copy for the files subsystem,
|
|
* set_nocopy() expects an allocated string for the files subsystem to
|
|
* take over.
|
|
*/
|
|
const char *copy_filename(enum filenames fn, const char *src);
|
|
const char *set_filename(enum filenames fn, char *src);
|
|
void check_overwrite_files(void);
|
|
void cleanup_filenames(void);
|
|
|
|
#endif /* NASM_FILES_H */
|