#------------------------------------------------------------------------------
# Environment Setup and Utilities
#------------------------------------------------------------------------------
-
import platform
import fnmatch
import os
CCFLAGS = [ '-explicit-use', '-I', 'inc'],
LDFLAGS = [],
BUILDERS = {
- 'Program': scheme_linker,
+ 'Program': scheme_linker,
'TestRunner': scheme_tester })
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# 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'))
--- /dev/null
+#include <stdio.h>
+
+int main(int argc, char** argv)
+{
+ puts("Hello, World!");
+ return 0;
+}
-(declare (uses library))
+(declare (uses library server))
(define slpkg-usage
"Package manager for SCLPL (Simple Concurrent List Processing Language).
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
("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)))
;------------------------------------------------------------------------------
--- /dev/null
+(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))
+
--- /dev/null
+#include <stdio.h>
+
+int main(int argc, char** argv)
+{
+ puts("Hello, World!");
+ return 0;
+}