Commit graph

397 commits

Author SHA1 Message Date
Bill Currie
16298914f0 default sourcedir to "" rather than "./" and strip leading paths from the
tempname when preserving temps
2002-02-05 22:08:19 +00:00
Bill Currie
cb0db8b8d1 disable debug putout and allow the cpp command line to be specified. 2002-02-05 19:35:45 +00:00
Bill Currie
f2a8f8ff28 make cpp command line selection more intelligent. This should take care of
the stuck cpp problem on openbsd.
2002-02-05 18:40:47 +00:00
Ragnvald Maartmann-Moe IV
a3c699a921 Fix three gitignores. 2002-01-31 07:49:29 +00:00
Bill Currie
ad6d847728 fix qfcc's incorrect allocation/initialization for pointers (eg, float [] foo) 2002-01-30 22:57:48 +00:00
Bill Currie
3d9c8a9a60 get nil conversions working fully and things like !pointer 2002-01-30 22:17:55 +00:00
Bill Currie
6a393d175e implement typedef 2002-01-23 20:50:25 +00:00
Bill Currie
3f958ae29b more make dist fixes 2002-01-22 18:04:03 +00:00
Bill Currie
ecd539cbd3 some make dist fixes 2002-01-22 17:17:18 +00:00
Bill Currie
c8ef2d8b55 subdirs must come /after/ their parent in the AC_OUTPUT list 2002-01-22 07:42:35 +00:00
Bill Currie
8a24b28d97 scary, but the only changes qfcc needed to build as part of quakeforge was
to auto-substitued the libs and headers.

 o  unconditionally build qfcc (for now, anyway) when building quakeforge
    (needed for cs-code compilation)
 o  when built as part of quakeforge (qfcc should still be buildable
    independently) always enable cpp
 o  autoconfiscate the client-side code
 o  build the client-side code using the built qfcc
 o  install the client-side code in $(datadir)/quakeforge/id1
2002-01-22 05:48:03 +00:00
Bill Currie
f1f2dd713d generate progdefs.h only for v6only
generate files.dat only if -F or --files is given on the command line
2002-01-21 23:30:54 +00:00
Bill Currie
7775dab7bb remove debug 2002-01-21 19:19:07 +00:00
Bill Currie
f2d097c013 resolve the case value before checking its type 2002-01-21 19:18:41 +00:00
Bill Currie
2ce5a91373 allow enum {...} name; but ignore name (eases C <-> QC header compat) 2002-01-21 19:09:23 +00:00
Bill Currie
64c5983742 enum support 2002-01-21 19:03:29 +00:00
Bill Currie
cef918df83 get array initialisation worrking 2002-01-18 08:26:37 +00:00
Bill Currie
d69762facd integer() and float() casts seem to work 2002-01-17 19:32:04 +00:00
Bill Currie
08c1d57c53 fix a param scoping error 2002-01-17 16:59:00 +00:00
Bill Currie
7227ab4363 qfcc.c:
add -P,--progs-src so you can specify the name of the progs.src file
rest:
	add/use print_type
2002-01-17 08:19:53 +00:00
Jeff Teunissen
8c2d3f65c3 Add a couple symbols to qfcc's preprocessor lines 2002-01-05 19:18:27 +00:00
Jeff Teunissen
9f6dcec9dd --save-temps support for qfcc. It'll leave files with the same filenames
they're generated from, with the exception that they will have an
extension of .p. Obviously, depends on cpp support.
2002-01-05 19:13:20 +00:00
Jeff Teunissen
a0370e52d2 Manpage should be both distributed and installed now. 2002-01-05 18:46:59 +00:00
Jeff Teunissen
33b6429aa7 Makefiles for docs. 2002-01-05 18:46:05 +00:00
Bill Currie
f591b27532 set the result of the block used for self.maxs = obj.origin; type expressions 2002-01-04 18:43:55 +00:00
Bill Currie
718a64343b more old-code cleanup. move PR_LexString into make_string 2002-01-04 18:27:01 +00:00
Bill Currie
12d2338d1b handle dos line endings a little better 2002-01-04 17:13:13 +00:00
Forest Hale
184ff4a216 made qfcc compile again, by renaming com_token to qfcc_com_token so it does not conflict with QFutil 2002-01-04 11:12:52 +00:00
Bill Currie
9d2739598a character constants 2002-01-04 08:45:24 +00:00
Jeff Teunissen
2185e0a92e Update qfcc man page. 2001-12-14 05:33:00 +00:00
Bill Currie
f392c395df fix some uninitialized warnings my gcc missed, but misty's got 2001-12-13 16:40:46 +00:00
Bill Currie
d95bf0ada8 blah 2001-12-12 22:04:34 +00:00
Bill Currie
112f74a357 make integer constant division warnings optional 2001-12-12 22:00:42 +00:00
Bill Currie
195dd1032e clean up some dead code 2001-12-12 21:52:07 +00:00
Bill Currie
2b458dd13d clean up line/file management 2001-12-12 21:50:11 +00:00
Bill Currie
6d65fe853d spontaneous temp defs need to have their users incremented when an
assignment is part of a sub expression
2001-12-12 21:29:04 +00:00
Bill Currie
7e38a8d9a0 clean up the return def selection for emit_assign_expr 2001-12-12 20:55:55 +00:00
Bill Currie
8ddce20949 pr_*: add storep.p so pointers can be stored into entities
emit.c: convert & (address) to . in unary .
        rewrite emit_assign_expr
expr.c: remove debug code and make unary . less agressive on address calcs
        also convert & (address) to . for lvals
2001-12-12 20:35:58 +00:00
Bill Currie
b56d7f3248 emit.c:
fix a missing else (should convert to switch)
expr.c:
	fix address_expr for binary expressions
	fix unary .
2001-12-12 18:34:41 +00:00
Bill Currie
f9149a0d6c finally get around to renaming type_name to pr_type_name 2001-12-12 17:15:09 +00:00
Bill Currie
cc34e5954f lots of work on better array/pointer/struct handline. doesn't quite work yet 2001-12-12 08:39:47 +00:00
Bill Currie
835468bcfb beginnings of breaking out the type code 2001-12-11 19:58:12 +00:00
Bill Currie
e976211faf header block fixes 2001-12-08 20:40:50 +00:00
Bill Currie
00b2a45ecd change the operator for "address" from "." to "&" so load.p can be implement.
this makes it so pointers in entities work.
2001-12-08 20:17:20 +00:00
Bill Currie
a184199146 get arrays of structures working 2001-12-08 17:36:58 +00:00
Bill Currie
b03a1bee42 ok, structures seem to generate correct code now 2001-12-08 08:19:48 +00:00
Bill Currie
3293c5e85f beginnings of structure code. committed because cvs diff doesn't work on
new files
2001-12-08 00:09:11 +00:00
Bill Currie
1767ad435f use the new immediate indeces to make small array indeces not use a global 2001-12-07 20:10:30 +00:00
Bill Currie
0c2f36f9a3 some dead code cleanup 2001-12-06 20:05:49 +00:00
Bill Currie
3c2c4aa9e6 indent whitespace cleanup. not perfect, but a bit more consistent now 2001-12-06 19:49:40 +00:00
Bill Currie
61786182d2 whitespace 2001-12-06 18:14:44 +00:00
Bill Currie
12a0a10d33 more alpha portability fixes 2001-11-29 19:35:25 +00:00
Bill Currie
3f7c4f146e allocate space for field arrays and report entity size 2001-11-15 05:31:15 +00:00
Bill Currie
e45bb62f23 ok, correct code seems to be getting generated for both array access and
entity field access
2001-11-15 04:32:50 +00:00
Bill Currie
40d47e91cb win32 portability fixes 2001-11-15 03:54:35 +00:00
Bill Currie
7d9266a3f0 beginnings of array support. no array initialization yet and foo[i] = bar is
broken.
2001-11-15 00:46:36 +00:00
Bill Currie
8aa83d04f3 oops, that's not how that works :) 2001-11-15 00:25:15 +00:00
Bill Currie
cf37275def add -g option (shortcut for --code=debug) 2001-11-14 23:17:20 +00:00
Bill Currie
ed331517b3 more grammar re-work preparing for arrays and structs 2001-11-14 22:31:57 +00:00
Bill Currie
a2bfff5dc4 simplify the type rule 2001-11-14 07:16:58 +00:00
Bill Currie
3fe67eecd2 expr.c:
it helps if one understands /why/ something is done. I think this
	might be it for the reference count tweeks
switch.c:
	o	better control over whether case ranges are built
	o	/always/ append the temp = test expression and use temp instead of
		test for the != check
	o	only ever build case ranges if the switch expression is integer
2001-11-14 06:45:31 +00:00
Bill Currie
dc80f51d89 fix a missed immediate type missmatch case 2001-11-14 05:08:37 +00:00
Bill Currie
da36feff7f oops, failed to notice that relocs on temp defs weren't being done correctly
memset wasn't such a good idea :P
2001-11-13 23:21:23 +00:00
Bill Currie
cfa47717c6 expr.c:
once again, temp def ref counts seem to be correct
pr_def.c:
	reset recycled temp defs
2001-11-13 23:17:32 +00:00
Bill Currie
ad5deea582 missed this in the cleanup 2001-11-13 23:14:59 +00:00
Bill Currie
3874d78697 slightly better code, but the temp isn't getting ref-counted correctly 2001-11-13 22:11:45 +00:00
Bill Currie
68fb0a1147 clean out a bunch of unneeded code. this should take care of static linking 2001-11-13 20:34:21 +00:00
Bill Currie
645c400802 rearrange default jump for slightly better code generation 2001-11-13 20:27:05 +00:00
Bill Currie
4291f9c711 create new_bind_expr and more tweeks to temp def ref counting 2001-11-13 18:49:27 +00:00
Bill Currie
f2f8e096f3 qfcc.h:
o	add a "freed" marker to def_t to prevent double freeing of
		temp def offsets
emit.c:
	o	break out the bind code into emit_bind_expr (doesn't /really/
		emit code, but still:)
	o	make bind work with disparate types (forces def_t->freed 1)
pr_def.c:
	o	mark array pointers as initialized and constant.
	o	don't free the offset for already freed temp defs
pr_imm.c
	o	fix a bug in uinteger support
	o	support disparate types for immediates
switch:
	o	fix a bug where gt.i was being used instead of gt.ui
	o	remove some debug code
2001-11-13 18:11:19 +00:00
Bill Currie
3d5447c71f seems gcc3 drops the missed enum in switch warning :/ 2001-11-13 16:08:50 +00:00
Bill Currie
07b59d2f07 pr_comp.h:
o	add OP_JUMPB
	o	OP_JUMPB renumberd some opcodes, so up PROG_VERSION
pr_edict.c:
	o	make the version error reporting more informative
pr_exec.c:
	o	implement OP_JUMPB (goto *(ptr + index))
pr_opcode.c: (libs/gamecode/engine)
	o	add OP_JUMPB to the table
expr.h:
	o	ex_uinteger support
	o	some const correctness
	o	prototype new_label_expr
qfcc.h:
	o	uinteger ussport
	o	add pointers for op_jump and op_jumpb
	o	prototype PR_GetArray
emit.c:
	o	general uinteger support
	o	new reference/reloc type 3: absolute statement address
	o	jumpb support (binary goto)
expr.c:
	o	uinteger support
	o	break the label name creation out of new_label_expr into
		new_label_name
	o	some const correctness
pr_def.c:
	o	add PR_GetArray to allocate an array in global space
	o	factor out some code common to PR_GetDef and PR_GetArray that would
		otherwise be duplicated
pr_imm.c:
	o	some const correctness
	o	uinteger support
pr_lex.c:
	o	uinteger support
pr_opcode.c: (tools/qfcc/source)
	o	support jump and jumpb
switch.c:
	o	rewrite the binary search code to support ranges.
2001-11-13 08:58:54 +00:00
Bill Currie
d27cd9cc21 s/type_size/pr_type_size/
remove the redundant type_size from qfcc
2001-11-12 23:56:46 +00:00
Timothy C. McGrath
0a18c1256a Fix configure for zlib and static compiling. static compiling is still broken
But I'm sure taniwha is going to fix that shortly anyway :)

Tim McGrath
(Misty-chan)
2001-11-12 23:49:08 +00:00
Bill Currie
dcfea9796e strings now work in switch statements 2001-11-12 21:13:55 +00:00
Bill Currie
928d343295 pr_comp.h:
o	add ev_uniteger to the types enum
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
progs.h:
	o	add uinteger accessors
pr_exec.c:
	o	implement ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
pr_opcode.c:
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
expr.h:
	o	prototype inc_users
qfcc.h:
	o	add externs for op_ifbe, op_ifb, op_ifae and op_ifa
emit.c:
	o	don't bother emiting an assignment to a temp def that's only used once
		(ie, it's never read, only written to)
	o	support the new if* instructions
expr.c:
	o	support the new if* insructions
	o	dectect expression loops in append_expr
	o	support unsigned integers
	o	re-work temp def usage counting
pr_def.c
	o	debugging for temp def usage counts
pr_opcode.c:
	o	support the new if* instructions
qc-parse.y:
	o	provide defines for IFBE IFB IFAE IFA
switch.c:
	o	do binary searches for strings, floats and ints if there are more than
		8 cases in a switch. Strings need more testing.
2001-11-09 00:58:16 +00:00
Bill Currie
cb4ce6a634 remove the default label from the switch label table while fetching it. 2001-11-06 20:39:42 +00:00
Bill Currie
ccbb1c3f04 document all those weird opcodes :) 2001-11-05 19:32:50 +00:00
Bill Currie
13a177f217 use 'b' (bind) instead of '=' (assign) for switch's test temp def so simple
expressions (ie, just a def) don't generated wasted assignments and clean up
switch's debug info so you get the switch line rather than the line for the
closing }
2001-11-05 19:12:33 +00:00
Bill Currie
9b784e331b remove '(' (never used, don't remember what it was intended for) and add
'b' (bind), 's' (state) and 'c' (call) to get_op_string.
2001-11-05 19:11:03 +00:00
Bill Currie
5f5060cbf0 move the users and used setting code from emit_statement to
PR_AddStatementRef. This removes essentially duplicate code and 3 ifs :)
2001-10-31 18:40:02 +00:00
Bill Currie
b499d7e1e8 I've decided that shuffling the `sections' like that doesn't really gain
anything, so I'm reverting that change.
2001-10-31 17:55:35 +00:00
Bill Currie
3b2d2a1c88 re-arrange the order of the `sections' of a .dat file to match the header
order. this also `happens' to put the strings section just before the globals
section (both at the end) which will make pointer bounds checking easier.
2001-10-30 19:41:27 +00:00
Bill Currie
09f19fd9c9 remove some redundant data 2001-10-28 04:42:44 +00:00
Bill Currie
3f45a8305c *taniwha inflicts more carnage on extern 2001-10-28 04:29:30 +00:00
Jeff Teunissen
79544d6630 qfcc: More manpage updates. 2001-10-27 02:20:39 +00:00
Jeff Teunissen
901a8ec9c5 qfcc: update man page. It's pretty useful, so I'll probably be setting
it up as part of the install for qfcc.
2001-10-26 23:55:42 +00:00
Jeff Teunissen
274ff6e59a Add getopt.h to the dist, just in case. 2001-10-26 23:54:20 +00:00
Jeff Teunissen
b07d60f6d6 add getopt.c and getopt1.c to the makefile. There is preprocessor
stuff in these files to detect when they need to be compiled, so they
don't need anything in configure.
2001-10-26 23:53:36 +00:00
Jeff Teunissen
5502558bb9 qfcc: Argument passing for cpp, shuffling the verbosity levels around a
bit.
2001-10-26 22:07:35 +00:00
Bill Currie
5eba9f155e clean up some duplicate symbols 2001-10-26 17:49:23 +00:00
Bill Currie
d8e6bf9cb6 fix the verbosity levels to what they were
--no-cpp is now cpp or no-cpp in code
add cpp to code_options_t
2001-10-26 16:04:38 +00:00
Jeff Teunissen
c5d0d45edf qfcc: Remove some debug info from taniwha's last commit -- I thought
*I*'d done that! :)
2001-10-26 08:55:24 +00:00
Jeff Teunissen
46c4174024 qfcc: forgot a newline in -V output 2001-10-26 08:17:04 +00:00
Jeff Teunissen
89c7e0df1a qfcc: getopt support. Yes, it exists, and it works, and it's fun! :) 2001-10-26 08:14:05 +00:00
Bill Currie
5cbd50d835 count the number of digits needed rather than relying on -lm (now it's not
needed:)
2001-10-26 06:53:02 +00:00
Jeff Teunissen
581411e9e2 qfcc: Preparation for getopt. 2001-10-26 06:43:56 +00:00
Timothy C. McGrath
04e4da654a Changes taniwha did to make qfcc work with statically compiled libs.
This is what was bugging me all night long with qfcc ><;;

Tim McGrath (Misty-chan)
2001-10-26 02:32:40 +00:00
Bill Currie
70bedc149f allow returning NIL 2001-10-25 21:15:48 +00:00
Bill Currie
bc44f950af enable passing NIL into a function 2001-10-25 20:51:56 +00:00