Thread: [Assorted-commits] SF.net SVN: assorted: [467] simple-build/trunk/src
Brought to you by:
yangzhang
From: <yan...@us...> - 2008-02-18 19:57:30
|
Revision: 467 http://assorted.svn.sourceforge.net/assorted/?rev=467&view=rev Author: yangzhang Date: 2008-02-18 11:57:27 -0800 (Mon, 18 Feb 2008) Log Message: ----------- added java support Modified Paths: -------------- simple-build/trunk/src/SimpleBuild.scala simple-build/trunk/src/build-templates/scala simple-build/trunk/src/setup.bash Added Paths: ----------- simple-build/trunk/src/build-templates/java simple-build/trunk/src/capture-javac-deps Removed Paths: ------------- simple-build/trunk/src/capture-scala-deps Modified: simple-build/trunk/src/SimpleBuild.scala =================================================================== --- simple-build/trunk/src/SimpleBuild.scala 2008-02-16 21:59:33 UTC (rev 466) +++ simple-build/trunk/src/SimpleBuild.scala 2008-02-18 19:57:27 UTC (rev 467) @@ -14,6 +14,7 @@ "c" -> "c", "cc" -> "cpp", "cpp" -> "cpp", + "java" -> "java", "scala" -> "scala" ) def err(x: AnyRef) { Console.err println x } @@ -35,6 +36,11 @@ "mainclass" -> "symbol", "classpath" -> "list|srcdir|:", "srcs" -> "list|srcdir| " + ), + "java" -> Map( + "mainclass" -> "symbol", + "classpath" -> "list|srcdir|:", + "srcs" -> "list|srcdir| " ) ) val ids = Iterator from 0 Copied: simple-build/trunk/src/build-templates/java (from rev 456, simple-build/trunk/src/build-templates/scala) =================================================================== --- simple-build/trunk/src/build-templates/java (rev 0) +++ simple-build/trunk/src/build-templates/java 2008-02-18 19:57:27 UTC (rev 467) @@ -0,0 +1,39 @@ +# Output locations. + +SCRIPT := $(OUTDIR)/$(TARGET) +ifeq (,$(VERSION)) + JAR := $(OUTDIR)/$(TARGET).jar +else + JAR := $(OUTDIR)/$(TARGET)-$(VERSION).jar +endif +CLASSDIR := $(OUTDIR)/$(TARGET)-classes + +# Flags. + +JAVACFLAGS:= -deprecation -unchecked -sourcepath $(SRCPATH) -d $(CLASSDIR) -cp $(CLASSPATH) +JAVAC := capture-javac-deps 2 $(JAR) $(OUTDIR)/.deps javac -verbose + +$(TARGET): $(SCRIPT) $(JAR) + +$(SCRIPT): $(MAKEFILE_LIST) + mkdir -p $(@D) + if [ ! -z "$(MAINCLASS)" ]; then \ + echo "#!/usr/bin/env bash\n\nJAVA_OPTS=\"$(JRUNFLAGS) \$${JAVA_OPTS:-}\" exec java -cp $(JAR):$(CLASSPATH) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) ;\ + chmod +x $(SCRIPT) ;\ + fi + +$(JAR): $(SRCS) + mkdir -p $(CLASSDIR) + $(JAVAC) $(JAVACFLAGS) $< + jar cf $@ -C $(CLASSDIR) . + +-include $(OUTDIR)/.deps + +install: $(TARGET) + mkdir -p $(BINDIR) + cp $(SCRIPT) $(BINDIR) + +clean: + rm -rf $(SCRIPT) $(JAR) $(CLASSDIR) + +.PHONY: $(TARGET) clean Modified: simple-build/trunk/src/build-templates/scala =================================================================== --- simple-build/trunk/src/build-templates/scala 2008-02-16 21:59:33 UTC (rev 466) +++ simple-build/trunk/src/build-templates/scala 2008-02-18 19:57:27 UTC (rev 467) @@ -12,14 +12,16 @@ SRCPATH := $(SRCPATH):$(SCALA_COMMONS_SRC) SFLAGS := -deprecation -unchecked -sourcepath $(SRCPATH) -d $(CLASSDIR) -cp $(CLASSPATH) -SCALAC := capture-scala-deps $(JAR) $(OUTDIR)/.deps fsc -verbose +SCALAC := capture-javac-deps 1 $(JAR) $(OUTDIR)/.deps fsc -verbose $(TARGET): $(SCRIPT) $(JAR) $(SCRIPT): $(MAKEFILE_LIST) mkdir -p $(@D) - echo "#!/usr/bin/env bash\n\nJAVA_OPTS=\"$(JRUNFLAGS) \$${JAVA_OPTS:-}\" exec scala -cp $(JAR):$(CLASSPATH) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) - chmod +x $(SCRIPT) + if [ ! -z "$(MAINCLASS)" ]; then \ + echo "#!/usr/bin/env bash\n\nJAVA_OPTS=\"$(JRUNFLAGS) \$${JAVA_OPTS:-}\" exec scala -cp $(JAR):$(CLASSPATH) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) ;\ + chmod +x $(SCRIPT) ;\ + fi $(JAR): $(SRCS) mkdir -p $(CLASSDIR) Copied: simple-build/trunk/src/capture-javac-deps (from rev 456, simple-build/trunk/src/capture-scala-deps) =================================================================== --- simple-build/trunk/src/capture-javac-deps (rev 0) +++ simple-build/trunk/src/capture-javac-deps 2008-02-18 19:57:27 UTC (rev 467) @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +set -o errexit -o nounset + +verbosefd="$1" +target="$2" +depsfile="$3" +shift; shift; shift + +# Get the top-level source files. This is no longer used. +mainsrcs=() +for i in "$@" ; do + if [[ "${i%.scala}" != "$i" ]] + then mainsrcs=( "${mainsrcs[@]:-$i}" "$i" ) + fi +done + +generate-deps() { + while read line ; do + if [[ "${line#[}" == "$line" ]] ; then + # Line doesn't start with '[' (normal output). + echo "$line" + else + # Line starts with '[' (verbose output). + echo "$line" 1>&3 + fi + done 3> >( + { + # Parse just the verbose output and emit the deps file. + echo "$target: \\" + sed -n ' + /^\[loaded source file / { + s/^\[loaded source file \(.*\) in [[:digit:]]*ms\]/\1/ + p + } + ' | sed ' + { s/^/\t/; s/$/ \\/ } + $ { a\\t + } + ' + } > "$depsfile" + ) +} + +# Run the compiler. Verbose output can come from either stdout or stderr. +case $verbosefd in + 1 ) "$@" 1> >( generate-deps ) ;; + 2 ) "$@" 2> >( generate-deps ) ;; + * ) echo "bad verbosefd: $verbosefd"; exit 1 ;; +esac Deleted: simple-build/trunk/src/capture-scala-deps =================================================================== --- simple-build/trunk/src/capture-scala-deps 2008-02-16 21:59:33 UTC (rev 466) +++ simple-build/trunk/src/capture-scala-deps 2008-02-18 19:57:27 UTC (rev 467) @@ -1,41 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -o nounset - -target="$1" -depsfile="$2" -shift; shift - -# Get the top-level source files. This is no longer used. -mainsrcs=() -for i in "$@" ; do - if [[ "${i%.scala}" != "$i" ]] - then mainsrcs=( "${mainsrcs[@]:-$i}" "$i" ) - fi -done - -# Run the compiler. -"$@" | while read line ; do - if [[ "${line#[}" == "$line" ]] ; then - # Line doesn't start with '[' (normal output). - echo "$line" - else - # Line starts with '[' (verbose output). - echo "$line" 1>&3 - fi -done 3> >( - { - # Parse just the verbose output and emit the deps file. - echo "$target: \\" - sed -n ' - /^\[loaded source file / { - s/^\[loaded source file \(.*\) in [[:digit:]]*ms\]/\1/ - p - } - ' | sed ' - { s/^/\t/; s/$/ \\/ } - $ { a\\t - } - ' - } > "$depsfile" -) Modified: simple-build/trunk/src/setup.bash =================================================================== --- simple-build/trunk/src/setup.bash 2008-02-16 21:59:33 UTC (rev 466) +++ simple-build/trunk/src/setup.bash 2008-02-18 19:57:27 UTC (rev 467) @@ -3,4 +3,5 @@ pkg=simple-build . simple-setup.bash -install bin/ build.bash capture-scala-deps +install bin/ build.bash capture-javac-deps +install share/$pkg/ build-templates This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-02-24 06:33:58
|
Revision: 482 http://assorted.svn.sourceforge.net/assorted/?rev=482&view=rev Author: yangzhang Date: 2008-02-23 22:34:03 -0800 (Sat, 23 Feb 2008) Log Message: ----------- some important refactorings; support for c/c++; merged java/scala templates; still very hackish, sadly wasn't able to find the right abstractions after a long time exploring Modified Paths: -------------- simple-build/trunk/src/SimpleBuild.scala simple-build/trunk/src/build simple-build/trunk/src/build-templates/cpp simple-build/trunk/src/build-templates/java Removed Paths: ------------- simple-build/trunk/src/build-templates/Makefile simple-build/trunk/src/build-templates/common.mk simple-build/trunk/src/build-templates/scala simple-build/trunk/src/build-templates/scala.mk.part simple-build/trunk/src/build-templates/variant.mk Modified: simple-build/trunk/src/SimpleBuild.scala =================================================================== --- simple-build/trunk/src/SimpleBuild.scala 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/SimpleBuild.scala 2008-02-24 06:34:03 UTC (rev 482) @@ -9,15 +9,13 @@ import _root_.java.io.File object SimpleBuild { + + // + // Generic utils. + // + + def err(x: AnyRef) { Console.err println x } case class HandledException(e: Exception) extends Exception(e) - val ext2template = Map( - "c" -> "c", - "cc" -> "cpp", - "cpp" -> "cpp", - "java" -> "java", - "scala" -> "scala" - ) - def err(x: AnyRef) { Console.err println x } def doOrDie[a](f: => a)(mkmsg: Exception => String) = { try { f } catch { case e: Exception => { @@ -26,33 +24,155 @@ } } } - val structspec = """ - mainclass: required symbol - classpath: optional list of paths relative to srcdir joined by ':' default [] - srcs: required list of files relative to srcdir joined by ' ' - """ - val structs = Map( + val pwd = new File(System getProperty "user.dir").getCanonicalPath + + /** + * The directory where all global configuration files are stored. + */ + val basedir = System getenv "SIMPLEBUILD" + + /** + * Mapping from file extensions to language IDs. + */ + val ext2lang = Map( + "c" -> "c", + "C" -> "cpp", + "cc" -> "cpp", + "cpp" -> "cpp", + "cxx" -> "cpp", + "java" -> "java", + "scala" -> "scala" + ) + + /** + * AttrTypes that the struct definitions use; currently only the AttrList + * types are of any real use. + */ + abstract class AttrType + case class Sym extends AttrType + case class Str extends AttrType + abstract class AttrList extends AttrType { + def render(s: Seq[String]): String + } + case class PathList(glue: String, basedir: String) extends AttrList { + override def render(s: Seq[String]) = s map (rel2abs(basedir,_)) mkString glue + } + case class SymList(glue: String, prefix: String) extends AttrList { + override def render(s: Seq[String]) = s map (prefix + _) mkString glue + } + + /** + * "Struct definitions". Zero-information name. Basically, these describe the + * schema expected for each language. + */ + val structs: Map[String,Map[String,AttrType]] = Map( "scala" -> Map( - "mainclass" -> "symbol", - "classpath" -> "list|srcdir|:", - "srcs" -> "list|srcdir| " + "mainclass" -> Sym(), + "classpath" -> PathList(":", "$(SRCDIR)"), + "srcs" -> PathList(" ", "$(SRCDIR)") ), "java" -> Map( - "mainclass" -> "symbol", - "classpath" -> "list|srcdir|:", - "srcs" -> "list|srcdir| " + "mainclass" -> Sym(), + "classpath" -> PathList(":", "$(SRCDIR)"), + "srcs" -> PathList(" ", "$(SRCDIR)") + ), + "c" -> Map( + "srcs" -> PathList(" ", "$(SRCDIR)"), + "autolibs" -> SymList (" ", "-l"), + "libs" -> SymList (" ", "-l") + ), + "cpp" -> Map( + "srcs" -> PathList(" ", "$(SRCDIR)"), + "autolibs" -> SymList (" ", "-l"), + "libs" -> SymList (" ", "-l") ) ) + + /** + * Makefile emitters. + */ + abstract class MakeEmitter { + def emitMake(target: YamlStr, attrs: YamlMap, aggs: MultiMap[String,String]): String + } + object JavaEmitter extends MakeEmitter { + def emitMake(target: YamlStr, attrs: YamlMap, aggs: MultiMap[String,String]) = { + val srcs = attrs.m(YamlStr("srcs")).xs + val lang = ext2lang(srcs(0).s.extension) + val template = loadTemplate("java") + val struct = structs(lang) + val hdrs = ( + for ((k,v) <- attrs.m.elements ++ List( + (YamlStr("target"), target), + (YamlStr("lang"), YamlStr(lang)) + ) + if v.isInstanceOf[YamlStr] || v.isInstanceOf[YamlSeq]) + yield k.s.toUpperCase + " := " + (v match { + case YamlSeq(xs) => struct(k.s).asInstanceOf[AttrList].render(xs map (_.s)) + case YamlStr(s) => s + }) + ) mkString "\n" + val site = "PREFIX := /opt/" + target.s + "\nBINDIR := $(PREFIX)/bin\n" + val frag = instantiate(site + '\n' + hdrs + "\n\n" + template, aggs) + frag + } + } + object NativeEmitter extends MakeEmitter { + def emitMake(target: YamlStr, attrs: YamlMap, aggs: MultiMap[String,String]) = { + val srcs = attrs.m(YamlStr("srcs")).xs + val autolibs = autoscan(Set(srcs map (_.s):_*)) + val lang = ext2lang(srcs(0).s.extension) + val template = loadTemplate("cpp") + val struct = structs(lang) + val frags = for ((variant,xflags) <- List(("dbg", "-g3"), ("opt", "-O3"), ("gprof", "-pg"))) yield { + val hdrs = ( + for ((k,v) <- attrs.m.elements ++ List( + (YamlStr("origtarget"), target), + (YamlStr("autolibs"), YamlSeq(autolibs map YamlStr toList)), + (YamlStr("lang"), YamlStr(lang)), + (YamlStr("target"), YamlStr(target.s + "-" + variant)), + (YamlStr("flags"), YamlStr(xflags)) + ) + if v.isInstanceOf[YamlStr] || v.isInstanceOf[YamlSeq]) + yield k.s.toUpperCase + " := " + (v match { + case YamlSeq(xs) => struct(k.s).asInstanceOf[AttrList].render(xs map (_.s)) + case YamlStr(s) => s + }) + ) mkString "\n" + val site = "PREFIX := /opt/" + target.s + "\nBINDIR := $(PREFIX)/bin\n" + val frag = instantiate(site + '\n' + hdrs + "\n\n" + template, aggs) + frag + } + (frags mkString "\n") + """ +$(OUTDIR)/.deps: $(shell find $(OUTDIR) -name '*.d' 2> /dev/null || true) + mkdir -p $(OUTDIR) + [ "$^" ] && cat $^ > $@ + +-include $(OUTDIR)/.deps + +""" + } + } + val emitters: Map[String,MakeEmitter] = Map( + "scala" -> JavaEmitter, + "java" -> JavaEmitter, + "c" -> NativeEmitter, + "cpp" -> NativeEmitter + ) + + // + // Stuff related to processing the Makefile templates. + // + val ids = Iterator from 0 - val basedir = System getenv "SIMPLEBUILD" - val pwd = new File(System getProperty "user.dir").getCanonicalPath - def templateByFilename(s: String) = { - val name = ext2template(s split "\\." last) + def loadTemplate(name: String) = { val fname = basedir / "build-templates" / name val template = using (TextReader(fname)) (_ read) - val struct = structs(name) - (template, struct) + template } + + /** + * Instantiate a Makefile. + */ def instantiate(template: String, aggs: MultiMap[String,String]) = { val internalVars = new HashMap[String,String] val tid = ids.next @@ -63,7 +183,7 @@ val newLines0 = for (line <- template split "\n") yield { if (line contains " := ") { // Assignment. - val Seq(lhs, rhs) = line split " := " + val Seq(lhs, rhs) = ((line split " := ") ++ List(" ")) take 2 val newLhs = lhs.trim + "_" + tid val newRhs = substVars(rhs) internalVars += (lhs.trim -> newLhs) @@ -89,9 +209,6 @@ } newLines1 mkString "\n" } - def emitMakeFrag(target: String, rules: String) { - using (TextWriter(target + ".mk")) (_ println rules) - } implicit def node2map(n: YamlNode) = n.asInstanceOf[YamlMap] implicit def node2seq(n: YamlNode) = n.asInstanceOf[YamlSeq] implicit def node2str(n: YamlNode) = n.asInstanceOf[YamlStr] @@ -118,6 +235,36 @@ } r(Yaml.load(s)) } +// def includes(roots: Set[String]) = { +// val enqueued = new HashSet[String] +// val pattern = Pattern compile """#\s*include\s+<(.+)>""" +// def r(fs: Seq[String]): Stream[String] = { +// { +// for (f <- fs.toStream) yield { +// r(for (line <- using (TextReader(f)) (_.readLines.toArray); +// m = pattern matcher line; +// if m.matches; +// inc = m group 1; +// if !(enqueued contains inc)) +// yield inc +// ) +// } +// } flatMap (x => x) +// } +// r(roots toArray) +// } + val hdr2lib = Map( + // "pthread.h" -> "pthread", // TODO: Not sure how to deal with this, since pthread seems to always show up + "numa.h" -> "numa" + ) + def autoscan(roots: Set[String]) = { + val rules = run("gcc -M " + (roots mkString " "), "") + val deps = rules.replaceAll(" \\\n", " ").split("\n").map(_.split(": "). + last.split(" ")).flatMap(x=>x).map(_.basename) + val hs = Set(deps: _*) + val libs = for (opt <- hs map hdr2lib.get; if opt.isDefined) yield opt.get + libs + } def main(args: Array[String]) { try { val rawfname = if (args.length > 0) args(0) else "build" @@ -131,35 +278,29 @@ e => "could not open file: " + fname } val build = yaml(contents) + val aggs = multimap(List[(String,String)]()) + val frags = new ArrayBuffer[String] // For each target, emit a make frag. - val aggs = multimap(List[(String,String)]()) val targets = for ((target, attrs) <- build.m) yield { val srcs = attrs.m(YamlStr("srcs")).xs - val (template,struct) = templateByFilename(srcs(0).s) - val hdrs = ( - for ((k,v) <- attrs.m.elements ++ List((YamlStr("target"), target)) - if v.isInstanceOf[YamlStr] || v.isInstanceOf[YamlSeq]) - yield k.s.toUpperCase + " := " + (v match { - case YamlSeq(xs) => xs map (_.s) map (rel2abs(srcdir,_)) mkString (struct(k.s) split "|" last) - case YamlStr(s) => s - }) - ) mkString "\n" - val site = "PREFIX := /opt/" + target.s + "\nBINDIR := $(PREFIX)/bin\n" - val rules = instantiate(site + '\n' + hdrs + "\n\n" + template, aggs) - emitMakeFrag(target.s, rules) + frags += emitters(ext2lang(srcs(0).s.extension)).emitMake(target, attrs, aggs) target.s } + // TODO + val phonies = List[String]() // Makefiles. using (TextWriter("GNUmakefile")) { w => w println "OUTDIR := " + pwd / "out" w println "SRCDIR := " + srcdir w println "SRCPATH := " + srcdir w println ("all: " + (targets mkString " ")) - w println(targets map ("include "+_+".mk") mkString "\n") + w println (frags mkString "\n\n") w println ((for ((k,vs) <- aggs) yield (k + ": " + (vs mkString " "))) mkString "\n") - w println ("clean:\n\trm -rf out") - w println ("GNUmakefile: " + srcdir + "/build\n\tbuild.bash build") - w println (".PHONY: clean") + w println ("clean:\n\trm -rf $(OUTDIR)") + w println ("GNUmakefile: " + srcdir + "/build\n\tsimple-build") + w println ("clean-build:\n\trm GNUmakefile") + w println ("clean-all: clean clean-build") + w println (".PHONY: clean all clean-build clean-all " + (phonies mkString " ")) } } catch { // Catch-all for handled exceptions (the rest should be displayed in Modified: simple-build/trunk/src/build =================================================================== --- simple-build/trunk/src/build 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build 2008-02-24 06:34:03 UTC (rev 482) @@ -2,7 +2,3 @@ mainclass: SimpleBuild srcs: [SimpleBuild.scala] classpath: [jyaml-1.3.jar] - -#hashjoin: -# srcs: [hashjoin.cc] -# libs: [pthreads] Deleted: simple-build/trunk/src/build-templates/Makefile =================================================================== --- simple-build/trunk/src/build-templates/Makefile 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/Makefile 2008-02-24 06:34:03 UTC (rev 482) @@ -1,9 +0,0 @@ -TARGET := asdf -SRCS := src/asdf.c -OUTDIR := out -include common.mk - -TARGET := Asdf -SRCDIR := . -SRCS := Asdf.scala -include scala.mk Deleted: simple-build/trunk/src/build-templates/common.mk =================================================================== --- simple-build/trunk/src/build-templates/common.mk 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/common.mk 2008-02-24 06:34:03 UTC (rev 482) @@ -1,12 +0,0 @@ -VARIANT := dbg -VARIANT_CFLAGS := -g3 -include variant.mk - -VARIANT := opt -VARIANT_CFLAGS := -O3 -include variant.mk - -clean: - rm -rf $(OUTDIR) - -.PHONY: clean Modified: simple-build/trunk/src/build-templates/cpp =================================================================== --- simple-build/trunk/src/build-templates/cpp 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/cpp 2008-02-24 06:34:03 UTC (rev 482) @@ -1,7 +1,46 @@ -[instantiate variant.mk] - VARIANT := dbg - VARIANT_CFLAGS := -g3 +OBJDIR := $(OUTDIR)/$(TARGET)-obj +CFLAGS := $(CFLAGS) $(FLAGS) +CXXFLAGS := $(CXXFLAGS) $(FLAGS) +CPPFLAGS := $(CPPFLAGS) +LDFLAGS := $(LDFLAGS) $(LIBS) $(AUTOLIBS) +EXE := $(OUTDIR)/$(TARGET) -[instantiate variant.mk] - VARIANT := opt - VARIANT_CFLAGS := -O3 +OBJS := $(foreach ext, c cc cpp cxx, \ + $(patsubst $(SRCDIR)/%.$(ext), $(OBJDIR)/%.o, \ + $(filter %.$(ext), $(SRCS)))) + +CC := gcc +CXX := g++ +ifeq ($(LANG),c) + COMPILER := $(CC) +else + COMPILER := $(CXX) +endif + +$(TARGET): $(EXE) + +$(EXE): $(OBJS) + $(COMPILER) $(LDFLAGS) -o $@ $^ + +$(OBJDIR)/%.o: %.c + mkdir -p $(@D) + $(CC) $(CPPFLAGS) $(CFLAGS) -MD -c -o $@ $< + +$(OBJDIR)/%.o: %.cc + mkdir -p $(@D) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< + +$(OBJDIR)/%.o: %.cpp + mkdir -p $(@D) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< + +$(OBJDIR)/%.o: %.cxx + mkdir -p $(@D) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< + +clean: + rm -rf $(OBJDIR) $(EXE) + +$(ORIGTARGET): $(TARGET) + +.PHONY: $(ORIGTARGET) Modified: simple-build/trunk/src/build-templates/java =================================================================== --- simple-build/trunk/src/build-templates/java 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/java 2008-02-24 06:34:03 UTC (rev 482) @@ -1,30 +1,47 @@ # Output locations. -SCRIPT := $(OUTDIR)/$(TARGET) +SCRIPT := $(OUTDIR)/$(TARGET) ifeq (,$(VERSION)) - JAR := $(OUTDIR)/$(TARGET).jar + JAR := $(OUTDIR)/$(TARGET).jar else - JAR := $(OUTDIR)/$(TARGET)-$(VERSION).jar + JAR := $(OUTDIR)/$(TARGET)-$(VERSION).jar endif -CLASSDIR := $(OUTDIR)/$(TARGET)-classes +CLASSDIR := $(OUTDIR)/$(TARGET)-classes # Flags. -JAVACFLAGS:= -deprecation -unchecked -sourcepath $(SRCPATH) -d $(CLASSDIR) -cp $(CLASSPATH) -JAVAC := capture-javac-deps 2 $(JAR) $(OUTDIR)/.deps javac -verbose +SRCPATH := $(SRCPATH):$(SCALA_COMMONS_SRC) +SCALAC := capture-javac-deps 1 $(JAR) $(OUTDIR)/.deps fsc -verbose +SCALAFLAGS := -deprecation -unchecked -sourcepath $(SRCPATH) -d $(CLASSDIR) -cp $(CLASSPATH) +JAVAC := capture-javac-deps 2 $(JAR) $(OUTDIR)/.deps javac -verbose +JAVACFLAGS := -deprecation -sourcepath $(SRCPATH) -d $(CLASSDIR) -cp $(CLASSPATH) +ifeq ($(LANG),scala) + COMPILER := $(SCALAC) $(SCALAFLAGS) +else + COMPILER := $(JAVAC) $(JAVACFLAGS) +endif $(TARGET): $(SCRIPT) $(JAR) +ifeq ($(LANG),java) $(SCRIPT): $(MAKEFILE_LIST) mkdir -p $(@D) if [ ! -z "$(MAINCLASS)" ]; then \ - echo "#!/usr/bin/env bash\n\nJAVA_OPTS=\"$(JRUNFLAGS) \$${JAVA_OPTS:-}\" exec java -cp $(JAR):$(CLASSPATH) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) ;\ + echo "#!/usr/bin/env bash\n\nexec java -cp $(JAR):$(CLASSPATH) $(JRUNFLAGS) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) ;\ chmod +x $(SCRIPT) ;\ fi +else +$(SCRIPT): $(MAKEFILE_LIST) + mkdir -p $(@D) + if [ ! -z "$(MAINCLASS)" ]; then \ + echo "#!/usr/bin/env bash\n\nJAVA_OPTS=\"$(JRUNFLAGS) \$${JAVA_OPTS:-}\" exec scala -cp $(JAR):$(CLASSPATH) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) ;\ + chmod +x $(SCRIPT) ;\ + fi +endif $(JAR): $(SRCS) mkdir -p $(CLASSDIR) - $(JAVAC) $(JAVACFLAGS) $< + $(COMPILER) $< jar cf $@ -C $(CLASSDIR) . -include $(OUTDIR)/.deps Deleted: simple-build/trunk/src/build-templates/scala =================================================================== --- simple-build/trunk/src/build-templates/scala 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/scala 2008-02-24 06:34:03 UTC (rev 482) @@ -1,40 +0,0 @@ -# Output locations. - -SCRIPT := $(OUTDIR)/$(TARGET) -ifeq (,$(VERSION)) - JAR := $(OUTDIR)/$(TARGET).jar -else - JAR := $(OUTDIR)/$(TARGET)-$(VERSION).jar -endif -CLASSDIR := $(OUTDIR)/$(TARGET)-classes - -# Flags. - -SRCPATH := $(SRCPATH):$(SCALA_COMMONS_SRC) -SFLAGS := -deprecation -unchecked -sourcepath $(SRCPATH) -d $(CLASSDIR) -cp $(CLASSPATH) -SCALAC := capture-javac-deps 1 $(JAR) $(OUTDIR)/.deps fsc -verbose - -$(TARGET): $(SCRIPT) $(JAR) - -$(SCRIPT): $(MAKEFILE_LIST) - mkdir -p $(@D) - if [ ! -z "$(MAINCLASS)" ]; then \ - echo "#!/usr/bin/env bash\n\nJAVA_OPTS=\"$(JRUNFLAGS) \$${JAVA_OPTS:-}\" exec scala -cp $(JAR):$(CLASSPATH) $(MAINCLASS) \"\$$@\"" > $(SCRIPT) ;\ - chmod +x $(SCRIPT) ;\ - fi - -$(JAR): $(SRCS) - mkdir -p $(CLASSDIR) - $(SCALAC) $(SFLAGS) $< - jar cf $@ -C $(CLASSDIR) . - --include $(OUTDIR)/.deps - -install: $(TARGET) - mkdir -p $(BINDIR) - cp $(SCRIPT) $(BINDIR) - -clean: - rm -rf $(SCRIPT) $(JAR) $(CLASSDIR) - -.PHONY: $(TARGET) clean Deleted: simple-build/trunk/src/build-templates/scala.mk.part =================================================================== --- simple-build/trunk/src/build-templates/scala.mk.part 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/scala.mk.part 2008-02-24 06:34:03 UTC (rev 482) @@ -1,14 +0,0 @@ -# Global environment variable (if missing, then Scala Commons should be -# available on the classpath). - -SCALA_COMMONS_SRC := ~/scom - -# Project settings. - -TARGET := myapp -MAINCLASS := myapp.MyApp -OUTDIR := out -SRCPATH := . -SRCS := MyApp.scala Other.scala -JRUNFLAGS := -Xmx512M -CLASSPATH := Deleted: simple-build/trunk/src/build-templates/variant.mk =================================================================== --- simple-build/trunk/src/build-templates/variant.mk 2008-02-24 01:11:46 UTC (rev 481) +++ simple-build/trunk/src/build-templates/variant.mk 2008-02-24 06:34:03 UTC (rev 482) @@ -1,34 +0,0 @@ -OUTDIR := $(OUTDIR)/$(VARIANT) -CFLAGS := $(CFLAGS) $(CFLAGS) -CXXFLAGS := $(CXXFLAGS) $(CXXFLAGS) -CPPFLAGS := $(CPPFLAGS) -LDFLAGS := $(LDFLAGS) $(LIBS) - -OBJS := $(foreach src,$(SRCS),$(OUTDIR)/$(patsubst %.c,%.o,$(src))) - -CC := gcc -CXX := g++ - -$(VARIANT): $(OUTDIR)/$(TARGET) - -$(OUTDIR)/$(TARGET): $(OBJS) - $(CC) $(LDFLAGS) -o $@ $^ - -$(OUTDIR)/%.o: %.c - mkdir -p $(@D) - $(CC) $(CPPFLAGS) $(CFLAGS) -MD -c -o $@ $< - -$(OUTDIR)/%.o: %.cc - mkdir -p $(@D) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< - -$(OUTDIR)/.deps: $(shell find $(OUTDIR) -name '*.d' 2> /dev/null || true) - mkdir -p $(OUTDIR) - [ "$^" ] && cat $^ > $@ - --include $(OUTDIR)/.deps - -clean: - rm -rf $(OUTDIR) - -.PHONY: clean This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-02-24 20:47:52
|
Revision: 497 http://assorted.svn.sourceforge.net/assorted/?rev=497&view=rev Author: yangzhang Date: 2008-02-24 12:47:57 -0800 (Sun, 24 Feb 2008) Log Message: ----------- fixed some out-of-place build bugs Modified Paths: -------------- simple-build/trunk/src/SimpleBuild.scala simple-build/trunk/src/build-templates/cpp Modified: simple-build/trunk/src/SimpleBuild.scala =================================================================== --- simple-build/trunk/src/SimpleBuild.scala 2008-02-24 07:17:57 UTC (rev 496) +++ simple-build/trunk/src/SimpleBuild.scala 2008-02-24 20:47:57 UTC (rev 497) @@ -31,6 +31,8 @@ */ val basedir = System getenv "SIMPLEBUILD" + var srcdir: String = _ + /** * Mapping from file extensions to language IDs. */ @@ -119,7 +121,7 @@ object NativeEmitter extends MakeEmitter { def emitMake(target: YamlStr, attrs: YamlMap, aggs: MultiMap[String,String]) = { val srcs = attrs.m(YamlStr("srcs")).xs - val autolibs = autoscan(Set(srcs map (_.s):_*)) + val autolibs = autoscan(Set(srcs map (srcdir/_.s):_*)) val lang = ext2lang(srcs(0).s.extension) val template = loadTemplate("cpp") val struct = structs(lang) @@ -270,7 +272,7 @@ val rawfname = if (args.length > 0) args(0) else "build" val infile = new File(rawfname).getCanonicalFile val fname = infile.getPath - val srcdir = infile.getParent + srcdir = infile.getParent // Read build file. val contents = doOrDie { using (TextReader(fname)) (_.read) Modified: simple-build/trunk/src/build-templates/cpp =================================================================== --- simple-build/trunk/src/build-templates/cpp 2008-02-24 07:17:57 UTC (rev 496) +++ simple-build/trunk/src/build-templates/cpp 2008-02-24 20:47:57 UTC (rev 497) @@ -22,19 +22,19 @@ $(EXE): $(OBJS) $(COMPILER) $(LDFLAGS) -o $@ $^ -$(OBJDIR)/%.o: %.c +$(OBJDIR)/%.o: $(SRCDIR)/%.c mkdir -p $(@D) $(CC) $(CPPFLAGS) $(CFLAGS) -MD -c -o $@ $< -$(OBJDIR)/%.o: %.cc +$(OBJDIR)/%.o: $(SRCDIR)/%.cc mkdir -p $(@D) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< -$(OBJDIR)/%.o: %.cpp +$(OBJDIR)/%.o: $(SRCDIR)/%.cpp mkdir -p $(@D) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< -$(OBJDIR)/%.o: %.cxx +$(OBJDIR)/%.o: $(SRCDIR)/%.cxx mkdir -p $(@D) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c -o $@ $< This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-03-03 23:39:00
|
Revision: 589 http://assorted.svn.sourceforge.net/assorted/?rev=589&view=rev Author: yangzhang Date: 2008-03-03 15:39:00 -0800 (Mon, 03 Mar 2008) Log Message: ----------- updated for greater portability (works on josmp.csail) Modified Paths: -------------- simple-build/trunk/src/Makefile simple-build/trunk/src/setup.bash Modified: simple-build/trunk/src/Makefile =================================================================== --- simple-build/trunk/src/Makefile 2008-03-03 06:18:37 UTC (rev 588) +++ simple-build/trunk/src/Makefile 2008-03-03 23:39:00 UTC (rev 589) @@ -1,8 +1,17 @@ +JYAML := jyaml-1.3.jar +SCALA_COMMONS := ~/scom/src + +-include site.mk + +jyaml-1.3.jar: + wget 'http://downloads.sourceforge.net/jyaml/jyaml-1.3.jar' + all: meta/SimpleBuild.class -meta/SimpleBuild.class: SimpleBuild.scala +meta/SimpleBuild.class: SimpleBuild.scala $(JYAML) mkdir -p meta - fsc -deprecation -unchecked -d meta -cp jyaml-1.3.jar SimpleBuild.scala -sourcepath ~/scom/.. + fsc -deprecation -unchecked -d meta -cp $(JYAML) \ + -sourcepath $(SCALA_COMMONS) SimpleBuild.scala run: meta/SimpleBuild.class scala -cp meta:jyaml-1.3.jar SimpleBuild Modified: simple-build/trunk/src/setup.bash =================================================================== --- simple-build/trunk/src/setup.bash 2008-03-03 06:18:37 UTC (rev 588) +++ simple-build/trunk/src/setup.bash 2008-03-03 23:39:00 UTC (rev 589) @@ -4,5 +4,5 @@ . simple-setup.bash install_strip bin/ googlecode_upload.py -install bin/ build.bash capture-javac-deps +install bin/ build.bash capture-javac-deps out/simple-build install share/$pkg/ build-templates This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |