Commit graph

245 commits

Author SHA1 Message Date
Justin Ethier
ab25e360a9 Merge #497 2022-12-09 13:29:56 -08:00
Justin Ethier
427845cbaf Issue #494 - Pass path options when compiling libs
Pass append/prepend path options when compiling dependent libraries, avoiding any issues with include directives in the libraries.
2022-11-28 22:16:20 -05:00
Justin Ethier
1404d374d3 Issue #365 - Fix regression w/c-compiler-options 2022-06-26 18:42:22 -04:00
Justin Ethier
2e84aaac9c Issue #484 - Improve handling of exporting prims
To fixes:
- Prevent segfault setting a global variable to itself
- Do not throw an error when exporting a primitive that is not defined in the current module, as built-ins are always available in any context.
2021-12-13 19:05:18 -08:00
Sören Tempel
9954cde738 Allow prepending include/library search path through -COPT/-CLNK
This commit separates include/library search directory options from
"normal" compiler/linker options and places options passed via the
`-COPT`/`-CLNK` command-line flags in-between. This allows overwriting
the default search paths, since contrary to all other options, the
search paths must be prepend for an -I/-L option to take precedence over
an existing one.

This should (hopefully) make it entirely unnecessary to ever build
Cyclone twice in order to have all changes in the current source tree
take effect.

Fixes #476
2021-11-24 15:32:17 +01:00
Justin Ethier
67384621bc Issue #481 - Exit if scm->c compilation fails 2021-09-07 07:45:50 -04:00
Justin Ethier
876a93bf39 Added -no-compiler-subprocess option 2021-08-17 05:04:36 -04:00
Justin Ethier
99ce726ca3 Fix order of args passed to run-external-compiler 2021-08-16 23:39:09 -04:00
Justin Ethier
7d92a39fdf Run scm compiler as a sub-process 2021-08-16 23:34:00 -04:00
Justin Ethier
50631b8bb5 Use a separate thread to emit the C file 2021-08-16 22:22:04 -04:00
Justin Ethier
08c4e8f2e6 Remove unused args 2021-08-16 20:24:36 -04:00
Justin Ethier
1d0cbf96ed Use meta file to pass data when compiling programs 2021-08-17 13:41:48 -04:00
Justin Ethier
1a5310b881 Stage breaking up emitting C file / compiling C 2021-08-10 22:43:52 -04:00
Justin Ethier
ad64f7a3ab More intelligent calling of subprocess for compiling library dependencies 2021-08-10 17:18:31 -04:00
Justin Ethier
3cc79395fa Do not memoize pure functions by default 2021-08-05 14:52:35 -04:00
Justin Ethier
209050b2d4 Allow C compiler/linker options from a library to be expanded via cond-expand 2021-02-25 22:43:19 -05:00
Justin Ethier
dc597a9926 Issue #365 - Allow c-linker-options to work as a top-level expression in a program 2021-01-18 15:57:45 -05:00
Justin Ethier
065a8bdd15 Issue #365 - Allow c-compiler-options to be used by programs 2021-01-18 15:03:27 -05:00
Justin Ethier
eb3250c0f1 Issue #365 - Added (c-compiler-options) expression for libs 2021-01-18 10:46:03 -05:00
Justin Ethier
046e7020b2 Added the -COPT compiler option
This allows easily specifying compiler options such as directories to search for header files.
2021-01-17 22:42:37 -05:00
Justin Ethier
6f5a60bfa4 Recompute library dep tree after macro expansion
Fix the compiler to recompute library dependencies for a program if additional import expressions were encountered during macro expansion.
2020-11-19 14:51:25 -05:00
Justin Ethier
6a1377178a Issue #412 - Fix expand within a cond-expand
Allow these dependencies to be recognized by Cyclone.
2020-09-28 13:32:13 -04:00
Justin Ethier
f849a739af Raise an error if library compilation fails
If a program tries to build a dependent library and the compilation fails, we need to know about it
2020-09-23 12:21:56 -04:00
Justin Ethier
dc30dba735 Expand library before reading imports 2020-09-02 18:10:41 -04:00
Justin Ethier
dc64d52412 Added -COBJ option 2020-08-14 16:44:43 -04:00
Justin Ethier
7b079d36d3 Pretty-up the top-level error messages
Make the output more readable when we have location information for the error.
2020-07-23 12:38:01 -04:00
Justin Ethier
0d25e5e122 Clean up error messages, provide filename if able 2020-07-21 22:35:47 -04:00
Justin Ethier
de1a97fbe7 Cleanup 2020-07-21 21:45:26 -04:00
Justin Ethier
8a65baef9c Add custom exception handler to avoid call history 2020-07-21 12:36:42 -04:00
Justin Ethier
858cac4eee Relocating source list to (scheme base) 2020-07-19 22:58:01 -04:00
Justin Ethier
64b81aa803 Fix code example 2020-05-18 10:03:34 -04:00
Justin Ethier
228f606b2e Read c-linker-options 2020-02-20 13:47:04 -05:00
Justin Ethier
d9d78c226b Added -CLNK 2020-02-19 13:45:58 -05:00
Justin Ethier
77a02fe26d Issue #354 - Cleanup 2020-01-10 17:17:43 -05:00
Justin Ethier
bc3ab62439 Issue #354 - Initial support for includes
Still needs some cleanup, but the batch compilation code now also check source files used by (include) directives.
2020-01-10 13:41:10 -05:00
Justin Ethier
192e8a094f WIP 2020-01-09 23:00:09 -05:00
Justin Ethier
2c3a85efb9 Issue #287
Do not inline functions if optimizations are disabled via `-O0`
2020-01-06 13:23:39 -05:00
Justin Ethier
b83bfec83c Cleanup, indicate default batch setting 2020-01-06 13:03:47 -05:00
Justin Ethier
950700963a Issue #354 - Added batch compilation ability 2020-01-03 18:41:42 -05:00
Justin Ethier
d72c54ca17 Debug library deps, added TODO 2020-01-03 10:29:57 -05:00
Justin Ethier
4c578f0394 Added -use-unsafe-prims 2019-11-26 15:10:28 -05:00
Justin Ethier
95d1200df0 Incorporate optimization flags 2019-11-13 13:16:45 -05:00
Justin Ethier
64c365378b Added additional optimization flags 2019-11-13 12:57:06 -05:00
Justin Ethier
e98e35ee5b Added -no-call-history flag
Allow for faster executables at the expense of call history.
2019-10-14 13:01:16 -04:00
Justin Ethier
900605f1fe Clean up old comments and dead code 2019-10-08 17:49:40 -04:00
Justin Ethier
829f7d86b0 Issue #336 - Compiler validation for "if" 2019-09-10 18:52:44 -04:00
Justin Ethier
fa01202df8 Do not attempt to memoize functions that take 0 args 2019-02-15 12:36:54 -05:00
Justin Ethier
7021855eca Inject additional imports, added a TODO 2019-02-14 23:03:33 -05:00
Justin Ethier
d0d7fae89c Only memoize pure functions for programs
The problem with doing this for libraries is that it adds a new dependency on (srfi 69). It would be problematic to use a library with these changes as there is no easy way to know this SRFI is also a library dependency.
2019-02-14 22:53:12 -05:00
Justin Ethier
e5be007539 Added memoization optimization flags 2019-02-14 21:10:06 -05:00