summary refs log tree commit diff
path: root/Makefile
AgeCommit message (Collapse)Author
2022-10-03add new target-specific abi0 passQuentin Carbonneaux
The general idea is to give abis a chance to talk before we've done all the optimizations. Currently, all targets eliminate {par,arg,ret}{sb,ub,...} during this pass. The forthcoming arm64_apple will, however, insert proper extensions during abi0. Moving forward abis can, for example, lower small-aggregates passing there so that memory optimizations can interact better with function calls.
2022-08-31drop -G flag and add target amd64_appleQuentin Carbonneaux
apple support is more than assembly syntax in case of arm64 machines, and apple syntax is currently useless in all cases but amd64; rather than having a -G option that only makes sense with amd64, we add a new target amd64_apple
2022-07-01Makefile: Avoid double macro expansion in targetsRoberto E. Vargas Caballero
POSIX specification stays: string1 = [string2] ... Macro expansions in string1 of macro definition lines shall be evaluated when read. Macro expansions in string2 of macro definition lines shall be performed when the macro identified by string1 is expanded in a rule or command. It means that recursive macro expansion is not guaranteed to work in a portable Make. Also, as make is a declarative language makes more sense to declare your targets as a primary concern instead of derivating them from a informational macro like SRC that is only used in a rule command.
2022-06-16install with install -m755 v1.0Quentin Carbonneaux
2022-06-14Makefile: POSIXifyilliliti
Makefile now compatible with gmake, bmake, smake and pdpmake.
2022-05-12install in /usr/local by defaultQuentin Carbonneaux
2022-02-17add rv64 backendMichael Forney
It is mostly complete, but still has a few ABI bugs when passing floats in structs, or when structs are passed partly in register, and partly on stack.
2019-04-26Fix config.h dependency when OBJDIR != objMichael Forney
2019-04-24Fix default config.h for arm64Michael Forney
2017-04-08add handy src target to the MakefileQuentin Carbonneaux
Intended usage: c_count `make src` (or similar).
2017-04-08enable arm64 testsQuentin Carbonneaux
The vararg tests had to be changed because va_list is 32-bit wide on arm. The astute reader will notice that the way we pass va_list values is wrong, we should be using the ':valist' type as defined below instead of 'l'. But eh, that works for now, because of the ABI. type :valist = align 8 { 32 }
2017-04-08add cross testing for arm64Quentin Carbonneaux
2017-04-08new arm64 backend, yeepeeQuentin Carbonneaux
2017-04-08prepare for multi-targetQuentin Carbonneaux
This big diff does multiple changes to allow the addition of new targets to qbe. The changes are listed below in decreasing order of impact. 1. Add a new Target structure. To add support for a given target, one has to implement all the members of the Target structure. All the source files where changed to use this interface where needed. 2. Single out amd64-specific code. In this commit, the amd64 target T_amd64_sysv is the only target available, it is implemented in the amd64/ directory. All the non-static items in this directory are prefixed with either amd64_ or amd64_sysv (for items that are specific to the System V ABI). 3. Centralize Ops information. There is now a file 'ops.h' that must be used to store all the available operations together with their metadata. The various targets will only select what they need; but it is beneficial that there is only *one* place to change to add a new instruction. One good side effect of this change is that any operation 'xyz' in the IL now as a corresponding 'Oxyz' in the code. 4. Misc fixes. One notable change is that instruction selection now generates generic comparison operations and the lowering to the target's comparisons is done in the emitter. GAS directives for data are the same for many targets, so data emission was extracted in a file 'gas.c'. 5. Modularize the Makefile. The Makefile now has a list of C files that are target-independent (SRC), and one list of C files per target. Each target can also use its own 'all.h' header (for example to define registers).
2017-02-27make install/uninstall phoniesQuentin Carbonneaux
2017-02-27add install and uninstall targets to MakefileQuentin Rameau
2017-02-25do sign/zero extensions removal in copy.cQuentin Carbonneaux
2017-02-24start a new simplification passQuentin Carbonneaux
2016-12-12implement a simple load elimination passQuentin Carbonneaux
2016-12-12implement a simple alias analysisQuentin Carbonneaux
2016-12-12create cfg.c for cfg-related functionsQuentin Carbonneaux
2016-04-13add funny 80 targetQuentin Carbonneaux
2016-04-09enable constant foldingQuentin Carbonneaux
2016-04-05default to gnu gas formatQuentin Carbonneaux
2016-04-05yay, support freebsdQuentin Carbonneaux
2016-03-31respect the order of the passesQuentin Carbonneaux
2016-03-31move abi code in a new fileQuentin Carbonneaux
2016-03-29do not echo compilation commands if verboseQuentin Carbonneaux
2016-03-29new layout, put LICENSE in rootQuentin Carbonneaux
2016-03-27move check rule into src/Quentin Carbonneaux
2016-03-27move paper synchronization to top makefileQuentin Carbonneaux
2016-03-27add centralized all and clean targetsQuentin Carbonneaux
2016-03-27use make variable for extensibilityQuentin Carbonneaux
2016-03-27extract tests out of srcQuentin Carbonneaux
2015-09-15move ml prototype in a subdirQuentin Carbonneaux
2015-09-15do not remove t subdir while cleaningQuentin Carbonneaux
2015-09-15change name of test fileQuentin Carbonneaux
2015-09-15more cleaningQuentin Carbonneaux
2015-09-15compile tmain with optimizationsQuentin Carbonneaux
2015-09-15quietQuentin Carbonneaux
2015-09-15cosmeticsQuentin Carbonneaux
2015-09-15fix spill codeQuentin Carbonneaux
2015-09-15add simple MakefileQuentin Carbonneaux