Permalink
Browse files

Initial revision

git-svn-id: svn+ssh://rubyforge.org/var/svn/rake/trunk@26 5af023f1-ac1a-0410-98d6-829a145c37ef
  • Loading branch information...
1 parent 60c0c44 commit de564de4e2f189e1b133e4adf05ab8fc820a044b jimweirich committed Oct 18, 2003
View
@@ -0,0 +1,3 @@
+testdata
+html
+pkg
View
@@ -0,0 +1,17 @@
+= Rake Changelog
+
+== Version 0.2.5
+
+* Switched to standard ruby app builder.
+* Added no_match option to file matcher.
+
+== Version 0.2.4
+
+* Fixed indir, which neglected to actually change directories.
+
+== Version 0.2.3
+
+* Added rake module for a help target
+* Added 'for_files' to Sys
+* Added a $rakefile constant
+* Added test for selecting proper rule with multiple targets.
View
@@ -0,0 +1,21 @@
+Copyright (c) 2003 Jim Weirich
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
View
@@ -0,0 +1,176 @@
+= RAKE -- Ruby Make
+
+This package contains Rake, a simple ruby build program with
+capabilities similar to make.
+
+Rake has the following features:
+
+* Rakefiles (rake's version of Makefiles) are completely defined in
+ standard Ruby syntax. No XML files to edit. No quirky Makefile
+ syntax to worry about (is that a tab or a space?)
+
+* Users can specify tasks with prerequisites.
+
+* Rake supports rule patterns to sythesize implicit tasks.
+
+* Rake is lightweight. It can be distributed with other projects as a
+ single file. Projects that depend upon rake do not require that
+ rake be installed on target systems.
+
+== Download
+
+The latest version of rake can be found at
+
+* http://onestepback.org/packages/rake
+
+Documentation can be found at
+
+* http://onestepback.org/software/rake
+
+== Installation
+
+You can install rake with the following command.
+
+ % ruby install.rb
+
+from its distribution directory.
+
+
+== Roadmap
+
+* If you want to see how to invoke rake to build your projects, read on.
+* If you want to see the format of a Rakefile, see doc/rakefile.rdoc.
+* If you want to see the original announcement of rake, see doc/rational.rdoc.
+* If you want to see a glossary of terms, see doc/glossary.rdoc.
+
+== Simple Example
+
+Once installed, you can run rake as follows ...
+
+ % rake [options] [tasks...]
+
+Type "rake --help" for an up-to-date option summary.
+
+Invoking <tt>rake</tt> without any options or targets causes rake to
+look for a rakefile and invoke the default task in that rakefile.
+
+For example, given a simple rakefile like this ...
+
+ task :default => [:test]
+
+ task :test do
+ Sys.run %{ruby test/unittest.rb}
+ end
+
+The command
+
+ $ rake
+
+will invoke the +default+ task. As +default+ satisfies its
+prerequisites, the +test+ task will run the unit tests for the
+package.
+
+== Other Make Reinvisionings ...
+
+Rake is a late entry in the make replacement field. Here are links to
+other projects with similar (and not so similar) goals.
+
+* http://www.a-a-p.org/ -- Make in Python
+* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make
+* http://ant.apache.org -- The Ant project
+* http://www.perl.com/language/ppt/src/make/index.html -- Make from
+ the Perl Power Tools implementation.
+
+== Credits
+
+[<b>Ryan Dlugosz</b>] For the initial conversation that sparked Rake.
+
+[<b>nobu.nokada@softhome.net</b>] For the initial patch for rule support.
+
+== License
+
+Rake is available under an MIT-style license.
+
+:include: LICENSE
+
+== Support
+
+The Rake homepage is http://w3.one.net/~jweirich/tools/rake (this will
+probably change in the near future).
+
+Feel free to submit commits or feature requests. If you send a patch,
+remember to update the corresponding unit tests. If fact, I prefer
+new feature to be submitted in the form of new unit tests.
+
+For other information, feel free to ask on the ruby-talk mailing list
+(which is mirrored to comp.lang.ruby) or contact
+mailto:jweirich@one.net.
+
+----
+
+= Usage
+
+Rake is invoked from the command line using:
+
+ % rake <options> [targets...]
+
+Options are:
+
+[<tt>--help</tt> (-H)]
+ Display some help text and exit.
+
+[<tt>--dry-run</tt> (-n)]
+ Do a dry run. Print the tasks invoked and executed, but do not
+ actually execute any of the actions.
+
+[<tt>--libdir</tt> _directory_ (-I)]
+ Add _directory_ to the list of directories searched for require.
+
+[<tt>--nosearch</tt> (-N)]
+ Do not search for a Rakefile in parent directories.
+
+[<tt>--quiet</tt> (-q)]
+ Do not echo Sys commands.
+
+[<tt>--rakefile</tt> _filename_ (-f)]
+ Use _filename_ as the name of the rakefile. The default rakefile
+ names are +rakefile+ and +Rakefile+ (with +rakefile+ taking
+ precedence). If the rakefile is not found in the current
+ directory, +rake+ will search parent directories for a match. The
+ directory where the Rakefile is found will become the current
+ directory for the actions executed in the Rakefile.
+
+[<tt>--require</tt> _name_ (-r)]
+ Require _name_ before executing the Rakefile.
+
+[<tt>--usage</tt> (-h)]
+ Display a usage message and exit.
+
+[<tt>--verbose</tt> (-v)]
+ Echo the Sys commands to standard output.
+
+[<tt>--version</tt> (-V)]
+ Display the program version and exit.
+
+---
+
+= Rakefile Format
+
+See doc/rakefile.rdoc for details on the Rakefile format.
+
+---
+
+= Other stuff
+
+Author:: Jim Weirich <jweirich@one.net>
+Requires:: Ruby 1.6.7 or later
+License:: Copyright 2003 by Jim Weirich.
+ Released under an MIT-style license. See the LICENSE file
+ included in the distribution.
+
+== Warranty
+
+This software is provided "as is" and without any express or
+implied warranties, including, without limitation, the implied
+warranties of merchantibility and fitness for a particular
+purpose.
View
@@ -0,0 +1,42 @@
+# Rakefile for rake -*- ruby -*-
+
+require 'build/rubyapp'
+
+builder = AppBuilder.new('rake')
+builder.revision_command "ruby ./bin/rake --version"
+
+builder.package_files << 'install.rb'
+builder.package_files.no_match(/\bCVS\b/, /~$/)
+builder.package_files.glob(
+ '[A-Z]*',
+ 'bin/**/*',
+ 'lib/**/*.rb',
+ 'test/**/*.rb',
+ 'doc/**/*',
+ 'build/rubyapp.rb',
+ '*.blurb')
+
+builder.rdoc_files << ['README', 'LICENSE', 'TODO', 'CHANGES']
+builder.rdoc_files.glob('lib/**/*.rb', 'doc/**/*.rdoc', 'test/*.rb')
+
+builder.clobber_files << %w(html pkg testdata)
+
+builder.create_tasks
+
+umlcoop_info = HostInfo.new(
+ 'umlcoop',
+ 'htdocs/software',
+ 'htdocs/packages')
+
+local_info = HostInfo.new(
+ 'localhost',
+ 'working/projects/source2html/dummy/software',
+ 'working/projects/source2html/dummy/packages')
+
+builder.publisher = SshPublisher.new(umlcoop_info)
+
+# Additional dependencies beyond the standard
+
+directory 'testdata'
+task :test => ['testdata']
+
View
@@ -0,0 +1,27 @@
+= Rake Project -- To Do List
+
+Send suggestions for this list to mailto:jweirich@one.net.
+
+=== To Do
+* Define a set of default rules that work in the absense of any Rakefile
+* What about cyclic dependencies?
+* Java support utilities
+* Installation support utilities
+ * Check out installpkg.rb
+* Autogenerate Dependencies
+* Display dependencies
+* Rules should apply to existing tasks if no actions are defined.
+
+=== Done
+
+==== Version 0.2.1
+
+<b>jw - 21/Mar/03</b> :: Add an option to dump the dependencies.
+<b>jw - 21/Mar/03</b> :: Fine tuned Task timestamps so they mix with FileTask better.
+
+==== Version 0.2.0
+
+<b>jw - 19/Mar/03</b> :: Provide a rake version of some file tools (for verbose control)
+<b>jw - 19/Mar/03</b> :: Handle rakefile and -f options
+<b>jw - 17/Mar/03</b> :: Support implicit file tasks
+<b>jw - 17/Mar/03</b> :: Add rule based targets
View
@@ -0,0 +1,3 @@
+require 'rake'
+RakeApp.new.run
+
@@ -0,0 +1,2 @@
+*.o
+main
View
@@ -0,0 +1,37 @@
+# Example Rakefile -*- ruby -*-
+
+task :default => [:main]
+
+file "a.o" => ["a.c"] do |t|
+ src = t.name.sub(/\.o$/, '.c')
+ Sys.run "gcc #{src} -c -o #{t.name}"
+end
+
+file "b.o" => ["b.c"] do |t|
+ src = t.name.sub(/\.o$/, '.c')
+ Sys.run "gcc #{src} -c -o #{t.name}"
+end
+
+file "main.o" => ["main.c"] do |t|
+ src = t.name.sub(/\.o$/, '.c')
+ Sys.run "gcc #{src} -c -o #{t.name}"
+end
+
+OBJFILES = ["a.o", "b.o", "main.o"]
+task :obj => OBJFILES
+
+file "main" => OBJFILES do |t|
+ Sys.run "gcc -o #{t.name} main.o a.o b.o"
+end
+
+task :clean do
+ Sys.rm '*~', '*.o'
+end
+
+task :clobber => [:clean] do
+ Sys.rm "main"
+end
+
+task :run => ["main"] do
+ Sys.run "./main"
+end
View
@@ -0,0 +1,34 @@
+# Example Rakefile -*- ruby -*-
+# Using the power of Ruby
+
+task :default => [:main]
+
+def ext(fn, newext)
+ fn.sub(/\.[^.]+$/, newext)
+end
+
+SRCFILES = Dir['*.c']
+OBJFILES = SRCFILES.collect { |fn| ext(fn,".o") }
+
+OBJFILES.each do |objfile|
+ srcfile = ext(objfile, ".c")
+ file objfile => [srcfile] do |t|
+ Sys.run "gcc #{srcfile} -c -o #{t.name}"
+ end
+end
+
+file "main" => OBJFILES do |t|
+ Sys.run "gcc -o #{t.name} main.o a.o b.o"
+end
+
+task :clean do
+ Sys.rm '*~', '*.o'
+end
+
+task :clobber => [:clean] do
+ Sys.rm "main"
+end
+
+task :run => ["main"] do
+ Sys.run "./main"
+end
View
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void a()
+{
+ printf ("In function a\n");
+}
View
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void b()
+{
+ printf ("In function b\n");
+}
View
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+extern void a();
+extern void b();
+
+int main ()
+{
+ a();
+ b();
+ return 0;
+}
Oops, something went wrong.

0 comments on commit de564de

Please sign in to comment.