Commit graph

1422 commits

Author SHA1 Message Date
Daniel Kochmański
691e77c3be cmp/c++: fix inlined function calls
We have 3 more regressions with CXX in comparison to pure C mode.
Related to #241.
2016-07-28 19:07:44 +02:00
Daniel Kochmański
f1857e0ed5 cmp: defcallback: accept ':default' calling convention
Fixes #244.
2016-06-21 15:20:34 +02:00
Fabrizio Fabbri
af72e2b293 does not delete pdb files on windows 2016-05-12 13:09:53 -04:00
Daniel Kochmański
ff27203a15 Merge branch 'develop' of gitlab.com:embeddable-common-lisp/ecl into develop 2016-03-21 11:44:39 +01:00
Erik M. Bray
d23d974654 Allow CC and other environment variables passed to safe-run-program to be a command with arguments 2016-03-17 15:57:16 +01:00
Daniel Kochmański
1a8f0decf2 Merge branch 'fix-c-nested-closures' into develop 2016-03-12 10:01:57 +01:00
Daniel Kochmański
9b82583884 newcmp: remove obsolete newcmp package 2016-03-11 16:06:45 +01:00
Daniel Kochmański
0d260397cb compiler: cosmetic: remove deprecated remanents 2016-03-10 17:12:08 +01:00
Daniel Kochmański
939f068390 compiler: fix aux_closure creation
Bug was probably introduced in a1bc92b05c

Fixes #128 and and misc.319 from ANSI tests.
2016-03-10 14:22:10 +01:00
Daniel Kochmański
8583b08258 Merge branch 'win_merge' into 'develop'
Win64 and Visual Studio compiler

* Fix compilation error.
* Fix feature discover on cl compiler.

Kindest Regards.
f.

See merge request !19
2016-03-02 19:21:46 +00:00
Daniel Kochmański
0e5116b2f2 cosmetic: fix typo 2016-03-02 19:07:01 +00:00
Fabrizio Fabbri
ce828c4000 Win64 and Visual Studio compiler
* Fix compilation error.
* Fix feature discover on cl compiler.
2016-03-02 12:43:36 -05:00
Fabrizio Fabbri
52de2ceea6 Fix compilation for AIX and xlc compiler. 2016-03-02 12:08:48 -05:00
Daniel Kochmański
e20576df32 fix: si:open-unix-socket-stream accepts both string and base-string
(automatic coercion is performed)
2016-01-28 11:47:48 +01:00
Daniel Kochmański
4d0433ed7e defsetf: change DO-DEFSETF function prototype
Carry STORES to do-setf-method-expansion in order to fix bug with long
form of DEFSETF (using multiple values as assignment variables is
legal). Change is backwards compatible.
2016-01-26 17:40:52 +01:00
Daniel Kochmański
af9900c7d4 compiler: fix compiler-macro for `FIND'
C-compiled `FIND' didn't respect `START' nor `END' arguments due to bug
in parsing the arguments and invoking `DO-SEQ'. Fixes #199.
2015-12-18 10:35:11 +01:00
Daniel Kochmański
060fa6b4bf Merge branch 'develop' into mobile 2015-10-28 18:41:55 +01:00
Sylvain Ageneau
df019224f8 mobile: support Nacl and PNacl
This patch adds support for chrome's Native Client and Portable Native
Client
2015-10-23 18:12:54 +02:00
B. Scott Michel
b69d0c6022 emit_cxx_source_if_cxx
Emit ".cxx" source files instead of ".c" source if configured
"--with-cxx". This noticeably reduces the amount of whining from the
Clang compiler, which considered compiling ".c" as C++ a significant
deprecation.
2015-10-21 14:14:19 -07:00
Daniel Kochmański
6e3b64e428 cmpmain: declare init wrapper as extern C
Fixes #182.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-10-17 09:48:22 +02:00
Daniel Kochmański
68fa3985c6 builder: provide wrapper for randomized function init name
Randomized init funciton name is used internally and prevents symbol
clashes which lead to bugs when loading systems of the same name
(bundles for instance).

On the other hand wrapper provides a way to initialize library from
the C code. In this case it is programmer responsibility to name his
system uniquely. It will initialize it's submodules fine.

Fixes #74. Fixes #177.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-10-02 13:01:04 +02:00
Daniel Kochmański
55bbfcfaeb cmpname: don't randomize init function names for libraries
Both shared and static libraries might be linked from C code and names
of the initialization functions has to be known without parsing the
file. Related to #177 and #74. FWIW it doesn't introduce regression on
ADSF bundles (#74) and solves initialization problem (#177).

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-10-01 13:29:53 +02:00
Daniel Kochmański
03045d98ae cmp: remove deprecated verbosity variables
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-10-01 11:03:46 +02:00
Daniel Kochmański
970ccb7c36 compiler: accept foreign object files
Sometimes we want to build with objects from CFFI (like
wrappers). These doesn't have entry point and initialization
function. If we'll encounter such an object just attach it without
adding it to the initialization queue. Fixes #174.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-09-23 09:03:51 +02:00
Daniel Kochmański
899f51106e cmpc: when infinity is used, emit macro "INFINITY"
and "-INFINITY" for negative infinity. These corner-cases lead to
compilation error, so no regression will be imposed even against
non-c99 compilers.

INFINITY and NAN macros are introduced by C99 standard, so such code
requires C-backend to support this math extension. Fixes #156.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-09-04 21:32:08 +02:00
Matthew Mondor
8f07cd58d8 The ECL code no longer uses tabulator characters, they were replaced
by spaces.

A custom script was used to insert/replace Emacs and ViM per-file editor
settings according to their type and the new ECL coding style.
2015-09-03 07:35:47 -04:00
Daniel Kochmański
a2ceed9cb3 deftype: use destructure directly, remove unused arg
Removes ENV arg, which were ignored by using destructure directly.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-18 15:39:29 +02:00
Daniel Kochmański
64a96a537b cosmetic: deduplicate expand-deftype function definition
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-18 12:07:57 +02:00
Daniel Kochmański
0359b79c81 deftype: make deftype accept macro lambda-lists
Fixes #86.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-18 12:06:03 +02:00
Daniel Kochmański
6b2b2ac598 cmpprop: fix repeated required arguments
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-17 12:59:43 +02:00
Daniel Kochmański
7b3373ece8 lambda-list: Improve error message in c-compiler
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-17 12:58:32 +02:00
Daniel Kochmański
8869a54bde flet/labels: make same function name error message more descriptive
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-17 12:15:53 +02:00
Daniel Kochmański
e289af9500 LET: signal an error when multiple bindings of the same name occur
This situation is unspecified by ANSI spec – also hard to find
situation, when such construct wouldn't be an error.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-17 10:07:31 +02:00
Daniel Kochmański
bacece3827 Revert "cmp: ffi: cast `ecl_make_foreign_data' 3rd argument to *(void **)"
This reverts commit ab50a55fb1.

We can't cast every 3rd argument to *(void **) - this breaks *things*.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-08 08:36:43 +02:00
Daniel Kochmański
ab50a55fb1 cmp: ffi: cast `ecl_make_foreign_data' 3rd argument to *(void **)
Some compilers doesn't allow putting function pointers when parameter
type is declared (void *), but it's necessary if we want to use
callbacks. Fixes #99.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-31 14:19:35 +02:00
Daniel Kochmański
f40e183770 cmp: search for tag only when name is unique
fasl and program init function names are always the same, don't search
for tag in binary files for this two targets.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-31 09:29:56 +02:00
Daniel Kochmański
1ada997e7c cmp: use unique names for inititalization functions of libraries
Fixes #74.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-30 21:22:25 +02:00
Daniel Kochmański
8bc260c377 cmp: embed unique tag with init function name in each exported module
This is necessary if we want to retrieve function name from compiled
binary, what is necessary if we want to use unique names for this
function. This is necessary for fix of issue #41.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-30 21:20:15 +02:00
Daniel Kochmański
29cd90c448 cmp: make init-function-name consistant with compute-init-name
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-30 08:35:03 +02:00
Daniel Kochmański
8972fb38d3 cmp: remove redundant compute-main-name function
Same functionality is provided by compute-init-name

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-30 08:32:02 +02:00
Daniel Kochmański
d75552027a compiler: bind lexically *readtable* when file is compiled
Both byte and C compilers didn't bind lexically *readtable*, what lead
to pollution of other compiled packages. Fixes #95 and #59.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-07-28 14:25:29 +02:00
Daniel Kochmański
a04b6ff8b8 cmp: mapcar: evaluate function only once
When function is a closure, all lexical environment were reinitialized
on each function call, because it was expanded multiple times. Do it
only once and use result in funcall. Fixes #17.

Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-07-16 07:52:52 +02:00
Daniel Kochmański
4d19a27424 cosmetic: untabify
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-06-21 14:38:20 +02:00
Daniel Kochmański
ff865d1c59 cmplet: Remove invalid declaration. Fixes #28. 2015-04-07 21:34:01 +02:00
Daniel Kochmański
7229cfefc9 compilator: fixes issue #3 (regression on package :lapack).
cmptype-arith.lsp: problem introduced in commit
c0b23555c6 which added empty &optional
clause and &allow-other-keys capability to typespec for values.

Problem was, that multiple &optional keywords in typespec it
considered error, while

'(VALUES &OPTIONAL T &OPTIONAL T)

should return as optional part, list (T &optional T) - even if it
looks weird.
2015-03-05 23:45:22 +01:00
Daniel Kochmański
0d97f64c60 cmpc-machine.lsp: --with-sse=yes build failure fix. Closes #301.
Typo in rewriting cmpc-machine in order to enable cross-compilation for ecl.
Related ticket: https://sourceforge.net/p/ecls/bugs/301/
2015-02-26 15:48:58 +01:00
Stas Boukarev
3f0ce7f7d4 Fix VALUES declaration processing.
A change to C::SPLIT-VALUES-TYPE got the order reversed.

Fixes #275.
2014-03-02 21:45:45 +01:00
Stas Boukarev
e2e53dc679 Fix FTYPE declaration to X from being applied to (SETF X).
C1LAMBDA-EXPR used the block-name to get declarations, but BLOCK name
is a symbol, and for a function named (SETF X) the block would have
the name X, resulting in wrong declarations.

Fixes #262.
2014-03-02 21:36:56 +01:00
Juanjo Garcia-Ripoll
c8a4d98da6 (INTEGER *) and other type names made of lists are now allowed as declaration names. 2013-10-29 22:25:42 +01:00
Juanjo Garcia-Ripoll
db2925daf6 Fixed the routines that deal with VALUES types, extracting primary types, splitting them, etc 2013-10-10 23:45:37 +02:00