Add '-c' compiler flag
This commit is contained in:
parent
425466ce6e
commit
080f3a4c2d
20
tomo.c
20
tomo.c
@ -11,7 +11,7 @@
|
|||||||
#include "typecheck.h"
|
#include "typecheck.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
typedef enum { MODE_RUN, MODE_TRANSPILE, MODE_EXPANDED_TRANSPILE } mode_e;
|
typedef enum { MODE_RUN, MODE_COMPILE, MODE_TRANSPILE, MODE_EXPANDED_TRANSPILE } mode_e;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -20,6 +20,8 @@ int main(int argc, char *argv[])
|
|||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (streq(argv[i], "-t")) {
|
if (streq(argv[i], "-t")) {
|
||||||
mode = MODE_TRANSPILE;
|
mode = MODE_TRANSPILE;
|
||||||
|
} else if (streq(argv[i], "-c")) {
|
||||||
|
mode = MODE_COMPILE;
|
||||||
} else if (streq(argv[i], "-E")) {
|
} else if (streq(argv[i], "-E")) {
|
||||||
mode = MODE_EXPANDED_TRANSPILE;
|
mode = MODE_EXPANDED_TRANSPILE;
|
||||||
} else {
|
} else {
|
||||||
@ -91,6 +93,22 @@ int main(int argc, char *argv[])
|
|||||||
if (!cc) cc = "tcc";
|
if (!cc) cc = "tcc";
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
case MODE_COMPILE: {
|
||||||
|
const char *run = heap_strf("%s -x c %s -c - -o %s.o", cc, cflags, f->filename);
|
||||||
|
FILE *runner = popen(run, "w");
|
||||||
|
|
||||||
|
CORD program = CORD_all(
|
||||||
|
"// File: ", f->filename, ".h\n",
|
||||||
|
module.header,
|
||||||
|
"\n",
|
||||||
|
"// File: ", f->filename, ".c\n",
|
||||||
|
module.c_file
|
||||||
|
);
|
||||||
|
|
||||||
|
CORD_put(program, runner);
|
||||||
|
int status = pclose(runner);
|
||||||
|
return WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE;
|
||||||
|
}
|
||||||
case MODE_RUN: {
|
case MODE_RUN: {
|
||||||
const char *run = streq(cc, "tcc") ? heap_strf("tcc -run %s %s %s -", cflags, ldflags, ldlibs)
|
const char *run = streq(cc, "tcc") ? heap_strf("tcc -run %s %s %s -", cflags, ldflags, ldlibs)
|
||||||
: heap_strf("gcc -x c %s %s %s - -o program && ./program", cflags, ldflags, ldlibs);
|
: heap_strf("gcc -x c %s %s %s - -o program && ./program", cflags, ldflags, ldlibs);
|
||||||
|
Loading…
Reference in New Issue
Block a user