148 lines
No EOL
3.1 KiB
C
148 lines
No EOL
3.1 KiB
C
#ifndef LIBTCC_H
|
|
# define LIBTCC_H 1
|
|
|
|
# include <stddef.h>
|
|
|
|
# ifdef __cplusplus
|
|
extern "C" {
|
|
# endif /* __cplusplus */
|
|
|
|
typedef void *TCCReallocFunc(void *ptr, size_t size);
|
|
/**
|
|
* @brief set custom allocator for all allocations (optional), NULL for default.
|
|
*/
|
|
void tcc_set_realloc(TCCReallocFunc *my_realloc);
|
|
|
|
typedef struct TCCState TCCState;
|
|
|
|
/**
|
|
* @brief create a new TCC compilation context.
|
|
*/
|
|
TCCState *tcc_new(void);
|
|
|
|
/**
|
|
* @brief free a TCC compilation context.
|
|
*/
|
|
void tcc_delete(TCCState *s);
|
|
|
|
/**
|
|
* @brief set CONFIG_TCCDIR at runtime.
|
|
*/
|
|
void tcc_set_lib_path(TCCState *s, const char *path);
|
|
|
|
typedef void TCCErrorFunc(void *opaque, const char *msg);
|
|
|
|
/**
|
|
* @brief set error/warning callback (optional).
|
|
*/
|
|
void tcc_set_error_func(TCCState *s, void *error_opaque, TCCErrorFunc *error_func);
|
|
|
|
/**
|
|
* @brief set options as from command line (multiple supported)
|
|
*/
|
|
int tcc_set_options(TCCState *s, const char *str);
|
|
|
|
/**
|
|
* @defgroup preprocessor Preprocessor
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief add include path
|
|
*/
|
|
int tcc_add_include_path(TCCState *s, const char *pathname);
|
|
|
|
/**
|
|
* @brief add in system include path
|
|
*/
|
|
int tcc_add_sysinclude_path(TCCState *s, const char *pathname);
|
|
|
|
/**
|
|
* @brief define preprocessor symbol 'sym'. value can be NULL, sym can be "sym=val"
|
|
*/
|
|
void tcc_define_symbol(TCCState *s, const char *sym, const char *value);
|
|
|
|
/**
|
|
* @brief undefine preprocess symbol 'sym'
|
|
*/
|
|
void tcc_undefine_symbol(TCCState *s, const char *sym);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @defgroup compiling Compiling
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief add a file (C file, object, library, ld script). Return -1 if error.
|
|
*/
|
|
int tcc_add_file(TCCState *s, const char *filename);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @defgroup linking Linking commands
|
|
* @{
|
|
*/
|
|
# define TCC_OUTPUT_EXE 2 /** executable file */
|
|
# define TCC_OUTPUT_OBJ 3 /** object file */
|
|
# define TCC_OUTPUT_PREPROCESS 5 /** only preprocess */
|
|
|
|
/**
|
|
* @brief set output type. MUST BE CALLED before any compilation.
|
|
*/
|
|
int tcc_set_output_type(TCCState *s, int output_type);
|
|
|
|
/**
|
|
* @brief equivalent to -Lpath option.
|
|
*/
|
|
int tcc_add_library_path(TCCState *s, const char *pathname);
|
|
|
|
/**
|
|
* @brief the library name is the same as the argument of the '-l' option.
|
|
*/
|
|
int tcc_add_library(TCCState *s, const char *libraryname);
|
|
|
|
/**
|
|
* @brief output an executable, library or object file.
|
|
*/
|
|
int tcc_output_file(TCCState *s, const char *filename);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* experimental/advanced section (see libtcc_test_mt.c for an example).
|
|
* @defgroup experimental Experimental/Advanced
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief catch runtime exceptions (optionally limit backtraces at top_func), when using tcc_set_options("-bt").
|
|
*/
|
|
void *_tcc_setjmp(TCCState *s1, void *jmp_buf, void *top_func, void *longjmp);
|
|
|
|
# define tcc_setjmp(s1,jb,f) setjmp(_tcc_setjmp(s1, jb, f, longjmp))
|
|
|
|
typedef int TCCBtFunc(void *udata, void *pc, const char *file, int line, const char* func, const char *msg);
|
|
|
|
/**
|
|
* @brief custom error printer for runtime exceptions. Returning 0 stops backtrace.
|
|
*/
|
|
void tcc_set_backtrace_func(TCCState *s1, void* userdata, TCCBtFunc*);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
# ifdef __cplusplus
|
|
}
|
|
# endif /* __cplusplus */
|
|
|
|
#endif /* !TCC_H */ |