Difference between revisions of "ECL/Building libraries"


Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/web437/html/mediawiki/includes/MagicWord.php on line 902
From formgames wiki
< ECL
Jump to: navigation, search
(Created page with "{{ECL/experiments message}} == Linux == TODO == Mac == TODO == Windows == === Usage === * Adapt the path of the batch file 'vcvars64.bat' in 'vsenv' to correspond to th...")
 
(Shared Libraries)
 
Line 1: Line 1:
 
{{ECL/experiments message}}
 
{{ECL/experiments message}}
 +
 +
== Documentation ==
 +
 +
* [http://ecls.sourceforge.net/new-manual/index.html ECL's reference manual]
 +
** [http://ecls.sourceforge.net/new-manual/ch32s04.html Building libraries]
  
 
== Linux ==
 
== Linux ==
Line 11: Line 16:
 
== Windows ==
 
== Windows ==
  
=== Usage ===
+
=== Static Libraries ===
 +
 
 +
TODO
 +
 
 +
=== Shared Libraries ===
 +
 
 +
==== Using asdf:make-build ====
 +
 
 +
Related documentation:
 +
 
 +
* ECL Manual: [http://ecls.sourceforge.net/new-manual/re55.html asdf:make-build]
 +
 
 +
TODO
 +
 
 +
==== Using 'compile-file' and 'c:build-shared-library' ====
 +
 
 +
Sources: [http://formgames.org/lisp/ecl/examples/shared-library.tar.gz shared-library.tar.gz]
 +
 
 +
===== Usage =====
  
 
* Adapt the path of the batch file 'vcvars64.bat' in 'vsenv' to correspond to the local installation of Microsoft Visual C++.
 
* Adapt the path of the batch file 'vcvars64.bat' in 'vsenv' to correspond to the local installation of Microsoft Visual C++.
Line 26: Line 49:
 
</pre>
 
</pre>
  
=== hello-lisp.lisp ===
+
===== hello-lisp.lisp =====
  
 
<pre>
 
<pre>
Line 32: Line 55:
 
</pre>
 
</pre>
  
=== hello.c ===
+
===== hello.c =====
  
 
<pre>
 
<pre>
Line 59: Line 82:
 
</pre>
 
</pre>
  
build.lisp
+
===== Makefile =====
 +
 
 +
<pre>
 +
# ECL installation dir:
 +
ECL_INSTALLATION_DIR = "C:/Users/dietrich/home/cs/lang/lisp/ecl/64/git/install"
 +
 
 +
# Compiler options:
 +
# Adapted from output of: ecl-config.bat --cflags
 +
COMPILER_OPTIONS = /EHsc /DGC_DLL /DGC_BUILD /nologo /D_CRT_SECURE_NO_DEPRECATE /Zi /D_DEBUG /MDd /Od -I"$(ECL_INSTALLATION_DIR)"
 +
 
 +
# Linker options:
 +
# Adapted from output of: ecl-config.bat --libs
 +
LINKER_OPTIONS = /incremental:no /nologo /nodefaultlib:libcmt /nodefaultlib:libcmtd /nodefaultlib:libc /nodefaultlib:libcd /debug /nodefaultlib:msvcrt.lib /LIBPATH:"$(ECL_INSTALLATION_DIR)" ecl.lib
 +
 
 +
hello.exe: hello.obj hello-lisp.lib
 +
link $(LINKER_OPTIONS) hello.obj hello-lisp.lib
 +
 
 +
hello.obj: hello.c
 +
cl /c $(COMPILER_OPTIONS) hello.c
 +
 
 +
hello-lisp.lib: hello-lisp.lisp
 +
ecl -norc -load build.lisp
 +
 
 +
clean:
 +
del hello.exe hello.obj hello.pdb vc100.pdb
 +
del hello-lisp.data hello-lisp.h hello-lisp.c hello-lisp.obj
 +
del hello-lisp.lib hello-lisp.dll
 +
</pre>
 +
 
 +
===== build.lisp =====
  
 
<pre lang=Lisp>
 
<pre lang=Lisp>
Line 66: Line 118:
 
(c:build-shared-library "hello-lisp" :lisp-files '("hello-lisp.obj") :init-name "init_lib_HELLO_LISP")
 
(c:build-shared-library "hello-lisp" :lisp-files '("hello-lisp.obj") :init-name "init_lib_HELLO_LISP")
 
(quit)
 
(quit)
 +
</pre>
 +
 +
===== vsenv =====
 +
 +
<pre>
 +
#!/usr/bin/bash
 +
 +
# Batch file for setting the Microsoft Visual Studio 10.0 environment
 +
vcvars64bat="C:\Program Files (x86)\Microsoft Visual Studio 10.0/VC/bin/AMD64/vcvars64.bat"
 +
 +
# Temporary file
 +
tmpfile="$TMP/tmp$$.bat"
 +
tmpfile_win=$(cygpath -m "$tmpfile")
 +
 +
# Generating the batch file
 +
cat > $tmpfile <<EOF
 +
@echo off
 +
call "${vcvars64bat}"
 +
bash -c "%*"
 +
EOF
 +
 +
# Executing the temporary batch file
 +
cmd /c "${tmpfile_win} $@"
 +
 +
# Removing the temporary file
 +
rm -f $tmpfile
 
</pre>
 
</pre>

Latest revision as of 05:58, 28 June 2013