From ca1f5fcecdda1f33668825d35fdddcf371ba3bdf Mon Sep 17 00:00:00 2001 From: tma Date: Tue, 1 Nov 2005 22:09:15 +0000 Subject: * Split off q_platform.h from q_shared.h * Removed lcc PATH hack and replaced with something slightly less hacky * Removed all platform specific hostfiles from lcc and replaced with bytecode.c (from ankon) * Turned lcc option "-S" on permanently * Improved q3cpp so that it recursively adds include dirs to its list git-svn-id: svn://svn.icculus.org/quake3/trunk@209 edf5b092-35ff-0310-97b2-ce42778d08ea --- code/tools/lcc/cpp/cpp.h | 3 ++ code/tools/lcc/cpp/include.c | 27 ++++++++++++++ code/tools/lcc/cpp/unix.c | 28 +++++++-------- code/tools/lcc/etc/bytecode.c | 66 ++++++++++++++++++++++++++++++++++ code/tools/lcc/etc/gcc-solaris.c | 78 ---------------------------------------- code/tools/lcc/etc/irix.c | 64 --------------------------------- code/tools/lcc/etc/lcc.c | 56 ++++++----------------------- code/tools/lcc/etc/linux.c | 78 ---------------------------------------- code/tools/lcc/etc/osf.c | 53 --------------------------- code/tools/lcc/etc/solaris.c | 50 -------------------------- code/tools/lcc/etc/win32.c | 43 ---------------------- code/tools/lcc/makefile | 4 +-- 12 files changed, 122 insertions(+), 428 deletions(-) create mode 100644 code/tools/lcc/etc/bytecode.c delete mode 100644 code/tools/lcc/etc/gcc-solaris.c delete mode 100644 code/tools/lcc/etc/irix.c delete mode 100644 code/tools/lcc/etc/linux.c delete mode 100644 code/tools/lcc/etc/osf.c delete mode 100644 code/tools/lcc/etc/solaris.c delete mode 100644 code/tools/lcc/etc/win32.c (limited to 'code/tools') diff --git a/code/tools/lcc/cpp/cpp.h b/code/tools/lcc/cpp/cpp.h index 203ab74..ae855c9 100644 --- a/code/tools/lcc/cpp/cpp.h +++ b/code/tools/lcc/cpp/cpp.h @@ -108,6 +108,7 @@ void control(Tokenrow *); void dodefine(Tokenrow *); void doadefine(Tokenrow *, int); void doinclude(Tokenrow *); +void appendDirToIncludeList( char *dir ); void doif(Tokenrow *, enum kwtype); void expand(Tokenrow *, Nlist *); void builtin(Tokenrow *, int); @@ -140,6 +141,8 @@ void iniths(void); void setobjname(char *); #define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp) +char *basepath( char *fname ); + extern char *outp; extern Token nltoken; extern Source *cursource; diff --git a/code/tools/lcc/cpp/include.c b/code/tools/lcc/cpp/include.c index b3757e8..71bd90c 100644 --- a/code/tools/lcc/cpp/include.c +++ b/code/tools/lcc/cpp/include.c @@ -1,3 +1,4 @@ +#include #include #include #include "cpp.h" @@ -6,6 +7,29 @@ Includelist includelist[NINCLUDE]; extern char *objname; +void appendDirToIncludeList( char *dir ) +{ + int i; + + //avoid adding it more than once + for (i=NINCLUDE-2; i>=0; i--) { + if (includelist[i].file && + !strcmp (includelist[i].file, dir)) { + return; + } + } + + for (i=NINCLUDE-2; i>=0; i--) { + if (includelist[i].file==NULL) { + includelist[i].always = 1; + includelist[i].file = dir; + break; + } + } + if (i<0) + error(FATAL, "Too many -I directives"); +} + void doinclude(Tokenrow *trp) { @@ -44,6 +68,9 @@ doinclude(Tokenrow *trp) if (trp->tp < trp->lp || len==0) goto syntax; fname[len] = '\0'; + + appendDirToIncludeList( basepath( fname ) ); + if (fname[0]=='/') { fd = open(fname, 0); strcpy(iname, fname); diff --git a/code/tools/lcc/cpp/unix.c b/code/tools/lcc/cpp/unix.c index 749736c..f58b51e 100644 --- a/code/tools/lcc/cpp/unix.c +++ b/code/tools/lcc/cpp/unix.c @@ -29,15 +29,7 @@ setup(int argc, char **argv) includelist[i].deleted = 1; break; case 'I': - for (i=NINCLUDE-2; i>=0; i--) { - if (includelist[i].file==NULL) { - includelist[i].always = 1; - includelist[i].file = optarg; - break; - } - } - if (i<0) - error(FATAL, "Too many -I directives"); + appendDirToIncludeList( optarg ); break; case 'D': case 'U': @@ -66,11 +58,7 @@ setup(int argc, char **argv) fp = ""; fd = 0; if (optind +#include +#include "../../../qcommon/q_platform.h" + +#ifdef _WIN32 +#define BINEXT ".exe" +#else +#define BINEXT "" +#endif + +char *suffixes[] = { ".c", ".i", ".asm", ".o", ".out", 0 }; +char inputs[256] = ""; +char *cpp[] = { "q3cpp" BINEXT, + "-D__STDC__=1", "-D__STRICT_ANSI__", "-D__signed__=signed", "-DQ3_VM", + "$1", "$2", "$3", 0 }; +char *include[] = { 0 }; +char *com[] = { "q3rcc" BINEXT, "-target=bytecode", "$1", "$2", "$3", 0 }; +char *ld[] = { 0 }; +char *as[] = { 0 }; + +extern char *concat(char *, char *); + +/* +=============== +UpdatePaths + +Updates the paths to q3cpp and q3rcc based on +the directory that contains q3lcc +=============== +*/ +void UpdatePaths( const char *lccBinary ) +{ + char basepath[ 1024 ]; + char *p; + + strncpy( basepath, lccBinary, 1024 ); + p = strrchr( basepath, PATH_SEP ); + + if( p ) + { + *( p + 1 ) = '\0'; + + cpp[ 0 ] = concat( basepath, "q3cpp" BINEXT ); + com[ 0 ] = concat( basepath, "q3rcc" BINEXT ); + } +} + +int option(char *arg) { + if (strncmp(arg, "-lccdir=", 8) == 0) { + cpp[0] = concat(&arg[8], "/q3cpp" BINEXT); + include[0] = concat("-I", concat(&arg[8], "/include")); + com[0] = concat(&arg[8], "/q3rcc" BINEXT); + } else if (strcmp(arg, "-p") == 0 || strcmp(arg, "-pg") == 0) { + fprintf( stderr, "no profiling supported, %s ignored.\n", arg); + } else if (strcmp(arg, "-b") == 0) + ; + else if (strcmp(arg, "-g") == 0) + fprintf( stderr, "no debugging supported, %s ignored.\n", arg); + else if (strncmp(arg, "-ld=", 4) == 0 || strcmp(arg, "-static") == 0) { + fprintf( stderr, "no linking supported, %s ignored.\n", arg); + } else + return 0; + return 1; +} diff --git a/code/tools/lcc/etc/gcc-solaris.c b/code/tools/lcc/etc/gcc-solaris.c deleted file mode 100644 index d7effde..0000000 --- a/code/tools/lcc/etc/gcc-solaris.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Solaris with GNU Compilers */ - -#include - -/* -TTimo - 10-18-2001 -our binaries are named q3lcc q3rcc and q3cpp -removed hardcoded paths -removed __linux__ preprocessor define (confuses the preprocessor, we are doing bytecode!) -*/ - -#ifndef LCCDIR -#define LCCDIR "" -//#define LCCDIR "/usr/local/lib/lcc/" -#endif - -#ifdef _WIN32 -#define BINEXT ".exe" -#else -#define BINEXT "" -#endif - -char *suffixes[] = { ".c", ".i", ".asm", ".o", ".out", 0 }; -char inputs[256] = ""; -// TTimo experimental: do not compile with the __linux__ define, we are doing bytecode! -char *cpp[] = { LCCDIR "q3cpp" BINEXT, - "-U__GNUC__", "-D_POSIX_SOURCE", "-D__STDC__=1", "-D__STRICT_ANSI__", - "-Dunix", "-Di386", "-Dsun", - "-D__unix__", "-D__i386__", "-D__signed__=signed", - "$1", "$2", "$3", 0 }; -char *include[] = {"-I" LCCDIR "include", "-I" LCCDIR "gcc/include", "-I/usr/include", - "-I" SYSTEM "include", 0 }; -char *com[] = {LCCDIR "q3rcc" BINEXT, "-target=bytecode", "$1", "$2", "$3", 0 }; -char *as[] = { "/usr/bin/as", "-o", "$3", "$1", "$2", 0 }; -// NOTE TTimo I don't think we have any use with the native linkage -// our target is always bytecode.. -char *ld[] = { - /* 0 */ "/usr/ccs/bin/ld", "-m", "elf_i386", "-dynamic-linker", - /* 4 */ "/lib/ld-linux.so.2", "-o", "$3", - /* 7 */ "/usr/lib/crt1.o", "/usr/lib/crti.o", - /* 9 */ SYSTEM "crtbegin.o", - "$1", "$2", - /* 12 */ "-L" LCCDIR, - /* 13 */ "-llcc", - /* 14 */ "-L" LCCDIR "/gcc", "-lgcc", "-lc", "-lm", - /* 18 */ "", - /* 19 */ SYSTEM "crtend.o", "/usr/lib/crtn.o", - /* 20 */ "-L" SYSTEM, - 0 }; - -extern char *concat(char *, char *); - -int option(char *arg) { - if (strncmp(arg, "-lccdir=", 8) == 0) { - cpp[0] = concat(&arg[8], "/gcc/cpp"); - include[0] = concat("-I", concat(&arg[8], "/include")); - include[1] = concat("-I", concat(&arg[8], "/gcc/include")); - ld[9] = concat(&arg[8], "/gcc/crtbegin.o"); - ld[12] = concat("-L", &arg[8]); - ld[14] = concat("-L", concat(&arg[8], "/gcc")); - ld[19] = concat(&arg[8], "/gcc/crtend.o"); - com[0] = concat(&arg[8], "/rcc"); - } else if (strcmp(arg, "-p") == 0 || strcmp(arg, "-pg") == 0) { - ld[7] = "/usr/lib/gcrt1.o"; - ld[18] = "-lgmon"; - } else if (strcmp(arg, "-b") == 0) - ; - else if (strcmp(arg, "-g") == 0) - ; - else if (strncmp(arg, "-ld=", 4) == 0) - ld[0] = &arg[4]; - else if (strcmp(arg, "-static") == 0) { - ld[3] = "-static"; - ld[4] = ""; - } else - return 0; - return 1; -} diff --git a/code/tools/lcc/etc/irix.c b/code/tools/lcc/etc/irix.c deleted file mode 100644 index 1b123e2..0000000 --- a/code/tools/lcc/etc/irix.c +++ /dev/null @@ -1,64 +0,0 @@ -/* SGI big endian MIPSes running IRIX 5.2 at CS Dept., Princeton University */ - -#include - - -#ifndef LCCDIR -#define LCCDIR "/usr/local/lib/lcc/" -#endif - -char *suffixes[] = { ".c", ".i", ".s", ".o", ".out", 0 }; -char inputs[256] = ""; -char *cpp[] = { LCCDIR "cpp", "-D__STDC__=1", - "-DLANGUAGE_C", - "-DMIPSEB", - "-DSYSTYPE_SVR4", - "-D_CFE", - "-D_LANGUAGE_C", - "-D_MIPSEB", - "-D_MIPS_FPSET=16", - "-D_MIPS_ISA=_MIPS_ISA_MIPS1", - "-D_MIPS_SIM=_MIPS_SIM_ABI32", - "-D_MIPS_SZINT=32", - "-D_MIPS_SZLONG=32", - "-D_MIPS_SZPTR=32", - "-D_SGI_SOURCE", - "-D_SVR4_SOURCE", - "-D_SYSTYPE_SVR4", - "-D__host_mips", - "-D__mips=1", - "-D__sgi", - "-D__unix", - "-Dhost_mips", - "-Dmips", - "-Dsgi", - "-Dunix", - "$1", "$2", "$3", 0 }; -char *com[] = { LCCDIR "rcc", "-target=mips/irix", "$1", "$2", "$3", "", 0 }; -char *include[] = { "-I" LCCDIR "include", "-I/usr/local/include", - "-I/usr/include", 0 }; -char *as[] = { "/usr/bin/as", "-o", "$3", "$1", "-nocpp", "-KPIC", "$2", 0 }; -char *ld[] = { "/usr/bin/ld", "-require_dynamic_link", "_rld_new_interface", - "-elf", "-_SYSTYPE_SVR4", "-Wx,-G", "0", "-g0", "-KPIC", "-dont_warn_unused", - "-o", "$3", "/usr/lib/crt1.o", "-L/usr/local/lib", - "$1", "$2", "", "-L" LCCDIR, "-llcc", "-lc", "-lm", "/usr/lib/crtn.o", 0 -}; - -extern char *concat(char *, char *); - -int option(char *arg) { - if (strncmp(arg, "-lccdir=", 8) == 0) { - cpp[0] = concat(&arg[8], "/cpp"); - include[0] = concat("-I", concat(&arg[8], "/include")); - com[0] = concat(&arg[8], "/rcc"); - ld[17] = concat("-L", &arg[8]); - } else if (strcmp(arg, "-g") == 0) - ; - else if (strcmp(arg, "-p") == 0) - ld[12] = "/usr/lib/mcrt1.o"; - else if (strcmp(arg, "-b") == 0) - ; - else - return 0; - return 1; -} diff --git a/code/tools/lcc/etc/lcc.c b/code/tools/lcc/etc/lcc.c index ab411a8..1738c36 100644 --- a/code/tools/lcc/etc/lcc.c +++ b/code/tools/lcc/etc/lcc.c @@ -25,7 +25,7 @@ struct list { /* circular list nodes: */ static void *alloc(int); static List append(char *,List); -extern char *basepath(char *); +extern char *basename(char *); static int callsys(char *[]); extern char *concat(char *, char *); static int compile(char *, char *); @@ -57,7 +57,7 @@ extern int option(char *); static int errcnt; /* number of errors */ static int Eflag; /* -E specified */ -static int Sflag; /* -S specified */ +static int Sflag = 1; /* -S specified */ //for Q3 we always generate asm static int cflag; /* -c specified */ static int verbose; /* incremented for each -v */ static List llist[2]; /* loader files, flags */ @@ -73,49 +73,15 @@ char *tempdir = TEMPDIR; /* directory for temporary files */ static char *progname; static List lccinputs; /* list of input directories */ -/* -=============== -AddLCCDirToPath - -Append the base path of this file to the PATH so that q3lcc can find q3cpp and -q3rcc in its own directory. There are probably (much) cleaner ways of doing -this. -Tim Angus 05/09/05 -=============== -*/ -void AddLCCDirToPath( const char *lccBinary ) -{ - char basepath[ 1024 ]; - char path[ 4096 ]; - char *p; - - strncpy( basepath, lccBinary, 1024 ); - p = strrchr( basepath, '/' ); - if( !p ) - p = strrchr( basepath, '\\' ); - - if( p ) - { - *p = '\0'; -#ifdef _WIN32 - strncpy( path, "PATH=", 4096 ); - strncat( path, ";", 4096 ); - strncat( path, basepath, 4096 ); - _putenv( path ); -#else -/* Ugly workaround against execvp problem/limitation on Solaris 10 */ - snprintf( path, 4096, "PATH=%s:%s", basepath, getenv( "PATH" ) ); - putenv( path ); -#endif - } -} +extern void UpdatePaths( const char *lccBinary ); int main(int argc, char *argv[]) { int i, j, nf; - AddLCCDirToPath( argv[ 0 ] ); - progname = argv[0]; + + UpdatePaths( progname ); + ac = argc + 50; av = alloc(ac*sizeof(char *)); if (signal(SIGINT, SIG_IGN) != SIG_IGN) @@ -233,8 +199,8 @@ static List append(char *str, List list) { return p; } -/* basepath - return base name for name, e.g. /usr/drh/foo.c => foo */ -char *basepath(char *name) { +/* basename - return base name for name, e.g. /usr/drh/foo.c => foo */ +char *basename(char *name) { char *s, *b, *t = 0; for (b = s = name; *s; s++) @@ -437,7 +403,7 @@ static int filename(char *name, char *base) { static char *stemp, *itemp; if (base == 0) - base = basepath(name); + base = basename(name); switch (suffix(name, suffixes, 4)) { case 0: /* C source files */ compose(cpp, plist, append(name, 0), 0); @@ -719,14 +685,14 @@ static void opt(char *arg) { cflag++; return; case 'N': - if (strcmp(basepath(cpp[0]), "gcc-cpp") == 0) + if (strcmp(basename(cpp[0]), "gcc-cpp") == 0) plist = append("-nostdinc", plist); include[0] = 0; ilist = 0; return; case 'v': if (verbose++ == 0) { - if (strcmp(basepath(cpp[0]), "gcc-cpp") == 0) + if (strcmp(basename(cpp[0]), "gcc-cpp") == 0) plist = append(arg, plist); clist = append(arg, clist); fprintf(stderr, "%s %s\n", progname, rcsid); diff --git a/code/tools/lcc/etc/linux.c b/code/tools/lcc/etc/linux.c deleted file mode 100644 index f93a0ee..0000000 --- a/code/tools/lcc/etc/linux.c +++ /dev/null @@ -1,78 +0,0 @@ -/* x86s running Linux */ - -#include - -/* -TTimo - 10-18-2001 -our binaries are named q3lcc q3rcc and q3cpp -removed hardcoded paths -removed __linux__ preprocessor define (confuses the preprocessor, we are doing bytecode!) -*/ - -#ifndef LCCDIR -#define LCCDIR "" -//#define LCCDIR "/usr/local/lib/lcc/" -#endif - -#ifdef _WIN32 -#define BINEXT ".exe" -#else -#define BINEXT "" -#endif - -char *suffixes[] = { ".c", ".i", ".asm", ".o", ".out", 0 }; -char inputs[256] = ""; -// TTimo experimental: do not compile with the __linux__ define, we are doing bytecode! -char *cpp[] = { LCCDIR "q3cpp" BINEXT, - "-U__GNUC__", "-D_POSIX_SOURCE", "-D__STDC__=1", "-D__STRICT_ANSI__", - "-Dunix", "-Di386", "-Dlinux", - "-D__unix__", "-D__i386__", "-D__signed__=signed", - "$1", "$2", "$3", 0 }; -char *include[] = {"-I" LCCDIR "include", "-I" LCCDIR "gcc/include", "-I/usr/include", - "-I" SYSTEM "include", 0 }; -char *com[] = {LCCDIR "q3rcc" BINEXT, "-target=bytecode", "$1", "$2", "$3", 0 }; -char *as[] = { "/usr/bin/as", "-o", "$3", "$1", "$2", 0 }; -// NOTE TTimo I don't think we have any use with the native linkage -// our target is always bytecode.. -char *ld[] = { - /* 0 */ "/usr/bin/ld", "-m", "elf_i386", "-dynamic-linker", - /* 4 */ "/lib/ld-linux.so.2", "-o", "$3", - /* 7 */ "/usr/lib/crt1.o", "/usr/lib/crti.o", - /* 9 */ SYSTEM "crtbegin.o", - "$1", "$2", - /* 12 */ "-L" LCCDIR, - /* 13 */ "-llcc", - /* 14 */ "-L" LCCDIR "/gcc", "-lgcc", "-lc", "-lm", - /* 18 */ "", - /* 19 */ SYSTEM "crtend.o", "/usr/lib/crtn.o", - /* 20 */ "-L" SYSTEM, - 0 }; - -extern char *concat(char *, char *); - -int option(char *arg) { - if (strncmp(arg, "-lccdir=", 8) == 0) { - cpp[0] = concat(&arg[8], "/gcc/cpp"); - include[0] = concat("-I", concat(&arg[8], "/include")); - include[1] = concat("-I", concat(&arg[8], "/gcc/include")); - ld[9] = concat(&arg[8], "/gcc/crtbegin.o"); - ld[12] = concat("-L", &arg[8]); - ld[14] = concat("-L", concat(&arg[8], "/gcc")); - ld[19] = concat(&arg[8], "/gcc/crtend.o"); - com[0] = concat(&arg[8], "/rcc"); - } else if (strcmp(arg, "-p") == 0 || strcmp(arg, "-pg") == 0) { - ld[7] = "/usr/lib/gcrt1.o"; - ld[18] = "-lgmon"; - } else if (strcmp(arg, "-b") == 0) - ; - else if (strcmp(arg, "-g") == 0) - ; - else if (strncmp(arg, "-ld=", 4) == 0) - ld[0] = &arg[4]; - else if (strcmp(arg, "-static") == 0) { - ld[3] = "-static"; - ld[4] = ""; - } else - return 0; - return 1; -} diff --git a/code/tools/lcc/etc/osf.c b/code/tools/lcc/etc/osf.c deleted file mode 100644 index 3f1d686..0000000 --- a/code/tools/lcc/etc/osf.c +++ /dev/null @@ -1,53 +0,0 @@ -/* DEC ALPHAs running OSF/1 V3.2A (Rev. 17) at Princeton University */ - -#include - - -#ifndef LCCDIR -#define LCCDIR "/usr/local/lib/lcc/" -#endif - -char *suffixes[] = { ".c", ".i", ".s", ".o", ".out", 0 }; -char inputs[256] = ""; -char *cpp[] = { - LCCDIR "cpp", "-D__STDC__=1", - "-DLANGUAGE_C", "-D__LANGUAGE_C__", - "-D_unix", "-D__unix__", "-D_osf", "-D__osf__", "-Dunix", - "-Dalpha", "-D_alpha", "-D__alpha", - "-D__SYSTYPE_BSD", "-D_SYSTYPE_BSD", - "$1", "$2", "$3", 0 }; -char *com[] = { LCCDIR "rcc", "-target=alpha/osf", "$1", "$2", "$3", "", 0 }; -char *include[] = { "-I" LCCDIR "include", "-I/usr/local/include", - "-I/usr/include", 0 }; -char *as[] = { "/bin/as", "-o", "$3", "", "$1", "-nocpp", "$2", 0 }; -char *ld[] = { "/usr/bin/ld", "-o", "$3", "/usr/lib/cmplrs/cc/crt0.o", - "$1", "$2", "", "", "-L" LCCDIR, "-llcc", "-lm", "-lc", 0 }; - -extern char *concat(char *, char *); -extern int access(const char *, int); - -int option(char *arg) { - if (strncmp(arg, "-lccdir=", 8) == 0) { - cpp[0] = concat(&arg[8], "/cpp"); - include[0] = concat("-I", concat(&arg[8], "/include")); - com[0] = concat(&arg[8], "/rcc"); - ld[8] = concat("-L", &arg[8]); - } else if (strcmp(arg, "-g4") == 0 - && access("/u/drh/lib/alpha/rcc", 4) == 0 - && access("/u/drh/book/cdb/alpha/osf/cdbld", 4) == 0) { - com[0] = "/u/drh/lib/alpha/rcc"; - com[5] = "-g4"; - ld[0] = "/u/drh/book/cdb/alpha/osf/cdbld"; - ld[1] = "-o"; - ld[2] = "$3"; - ld[3] = "$1"; - ld[4] = "$2"; - ld[5] = 0; - } else if (strcmp(arg, "-g") == 0) - return 1; - else if (strcmp(arg, "-b") == 0) - ; - else - return 0; - return 1; -} diff --git a/code/tools/lcc/etc/solaris.c b/code/tools/lcc/etc/solaris.c deleted file mode 100644 index 1cd755e..0000000 --- a/code/tools/lcc/etc/solaris.c +++ /dev/null @@ -1,50 +0,0 @@ -/* SPARCs running Solaris 2.5.1 at CS Dept., Princeton University */ - -#include - - -#ifndef LCCDIR -#define LCCDIR "/usr/local/lib/lcc/" -#endif -#ifndef SUNDIR -#define SUNDIR "/opt/SUNWspro/SC4.2/lib/" -#endif - -char *suffixes[] = { ".c", ".i", ".s", ".o", ".out", 0 }; -char inputs[256] = ""; -char *cpp[] = { LCCDIR "cpp", - "-D__STDC__=1", "-Dsparc", "-D__sparc__", "-Dsun", "-D__sun__", "-Dunix", - "$1", "$2", "$3", 0 }; -char *include[] = { "-I" LCCDIR "include", "-I/usr/local/include", - "-I/usr/include", 0 }; -char *com[] = { LCCDIR "rcc", "-target=sparc/solaris", - "$1", "$2", "$3", 0 }; -char *as[] = { "/usr/ccs/bin/as", "-Qy", "-s", "-o", "$3", "$1", "$2", 0 }; -char *ld[] = { "/usr/ccs/bin/ld", "-o", "$3", "$1", - SUNDIR "crti.o", SUNDIR "crt1.o", - SUNDIR "values-xa.o", "$2", "", - "-Y", "P," SUNDIR ":/usr/ccs/lib:/usr/lib", "-Qy", - "-L" LCCDIR, "-llcc", "-lm", "-lc", SUNDIR "crtn.o", 0 }; - -extern char *concat(char *, char *); - -int option(char *arg) { - if (strncmp(arg, "-lccdir=", 8) == 0) { - cpp[0] = concat(&arg[8], "/cpp"); - include[0] = concat("-I", concat(&arg[8], "/include")); - ld[12] = concat("-L", &arg[8]); - com[0] = concat(&arg[8], "/rcc"); - } else if (strcmp(arg, "-g") == 0) - ; - else if (strcmp(arg, "-p") == 0) { - ld[5] = SUNDIR "mcrt1.o"; - ld[10] = "P," SUNDIR "libp:/usr/ccs/lib/libp:/usr/lib/libp:" - SUNDIR ":/usr/ccs/lib:/usr/lib"; - } else if (strcmp(arg, "-b") == 0) - ; - else if (strncmp(arg, "-ld=", 4) == 0) - ld[0] = &arg[4]; - else - return 0; - return 1; -} diff --git a/code/tools/lcc/etc/win32.c b/code/tools/lcc/etc/win32.c deleted file mode 100644 index 4b316dc..0000000 --- a/code/tools/lcc/etc/win32.c +++ /dev/null @@ -1,43 +0,0 @@ -/* x86s running MS Windows NT 4.0 */ - -#include - - -#ifndef LCCDIR -// JDC #define LCCDIR "\\progra~1\\lcc\\4.1\\bin\\" -//#define LCCDIR "\\quake3\\source\\lcc\\bin\\" // JDC -// TTimo: q3cpp q3rcc & no hardcoded paths -#define LCCDIR "" -#endif - -char *suffixes[] = { ".c;.C", ".i;.I", ".asm;.ASM;.s;.S", ".obj;.OBJ", ".exe", 0 }; -char inputs[256] = ""; -char *cpp[] = { LCCDIR "q3cpp", "-D__STDC__=1", "-Dwin32", "-D_WIN32", "-D_M_IX86", - "$1", "$2", "$3", 0 }; -char *include[] = { "-I" LCCDIR "include", 0 }; -char *com[] = { LCCDIR "q3rcc", "-target=x86/win32", "$1", "$2", "$3", 0 }; -char *as[] = { "ml", "-nologo", "-c", "-Cp", "-coff", "-Fo$3", "$1", "$2", 0 }; -char *ld[] = { "link", "-nologo", - "-align:0x1000", "-subsystem:console", "-entry:mainCRTStartup", - "$2", "-OUT:$3", "$1", LCCDIR "liblcc.lib", "libc.lib", "kernel32.lib", 0 }; - -extern char *concat(char *, char *); -extern char *replace(const char *, int, int); - -int option(char *arg) { - if (strncmp(arg, "-lccdir=", 8) == 0) { - arg = replace(arg + 8, '/', '\\'); - if (arg[strlen(arg)-1] == '\\') - arg[strlen(arg)-1] = '\0'; - cpp[0] = concat(arg, "\\cpp.exe"); - include[0] = concat("-I", concat(arg, "\\include")); - com[0] = concat(arg, "\\rcc.exe"); - ld[8] = concat(arg, "\\liblcc.lib"); - } else if (strcmp(arg, "-b") == 0) - ; - else if (strncmp(arg, "-ld=", 4) == 0) - ld[0] = &arg[4]; - else - return 0; - return 1; -} diff --git a/code/tools/lcc/makefile b/code/tools/lcc/makefile index 10f551a..0eacaf2 100644 --- a/code/tools/lcc/makefile +++ b/code/tools/lcc/makefile @@ -1,6 +1,5 @@ # $Id: makefile 145 2001-10-17 21:53:10Z timo $ PLATFORM=$(shell uname|sed -e s/_.*//|tr A-Z a-z) -HOSTFILE=etc/linux.c TEMPDIR=/tmp A=.a O=.o @@ -27,7 +26,6 @@ BD=$(BUILDDIR)/ T=$(TSTDIR)/ ifeq ($(PLATFORM),SunOS) INSTALL=ginstall -HOSTFILE=etc/gcc-solaris.c else INSTALL=install endif @@ -148,7 +146,7 @@ $(BD)bprint$(O): etc/bprint.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ etc/bprint.c $(BD)q3lcc$(E): $(BD)q3lcc$(O) $(BD)host$(O); $(LD) $(LDFLAGS) -o $@ $(BD)q3lcc$(O) $(BD)host$(O) $(BD)q3lcc$(O): etc/lcc.c; $(CC) $(LCC_CFLAGS) -c -DTEMPDIR=\"$(TEMPDIR)\" -o $@ etc/lcc.c -$(BD)host$(O): $(HOSTFILE); $(CC) $(LCC_CFLAGS) -c -DSYSTEM=\"\" -o $@ $(HOSTFILE) +$(BD)host$(O): etc/bytecode.c; $(CC) $(LCC_CFLAGS) -c -DSYSTEM=\"\" -o $@ etc/bytecode.c LIBOBJS=$(BD)assert$(O) $(BD)bbexit$(O) $(BD)yynull$(O) -- cgit v1.2.3