Commit graph

6567 commits

Author SHA1 Message Date
hendricks266
7a40df33b6 compat.h: Add some infrastructure for C++ template metaprogramming.
git-svn-id: https://svn.eduke32.com/eduke32@6117 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-12 08:30:29 +00:00
hendricks266
a1f317ecfc compat.h: Upgrade our byteswapping functions with new versions that I have experimentally confirmed to compile down to the appropriate single assembly instructions on x86 and x86_64. As part of this, make them constexpr, and remove the OS-specific and inline assembly variants as sub-par due to these two improvements.
git-svn-id: https://svn.eduke32.com/eduke32@6116 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-12 08:30:26 +00:00
hendricks266
b98b00281c compat.h: Add macros so that we can use constexpr without breaking C++ < 11 and C.
git-svn-id: https://svn.eduke32.com/eduke32@6115 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-12 08:30:23 +00:00
hendricks266
1ebbd553bd compat.h: Add some definitions for easy testing of language standard versions.
git-svn-id: https://svn.eduke32.com/eduke32@6114 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-12 08:30:18 +00:00
hendricks266
0c31245cd2 Add registry detection of the Steam path for World Tour installs.
git-svn-id: https://svn.eduke32.com/eduke32@6113 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-09 13:09:01 +00:00
hendricks266
5441fcdb1e Add the patched World Tour GRP to our checksum entries.
git-svn-id: https://svn.eduke32.com/eduke32@6112 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-09 13:08:58 +00:00
hendricks266
8cf65eb180 Modify Windows registry reading to check both 32-bit and 64-bit key locations.
git-svn-id: https://svn.eduke32.com/eduke32@6111 1a8010ca-5511-0410-912e-c29ae57300e0
2017-04-09 13:08:53 +00:00
hendricks266
f4fa0ceafd Makefile: Replace "gnu" with "c" in language standard declarations if we are using clang.
This should give us compatibility without compromising platforms that either don't recognize the "gnu" variants but include strdup, snprintf, etc anyway (clang on desktop), or that support "gnu" and don't include these functions in the "c" variants (gcc in devkitPPC).

DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@6110 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-27 17:13:13 +00:00
hendricks266
cb2d1f4bce Mac: Address deprecation warnings with the latest Xcode and macOS.
git-svn-id: https://svn.eduke32.com/eduke32@6109 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-27 17:13:07 +00:00
hendricks266
cf3a4550b0 Makefile: Add phony target "clang-tools" for use with clang-tools.
ex: clang-query `make clang-tools`

DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@6108 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:47:11 +00:00
hendricks266
886924126a Makefile: Add *_ORDERONLYDEPS, which saves us an error message when building Lunatic on Mac.
git-svn-id: https://svn.eduke32.com/eduke32@6107 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:47:08 +00:00
hendricks266
7aeaace450 Makefile: Add *_SRCS variables, which reassemble the full paths of all source files.
git-svn-id: https://svn.eduke32.com/eduke32@6106 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:47:05 +00:00
hendricks266
5de3318812 Makefile: Separate combinations of component objects for the six build targets into a variable specifically representing the combination.
The original variable name now contains the sub-group only.

git-svn-id: https://svn.eduke32.com/eduke32@6105 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:47:03 +00:00
hendricks266
f0b73188ed Makefile: Clean up more Lunatic setup.
git-svn-id: https://svn.eduke32.com/eduke32@6104 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:47:00 +00:00
hendricks266
df6871854a Makefile: LUNATIC_SRC
git-svn-id: https://svn.eduke32.com/eduke32@6103 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:57 +00:00
hendricks266
c12c5e0363 Makefile: Slightly modify the way ENet objects are ignored for NETCODE=0 builds.
git-svn-id: https://svn.eduke32.com/eduke32@6102 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:55 +00:00
hendricks266
aaf44c0ec8 Makefile: Split any source file from an rsrc folder into a separate list of objects, recombined at expansion time.
git-svn-id: https://svn.eduke32.com/eduke32@6101 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:52 +00:00
hendricks266
c371bfe763 Makefile: Factor out the expansion of source file names to object paths.
git-svn-id: https://svn.eduke32.com/eduke32@6100 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:50 +00:00
hendricks266
15713808e8 Makefile: Add source code file extensions to all objects, and strip them back off with $(basename ).
git-svn-id: https://svn.eduke32.com/eduke32@6099 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:47 +00:00
hendricks266
bc5fa3975a Makefile: Clean up Lunatic objects.
git-svn-id: https://svn.eduke32.com/eduke32@6098 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:44 +00:00
hendricks266
f0869a6d0e Makefile: Change the phonies list so that it is newline-separated.
git-svn-id: https://svn.eduke32.com/eduke32@6097 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 20:46:41 +00:00
hendricks266
bc081e6593 Makefile: Move -funsigned-char from COMMONFLAGS to COMPILERFLAGS. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@6096 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:39 +00:00
hendricks266
f1d99d70e8 Makefile: Refactor, part 3: objects.
git-svn-id: https://svn.eduke32.com/eduke32@6095 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:37 +00:00
hendricks266
23155443d9 Makefile: Refactor, part 2: phonies.
This commit uses GNU Make's Secondary Expansion feature.

These rules could be slightly simplified if all the variables defining each component were renamed to use lowercase.

git-svn-id: https://svn.eduke32.com/eduke32@6094 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:34 +00:00
hendricks266
63eadeb0e1 Makefile: Refactor using advanced GNU Make tricks and $(eval), part 1: targets
git-svn-id: https://svn.eduke32.com/eduke32@6093 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:32 +00:00
hendricks266
6fbf4e6f1c Makefile: Remove "dxtools" and "sdltools" as separate categories, and instead build them along with the normal tools when conditions of their target environment are met.
git-svn-id: https://svn.eduke32.com/eduke32@6092 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:29 +00:00
hendricks266
30ef04893b compat.h: Re-taxonomize one item.
git-svn-id: https://svn.eduke32.com/eduke32@6091 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:26 +00:00
hendricks266
28ad096e38 Revert r6089. We can't live without strdup, strtoll, snprintf, strcasecmp, etc.
This is only an issue on some platforms.

git-svn-id: https://svn.eduke32.com/eduke32@6090 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-23 03:03:21 +00:00
hendricks266
b015f1044b Makefile: Use -std=c99 and -std=c++03 instead of -std=gnu99 and -std=gnu++03.
git-svn-id: https://svn.eduke32.com/eduke32@6089 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:46:06 +00:00
hendricks266
ed75d4086c Makefile: Use "clang++" for building C++ with clang.
git-svn-id: https://svn.eduke32.com/eduke32@6088 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:46:04 +00:00
hendricks266
029facac6f Makefile: Add CROSS_SUFFIX option, as requested by rhoenie.
git-svn-id: https://svn.eduke32.com/eduke32@6087 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:46:01 +00:00
hendricks266
9d8b5d1ce0 Makefile: Move CUSTOMOPT to follow COMPILERFLAGS and LINKERFLAGS, so that it can overwrite more.
git-svn-id: https://svn.eduke32.com/eduke32@6086 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:45:59 +00:00
hendricks266
ebf78c721d Makefile: Move "-Wimplicit -Werror-implicit-function-declaration" from CONLYFLAGS to a new CONLYWARNS.
git-svn-id: https://svn.eduke32.com/eduke32@6085 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:45:56 +00:00
hendricks266
7fbee490e5 Makefile: Unfactor CWARNS from COMPILER_*.
git-svn-id: https://svn.eduke32.com/eduke32@6084 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:45:54 +00:00
hendricks266
d15251b96f Makefile: Factor out common uses of COMMONFLAGS, COMPILERFLAGS, and LINKERFLAGS into COMPILER_* and LINKER.
Collateral changes: Engine objects now use COMPILER_CXX instead of CXX, BUILD_SETTINGS_LINKER now includes GUI_LIBS, and the Build tools now use LINK_STATUS and result instead of ONESTEP.

git-svn-id: https://svn.eduke32.com/eduke32@6083 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-22 15:45:49 +00:00
hendricks266
3e64f08cd1 Fix r5498 so that projectiles actually do not hit their owner during their first tic of movement.
Clear the hitscan bit instead of blocking bit because Proj_MoveCustom uses CLIPMASK1.

git-svn-id: https://svn.eduke32.com/eduke32@6082 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-20 20:30:04 +00:00
hendricks266
af66b8a99f Factor out code for launching EVENT_GAME and EVENT_PREGAME.
git-svn-id: https://svn.eduke32.com/eduke32@6081 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-20 20:29:57 +00:00
hendricks266
06a38e3873 Audiolib: Re-add a fixed version of old code for the SDL driver to initialize SDL as a whole or its audio subsystem if it has not yet been initialized.
Patch from NY00123.

DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@6080 1a8010ca-5511-0410-912e-c29ae57300e0
2017-03-01 09:35:58 +00:00
hendricks266
d5bd7681a0 Remove XYZ.voc --> XYZ.flac format upgrades completely for sound effects, and leave them only for music.
XYZ.voc --> XYZ_voc.flac is still available.

git-svn-id: https://svn.eduke32.com/eduke32@6079 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:16:04 +00:00
hendricks266
e9c8f44a47 compat.h: Upgrade ARRAY_SIZE.
git-svn-id: https://svn.eduke32.com/eduke32@6078 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:16:01 +00:00
hendricks266
d6e820645b compat.h: Upgrade EDUKE32_FUNCTION and add EDUKE32_PRETTY_FUNCTION.
git-svn-id: https://svn.eduke32.com/eduke32@6077 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:58 +00:00
hendricks266
62a921c409 Remove the implicit "static" from our FORCE_INLINE macro.
This will be important for C++ member functions.

git-svn-id: https://svn.eduke32.com/eduke32@6076 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:53 +00:00
hendricks266
77875948ba Eliminate more cases of duplication of compat.h's functionality.
git-svn-id: https://svn.eduke32.com/eduke32@6075 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:45 +00:00
hendricks266
aa04307ad1 Route all inclusion of libc headers and most of POSIX headers through compat.h.
git-svn-id: https://svn.eduke32.com/eduke32@6074 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:36 +00:00
hendricks266
22fbca52ca Remove HAVE_INTTYPES define.
No #else was ever provided for any build system that lacks inttypes besides MSVC.

git-svn-id: https://svn.eduke32.com/eduke32@6073 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:20 +00:00
hendricks266
2b8fb9bfc1 Completely reorganize compat.h.
git-svn-id: https://svn.eduke32.com/eduke32@6072 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:16 +00:00
hendricks266
3f5dbe17f2 Eliminate the windows_inc.h include from compat.h by special-casing UNREFERENCED_PARAMETER in a different way.
git-svn-id: https://svn.eduke32.com/eduke32@6071 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:13 +00:00
hendricks266
ee4d69093c Remove #define compat_h_macrodef__ and its absent case, which was only ever used for an old JFDuke3D port to PalmOS.
If for some reason you need to target a platform that lacks a libc, you're better off finding a libc, or putting together your own shim layer. It's a weekend project at most.

git-svn-id: https://svn.eduke32.com/eduke32@6070 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:10 +00:00
hendricks266
6d7191b848 windows_inc.h in two more places
git-svn-id: https://svn.eduke32.com/eduke32@6069 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-25 08:15:01 +00:00
hendricks266
05c4fa61f6 Explicitly specify the version of the C++ standard as which we are compiling.
git-svn-id: https://svn.eduke32.com/eduke32@6068 1a8010ca-5511-0410-912e-c29ae57300e0
2017-02-19 22:16:00 +00:00