Added build system
authorguillaum1 <guillaum1@users.evolvis.org>
Sat, 6 Sep 2008 12:33:18 +0000 (12:33 +0000)
committerguillaum1 <guillaum1@users.evolvis.org>
Sat, 6 Sep 2008 12:33:18 +0000 (12:33 +0000)
build.sh [new file with mode: 0644]
core/java/Makefile [new file with mode: 0644]
demos/java/Makefile [new file with mode: 0644]
lib/cldc1.1.jar [new file with mode: 0644]
lib/microbackend.jar [new file with mode: 0644]

diff --git a/build.sh b/build.sh
new file mode 100644 (file)
index 0000000..3bb8fcd
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,180 @@
+#!/bin/bash
+# Usage: type ./build.sh --help
+
+# Default commands and library locations
+JAVAC_CMD=javac
+JAR_CMD=jar
+JAR_FLAGS=cvf
+FASTJAR_ENABLED=no
+
+DIST_HOME=`pwd`
+JAR_DIST_HOME=$DIST_HOME/dist
+
+# The file to use if you do not built it
+# yourself or the target name if it is
+# build
+CLDC_JAR=${DIST_HOME}/lib/cldc1.1.jar
+J2SE_JAR=/usr/share/classpath/glibj.zip
+MICROBACKEND_JAR=${DIST_HOME}/lib/microbackend.jar
+
+CLDC_FLAGS="-source 1.3 -target 1.1"
+
+# Defaults
+CORE_ENABLED=yes
+DEMO_ENABLED=yes
+
+# Overridable file names and default locations
+CORE_JAR=${JAR_DIST_HOME}/lwuimb-0.1-alpha1.jar
+DEMO_JAR=${JAR_DIST_HOME}/lwuimb-demo.jar
+
+#==========================================
+# You should not change anything below
+#==========================================
+
+OPTIONS="\
+help,\
+\
+disable-core,\
+disable-demo,\
+\
+with-cldc-jar:,\
+with-j2se-jar:,\
+with-microbackend-jar:,\
+\
+with-jar:,\
+with-javac:\
+"
+
+TEMP=`getopt -l $OPTIONS -o h -- "$@"`
+
+eval set -- "$TEMP"
+
+while true; do
+  case $1 in
+    --help ) echo "Usage : $(basename $0) [options...]"
+      echo "  --help                    : Show this help"
+      echo
+      echo "Core features:"
+      echo "  --disable-core  : Do not compile core library (default: yes)"
+      echo "  --disable-demo  : Do not compile demo (default: yes)"
+      echo
+      echo "Providable libraries:"
+      echo "  --with-cldc-jar           : Location of the CLDC class library"
+      echo "  --with-j2se-jar           : Location of the J2SE class library"
+      echo "  --with-microbackend-jar   : Location of the MicroBackend library"
+      echo
+      echo "External programs:"
+      echo "  --with-jar                : Location and name of the jar tool (default: $JAR_CMD)"
+      echo "  --with-javac              : Location and name of the javac tool (default: $JAVAC_CMD)"
+      echo
+      exit 0
+      ;;
+    --disable-core ) CORE_ENABLED=no
+      echo "Compiling core library disabled"
+      shift ;;
+    --disable-demo ) DEMO_ENABLED=no
+      echo "Compiling demos disabled"
+      shift ;;
+    --with-cldc-jar )
+      CLDC_JAR=$2
+      echo "Using CLDC class library at: $CLDC_JAR"
+      shift 2 ;;
+    --with-j2se-jar )
+      J2SE_JAR=$2
+      echo "using J2SE class library at: $J2SE_JAR"
+      shift 2 ;;
+    --with-microbackend-jar )
+      MICROBACKEND_JAR=$2
+      echo "Using MicroBackend library at: $MICROBACKEND_JAR"
+      shift 2 ;;
+    --with-jar )
+      JAR_CMD=$2
+      echo "Using jar command: $JAR_CMD"
+      shift 2 ;;
+    --with-javac )
+      JAVAC_CMD=$2
+      echo "Using javac command: $JAVAC_CMD"
+      shift 2 ;;
+    -- ) shift; break;;
+    * ) echo "Unknown argument: $1"; break ;;
+  esac
+done
+
+# Create the dist directory
+if [ ! -d $JAR_DIST_HOME ]; then
+  mkdir $JAR_DIST_HOME
+fi
+
+# Builds mmake-managed Java sources and creates a Jar.
+#
+# $1 - yes/no = whether the build should be done or not
+# $2 - source directory
+# $3 - target jar file name and location (must be absolute!)
+# $4 - auxiliary bootclasspath entries (optional)
+#      containing a leading colon (:) character
+build_java ()
+{
+  if [ $1 = yes ]
+  then
+    local srcdir=$2
+    local jarname=$3
+    local auxbcp=$4
+
+    make -C $srcdir \
+      JAVAC=$JAVAC_CMD \
+      JAVAC_FLAGS="-bootclasspath ${CLDC_JAR}$auxbcp -sourcepath . $CLDC_FLAGS" || exit 1
+
+    make jar -C $srcdir \
+      JAVAC=$JAVAC_CMD \
+      JAVAC_FLAGS="-bootclasspath ${CLDC_JAR}$auxbcp -sourcepath . $CLDC_FLAGS" \
+      JAR=$JAR_CMD \
+      JAR_FLAGS="$JAR_FLAGS" \
+      JAR_FILE="$jarname" || exit 1
+  else
+    echo "skipping: $2"
+  fi
+}
+
+# Builds mmake-managed Java sources, creates a Jar and adds resources.
+#
+# $1 - yes/no = whether the build should be done or not
+# $2 - source directory
+# $3 - resource directory
+# $4 - target jar file name and location (must be absolute!)
+# $5 - auxilliary bootclasspath entries (optional)
+#      containing a leading colon (:) character
+build_java_res()
+{
+  build_java $1 $2 $4 $5 || exit 1
+
+  if [ $1 = yes ]; then
+    local resdir=$3
+    local jarname=$4
+    
+    if [ $FASTJAR_ENABLED = yes ]; then
+      # fastjar needs to get the file list via stdin
+      ( cd $resdir && find -type f | grep -v "/.svn" | $JAR_CMD uvf $jarname -E -M -@ )
+    else
+      # Sun's jar has trouble with the first entry when using @ and -C
+      echo "ignore_the_error" > resources.list
+      # all other jar commands handle the resources via a file
+      find $resdir -type f | grep -v "/.svn" >> resources.list
+      $JAR_CMD uvf $jarname -C $resdir @resources.list
+    fi
+  fi
+}
+
+#------------------------
+# Build jars
+#------------------------
+
+# Build core library
+build_java $CORE_ENABLED core/java $CORE_JAR :$MICROBACKEND_JAR
+
+# Build demo  
+build_java_res $DEMO_ENABLED demos/java demos/resources $DEMO_JAR :$J2SE_JAR:$CORE_JAR
+
+# Copy microbackend.jar to the dist directory
+cp $DIST_HOME/lib/microbackend.jar $JAR_DIST_HOME
+
+
diff --git a/core/java/Makefile b/core/java/Makefile
new file mode 100644 (file)
index 0000000..74090d7
--- /dev/null
@@ -0,0 +1,438 @@
+#
+# Makefile created at Sat Sep  6 11:34:55 2008, by mmake
+#
+
+# Programs (with common options):
+SHELL          = /bin/sh
+CP             = cp
+RM              = rm -f
+MV              = mv -f
+SED            = sed
+ETAGS          = etags
+XARGS          = xargs
+CAT            = cat
+FIND            = find
+CPP            = cpp -C -P
+
+INSTALL         = install
+INSTALL_PROG    = $(INSTALL) -m $(MODE_PROGS)
+INSTALL_FILE    = $(INSTALL) -m $(MODE_FILES)
+INSTALL_DIR     = $(INSTALL) -m $(MODE_DIRS) -d
+
+# Install modes 
+MODE_PROGS      = 555
+MODE_FILES      = 444
+MODE_DIRS       = 2755
+
+# Build programs
+JAVAC           = jikes
+JAVADOC         = javadoc
+JAR             = jar
+
+# Build flags
+JAVAC_FLAGS     = 
+JAVADOC_FLAGS   = -version -author
+JAR_FLAGS       = cvf0
+JIKES_DEP_FLAG = +M
+
+# ------------------------------------------------------------------- #
+
+# Prefix for every install directory
+PREFIX         = 
+
+# Where to start installing the class files. Set this to an empty value
+#  if you dont want to install classes
+CLASS_DIR      = $(PREFIX)classes
+
+# The directory to install the jar file in. Set this to an empty value
+#  if you dont want to install a jar file
+JAR_DIR                = $(PREFIX)lib
+
+# The directory to install the app bundle in. Set this to an empty value
+#  if you dont want to install an app bundle
+BUNDLE_DIR      = $(PREFIX)lib
+
+
+# The directory to install html files generated by javadoc
+DOC_DIR         = $(PREFIX)doc/api-docs
+
+# The directory to install script files in
+SCRIPT_DIR     = $(PREFIX)bin
+
+# ------------------------------------------------------------------- #
+
+# The name of the jar file to install
+JAR_FILE        = 
+
+# 
+# The VERSION variable below should be set to a value 
+# that will be tested in the .xjava code and Info.plist. 
+# 
+VERSION                = CHANGE_ME
+
+# ------------------------------------------------------------------- #
+
+# The name of the OS X Application Bundle to install
+BUNDLE_FILE    = 
+
+# Folder containing App Bundle resources (Info.plist, *.icns, etc.)
+BUNDLE_RESOURCE_DIR = misc/macosx
+
+# Items to copy to the Resources folder of the bundle
+BUNDLE_RESOURCES = $(addsuffix .icns, $(basename $(APP_FILE)) Document)
+
+# Location of JavaApplicatonStub
+JAVA_STUB      = /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
+
+# ------------------------------------------------------------------- #
+
+# Resource files:
+#  Extend the list to install other files of your choice
+RESOURCE_SRC   := *.properties *.gif *.au
+
+# Objects that should go into the jar file. (find syntax)
+JAR_OBJS       := \( -name '*.class' -o -name '*.gif' -o -name "*.au" \
+                      -o -name '*.properties' \)
+
+# Include the separate variables file if it exists
+MAKEFILE_VARS  = makefile.vars
+VARS   = $(wildcard $(MAKEFILE_VARS))
+ifneq ($(VARS),)
+       include $(MAKEFILE_VARS)
+endif
+
+
+# Packages we should compile
+PACKAGES = \
+       com.sun.lwuit.painter \
+       com.sun.lwuit.animations \
+       javax.microedition.media \
+       com.sun.lwuit.util \
+       com.sun.lwuit.plaf \
+       javax.microedition.m3g \
+       com.sun.lwuit.events \
+       com.sun.lwuit.geom \
+       com.sun.lwuit.list \
+       com.sun.lwuit \
+       org.thenesis.lwuit.configuration \
+       com.sun.lwuit.layouts
+
+
+# All packages that can be recursively compiled.
+ALL_PACKAGES = \
+       org.thenesis.lwuit \
+       javax \
+       org.thenesis \
+       org \
+       javax.microedition \
+       com.sun \
+       com \
+       $(PACKAGES)
+
+
+# Packages to generate docs for.
+JAVADOC_PACKAGES = $(PACKAGES)
+
+
+# Resource packages
+RESOURCES = 
+
+
+# Directories with shell scripts
+SCRIPTS = 
+
+# ------------------------------------------------------------------- #
+
+# A marker variable for the top level directory
+TOPLEVEL       := .
+
+# Subdirectories with java files:
+JAVA_DIRS      := $(subst .,/,$(PACKAGES)) $(TOPLEVEL)
+
+# Subdirectories with only resource files:
+RESOURCE_DIRS  := $(subst .,/,$(RESOURCES))
+
+# All the .xjava source files:
+XJAVA_SRC      := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.xjava))
+
+# All the xjava files to build
+XJAVA_OBJS     := $(XJAVA_SRC:.xjava=.java)
+
+# Directory coresponding to a package
+PACKAGE_DIR    = $(subst .,/,$(1))
+
+# All the (x)java files in a package
+PACKAGE_SRC    =  $(shell $(FIND) $(PACKAGE_DIR) \( -name '*.java' -or -name '*.xjava' \) )
+
+# All the classes to build in a package
+PACKAGE_OBJS   = $(patsubst %.java,%.class,$(PACKAGE_SRC: %.xjava=%.java))
+
+# All the .java source files:
+JAVA_SRC       := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.java))
+JAVA_SRC       := $(XJAVA_OBJS) $(JAVA_SRC)
+
+# Dependency files:
+DEPEND_OBJS    := $(JAVA_SRC:.java=.u)
+
+# The intermediate java files and main classes we should build:
+JAVA_OBJS      := $(XJAVA_OBJS) $(JAVA_SRC:.java=.class)
+
+#  Search for resource files in both JAVA_DIRS and RESOURCE_DIRS
+RESOURCE_OBJS  := $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
+                    $(wildcard $(foreach file, $(RESOURCE_SRC), \
+                    $(dir)/$(file))))
+
+# All the shell scripts source
+SCRIPT_SRCS    := $(foreach dir, $(SCRIPTS), $(wildcard $(dir)/*.sh))
+# All shell scripts we should install
+SCRIPT_OBJS            := $(SCRIPT_SRCS:.sh=)
+
+# All the files to install into CLASS_DIR
+INSTALL_OBJS   := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.class))
+# Escape inner class delimiter $
+INSTALL_OBJS   := $(subst $$,\$$,$(INSTALL_OBJS))
+# Add the resource files to be installed as well
+INSTALL_OBJS   := $(INSTALL_OBJS) $(RESOURCE_OBJS)
+
+
+# ------------------------------------------------------------------- #
+
+
+define check-exit
+|| exit 1
+
+endef
+
+
+# -----------
+# Build Rules
+# -----------
+
+%.java: %.xjava
+       $(CPP) -D$(VERSION) $< $@
+
+%.class: %.java
+       $(JAVAC) $(JAVAC_FLAGS) $<
+
+%.jar: $(JAVA_OBJS) $(RESOURCE_OBJS)
+       $(FIND) $(TOPLEVEL) $(JAR_OBJS) -print | $(XARGS) \
+       $(JAR) $(JAR_FLAGS) $(JAR_FILE) 
+
+%.u: %.java
+       $(JAVAC) $(JIKES_DEP_FLAG) $<
+
+
+# -------
+# Targets
+# -------
+
+.PHONY: all jar install uninstall doc clean depend tags bundle \
+       help $(ALL_PACKAGES)
+
+all::  $(JAVA_OBJS)
+
+help:
+       @echo "Usage: make {all|jar|srcjar|bundle|install|uninstall|doc|clean|depend|tags|PACKAGE_NAME}"
+       @echo " all: build all classes"
+       @echo " jar: build jar file"
+       @echo " srcjar: build source jar file"
+       @echo " bundle: build OS X app bundle"
+       @echo " install: install classes into $(CLASS_DIR)"
+       @echo "         jar into $(JAR_DIR)"
+       @echo "         bundle into $(BUNDLE_DIR)"
+       @echo "         javadocs into $(DOC_DIR)"
+       @echo "         scripts into $(SCRIPT_DIR)"
+       @echo " uninstall: remove installed files"
+       @echo " doc: generate api docs from javadoc comments"
+       @echo " clean: remove classes and temporary files"
+       @echo " depend: build class dependency info using jikes"
+       @echo " tags: build emacs tags file"
+       @echo " PACKAGE_NAME: builds all classes in this package and any subpackages."
+
+# Jar target
+ifneq ($(strip $(JAR_FILE)),)
+jar:  $(JAR_FILE)
+ifneq ($(strip $(JAR_DIR)),)
+install:: $(JAR_FILE)
+       @echo "===> [Installing jar file, $(JAR_FILE) in $(JAR_DIR)] "
+       $(INSTALL_DIR) $(JAR_DIR) $(check-exit)
+       $(INSTALL_FILE) $(JAR_FILE) $(JAR_DIR) $(check-exit)
+uninstall::
+       @echo "===> [Removing jar file, $(JAR_FILE) from $(JAR_DIR)] "
+       $(RM) $(JAR_DIR)/$(JAR_FILE)  $(check-exit)
+else
+install::
+       @echo "No jar install dir defined"
+endif
+clean::
+       $(RM) $(JAR_FILE)
+else
+jar:
+       @echo "No jar file defined"
+endif
+
+SRC_JAR_FILE := $(basename $(JAR_FILE))-src$(suffix $JAR_FILE)
+
+# Source jar target
+srcjar : $(SRC_JAR_FILE)
+$(SRC_JAR_FILE): $(JAVA_SRC) $(RESOURCE_OBJS)
+       $(FIND) $(TOPLEVEL) $(JAR_OBJS: .class=.java) -print | $(XARGS) \
+       $(JAR) $(JAR_FLAGS) $@
+
+# Bundle target
+ifneq ($(strip $(BUNDLE_FILE)),)
+bundle:  $(BUNDLE_FILE)
+$(BUNDLE_FILE) : $(JAR_FILE)
+       $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/Resources/Java $(check-exit)
+       $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/MacOS $(check-exit)
+       $(INSTALL_PROG) $(JAVA_STUB) $(BUNDLE_FILE)/Contents/MacOS/ \
+               $(check-exit)
+       ( $(CAT) $(BUNDLE_RESOURCE_DIR)/Info.plist | $(SED) -e \
+               s/VERSION/$(VERSION)/ >98762infoplist876 ) $(check-exit)
+       $(INSTALL_FILE) 98762infoplist876 \
+               $(BUNDLE_FILE)/Contents/Info.plist $(check-exit)
+       $(RM) 98762infoplist876 $(check-exit)
+       $(INSTALL_FILE) $(JAR_FILE) $(BUNDLE_FILE)/Contents/Resources/Java
+       checkexit="";for f in $(BUNDLE_RESOURCES); do \
+               $(INSTALL_FILE) $(BUNDLE_RESOURCE_DIR)$$f $(BUNDLE_FILE)/Contents/Resources/ \
+               || checkexit=$?; \
+               done; test -z $$checkexit
+
+ifneq ($(strip $(BUNDLE_DIR)),)
+# This is probably bad, but I don't know how else to do it
+install:: $(BUNDLE_FILE)
+       @echo "===> [Installing app bundle, $(BUNDLE_FILE) in $(BUNDLE_DIR)] "
+       $(INSTALL_DIR) $(BUNDLE_DIR) $(check-exit)
+       $(CP) -R $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
+       $(INSTALL_FILE) $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
+uninstall::
+       @echo "===> [Removing bundle file, $(BUNDLE_FILE) from $(BUNDLE_DIR)] "
+       $(RM) -r $(BUNDLE_DIR)/$(BUNDLE_FILE)  $(check-exit)
+else
+install::
+       @echo "No bundle install dir defined"
+endif
+clean::
+       $(RM) -r $(BUNDLE_FILE)
+else
+bundle:
+       @echo "No bundle file defined"
+endif
+
+
+# Install target for Classes and Resources 
+ifneq ($(strip $(CLASS_DIR)),)
+install:: $(JAVA_OBJS)
+       @echo "===> [Installing classes in $(CLASS_DIR)] "
+       $(INSTALL_DIR) $(CLASS_DIR) $(check-exit)
+       $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
+               $(INSTALL_DIR) $(CLASS_DIR)/$(dir) $(check-exit))
+       $(foreach file, $(INSTALL_OBJS), \
+               $(INSTALL_FILE) $(file) $(CLASS_DIR)/$(file) \
+       $(check-exit))
+uninstall::
+       @echo "===> [Removing class-files from $(CLASS_DIR)] "
+       $(foreach file, $(INSTALL_OBJS), \
+               $(RM) $(CLASS_DIR)/$(file) \
+       $(check-exit))
+else
+# Print a warning here if you like. (No class install dir defined)
+endif
+
+
+
+# Depend target
+ifeq ($(findstring jikes,$(JAVAC)),jikes)
+depend: $(XJAVA_OBJS) $(DEPEND_OBJS)
+       ( $(CAT) $(DEPEND_OBJS) |  $(SED) -e '/\.class$$/d' \
+         -e '/.*$$.*/d' > $(MAKEFILE_DEPEND); $(RM) $(DEPEND_OBJS); )
+else
+depend:
+       @echo "mmake needs the jikes compiler to build class dependencies"
+endif
+
+
+
+# Doc target
+ifneq ($(strip $(JAVADOC_PACKAGES)),)
+doc:   $(JAVA_SRC)
+       @echo "===> [Installing java documentation in $(DOC_DIR)] "
+       $(INSTALL_DIR) $(DOC_DIR) $(check-exit)
+       $(JAVADOC) $(JAVADOC_FLAGS) -d $(DOC_DIR) $(JAVADOC_PACKAGES)
+else
+doc:
+       @echo "You must put your source files in a package to run make doc"
+endif
+
+
+
+# Script target
+ifneq ($(strip  $(SCRIPT_OBJS)),)
+all::   $(SCRIPT_OBJS)
+ifneq ($(strip $(SCRIPT_DIR)),)
+install:: $(SCRIPT_OBJS)
+       @echo "===> [Installing shell-scripts in $(SCRIPT_DIR)] "
+       $(INSTALL_DIR) $(SCRIPT_DIR) $(check-exit)
+       $(foreach file, $(SCRIPT_OBJS), \
+               $(INSTALL_PROG) $(file) $(SCRIPT_DIR) $(check-exit))
+uninstall:: 
+       @echo "===> [Removing shell-scripts from $(SCRIPT_DIR)] "
+       $(foreach file, $(SCRIPT_OBJS), \
+               $(RM) $(SCRIPT_DIR)/$(file) $(check-exit))
+else
+# Print a warning here if you like. (No script install dir defined)
+endif
+clean::
+       rm -f $(SCRIPT_OBJS)
+endif
+
+
+
+# Tag target
+tags:  
+       @echo "Tagging"
+       $(ETAGS) $(filter-out $(XJAVA_OBJS), $(JAVA_SRC)) $(XJAVA_SRC)
+
+
+
+# Various cleanup routines
+clean::
+       $(FIND) . \( -name '*~' -o -name '*.class' \) -print | \
+       $(XARGS) $(RM) 
+       $(FIND) . -name '*.u' -print | $(XARGS) $(RM)
+
+ifneq ($(strip $(XJAVA_SRC)),)
+clean::
+       $(RM) $(XJAVA_OBJS)
+endif
+
+# ----------------------------------------
+# Include the dependency graph if it exist
+# ----------------------------------------
+MAKEFILE_DEPEND        = makefile.dep
+DEPEND = $(wildcard $(MAKEFILE_DEPEND))
+ifneq ($(DEPEND),)
+       include $(MAKEFILE_DEPEND)
+endif
+
+#package targets
+org.thenesis.lwuit : $(call PACKAGE_OBJS,org.thenesis.lwuit)
+javax : $(call PACKAGE_OBJS,javax)
+org.thenesis : $(call PACKAGE_OBJS,org.thenesis)
+org : $(call PACKAGE_OBJS,org)
+javax.microedition : $(call PACKAGE_OBJS,javax.microedition)
+com.sun : $(call PACKAGE_OBJS,com.sun)
+com : $(call PACKAGE_OBJS,com)
+com.sun.lwuit.painter : $(call PACKAGE_OBJS,com.sun.lwuit.painter)
+com.sun.lwuit.animations : $(call PACKAGE_OBJS,com.sun.lwuit.animations)
+javax.microedition.media : $(call PACKAGE_OBJS,javax.microedition.media)
+com.sun.lwuit.util : $(call PACKAGE_OBJS,com.sun.lwuit.util)
+com.sun.lwuit.plaf : $(call PACKAGE_OBJS,com.sun.lwuit.plaf)
+javax.microedition.m3g : $(call PACKAGE_OBJS,javax.microedition.m3g)
+com.sun.lwuit.events : $(call PACKAGE_OBJS,com.sun.lwuit.events)
+com.sun.lwuit.geom : $(call PACKAGE_OBJS,com.sun.lwuit.geom)
+com.sun.lwuit.list : $(call PACKAGE_OBJS,com.sun.lwuit.list)
+com.sun.lwuit : $(call PACKAGE_OBJS,com.sun.lwuit)
+org.thenesis.lwuit.configuration : $(call PACKAGE_OBJS,org.thenesis.lwuit.configuration)
+com.sun.lwuit.layouts : $(call PACKAGE_OBJS,com.sun.lwuit.layouts)
+
diff --git a/demos/java/Makefile b/demos/java/Makefile
new file mode 100644 (file)
index 0000000..8b65e26
--- /dev/null
@@ -0,0 +1,408 @@
+#
+# Makefile created at Sat Sep  6 11:35:07 2008, by mmake
+#
+
+# Programs (with common options):
+SHELL          = /bin/sh
+CP             = cp
+RM              = rm -f
+MV              = mv -f
+SED            = sed
+ETAGS          = etags
+XARGS          = xargs
+CAT            = cat
+FIND            = find
+CPP            = cpp -C -P
+
+INSTALL         = install
+INSTALL_PROG    = $(INSTALL) -m $(MODE_PROGS)
+INSTALL_FILE    = $(INSTALL) -m $(MODE_FILES)
+INSTALL_DIR     = $(INSTALL) -m $(MODE_DIRS) -d
+
+# Install modes 
+MODE_PROGS      = 555
+MODE_FILES      = 444
+MODE_DIRS       = 2755
+
+# Build programs
+JAVAC           = jikes
+JAVADOC         = javadoc
+JAR             = jar
+
+# Build flags
+JAVAC_FLAGS     = 
+JAVADOC_FLAGS   = -version -author
+JAR_FLAGS       = cvf0
+JIKES_DEP_FLAG = +M
+
+# ------------------------------------------------------------------- #
+
+# Prefix for every install directory
+PREFIX         = 
+
+# Where to start installing the class files. Set this to an empty value
+#  if you dont want to install classes
+CLASS_DIR      = $(PREFIX)classes
+
+# The directory to install the jar file in. Set this to an empty value
+#  if you dont want to install a jar file
+JAR_DIR                = $(PREFIX)lib
+
+# The directory to install the app bundle in. Set this to an empty value
+#  if you dont want to install an app bundle
+BUNDLE_DIR      = $(PREFIX)lib
+
+
+# The directory to install html files generated by javadoc
+DOC_DIR         = $(PREFIX)doc/api-docs
+
+# The directory to install script files in
+SCRIPT_DIR     = $(PREFIX)bin
+
+# ------------------------------------------------------------------- #
+
+# The name of the jar file to install
+JAR_FILE        = 
+
+# 
+# The VERSION variable below should be set to a value 
+# that will be tested in the .xjava code and Info.plist. 
+# 
+VERSION                = CHANGE_ME
+
+# ------------------------------------------------------------------- #
+
+# The name of the OS X Application Bundle to install
+BUNDLE_FILE    = 
+
+# Folder containing App Bundle resources (Info.plist, *.icns, etc.)
+BUNDLE_RESOURCE_DIR = misc/macosx
+
+# Items to copy to the Resources folder of the bundle
+BUNDLE_RESOURCES = $(addsuffix .icns, $(basename $(APP_FILE)) Document)
+
+# Location of JavaApplicatonStub
+JAVA_STUB      = /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
+
+# ------------------------------------------------------------------- #
+
+# Resource files:
+#  Extend the list to install other files of your choice
+RESOURCE_SRC   := *.properties *.gif *.au
+
+# Objects that should go into the jar file. (find syntax)
+JAR_OBJS       := \( -name '*.class' -o -name '*.gif' -o -name "*.au" \
+                      -o -name '*.properties' \)
+
+# Include the separate variables file if it exists
+MAKEFILE_VARS  = makefile.vars
+VARS   = $(wildcard $(MAKEFILE_VARS))
+ifneq ($(VARS),)
+       include $(MAKEFILE_VARS)
+endif
+
+
+# Packages we should compile
+PACKAGES = \
+       org.thenesis.lwuimb.demo
+
+
+# All packages that can be recursively compiled.
+ALL_PACKAGES = \
+       org.thenesis.lwuimb \
+       org \
+       org.thenesis \
+       $(PACKAGES)
+
+
+# Packages to generate docs for.
+JAVADOC_PACKAGES = $(PACKAGES)
+
+
+# Resource packages
+RESOURCES = 
+
+
+# Directories with shell scripts
+SCRIPTS = 
+
+# ------------------------------------------------------------------- #
+
+# A marker variable for the top level directory
+TOPLEVEL       := .
+
+# Subdirectories with java files:
+JAVA_DIRS      := $(subst .,/,$(PACKAGES)) $(TOPLEVEL)
+
+# Subdirectories with only resource files:
+RESOURCE_DIRS  := $(subst .,/,$(RESOURCES))
+
+# All the .xjava source files:
+XJAVA_SRC      := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.xjava))
+
+# All the xjava files to build
+XJAVA_OBJS     := $(XJAVA_SRC:.xjava=.java)
+
+# Directory coresponding to a package
+PACKAGE_DIR    = $(subst .,/,$(1))
+
+# All the (x)java files in a package
+PACKAGE_SRC    =  $(shell $(FIND) $(PACKAGE_DIR) \( -name '*.java' -or -name '*.xjava' \) )
+
+# All the classes to build in a package
+PACKAGE_OBJS   = $(patsubst %.java,%.class,$(PACKAGE_SRC: %.xjava=%.java))
+
+# All the .java source files:
+JAVA_SRC       := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.java))
+JAVA_SRC       := $(XJAVA_OBJS) $(JAVA_SRC)
+
+# Dependency files:
+DEPEND_OBJS    := $(JAVA_SRC:.java=.u)
+
+# The intermediate java files and main classes we should build:
+JAVA_OBJS      := $(XJAVA_OBJS) $(JAVA_SRC:.java=.class)
+
+#  Search for resource files in both JAVA_DIRS and RESOURCE_DIRS
+RESOURCE_OBJS  := $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
+                    $(wildcard $(foreach file, $(RESOURCE_SRC), \
+                    $(dir)/$(file))))
+
+# All the shell scripts source
+SCRIPT_SRCS    := $(foreach dir, $(SCRIPTS), $(wildcard $(dir)/*.sh))
+# All shell scripts we should install
+SCRIPT_OBJS            := $(SCRIPT_SRCS:.sh=)
+
+# All the files to install into CLASS_DIR
+INSTALL_OBJS   := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.class))
+# Escape inner class delimiter $
+INSTALL_OBJS   := $(subst $$,\$$,$(INSTALL_OBJS))
+# Add the resource files to be installed as well
+INSTALL_OBJS   := $(INSTALL_OBJS) $(RESOURCE_OBJS)
+
+
+# ------------------------------------------------------------------- #
+
+
+define check-exit
+|| exit 1
+
+endef
+
+
+# -----------
+# Build Rules
+# -----------
+
+%.java: %.xjava
+       $(CPP) -D$(VERSION) $< $@
+
+%.class: %.java
+       $(JAVAC) $(JAVAC_FLAGS) $<
+
+%.jar: $(JAVA_OBJS) $(RESOURCE_OBJS)
+       $(FIND) $(TOPLEVEL) $(JAR_OBJS) -print | $(XARGS) \
+       $(JAR) $(JAR_FLAGS) $(JAR_FILE) 
+
+%.u: %.java
+       $(JAVAC) $(JIKES_DEP_FLAG) $<
+
+
+# -------
+# Targets
+# -------
+
+.PHONY: all jar install uninstall doc clean depend tags bundle \
+       help $(ALL_PACKAGES)
+
+all::  $(JAVA_OBJS)
+
+help:
+       @echo "Usage: make {all|jar|srcjar|bundle|install|uninstall|doc|clean|depend|tags|PACKAGE_NAME}"
+       @echo " all: build all classes"
+       @echo " jar: build jar file"
+       @echo " srcjar: build source jar file"
+       @echo " bundle: build OS X app bundle"
+       @echo " install: install classes into $(CLASS_DIR)"
+       @echo "         jar into $(JAR_DIR)"
+       @echo "         bundle into $(BUNDLE_DIR)"
+       @echo "         javadocs into $(DOC_DIR)"
+       @echo "         scripts into $(SCRIPT_DIR)"
+       @echo " uninstall: remove installed files"
+       @echo " doc: generate api docs from javadoc comments"
+       @echo " clean: remove classes and temporary files"
+       @echo " depend: build class dependency info using jikes"
+       @echo " tags: build emacs tags file"
+       @echo " PACKAGE_NAME: builds all classes in this package and any subpackages."
+
+# Jar target
+ifneq ($(strip $(JAR_FILE)),)
+jar:  $(JAR_FILE)
+ifneq ($(strip $(JAR_DIR)),)
+install:: $(JAR_FILE)
+       @echo "===> [Installing jar file, $(JAR_FILE) in $(JAR_DIR)] "
+       $(INSTALL_DIR) $(JAR_DIR) $(check-exit)
+       $(INSTALL_FILE) $(JAR_FILE) $(JAR_DIR) $(check-exit)
+uninstall::
+       @echo "===> [Removing jar file, $(JAR_FILE) from $(JAR_DIR)] "
+       $(RM) $(JAR_DIR)/$(JAR_FILE)  $(check-exit)
+else
+install::
+       @echo "No jar install dir defined"
+endif
+clean::
+       $(RM) $(JAR_FILE)
+else
+jar:
+       @echo "No jar file defined"
+endif
+
+SRC_JAR_FILE := $(basename $(JAR_FILE))-src$(suffix $JAR_FILE)
+
+# Source jar target
+srcjar : $(SRC_JAR_FILE)
+$(SRC_JAR_FILE): $(JAVA_SRC) $(RESOURCE_OBJS)
+       $(FIND) $(TOPLEVEL) $(JAR_OBJS: .class=.java) -print | $(XARGS) \
+       $(JAR) $(JAR_FLAGS) $@
+
+# Bundle target
+ifneq ($(strip $(BUNDLE_FILE)),)
+bundle:  $(BUNDLE_FILE)
+$(BUNDLE_FILE) : $(JAR_FILE)
+       $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/Resources/Java $(check-exit)
+       $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/MacOS $(check-exit)
+       $(INSTALL_PROG) $(JAVA_STUB) $(BUNDLE_FILE)/Contents/MacOS/ \
+               $(check-exit)
+       ( $(CAT) $(BUNDLE_RESOURCE_DIR)/Info.plist | $(SED) -e \
+               s/VERSION/$(VERSION)/ >98762infoplist876 ) $(check-exit)
+       $(INSTALL_FILE) 98762infoplist876 \
+               $(BUNDLE_FILE)/Contents/Info.plist $(check-exit)
+       $(RM) 98762infoplist876 $(check-exit)
+       $(INSTALL_FILE) $(JAR_FILE) $(BUNDLE_FILE)/Contents/Resources/Java
+       checkexit="";for f in $(BUNDLE_RESOURCES); do \
+               $(INSTALL_FILE) $(BUNDLE_RESOURCE_DIR)$$f $(BUNDLE_FILE)/Contents/Resources/ \
+               || checkexit=$?; \
+               done; test -z $$checkexit
+
+ifneq ($(strip $(BUNDLE_DIR)),)
+# This is probably bad, but I don't know how else to do it
+install:: $(BUNDLE_FILE)
+       @echo "===> [Installing app bundle, $(BUNDLE_FILE) in $(BUNDLE_DIR)] "
+       $(INSTALL_DIR) $(BUNDLE_DIR) $(check-exit)
+       $(CP) -R $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
+       $(INSTALL_FILE) $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
+uninstall::
+       @echo "===> [Removing bundle file, $(BUNDLE_FILE) from $(BUNDLE_DIR)] "
+       $(RM) -r $(BUNDLE_DIR)/$(BUNDLE_FILE)  $(check-exit)
+else
+install::
+       @echo "No bundle install dir defined"
+endif
+clean::
+       $(RM) -r $(BUNDLE_FILE)
+else
+bundle:
+       @echo "No bundle file defined"
+endif
+
+
+# Install target for Classes and Resources 
+ifneq ($(strip $(CLASS_DIR)),)
+install:: $(JAVA_OBJS)
+       @echo "===> [Installing classes in $(CLASS_DIR)] "
+       $(INSTALL_DIR) $(CLASS_DIR) $(check-exit)
+       $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
+               $(INSTALL_DIR) $(CLASS_DIR)/$(dir) $(check-exit))
+       $(foreach file, $(INSTALL_OBJS), \
+               $(INSTALL_FILE) $(file) $(CLASS_DIR)/$(file) \
+       $(check-exit))
+uninstall::
+       @echo "===> [Removing class-files from $(CLASS_DIR)] "
+       $(foreach file, $(INSTALL_OBJS), \
+               $(RM) $(CLASS_DIR)/$(file) \
+       $(check-exit))
+else
+# Print a warning here if you like. (No class install dir defined)
+endif
+
+
+
+# Depend target
+ifeq ($(findstring jikes,$(JAVAC)),jikes)
+depend: $(XJAVA_OBJS) $(DEPEND_OBJS)
+       ( $(CAT) $(DEPEND_OBJS) |  $(SED) -e '/\.class$$/d' \
+         -e '/.*$$.*/d' > $(MAKEFILE_DEPEND); $(RM) $(DEPEND_OBJS); )
+else
+depend:
+       @echo "mmake needs the jikes compiler to build class dependencies"
+endif
+
+
+
+# Doc target
+ifneq ($(strip $(JAVADOC_PACKAGES)),)
+doc:   $(JAVA_SRC)
+       @echo "===> [Installing java documentation in $(DOC_DIR)] "
+       $(INSTALL_DIR) $(DOC_DIR) $(check-exit)
+       $(JAVADOC) $(JAVADOC_FLAGS) -d $(DOC_DIR) $(JAVADOC_PACKAGES)
+else
+doc:
+       @echo "You must put your source files in a package to run make doc"
+endif
+
+
+
+# Script target
+ifneq ($(strip  $(SCRIPT_OBJS)),)
+all::   $(SCRIPT_OBJS)
+ifneq ($(strip $(SCRIPT_DIR)),)
+install:: $(SCRIPT_OBJS)
+       @echo "===> [Installing shell-scripts in $(SCRIPT_DIR)] "
+       $(INSTALL_DIR) $(SCRIPT_DIR) $(check-exit)
+       $(foreach file, $(SCRIPT_OBJS), \
+               $(INSTALL_PROG) $(file) $(SCRIPT_DIR) $(check-exit))
+uninstall:: 
+       @echo "===> [Removing shell-scripts from $(SCRIPT_DIR)] "
+       $(foreach file, $(SCRIPT_OBJS), \
+               $(RM) $(SCRIPT_DIR)/$(file) $(check-exit))
+else
+# Print a warning here if you like. (No script install dir defined)
+endif
+clean::
+       rm -f $(SCRIPT_OBJS)
+endif
+
+
+
+# Tag target
+tags:  
+       @echo "Tagging"
+       $(ETAGS) $(filter-out $(XJAVA_OBJS), $(JAVA_SRC)) $(XJAVA_SRC)
+
+
+
+# Various cleanup routines
+clean::
+       $(FIND) . \( -name '*~' -o -name '*.class' \) -print | \
+       $(XARGS) $(RM) 
+       $(FIND) . -name '*.u' -print | $(XARGS) $(RM)
+
+ifneq ($(strip $(XJAVA_SRC)),)
+clean::
+       $(RM) $(XJAVA_OBJS)
+endif
+
+# ----------------------------------------
+# Include the dependency graph if it exist
+# ----------------------------------------
+MAKEFILE_DEPEND        = makefile.dep
+DEPEND = $(wildcard $(MAKEFILE_DEPEND))
+ifneq ($(DEPEND),)
+       include $(MAKEFILE_DEPEND)
+endif
+
+#package targets
+org.thenesis.lwuimb : $(call PACKAGE_OBJS,org.thenesis.lwuimb)
+org : $(call PACKAGE_OBJS,org)
+org.thenesis : $(call PACKAGE_OBJS,org.thenesis)
+org.thenesis.lwuimb.demo : $(call PACKAGE_OBJS,org.thenesis.lwuimb.demo)
+
diff --git a/lib/cldc1.1.jar b/lib/cldc1.1.jar
new file mode 100644 (file)
index 0000000..8953cf1
Binary files /dev/null and b/lib/cldc1.1.jar differ
diff --git a/lib/microbackend.jar b/lib/microbackend.jar
new file mode 100644 (file)
index 0000000..fc55382
Binary files /dev/null and b/lib/microbackend.jar differ