286 lines
16 KiB
C
286 lines
16 KiB
C
// Put this script in tinycc, compile it, then run it.
|
|
#ifndef ENV_CC
|
|
#define ENV_CC "tcc"
|
|
#endif
|
|
|
|
/*
|
|
#define ENV_SPATH "C:\\tinycc"
|
|
#define ENV_CC ENV_SPATH"\\tcc.exe","-I"ENV_SPATH"\\win32\\include","-I"ENV_SPATH"\\win32\\include\\sec_api","-I"ENV_SPATH"\\win32\\include\\sys","-I"ENV_SPATH"\\win32\\include\\tcc","-I"ENV_SPATH"\\win32\\include\\winapi","-I"ENV_SPATH"\\include","-I"ENV_SPATH,"-L"ENV_SPATH"\\win32\\lib","-L"ENV_SPATH"\\lib","-L"ENV_SPATH
|
|
*/
|
|
|
|
#ifndef ENV_CFLAGS
|
|
#define ENV_CFLAGS "-D__MTC_NONE"
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
|
|
#if PLATFORM_LINUX
|
|
#define ENV_PLATFORM "linux"
|
|
#include <unistd.h>
|
|
#include <sys/wait.h>
|
|
#elif PLATFORM_WINDOWS
|
|
#define ENV_PLATFORM "windows"
|
|
#include <unistd.h>
|
|
#include <windows.h>
|
|
#else
|
|
#warning "ERROR: Please define a platform with -DPLATFORM_*."
|
|
#warning ""
|
|
#warning "Available platforms:"
|
|
#warning "* LINUX"
|
|
#warning "* WINDOWS"
|
|
#warning ""
|
|
#warning "Example: -DPLATFORM_LINUX"
|
|
#define ENV_QUIT
|
|
#endif
|
|
|
|
#if ARCH_I386
|
|
#if PLATFORM_LINUX
|
|
#define ARCH_TRIPLET "i386-linux-gnu"
|
|
#endif
|
|
#define ARCH_NAME "I386"
|
|
#elif ARCH_X86_64
|
|
#if PLATFORM_LINUX
|
|
#define ARCH_TRIPLET "x86_64-linux-gnu"
|
|
#endif
|
|
#define ARCH_NAME "X86_64"
|
|
#else
|
|
#warning "ERROR: Please define an architecture with -DARCH_*."
|
|
#warning ""
|
|
#warning "Available architectures:"
|
|
#warning "* I386"
|
|
#warning "* X86_64"
|
|
#warning ""
|
|
#warning "Example: -DARCH_I386"
|
|
#define ENV_QUIT
|
|
#endif
|
|
|
|
#if ENV_QUIT
|
|
#error "Compilation failed."
|
|
#endif
|
|
|
|
int _call_proc(char * argv[]) {
|
|
#if PLATFORM_LINUX
|
|
pid_t pid;
|
|
int status;
|
|
pid = fork();
|
|
|
|
if (pid == -1) {
|
|
return -1;
|
|
}
|
|
|
|
if (pid == 0) { // Child process
|
|
execvp(argv[0],argv);
|
|
// execvp only returns if an error occurs.
|
|
return -1;
|
|
} else { // Parent process
|
|
waitpid(pid,&status,0);
|
|
if (WIFEXITED(status) != 1) { return -1; }
|
|
return WEXITSTATUS(status);
|
|
}
|
|
|
|
return -1;
|
|
#elif PLATFORM_WINDOWS
|
|
char * command;
|
|
long commandLength = 0;
|
|
int i;
|
|
for (i = 0; argv[i] != NULL; i++) {
|
|
commandLength += strlen(argv[i]) + 3;
|
|
int si;
|
|
for (si = 0; argv[i][si] != 0; si++) {
|
|
if (argv[i][si] == '"') {
|
|
commandLength++;
|
|
}
|
|
}
|
|
}
|
|
|
|
commandLength += 1;
|
|
command = malloc(commandLength);
|
|
command[0] = 0;
|
|
|
|
for (i = 0; argv[i] != NULL; i++) {
|
|
int si;
|
|
strcat(command,"\"");
|
|
for (si = 0; argv[i][si] != 0; si++) {
|
|
if (argv[i][si] == '"') {
|
|
strcat(command,"\\");
|
|
}
|
|
strncat(command,(char *)&argv[i][si],1);
|
|
}
|
|
|
|
strcat(command,"\" ");
|
|
}
|
|
command[commandLength - 2] = 0;
|
|
|
|
// windows-specific section
|
|
STARTUPINFO si;
|
|
PROCESS_INFORMATION pi;
|
|
ZeroMemory(&si,sizeof(si));
|
|
si.cb = sizeof(si);
|
|
ZeroMemory(&pi,sizeof(pi));
|
|
|
|
BOOL b = CreateProcess(NULL,command,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
|
|
free(command);
|
|
if (b == 0) {
|
|
return -1;
|
|
}
|
|
WaitForSingleObject(pi.hProcess,INFINITE);
|
|
DWORD status;
|
|
if (!GetExitCodeProcess(pi.hProcess,&status)) {
|
|
CloseHandle(pi.hProcess);
|
|
CloseHandle(pi.hThread);
|
|
return -1;
|
|
}
|
|
|
|
CloseHandle(pi.hProcess);
|
|
CloseHandle(pi.hThread);
|
|
return status;
|
|
#endif
|
|
}
|
|
|
|
int call_proc(char * file, ...) {
|
|
char ** argv = malloc(sizeof(char *));
|
|
argv[0] = file;
|
|
|
|
int i = 1;
|
|
char * str = file;
|
|
va_list args;
|
|
va_start(args,file);
|
|
|
|
while (str != NULL) {
|
|
str = va_arg(args, char *);
|
|
argv = realloc(argv,sizeof(char *) * (i + 1));
|
|
argv[i] = str;
|
|
i++;
|
|
}
|
|
|
|
int code = _call_proc(argv);
|
|
free(argv);
|
|
va_end(args);
|
|
return code;
|
|
}
|
|
|
|
void call_proc_error(char * file, ...) {
|
|
char ** argv = malloc(sizeof(char *));
|
|
argv[0] = file;
|
|
|
|
int i = 1;
|
|
char * str = file;
|
|
va_list args;
|
|
va_start(args,file);
|
|
|
|
while (str != NULL) {
|
|
str = va_arg(args, char *);
|
|
argv = realloc(argv,sizeof(char *) * (i + 1));
|
|
argv[i] = str;
|
|
i++;
|
|
}
|
|
|
|
printf("* ");
|
|
int di;
|
|
for (di = 0; argv[di] != NULL; di++) {
|
|
printf("\"");
|
|
printf("%s",argv[di]);
|
|
printf("\" ");
|
|
}
|
|
printf("\n");
|
|
fflush(stdout);
|
|
|
|
int code = _call_proc(argv);
|
|
free(argv);
|
|
va_end(args);
|
|
if (code != 0) {
|
|
printf("Error %d, quitting.\n",code);
|
|
exit(code);
|
|
}
|
|
}
|
|
|
|
int main (int argc, const char * argv[]) {
|
|
/*printf("* ENV_PLATFORM: '"ENV_PLATFORM"'\n");
|
|
printf("* ENV_CC: '"ENV_CC"'\n");
|
|
printf("* ENV_CFLAGS: '"ENV_CFLAGS"'\n");
|
|
printf("\n");*/
|
|
|
|
#if PLATFORM_LINUX
|
|
call_proc_error(ENV_CC,"-o","tcc.o","-c","tcc.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-DTCC_GITHASH=\"2024-02-19 mob@d2f8ceac\"","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","libtcc.o","-c","libtcc.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-DC2STR","conftest.c","-o","c2str.exe",NULL);
|
|
call_proc_error("./c2str.exe","include/tccdefs.h","tccdefs_.h",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccpp.o","-c","tccpp.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccgen.o","-c","tccgen.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccdbg.o","-c","tccdbg.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccelf.o","-c","tccelf.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccasm.o","-c","tccasm.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccrun.o","-c","tccrun.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","x86_64-gen.o","-c","x86_64-gen.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","x86_64-link.o","-c","x86_64-link.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","i386-asm.o","-c","i386-asm.c","-DCONFIG_TRIPLET=\""ARCH_TRIPLET"\"","-DTCC_TARGET_"ARCH_NAME,"-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-shared","-o","libtcc.a","libtcc.o","tccpp.o","tccgen.o","tccdbg.o","tccelf.o","tccasm.o","tccrun.o","x86_64-gen.o","x86_64-link.o","i386-asm.o",NULL);
|
|
call_proc_error(ENV_CC,"-o","tcc","tcc.o","libtcc.a","-lm","-ldl","-lpthread",NULL);
|
|
|
|
|
|
chdir("lib");
|
|
call_proc_error("../tcc","-c","libtcc1.c","-o","libtcc1.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","alloca.S","-o","alloca.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","alloca-bt.S","-o","alloca-bt.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","stdatomic.c","-o","stdatomic.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","atomic.S","-o","atomic.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","builtin.c","-o","builtin.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","tcov.c","-o","tcov.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","va_list.c","-o","va_list.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","dsohandle.c","-o","dsohandle.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-ar","rcs","../libtcc1.a","libtcc1.o","alloca.o","alloca-bt.o","stdatomic.o","atomic.o","builtin.o","tcov.o","va_list.o","dsohandle.o",NULL);
|
|
call_proc_error("../tcc","-c","bt-exe.c","-o","../bt-exe.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","bt-log.c","-o","../bt-log.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","runmain.c","-o","../runmain.o","-B..","-I..",NULL);
|
|
call_proc_error("../tcc","-c","bcheck.c","-o","../bcheck.o","-B..","-I..","-bt",NULL);
|
|
chdir("..");
|
|
#endif
|
|
|
|
#if PLATFORM_WINDOWS
|
|
call_proc_error(ENV_CC,"-o","tcc.o","-c","tcc.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DONE_SOURCE=0","-DTCC_GITHASH=\"2024-02-22 master@9546894\"","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","libtcc.o","-c","libtcc.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-DC2STR","conftest.c","-o","c2str.exe",NULL);
|
|
call_proc_error("./c2str.exe","include/tccdefs.h","tccdefs_.h",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccpp.o","-c","tccpp.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccgen.o","-c","tccgen.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccdbg.o","-c","tccdbg.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccelf.o","-c","tccelf.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccasm.o","-c","tccasm.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccrun.o","-c","tccrun.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","i386-gen.o","-c","i386-gen.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","i386-link.o","-c","i386-link.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","i386-asm.o","-c","i386-asm.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-o","tccpe.o","-c","tccpe.c","-DTCC_TARGET_"ARCH_NAME,"-DTCC_TARGET_PE","-DLIBTCC_AS_DLL","-DONE_SOURCE=0","-Wall","-O2","-Wdeclaration-after-statement","-fno-strict-aliasing","-Wno-pointer-sign","-Wno-sign-compare","-Wno-unused-result","-Wno-format-truncation","-Wno-stringop-truncation","-I.",NULL);
|
|
call_proc_error(ENV_CC,"-shared","-o","libtcc.dll","libtcc.o","tccpp.o","tccgen.o","tccdbg.o","tccelf.o","tccasm.o","tccrun.o","i386-gen.o","i386-link.o","i386-asm.o","tccpe.o","-static","-s",NULL);
|
|
call_proc_error(ENV_CC,"-o","tcc.exe","tcc.o","libtcc.dll","-static","-s",NULL);
|
|
call_proc_error("./tcc.exe","-impdef","libtcc.dll","-o","libtcc.def",NULL);
|
|
chdir("lib");
|
|
call_proc_error("../tcc.exe","-c","libtcc1.c","-o","libtcc1.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","alloca.S","-o","alloca.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","alloca-bt.S","-o","alloca-bt.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","stdatomic.c","-o","stdatomic.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","atomic.S","-o","atomic.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","builtin.c","-o","builtin.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","tcov.c","-o","tcov.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/chkstk.S","-o","chkstk.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/crt1.c","-o","crt1.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/crt1w.c","-o","crt1w.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/wincrt1.c","-o","wincrt1.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/wincrt1w.c","-o","wincrt1w.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/dllcrt1.c","-o","dllcrt1.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","../win32/lib/dllmain.c","-o","dllmain.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-ar","rcs","../libtcc1.a","libtcc1.o","alloca.o","alloca-bt.o","stdatomic.o","atomic.o","builtin.o","tcov.o","chkstk.o","crt1.o","crt1w.o","wincrt1.o","wincrt1w.o","dllcrt1.o","dllmain.o",NULL);
|
|
call_proc_error("../tcc.exe","-c","bt-exe.c","-o","../bt-exe.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","bt-log.c","-o","../bt-log.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","runmain.c","-o","../runmain.o","-B../win32","-I../include","-I..",NULL);
|
|
call_proc_error("../tcc.exe","-c","bcheck.c","-o","../bcheck.o","-B../win32","-I../include","-I..","-bt",NULL);
|
|
call_proc_error("../tcc.exe","-c","bt-dll.c","-o","../bt-dll.o","-B../win32","-I../include","-I..",NULL);
|
|
chdir("..");
|
|
#endif
|
|
|
|
return 0;
|
|
}
|