]> git.mdlowis.com Git - proto/sclpl.git/commitdiff
Added slas and slvm targets and commented out server spawning code in slpkg
authorMichael D. Lowis <mike@mdlowis.com>
Wed, 9 Oct 2013 17:50:34 +0000 (13:50 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Wed, 9 Oct 2013 17:50:34 +0000 (13:50 -0400)
SConstruct
source/slas/main.c [new file with mode: 0644]
source/slpkg/main.scm
source/slpkg/server.scm [new file with mode: 0644]
source/slvm/main.c [new file with mode: 0644]

index 9e62a2f63a4c4cdccc5105ee184fd9e693b6dda7..b3dd088c92ce0c13cc90f9d197beb3d128fea84d 100644 (file)
@@ -1,7 +1,6 @@
 #------------------------------------------------------------------------------
 # Environment Setup and Utilities
 #------------------------------------------------------------------------------
-
 import platform
 import fnmatch
 import os
@@ -55,7 +54,7 @@ scheme = Environment(
         CCFLAGS  = [ '-explicit-use', '-I', 'inc'],
         LDFLAGS  = [],
         BUILDERS = {
-            'Program': scheme_linker,
+            'Program':    scheme_linker,
             'TestRunner': scheme_tester })
 
 #------------------------------------------------------------------------------
@@ -63,40 +62,28 @@ scheme = Environment(
 #------------------------------------------------------------------------------
 
 # SOF Shared Library
-c_cpp.SharedLibrary(
-        target = 'build/sof',
-        source = find_files('source/libsof/','*.c'))
+c_cpp.SharedLibrary('build/sof', find_files('source/libsof/','*.c'))
 
 # SBC Shared Library
-c_cpp.SharedLibrary(
-        target = 'build/sbc',
-        source = find_files('source/libsbc/','*.c'))
+c_cpp.SharedLibrary('build/sbc', find_files('source/libsbc/','*.c'))
 
 # readsof Command Line Utility
 readsof = c_cpp.Clone(
         CPPPATH = [ 'source/libsof/' ],
         LIBS = [ 'sof' ],
         LIBPATH = [ 'build' ])
-readsof.Program(
-        target = 'build/readsof',
-        source = find_files('source/readsof/','*.c'))
+readsof.Program('build/readsof', find_files('source/readsof/','*.c'))
 readsof.Depends('readsof', 'sof')
 
 # SCLPL Compiler
-src_files = find_files('source/compiler/','*.scm')
-scheme.Program(
-        target = 'build/slc',
-        source = src_files)
+scheme.Program('build/slc', find_files('source/compiler/','*.scm'))
 
 # SCLPL Package Manager
-src_files = find_files('source/slpkg/','*.scm')
-scheme.Program(
-        target = 'build/slpkg',
-        source = src_files)
-
-# Compiler Test Suite
-#scheme.TestRunner(
-#        target = 'build/tests/sclpl-cc-tests',
-#        source = [s for s in src_files if not s.endswith("main.scm")] +
-#                 find_files('tests/compiler/','*.scm'))
+scheme.Program('build/slpkg', find_files('source/slpkg/','*.scm'))
+
+# SCLPL Assembler
+c_cpp.Program('build/slas', find_files('source/slas/','*.c'))
+
+# SCLPL Virtual Machine
+c_cpp.Program('build/slvm', find_files('source/slvm/','*.c'))
 
diff --git a/source/slas/main.c b/source/slas/main.c
new file mode 100644 (file)
index 0000000..5a883f1
--- /dev/null
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main(int argc, char** argv)
+{
+    puts("Hello, World!");
+    return 0;
+}
index a968c28f882e5bca8c75e7a934f702bafc38aadf..eccc64ec79132890285951f69ccbdd484990a4df 100644 (file)
@@ -1,4 +1,4 @@
-(declare (uses library))
+(declare (uses library server))
 
 (define slpkg-usage
 "Package manager for SCLPL (Simple Concurrent List Processing Language).
@@ -12,27 +12,39 @@ Commands:
   publish        Publish a package to a specified repository.
   remove         Remove one or more packages from this machine.
   search         Search the repositories for packages matching a pattern.
+  server         Start a package server to host packages.
   show           Show detailed information about a specific package or packages.
   source         Manage the sources from which packages will be retrieved.
   update         Update the package lists for all configured sources.
   upgrade        Upgrade a given package or packages.
-  upgrade-all    Upgrade all packages installed on this machine.\n")
+")
 
 ;------------------------------------------------------------------------------
 
 (define (help-cmd args)
   (print args))
 
+;------------------------------------------------------------------------------
 (define install-cmd help-cmd)
+;------------------------------------------------------------------------------
 (define publish-cmd help-cmd)
+;------------------------------------------------------------------------------
 (define remove-cmd help-cmd)
+;------------------------------------------------------------------------------
 (define search-cmd help-cmd)
+;------------------------------------------------------------------------------
+
+(define (server-cmd args)
+  (start-pkg-server (cadr args) (caddr args)))
+
+;------------------------------------------------------------------------------
 (define show-cmd help-cmd)
+;------------------------------------------------------------------------------
 (define source-cmd help-cmd)
+;------------------------------------------------------------------------------
 (define update-cmd help-cmd)
+;------------------------------------------------------------------------------
 (define upgrade-cmd help-cmd)
-(define upgrade-all help-cmd)
-
 ;------------------------------------------------------------------------------
 
 (define slpkg-commands
@@ -41,11 +53,11 @@ Commands:
     ("publish" .     ,publish-cmd)
     ("remove" .      ,remove-cmd)
     ("search" .      ,search-cmd)
+    ("server" .      ,server-cmd)
     ("show" .        ,show-cmd)
     ("source" .      ,source-cmd)
     ("update" .      ,update-cmd)
-    ("upgrade" .     ,upgrade-cmd)
-    ("upgrade-all" . ,upgrade-all)))
+    ("upgrade" .     ,upgrade-cmd)))
 
 ;------------------------------------------------------------------------------
 
diff --git a/source/slpkg/server.scm b/source/slpkg/server.scm
new file mode 100644 (file)
index 0000000..23dd7fa
--- /dev/null
@@ -0,0 +1,43 @@
+(declare (unit server) );(uses spiffy intarweb posix))
+
+(define index-template
+"<!DOCTYPE html PUBLIC
+           \"-//W3C//DTD XHTML 1.0 Strict//EN\"
+           \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
+<html lang=\"en\">
+  <head>
+    <title>Index of ~a</title>
+  </head>
+  <body>
+    <div>~a</div>
+  </body>
+</html>")
+
+(define entry-template "<a href=\"~a\">~a</a><br/>\n")
+
+(define (html-response html)
+  (with-headers `((content-type text/html)
+                  (content-length ,(string-length html)))
+    (lambda ()
+      (write-logged-response)
+      (display html (response-port (current-response))))))
+
+(define (generate-index path)
+  (define curr_root (string-append (root-path) path))
+  (define entries (glob (string-append curr_root "/*")))
+  (apply string-append
+         (map (lambda (e)
+                (define pth (if (equal? "/" path) path (string-append path "/" e)))
+                (sprintf entry-template pth e))
+              (map (lambda (e) (car (reverse (string-split e "/"))))
+                   entries))))
+
+(define (index-handler path)
+  (html-response (sprintf index-template path (generate-index path))))
+
+(define (start-pkg-server port root)
+  (server-port 8080)
+  (root-path "./")
+  (handle-directory index-handler)
+  (start-server))
+
diff --git a/source/slvm/main.c b/source/slvm/main.c
new file mode 100644 (file)
index 0000000..5a883f1
--- /dev/null
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main(int argc, char** argv)
+{
+    puts("Hello, World!");
+    return 0;
+}