Commit graph

55 commits

Author SHA1 Message Date
Bill Currie
dd4f51049d [build] Fix up unwanted dependency on tracy source
The tracy source files should not be required for make dist to work, so
this works around it by using a little indirection.
2023-12-17 19:18:58 +09:00
Bill Currie
fccd06c5bf [vulkan] Add gpu profiling zones
This relies on my fork of tracy: https://github.com/taniwha/tracy
on the wip-c-vulkan branch. Everything is still rather flaky though.

This necessitated the jump to vulkan 1.2 as a requirement.
2023-12-05 22:55:57 +09:00
Bill Currie
1a83fe21c1 [util] Add Sys_setjmp and Sys_longjmp
Host_Error and Host_EndGame use setjmp/longjmp to implement an exception
of sorts, but this messes with tracy's state even with cleanup
attributes. However, it turns out that those cleanup attributes are
exactly how gcc implements C++ destructors, and so the standard Unwind
api (part of libgcc) respects them (so long as -fexceptions is enabled
for C). Thus... replace longjmp with an implementation that uses Unwind
to unwind the stack and call the cleanup functions as needed. This is
actually important for more than just tracy as the cleanup attributed
vars can be thread locks.
2023-12-01 12:13:26 +09:00
Bill Currie
010c658653 [build] Add support for building with Tracy
Tracy is a frame profiler: https://github.com/wolfpld/tracy

This uses Tracy's C API to instrument the code (already added in several
places). It turns out there is something very weird with the fence
behavior between the staging buffers and render commands as the
inter-frame delay occurs in a very strangle place (in the draw code's
packet acquisition rather than the fence waiter that's there for that
purpose). I suspect some tangled dependencies.
2023-11-28 15:54:55 +09:00
Bill Currie
f3a428fbdd Fix up windows and the release scripts
I really need more feedback and the best way to get that is to have more
users, and for that, I need packages.
2023-11-23 20:28:19 +09:00
Bill Currie
c9cfd9e8cf Fix window build for recent config changes
And, more importantly get curl working in the mxe build.
2023-11-23 17:16:53 +09:00
Bill Currie
65b2e1750c [build] Fix escaping of \ in plist to plc
Quoting is hard.
2023-06-18 17:14:34 +09:00
Bill Currie
86f2df4939 [vulkan] Respect the VULKAN_SDK environment variable
Thanks to Peter for the report and help in getting it working (I hope I
got all the changes right).
2023-03-25 21:21:13 +09:00
Bill Currie
20ee47404f Merge branch 'master' into wip-twod 2022-09-22 10:06:00 +09:00
Bill Currie
ead14d7268 [build] Fix a pile of issues building under cygwin
Many thanks to jdp_ for finding them initially and getting me to take a
look at things.
2022-09-19 13:41:24 +01:00
Bill Currie
935e883d8d [renderer] Switch to using HarfBuzz for glyph positioning
This means that QF should support more exotic fonts without any issue
(once the rest of the text handling system is up to snuff) as HarfBuzz
does all the hard work of handling OpenType, Graphite, etc text shaping,
including kerning (when enabled).

Also, font loading now loads all the glyphs into the atlas (preload is
gone).
2022-09-04 20:56:38 +09:00
Bill Currie
4d5b38f0c9 [renderer] Star work on adding FreeType support
Right now, this just initializes the library and loads a font into
memory, preloading a given set of characters (specified by unicode
values).
2022-08-27 17:53:03 +09:00
Bill Currie
0b92cd3a88 [gamecode] Generate the new opcode table
As I expect to be tweaking things for a while, it's part of the build
process. This will make it a lot easier to adjust mnemonics and argument
formats (tweaking the old table was a pain when conventions changed).

It's not quite done as it still needs arg widths and types.
2022-01-05 19:09:07 +09:00
Bill Currie
d1153be594 [build] Move plist rules to root Makefile
They are globally useful rather than specific to the vulkan renderer.
2021-11-25 20:23:18 +09:00
Bill Currie
ae58a8ba5d [qwaq] Create a commandline-only version of qwaq
qwaq-curses has its place, but its use for running vkgen was really a
placeholder because I didn't feel like sorting out the different
initialization requirements at the time. qwaq-cmd has the (currently
unnecessary) threading power of qwaq-curses, but doesn't include any UI
stuff and thus doesn't need curses. The work also paves the way for
qwaq-x11 to become a proper engine (though sorting out its init will be
taken care of later).

Fixes #15.
2021-07-06 12:25:24 +09:00
Bill Currie
88ff254f42 Get QF cross-compiling using MXE/mingw32
This includes -win clients (no clue if anything actually works yet).
2021-03-27 20:09:37 +09:00
Bill Currie
06d45cff0d [build] Keep error messages from glslangValidator
The tool is horrible as a built tool due to it not being silent when all
is good (it outputs the input file name) and sends its error messages to
stdout instead of stderr. Then filtering causes the error code to be
lost. This uses a solution found on stack-exchange.
2021-01-09 11:36:19 +09:00
Bill Currie
7fb335a215 [vulkan] Add support for building and loading shaders
Shaders can be built as spv files and installed into
$libdir/quakeforge/shaders or as spvc files and compiled into the
engine. Loading supports $builtin/name to access builtin shaders,
$shader/path to access external standard shaders and quake filesystem
access for all other paths.
2020-12-23 14:32:29 +09:00
Bill Currie
12a35f3912 [build] Put that ar warning to rest 2020-06-28 23:32:38 +09:00
Bill Currie
aa8aaaaca9 [build] Support silent rules for qfcc 2020-06-26 10:52:06 +09:00
Bill Currie
6d5ffa9f8e [build] Move to non-recursive make
There's still some cleanup to do, but everything seems to be working
nicely: `make -j` works, `make distcheck` passes. There is probably
plenty of bitrot in the package directories (RPM, debian), though.

The vc project files have been removed since those versions are way out
of date and quakeforge is pretty much dependent on gcc now anyway.

Most of the old Makefile.am files  are now Makemodule.am.  This should
allow for new Makefile.am files that allow local building (to be added
on an as-needed bases).  The current remaining Makefile.am files are for
standalone sub-projects.a

The installable bins are currently built in the top-level build
directory. This may change if the clutter gets to be too much.

While this does make a noticeable difference in build times, the main
reason for the switch was to take care of the growing dependency issues:
now it's possible to build tools for code generation (eg, using qfcc and
ruamoko programs for code-gen).
2020-06-25 11:35:37 +09:00
Bill Currie
45cfae7785 Add the new cross scripts to EXTRA_DIST
And remove the obsolete cross.sh from mingw.
2013-01-23 11:44:01 +09:00
Bill Currie
e4965db5c1 Fix missing files caused by a lost blackslash. 2013-01-10 22:30:47 +09:00
Bill Currie
cc5e0f9957 Use git-version-gen to create meaningful version strings.
git-version-gen is taken from autoconf-2.69 with the change of adding
--tags to the git command line since we don't sign our tags (yet).
2012-12-21 18:43:03 +09:00
Bill Currie
433b3c0b31 make distcheck fixes. 2012-11-29 11:34:34 +09:00
Bill Currie
546a7e7aac Avoid recusing into tools and ruamoko when not needed. 2012-02-12 19:29:31 +09:00
Bill Currie
a2d1e0667c Recurse into non-build subdirectories only when needed.
No point in sending make into directories where it will never do anything
under normal circumstances.
2012-02-09 14:12:13 +09:00
Bill Currie
cc443c42e6 Update the cross-tools locations. 2012-02-08 21:10:43 +09:00
Bill Currie
732745c0ec Get the zip dist targets working.
The icon had changed names and a new icon was added. zip didn't appreciate
that.
2010-12-24 08:32:17 +09:00
Bill Currie
99e8ef69ab Distribute and use bootstrap.
deb building relies on boostrap now (mostly to ensure there's no messy
autoconf files).
2010-12-23 16:48:40 +09:00
Bill Currie
3b0dbd29ca make distcheck fixes 2010-12-06 21:24:49 +09:00
Bill Currie
d8eb3aab36 Move the desktop files into their own directory. 2010-11-29 14:26:33 +09:00
Jeff Teunissen
9bae615577 regularize the changelog rule, make it work for out-of-tree. 2010-08-23 03:43:05 -04:00
Jeff Teunissen
3c76768b01 Clean up 'make changelog'
We need more information in the changelog, and we need some checking to
make sure the .git dir exists before trying to generate it.
2010-08-23 03:21:30 -04:00
Bill Currie
06cbb941f1 "make dist" fixes
Since we're using git now, having a rule to make ChangeLog is reasonable.

Also, forgot the remove mention of qfcc.lsm.in when I nuked the file.
2010-08-21 13:09:53 +09:00
Bill Currie
4f748a0f98 Fix aclocal.m4 rebuild problems.
aclocal needs to always be told where the directory is, not just during
bootstrap.
2010-08-07 07:22:31 +00:00
Bill Currie
b4ff94abdc (initial) pkg-config stuff for the main package 2007-03-07 06:43:21 +00:00
Bill Currie
6ae4b6f8bb get the QWTV (qtv) project going :) 2004-02-18 23:21:11 +00:00
Bill Currie
f8bc0ba9e2 fix a misplaced reference to zpak 2004-02-02 06:15:22 +00:00
Bill Currie
21d8b4f8dc link in hw, move the qw and nq networking code into libs/net and make
hw-master use libnetchan. there are evil include hacks that will need to be
taken care of in net*.[ch]
2003-02-11 22:48:57 +00:00
Bill Currie
72bc818807 use AMTAR instead of TAR 2002-09-30 20:34:16 +00:00
Bill Currie
d663cfbbec make ChangeLog is little easier to read 2002-08-19 03:30:27 +00:00
Bill Currie
300f638647 finalize the move of the menu code 2002-08-16 22:58:44 +00:00
Bill Currie
75ec07705c bugger the dependencies, I want to be able to use this stuff for the menus! 2002-08-15 19:08:44 +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
6c8a112cb8 get "make dist" working again 2001-09-04 21:00:08 +00:00
Bill Currie
80c7113447 misc rpm building improvements 2001-08-02 02:49:33 +00:00
Bill Currie
38a9a52290 client and server targets now have their own packages (nq and qw shared) 2001-08-01 20:17:27 +00:00
Bill Currie
c24a6f7d6a make make changelog work in an external buildtree 2001-06-08 00:27:41 +00:00
Bill Currie
a8e1da5d99 make dist and compile fixes for mingw cross building 2001-05-22 19:13:23 +00:00