]> git.mdlowis.com Git - proto/sclpl.git/commitdiff
Tweaked rakefile
authorMichael D. Lowis <mike@mdlowis.com>
Tue, 19 Aug 2014 00:53:21 +0000 (20:53 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Tue, 19 Aug 2014 00:53:21 +0000 (20:53 -0400)
.gitignore
Rakefile
SConstruct

index 4af146e6c17757b231479d57d4709507ccd026e3..ccc2726a4ff9d4e9eeaea005237dd3dba457e38b 100644 (file)
@@ -11,3 +11,4 @@ cscope.out
 Makefile
 .sconsign.dblite
 .DS_Store
+.rsconscache
index d81d9c4f763ffdafb87cfa550b6e2560a4f6ccb8..14c6a51bda885ca7b4fc1f51057242db101c901c 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -64,7 +64,27 @@ BaseEnv = Environment.new(echo: :command) do |env|
   env["CFLAGS"] += ['-Wall', '-Wextra' ]#, '-Werror']
 end
 
-task(:build) { BaseEnv.Program('build/bin/sclpl', FileList['source/sclpl/*.c']) }
+#------------------------------------------------------------------------------
+# Rscons Build Targets
+#------------------------------------------------------------------------------
+task :default => [:build]
+
+desc "Build all targets"
+task :build => [:sclpl]
+
+desc "Build the sclpl compiler and interpreter"
+task :sclpl => ['source/sclpl/grammar.c'] do
+  BaseEnv.Program('build/bin/sclpl', FileList['source/sclpl/*.c'])
+end
+
+file 'source/sclpl/grammar.c' => ['source/sclpl/grammar.y'] do
+  grammar = File.readlines('source/grammar.y').map{|l| l.chomp().inspect }
+  File.open('source/grammar.c','w') do |f|
+    f.write("const char Grammar[] = \n");
+    grammar.each { |l| f.write("#{l}\n") }
+    f.write(";\n");
+  end
+end
 
 #------------------------------------------------------------------------------
 # Cleanup Target
index 1f144abff5a51da5710c202ab20ab7a358f65236..b3ccc64414e50c74f6b2a712b647df298dd3396d 100644 (file)
@@ -14,23 +14,6 @@ def find_files(path,pattern):
             matches.append(os.path.join(root, filename))\r
     return matches\r
 \r
-# Helper function to build scheme programs and test runners\r
-def SchemeBuildAndTest(target,sources,tests):\r
-    # Figure out the target names\r
-    #test_runner  = target + '_tests'\r
-    #test_output  = target + '_results'\r
-    #test_sources = [e for e in sources if not e.endswith('main.scm')] + tests\r
-    # Create the targets\r
-    scheme.Program( target, sources )\r
-    #scheme.Program( test_runner, test_sources )\r
-    #RunTest( test_output, test_runner )\r
-\r
-# Helper function to run a test suite and generate a log file\r
-def RunTest( output, runner ):\r
-    runner_exe = runner + ('.exe' if (platform.system() == 'Windows') else '')\r
-    cmd = os.path.basename(runner_exe)\r
-    scheme.Command( output, runner_exe, cmd + ' > $TARGET')\r
-\r
 #------------------------------------------------------------------------------\r
 # Compiler Environments\r
 #------------------------------------------------------------------------------\r
@@ -61,17 +44,17 @@ nostdlib = c_cpp.Clone(LINKFLAGS = [ '-nostdlib' ],
 #---------------------------\r
 # Scheme Source Compiler\r
 scheme_compiler = Builder(\r
-        action        = 'csc $CCFLAGS -c -o $TARGET $SOURCE',\r
-        suffix        = '.o',\r
-        src_suffix    = '.scm',\r
-        single_source = True)\r
+    action        = 'csc $CCFLAGS -c -o $TARGET $SOURCE',\r
+    suffix        = '.o',\r
+    src_suffix    = '.scm',\r
+    single_source = True)\r
 \r
 # Scheme Binary Linker\r
 scheme_linker = Builder(\r
-        action      = 'csc $LDFLAGS -o $TARGET $SOURCES',\r
-        suffix      = '$PROGSUFFIX',\r
-        src_suffix  = '.o',\r
-        src_builder = [ scheme_compiler ])\r
+    action      = 'csc $LDFLAGS -o $TARGET $SOURCES',\r
+    suffix      = '$PROGSUFFIX',\r
+    src_suffix  = '.o',\r
+    src_builder = [ scheme_compiler ])\r
 \r
 # Create the Environment for this project\r
 scheme = base.Clone(CCFLAGS  = [ '-I', 'inc'],\r
@@ -80,32 +63,32 @@ scheme = base.Clone(CCFLAGS  = [ '-I', 'inc'],
 #------------------------------------------------------------------------------\r
 # Vendor Targets\r
 #------------------------------------------------------------------------------\r
-import os\r
-\r
-llvm = base.Clone()\r
-if platform.system() == 'Windows':\r
-    llvm.Append(CMAKE_GENERATOR='NMake Makefiles',\r
-                MAKECMD='cd build/llvm/ && nmake')\r
-else:\r
-    llvm.Append(CMAKE_GENERATOR='Unix Makefiles',\r
-                MAKECMD='make -C build/llvm/')\r
-\r
-llvm.Command('build/llvm/Makefile',\r
-             'source/vendor/llvm-3.4.2/',\r
-             'cd ${TARGET.dir} && cmake -G"${CMAKE_GENERATOR}" ../../${SOURCE}')\r
-llvm.Command('build/llvm/Release+Assert/bin/llc',\r
-             'build/llvm/Makefile',\r
-             '${MAKECMD}')\r
+#import os\r
+#\r
+#llvm = base.Clone()\r
+#if platform.system() == 'Windows':\r
+#    llvm.Append(CMAKE_GENERATOR='NMake Makefiles',\r
+#                MAKECMD='cd build/llvm/ && nmake')\r
+#else:\r
+#    llvm.Append(CMAKE_GENERATOR='Unix Makefiles',\r
+#                MAKECMD='make -C build/llvm/')\r
+#\r
+#llvm.Command('build/llvm/Makefile',\r
+#             'source/vendor/llvm-3.4.2/',\r
+#             'cd ${TARGET.dir} && cmake -G"${CMAKE_GENERATOR}" ../../${SOURCE}')\r
+#llvm.Command('build/llvm/Release+Assert/bin/llc',\r
+#             'build/llvm/Makefile',\r
+#             '${MAKECMD}')\r
 \r
 #------------------------------------------------------------------------------\r
 # SCLPL Targets\r
 #------------------------------------------------------------------------------\r
 \r
 # SOF Shared Library\r
-#c_cpp.SharedLibrary('build/sof', find_files('source/libsof/','*.c'))\r
+c_cpp.SharedLibrary('build/lib/sof', find_files('source/libsof/','*.c'))\r
 \r
 # SBC Shared Library\r
-#c_cpp.SharedLibrary('build/sbc', find_files('source/libsbc/','*.c'))\r
+#c_cpp.SharedLibrary('build/lib/sbc', find_files('source/libsbc/','*.c'))\r
 \r
 # readsof Command Line Utility\r
 #readsof = c_cpp.Clone(CPPPATH = [ 'source/libsof/' ],\r
@@ -114,39 +97,28 @@ llvm.Command('build/llvm/Release+Assert/bin/llc',
 #readsof.Program('build/readsof', find_files('source/readsof/','*.c'))\r
 #readsof.Depends('readsof', 'sof')\r
 \r
-# SCLPL Compiler\r
-SchemeBuildAndTest( 'build/bin/slc',\r
-                    find_files('source/slc/','*.scm'),\r
-                    find_files('tests/slc/','*.scm') )\r
-\r
-# SCLPL Package Manager\r
-SchemeBuildAndTest( 'build/bin/slpkg',\r
-                    find_files('source/slpkg/','*.scm'),\r
-                    find_files('tests/slpkg/','*.scm') )\r
-\r
-# SCLPL Assembler\r
-SchemeBuildAndTest( 'build/bin/slas',\r
-                    find_files('source/slas/','*.scm'),\r
-                    find_files('tests/slas/','*.scm') )\r
-\r
-# SCLPL Virtual Machine\r
-#----------------------\r
-# Virtual Machine Kernel\r
-nostdlib.StaticLibrary('build/lib/vmkernel', glob.glob('source/slvm/kernel/*.c'))\r
-\r
-# Standard Platform Library (C99)\r
-c_cpp.StaticLibrary('build/lib/stdpf',\r
-                    glob.glob('source/slvm/platforms/C99/*.c'),\r
-                    CPPPATH = ['source/slvm/kernel'])\r
-\r
-# VM Executable Using Standard Platform\r
-c_cpp.Program('build/bin/slvm', [], LIBS = ['vmkernel', 'stdpf'])\r
-\r
-# Build all VM Extensions\r
-for ext in glob.glob('source/slvm/extensions/*/'):\r
-    name = os.path.basename(ext.strip('\\/'))\r
-    c_cpp.StaticLibrary('build/lib/'+name+'ext',\r
-                        glob.glob(ext + '/*.c'),\r
-                        CPPPATH = ['source/slvm/kernel'],\r
-                        LIBS = ['stdpf'])\r
-\r
+## Register executable targets\r
+#for name in ['slc', 'slpkg', 'slas']:\r
+#    scheme.Program('bin/'+name, find_files('source/'+name, '*.scm'))\r
+#\r
+## SCLPL Virtual Machine\r
+##----------------------\r
+## Virtual Machine Kernel\r
+#nostdlib.StaticLibrary('build/lib/vmkernel', glob.glob('source/slvm/kernel/*.c'))\r
+#\r
+## Standard Platform Library (C99)\r
+#c_cpp.StaticLibrary('build/lib/stdpf',\r
+#                    glob.glob('source/slvm/platforms/C99/*.c'),\r
+#                    CPPPATH = ['source/slvm/kernel'])\r
+#\r
+## VM Executable Using Standard Platform\r
+#c_cpp.Program('build/bin/slvm', [], LIBS = ['vmkernel', 'stdpf'])\r
+#\r
+## Build all VM Extensions\r
+#for ext in glob.glob('source/slvm/extensions/*/'):\r
+#    name = os.path.basename(ext.strip('\\/'))\r
+#    c_cpp.StaticLibrary('build/lib/'+name+'ext',\r
+#                        glob.glob(ext + '/*.c'),\r
+#                        CPPPATH = ['source/slvm/kernel'],\r
+#                        LIBS = ['stdpf'])\r
+#\r