Commit Graph
100 Commits
Author SHA1 Message Date
ISSOtm 6fc5097278 Allow outputting dep files to stdout using - 2020-01-26 15:33:36 +01:00
ISSOtm 12f2f654dd Add -MG
This option allows for automatic dependency detection and generation:
as soon as a missing file is found, it is output to the dep file, and
assembly immediately aborts. (No .o file is produced, even if `-o` was
speicified.) This doesn't cause an error, either; the point is that once
the file is added to the dep file, the Makefile is re-parsed, and this
time the file will be generated, so the dep list builds up automatically.
This mimicks GCC's option and behavior.
2020-01-26 15:33:36 +01:00
ISSOtm 0649b360fb Allow specifying multiple dependency targets
This is done to match GCC's behavior.
Also, this unifies the code of -MT and -MQ.
2020-01-26 15:32:45 +01:00
ISSOtm f1f314270d Add -MQ
Just like GCC's -MQ, this is basically -MT but the file name is escaped.
2020-01-26 15:32:45 +01:00
ISSOtm 1fb9f90f0f Add -MT option
Allows overriding the output file in dependencies, which also allows
outputting those without also outputting the object file.
This, again, mimicks GCC's option.
2020-01-26 15:32:45 +01:00
ISSOtm bfa8da78a6 Add -MP option
Adds a phony target to every included file, mimicking gcc's
2020-01-26 15:32:45 +01:00
Eldred Habert e7eac583da Merge pull request #477 from ISSOtm/sym_overhaul
Overhaul the symbol system
2020-01-26 14:30:47 +01:00
ISSOtm cd107855e7 Test new working label subtractions 2020-01-24 03:03:18 +01:00
ISSOtm ab9307ac61 Clean up symbol management
Stop using that bitfield for everything, including what can be determined otherwise
It also makes it easier to have a sane state, since some bits were (supposedly)
mutually exclusive
2020-01-24 02:51:48 +01:00
ISSOtm e3ef194b4f Remove local label error checking
This is actually not necessary, because RGBLINK would warn about missing labels.
Besides, through semi-esoteric ways, it is possible to define more labels in this scope,
and there's no reason to prevent that.
2020-01-24 02:51:48 +01:00
ISSOtm ab4ca9ad8c Make symbol ref in patch symbols constant 2020-01-24 02:51:48 +01:00
ISSOtm 3fb5648880 Actually rely on createsymbol never returning NULL
This reduces complexity, basically
2020-01-24 02:51:48 +01:00
ISSOtm a7c0616cd8 Rename export type enum to that
This prevents a conflict in the next commit
2020-01-24 02:51:48 +01:00
ISSOtm 51d5ff0567 Test subtracting labels 2020-01-24 02:50:24 +01:00
ISSOtm 0665146dcd Report line info on empty RPN stack 2020-01-21 03:12:43 +01:00
ISSOtm 1f8422575e Test that all-instructions does not error out 2020-01-21 03:05:22 +01:00
ISSOtm 61c381a62c Systemize RGBLINK testing 2020-01-21 03:01:58 +01:00
ISSOtm 56d5f1588a Do not run .pipe tests if the normal variant fails
They'll most likely fail as well, just adding redundant error output
2020-01-21 00:27:28 +01:00
ISSOtm c05334dfc1 Upgrade testing to latest disasm commits 2020-01-20 14:51:25 +01:00
Eldred Habert 09d6c7a54f Merge pull request #475 from ISSOtm/licensing
Add license headers where missing
2020-01-19 15:45:46 +01:00
ISSOtm 4fe44447a2 Add license headers where missing 2020-01-19 11:11:36 +01:00
ISSOtm 23c600eef5 Remove unnecessary gitignore file
This became unnecessary when the linker script parser was rewritten ad-hoc
2020-01-19 11:02:47 +01:00
ISSOtm 50f091ab7c Fix RGBLINK failing to read args on certain machines
`char` has implementation-defined signedness, and if it's chosen to be unsigned,
then -1 gets converted to 255, which is then promoted back to `int` as... 255,
always failing the loop condition in src/link/main.c:118
`int8_t` has the correct signedness, but considering `musl_getopt_long_only`
returns `int`, better use that so as not to lose any bits
2020-01-18 22:12:25 +01:00
ISSOtm 7437f7eb85 Clarify redefinition error message 2020-01-17 03:53:27 +01:00
ISSOtm d6a99981d6 Fix checkcodebase warnings 2020-01-16 22:31:24 +01:00
ISSOtm 89917ef688 Put semicolons before labels in test suite 2020-01-16 22:09:31 +01:00
Eldred Habert 097e4c9799 Merge pull request #468 from ISSOtm/include_stem
Enforce trailing slash in include paths
2020-01-16 19:18:00 +01:00
ISSOtm 2c37a1e971 Fix default warning states
They were in the wrong order for some reason, this especially caused user
warnings to be off by default
2020-01-16 19:16:54 +01:00
ISSOtm 2c52364978 Add test for fixed section addresses 2020-01-16 18:12:42 +01:00
ISSOtm 10140f74dc Allow RGBLINK to report multiple sanity check errors 2020-01-16 18:10:35 +01:00
ISSOtm 558e8f46ff Sanity check fixed address of sections in RGBLINK
This could otherwise cause segfaults while reporting errors (!) during placement
2020-01-16 12:41:23 +01:00
ISSOtm 9ccb71205a Remove stale clean line
Those files don't exist in RGBLINK's source anymore
2020-01-14 11:42:07 +01:00
ISSOtm e50bcaa272 Enforce trailing slash in include paths
Fixes rednex#456
2020-01-13 22:48:59 +01:00
ISSOtm 86a28e8201 Provide string arguments to errors in constexpr_BankSection
How the f did it work before
2020-01-13 15:13:19 +01:00
ISSOtm 95cd0c6e53 Add test for BANK() in constant context 2020-01-12 13:09:27 +01:00
ISSOtm 23ab245cec Return a consistent number for const BANK() when erroring out 2020-01-12 13:07:48 +01:00
ISSOtm eb82476591 Make bank of "bank 0" sections known to RGBASM
This allows `BANK("Some ROM0 section")` to be used in a constant expression
2020-01-10 14:57:39 +01:00
ISSOtm f1f70d250a Add test for DEF(@) 2020-01-09 06:10:28 +01:00
ISSOtm 98a221d6b6 Add test for DEF(@) 2020-01-09 02:10:48 +01:00
Eldred Habert fb22d12b0f Merge pull request #463 from ISSOtm/windows_test_suite
Run tests on MinGW versions
2020-01-09 01:15:47 +01:00
ISSOtm 83249ed69f Cap the number of concurrent jobs for testing
This has a serious tendency to just blow up process load (~35 here with the shim)
2020-01-09 01:10:51 +01:00
ISSOtm 1534df0b3c Use minGW's pkg-config 2020-01-09 01:10:51 +01:00
ISSOtm ece9177f5a Produce shims to run the test suite on Windows bins via Wine 2020-01-09 01:10:51 +01:00
ISSOtm 8a90d74340 Ignore line endings in test suite
This removes many false positives with Windows
2020-01-09 01:10:51 +01:00
ISSOtm 5a06fad31e Separate stdout and stderr in tests
POSIX leaves undefined the order of output if stderr is injected into stdout,
and in practice it differs on Windows (Linux buffers both streams separately,
Windows interleaves them as they arrive without buffering).
This should help testing on other platforms
2020-01-09 01:10:51 +01:00
Eldred Habert add07259f4 Merge pull request #465 from ISSOtm/rebuild_version
Always update version
2020-01-09 01:01:11 +01:00
Eldred Habert 36ca18bc7b Merge pull request #466 from AntonioND/an/warning
Fix declaration of constexpr_BankSymbol()
2020-01-09 00:46:47 +01:00
ISSOtm 6d9399e3a0 Always update version
Implements https://github.com/rednex/rgbds/pull/378#issuecomment-569836686
2020-01-09 00:27:22 +01:00
Eldred Habert 676800476d Merge pull request #430 from ISSOtm/known_selfbank
Make `BANK(@)` and `BANK("section")` known to RGBASM
2020-01-08 18:56:28 +01:00
Eldred Habert 4dfa3157e5 Merge pull request #454 from ISSOtm/unlocked_windows
Fix mingw build
2020-01-08 13:14:13 +01:00
Eldred Habert f26cfa2d94 Merge pull request #455 from ISSOtm/man
Overhaul RGBDS man pages and help messages
2020-01-07 22:44:58 +01:00
ISSOtm d3328406a2 Improve jr out-of-reach error message 2020-01-02 14:06:40 +01:00
ISSOtm 3564b3f9ea Have jr offset wrap with 16 bits
Overflow with `int16_t` is defined to two's complement so it's OK
This could trigger when jumping from the top of ROM0 to HRAM
2020-01-02 14:03:54 +01:00
ISSOtm b81faeccfa Rename rgbfix long opt verbose to validate
The previous name was probably copy-pasted, it was completely wrong
2019-12-29 17:41:19 +01:00
ISSOtm 1c4cb2cd2d Add warning option to RGBASM man synopsis 2019-12-29 17:38:46 +01:00
ISSOtm 6959b76749 Rework help/usage messages
Trimmed down the option lists as per @bentley's request;
Reinstated the man pages' synopsis
2019-12-29 17:38:08 +01:00
ISSOtm 8a1e920e23 Fix incorrect line counting when running REPT blocks.
Fixes #461
2019-12-12 23:46:16 +01:00
ISSOtm 606519c515 Touch up ds documentation as per rednex#350 2019-12-12 23:22:51 +01:00
ISSOtm 34618e0294 Overhaul RGBDS man pages and help messages 2019-12-12 23:22:51 +01:00
ISSOtm 373762dedc Fix lack of newline when passing no files to RGBLINK 2019-12-10 18:35:40 +01:00
ISSOtm b30dfb166b Fix a line over 80 chars 2019-12-08 00:08:44 +01:00
ISSOtm 36db3257f3 Align fatalerror return code with every other one 2019-12-08 00:07:48 +01:00
ISSOtm cad23465a5 Remove flex from the list of dependencies in the README 2019-12-08 00:04:15 +01:00
ISSOtm d23401316e Improve pc-bank test 2019-12-07 23:44:00 +01:00
ISSOtm b49e025703 Allow BANK() in constexpr expressions 2019-12-07 23:43:02 +01:00
ISSOtm e4f4706508 Add tests for new "known self-bank" 2019-12-07 22:15:07 +01:00
ISSOtm 02fe73d1f3 Make BANK("Section") known at assembling time when possible
If the target section is in the current file and its bank is known,
this means this value is known prior to linking.
2019-12-07 22:15:07 +01:00
ISSOtm 74f43d4e09 Add a way to seek a SECTION by name without creating one 2019-12-07 22:15:07 +01:00
ISSOtm 54ed050ecf Make BANK(@) known at assembling time when possible
If the current section's bank is fixed, this means this value is
known prior to linking.
2019-12-07 22:12:57 +01:00
ISSOtm f262d3b34b Fix undefined behavior in readlong
See the new comment for what caused the UB, and how it was fixed
2019-12-07 21:19:13 +01:00
ISSOtm 32f7860a4e Fix possible 0-length array in RGBLINK 2019-12-07 15:23:52 +01:00
ISSOtm b62832e94d Move empty entries warning to -Wextra
Since the behavior actually kinda makes sense, it's better as extra.
2019-12-07 02:48:06 +01:00
ISSOtm e5820312d4 Document actual behavior of empty entries in db and co 2019-12-07 02:46:59 +01:00
ISSOtm f710f21ad8 Reorder warnings alphabetically 2019-12-06 12:06:21 +01:00
ISSOtm 90fefb468b Remove user warnings from -Wall
It does not make sense to include it there, as it's enabled by default.
2019-12-06 12:06:21 +01:00
ISSOtm 21f4cafef5 Make -Werror= with a meta warning an error
The previous behavior was to just enable the meta warning's warnings.
This is an error now because it doesn't make sense to do that, does it?
2019-12-06 12:06:21 +01:00
ISSOtm b1d4be66e4 Remove deprecated "section charmap" feature 2019-12-04 01:56:06 +01:00
ISSOtm ef43ae0eea Add a verbose print each time a file is included 2019-12-04 01:55:01 +01:00
ISSOtm 9976a139de Update test repos to latest commits
They work, and after an upcoming change the current ones are not
going to anymore!
2019-12-04 01:54:22 +01:00
ISSOtm 5718354500 Get rid of joinexpr()
This macro hid away the arguments to the underlying call, and served
no purpose beyond saving the programmer some typing. This is 2019,
people have IDEs (even Vim!) with autocompletion.
2019-12-04 00:21:57 +01:00
ISSOtm 2d7d9eef9f Fix some make checkcodebase errors
- Reorder checkpatch ignore flags alphabetically
- Fix checkpatch WARNINGs and CHECKs when they make sense
- Add more checkpatch ignores
2019-12-04 00:16:28 +01:00
ISSOtm a290e19f46 Make make checkcodebase ignore extern/
That folder contains external code, and modifying it to conform to our
code style would make applying upstream patches, amongst others,
problematic. Therefore, skip checking it.
Ideally, the folder should also be excluded from `make checkpatch`,
but I haven't figured out a way to do that yet.
2019-12-03 23:09:07 +01:00
ISSOtm 92a2be62fe Remove lex rules from Makefile
Since the RGBLINK rewrite, there have been no .l files in the whole codebase
(RGBASM has the C file directly, for better and for worse)
Since flex isn't used anymore, it's a good idea to remove it from the Makefile
so people don't think it's a dependency.
2019-12-03 23:02:38 +01:00
ISSOtm 5410dba4f4 Do prevent using org in linker scripts to go backwards 2019-11-27 01:37:00 +01:00
ISSOtm d93ad2e650 Rename all functions imported from musl
This is to avoid conflicting with libraries, which occurred in the mingw builds
2019-11-23 23:08:44 +01:00
ISSOtm 68410d35d3 Get rid of unlocked_stdio functions
Those did not provide a significant speedup, and are not provided by mingw
2019-11-23 23:00:44 +01:00
ISSOtm ceae4a44f3 Stop using f(un)?lockfile
Those are only useful for locking file IO across threads, but RGBLINK is
single-threaded anyways, so they don't matter. Plus, they aren't provided by
mingw, so that'll remove part of the problem
2019-11-23 22:21:11 +01:00
ISSOtm ea003487aa Use trap_ instead of abort() for consistency 2019-11-23 21:59:36 +01:00
Eldred Habert 401fd8b56b Merge pull request #452 from ISSOtm/warn
Add support for toggleable warnings
2019-11-18 20:58:21 +01:00
ISSOtm 191ee4ba1f Add support for toggleable warnings 2019-11-18 20:45:21 +01:00
ISSOtm 58556f91f7 Disable chcecking for global initialisers
This is specific to the kernel and does not apply to us
2019-11-18 12:45:38 +01:00
ISSOtm faa7893761 Fix develop error in getopt_long_only
The error was due to casting `const` away for permuting argv
elements, which is necessary for a libc for compatibility with older
systems, but not for us.

Checkpatch will complain about the style not being followed, but this is not
our code, so it can be ignored.
2019-11-09 00:48:00 +01:00
Eldred Habert 648df0dc7d Merge pull request #449 from ISSOtm/better_error_msg
Report overlapping sections whenever possible
2019-11-06 09:00:11 +01:00
ISSOtm 44173dbe8b Improve error messages slightly 2019-11-06 08:48:24 +01:00
ISSOtm 7233f568a7 Report overlapping sections whenever possible 2019-11-06 08:40:13 +01:00
Eldred Habert 197f1e9b7b Merge pull request #444 from ISSOtm/fix_develop
Fix errors in `make develop`
2019-11-06 08:34:37 +01:00
Eldred Habert 7063f66b2d Merge pull request #450 from ISSOtm/labels_in_sections
Prevent creating labels outside of sections
2019-11-06 08:33:25 +01:00
Eldred Habert 6e59bcb60e Merge pull request #447 from ISSOtm/long_opts
Add long options
2019-11-06 02:34:26 +01:00
ISSOtm 0649e6d65f Add long options 2019-11-06 00:48:41 +01:00
ISSOtm 072c965ba5 Add musl's implementation of getopt_long_only
Both `getopt_long` and `getopt_long_only` are GNU-specific, so we'll be
copying musl's implementation for portability.
This was retrieved as of commit 90251cf73dfdd44e7a3f085d236e89a7dff1b00b.

musl is licensed as MIT, which is compatible (being identical...) to RGBDS'.
The file is being copied as-is, without a copyright notice or attribution,
but this is only to have a verbatim copy in the history. Those will be added
in the next commit.
2019-11-06 00:40:55 +01:00