~ chicken-core (chicken-5) e4f7c82f9306b7420599d447b7ff41bf71ef0877


commit e4f7c82f9306b7420599d447b7ff41bf71ef0877
Author:     felix <felix@y.(none)>
AuthorDate: Sun Feb 21 17:44:21 2010 +0100
Commit:     felix <felix@y.(none)>
CommitDate: Sun Feb 21 17:44:21 2010 +0100

    started doc; various fixes

diff --git a/chicken.h b/chicken.h
index 3b1989e0..d3c25076 100644
--- a/chicken.h
+++ b/chicken.h
@@ -664,11 +664,7 @@ typedef unsigned __int64   uint64_t;
 # define C_SOFTWARE_VERSION "unknown"
 #endif
 
-#ifdef C_XXXBSD
-# define C_MAX_PATH         PATH_MAX
-#else
-# define C_MAX_PATH         MAX_PATH
-#endif
+#define C_MAX_PATH         PATH_MAX
 
 
 /* Types: */
diff --git a/csc.scm b/csc.scm
index 9152b950..cba1d4bf 100644
--- a/csc.scm
+++ b/csc.scm
@@ -55,6 +55,7 @@
 (define-foreign-variable CHICKEN_PROGRAM c-string "C_CHICKEN_PROGRAM")
 (define-foreign-variable CSC_PROGRAM c-string "C_CSC_PROGRAM")
 (define-foreign-variable WINDOWS_SHELL bool "C_WINDOWS_SHELL")
+(define-foreign-variable BINARY_VERSION int "C_BINARY_VERSION")
 
 
 ;;; Parameters:
@@ -290,10 +291,10 @@
 
 (define (usage)
   (let ((csc CSC_PROGRAM))
-    (printf #<<EOF
-Usage: ~a FILENAME | OPTION ...
+    (print #<#EOF
+Usage: #{csc} FILENAME | OPTION ...
 
-  `~a' is a driver program for the CHICKEN compiler. Files given on the
+  `#{csc}' is a driver program for the CHICKEN compiler. Files given on the
   command line are translated, compiled or linked as needed.
 
   FILENAME is a Scheme source file name with optional extension or a
@@ -482,10 +483,10 @@ Usage: ~a FILENAME | OPTION ...
     -v -k -fixnum-arithmetic -optimize
 
   The contents of the environment variable CSC_OPTIONS are implicitly passed to
-  every invocation of `~a'.
+  every invocation of `#{csc}'.
 
 EOF
-  csc csc csc) ) )
+  ) ) )
 
 
 ;;; Parse arguments:
@@ -874,7 +875,7 @@ EOF
       (unless (directory-exists? targetdir)
 	(when verbose
 	(print "mkdir " targetdir)
-	(create-directory targetdir)))
+	(create-directory targetdir))) )
     (command
      (string-intersperse 
       (cons* (cond (cpp-mode c++-linker)
@@ -924,7 +925,7 @@ EOF
 		  "libchicken")
 	      (cond (osx "dylib")
 		    (win "dll")
-		    (else "so")))))
+		    (else (conc "so." BINARY_VERSION))))))
     (copy-files lib targetdir)))
 
 (define (copy-files from to)
diff --git a/manual/Data representation b/manual/Data representation
index 75fd994a..fcbf0772 100644
--- a/manual/Data representation	
+++ b/manual/Data representation	
@@ -1,3 +1,4 @@
+[[toc:]]
 [[tags: manual]]
 
 == Data representation
@@ -125,6 +126,6 @@ For more information see the header file {{chicken.h}}.
 
 
 ---
-Previous: [[Extensions]]
+Previous: [[Deployment]]
 
 Next: [[Bugs and limitations]]
diff --git a/manual/Deployment b/manual/Deployment
new file mode 100644
index 00000000..811e0de2
--- /dev/null
+++ b/manual/Deployment
@@ -0,0 +1,67 @@
+[[tags: manual]]
+[[toc:]]
+
+
+== Deployment
+
+CHICKEN generates fully native binaries that can be distributed like 
+normal C/C++ programs. There are various methods of deployment,
+depending on platform, linkage, external dependencies and wether
+the application should be built from sources or precompiled and
+whether the CHICKEN runtime-libraries are expected on the destination
+system or if the application should be completely self-contained.
+
+=== Simple executables
+
+The simplest form of deployment is the single executable. The runtime
+libraries ({{libchicken.so}} or {{libchicken.dll}} is required for these
+programs to run, unless you link your application statically:
+
+  % csc myprogram.scm
+  % ldd myprogram               # on linux
+            linux-gate.so.1 =>  (0xb805c000)
+            libchicken.so.5 => /home/felix/chicken/core/lib/libchicken.so.5 (0xb7c22000)
+            libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7bec000)
+            libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7be7000)
+            libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7a84000)
+            /lib/ld-linux.so.2 (0xb805d000)
+
+...
+
+=== Libraries
+
+...
+
+=== Self contained applications
+
+...
+
+==== Platform-specific notes
+
+...
+
+===== Linux
+
+...
+
+===== Windows
+
+...
+
+===== MacOS X
+
+...
+
+===== Other UNIX flavors
+
+...
+
+=== Deploying source code
+
+...
+
+
+---
+Previous: [[Extensions]]
+
+Next: [[Data representation]]
diff --git a/manual/Extensions b/manual/Extensions
index 367dab58..5b28f650 100644
--- a/manual/Extensions
+++ b/manual/Extensions
@@ -571,4 +571,4 @@ mailing list.
 ---
 Previous: [[Interface to external functions and variables]]
 
-Next: [[Data representation]]
+Next: [[Deployment]]
diff --git a/manual/The User's Manual b/manual/The User's Manual
index a3d2b167..9e382307 100644
--- a/manual/The User's Manual	
+++ b/manual/The User's Manual	
@@ -14,7 +14,7 @@ This is the manual for Chicken Scheme, version 4.3.5
 
 ; [[Using the compiler]] : Explains how to use CHICKEN to compile programs and execute them.
 
-; [[Using the interpreter]] : Invocation and usage of {{csi}}, the CHICKEN interpreter
+; [[Using the interpreter]] : Invocation and usage of {{csi}}, the CHICKEN interpreter.
 
 ; [[Supported language]] : The language implemented by CHICKEN (deviations from the standard and extensions).
 
@@ -22,6 +22,8 @@ This is the manual for Chicken Scheme, version 4.3.5
 
 ; [[Extensions]] : Packaging and installing extension libraries.
 
+; [[Deployment]] : Deploying programs developed with CHICKEN.
+
 ; [[Data representation]] : How Scheme data is internally represented.
 
 ; [[Bugs and limitations]] : Things that do not work yet.
diff --git a/setup-api.scm b/setup-api.scm
index 85e8e03e..59b5de79 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -578,9 +578,11 @@
 
 (define (repo-path #!optional ddir?)
   (let ((p (if ddir?
-	       (make-pathname 
-		(installation-prefix) 
-		(sprintf "lib/chicken/~a" (##sys#fudge 42)))
+	       (if (deployment-mode)
+		   (installation-prefix)
+		   (make-pathname 
+		    (installation-prefix) 
+		    (sprintf "lib/chicken/~a" (##sys#fudge 42))))
 	       (repository-path))) )
     (ensure-directory p)
     p) )
Trap