Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo


Tree [b84aab] master 0_11_5 /

File Date Author Commit
debian 2010-07-31 chrisws chrisws [afdd48] Fix for PAUSE cmd to pause the correct length o...
documentation 2012-10-03 Chris Warren-Smith Chris Warren-Smith [e69ae6] DOCS added mkref.bas to generate help text from...
ide 2013-12-30 Chris Warren-Smith Chris Warren-Smith [ba5e7b] ANDROID: Replace battery drain error with conso...
images 2013-10-16 Chris Warren-Smith Chris Warren-Smith [8c5cb0] FLTK: fix for cygwin build
plugins 2010-04-23 chrisws chrisws [ac19b8] publish command now lives under file menu.
rpm 2010-11-01 chrisws chrisws [b0d803] cleanup build subdirs not required for src release
samples 2014-01-03 Chris Warren-Smith Chris Warren-Smith [a7b553] ANDROID: update event handling
src 2014-04-19 Chris Warren-Smith Chris Warren-Smith [b84aab] FLTK: fix startup size in run mode
translator 2013-01-27 Chris Warren-Smith Chris Warren-Smith [dbe028] TRANSLATOR deployed as a google web app
web 2012-03-31 chrisws chrisws [e91d96] Fixed Download link for drupal 7
AUTHORS 2012-05-07 Chris Warren-Smith Chris Warren-Smith [13cfe6] Cleanup obsolete modules; see SVN repo in sourc...
COPYING 2012-05-28 Chris Warren-Smith Chris Warren-Smith [7ab5f4] UNIX cleanup refactoring to fix unix console build
ChangeLog 2013-12-30 Chris Warren-Smith Chris Warren-Smith [ba5e7b] ANDROID: Replace battery drain error with conso...
Makefile.am 2013-11-23 Chris Warren-Smith Chris Warren-Smith [b1a9ba] ANDROID: impl event system
NEWS 2009-06-12 chrisws chrisws [3fccc2] updated DOFORM API for fltk version
README 2014-01-03 Chris Warren-Smith Chris Warren-Smith [a7b553] ANDROID: update event handling
autogen.sh 2012-05-20 Chris Warren-Smith Chris Warren-Smith [4e3ecf] Code cleanup and reorganisation.
configure.ac 2013-12-30 Chris Warren-Smith Chris Warren-Smith [ba5e7b] ANDROID: Replace battery drain error with conso...

Read Me

SmallBASIC is a fast and easy to learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a powerful string library, system, sound, and graphic commands along with structured programming syntax

== Building the Android port

1. Setup .bashrc:

export PATH=$PATH:~/android-sdk/adt-bundle-linux-x86_64-20131030/sdk/platform-tools
export ANDROID_SDK_ROOT=~/android-sdk/adt-bundle-linux-x86_64-20131030/sdk
export TARGET_DEVICE=arm
export PLATFORM_PREFIX=~/android-sdk/android-ext/
export NDK=~/android-sdk/android-ndk-r9b
export NDK_PLATFORM=android-9
export ANDROID_LOG_TAGS="DEBUG:I smallbasic:I AndroidRuntime:E *:S"

2. Build PNG + FreeType:

First, prepare the cross-compiler from the NDK:
  $NDK_PATH/build/tools/make-standalone-toolchain.sh \
      --platform=$NDK_PLATFORM --install-dir=$PLATFORM_PREFIX

Then use it to cross-compile the tools:
  cd libpng-1.6.6/
  CFLAGS="-std=gnu99" ./configure --host=arm-linux-androideabi --prefix=/png
  make install DESTDIR=$(pwd)

  cd freetype-2.4.10/
  CFLAGS="-std=gnu99" ./configure --host=arm-linux-androideabi --prefix=/freetype --without-zlib --without-png
  make install DESTDIR=$(pwd)

3. Build common

./configure --enable-android --host=arm-linux-androideabi

4. Build the native activity

$ cd src/platform/andoid/jni && $NDK/ndk-build

$ cd - && cd ide/android/ && ant release install

Useful adb commands for debugging:
adb shell dumpsys cpuinfo
adb shell top -m 10

== Building the TIZEN port

1. Download and install the Tizen IDE

2. Add the following lines to .bashrc

export TIZEN_BIN=${TIZEN_SDK}/tools/arm-linux-gnueabi-gcc-4.5/bin
export TIZEN_LIBS=${HOME}/tizen-lib
export PATH=${PATH}:${TIZEN_BIN}:~/bin
export CHOST=arm-linux-gnueabi
export LDFLAGS="--sysroot=${TIZEN_ROOTSTRAP} -L${TIZEN_LIBS}/lib"
export CPPFLAGS="--sysroot=${TIZEN_ROOTSTRAP} -fmessage-length=0 -fPIC\
  -I${TIZEN_ROOTSTRAP}/usr/include -I${TIZEN_LIBS}/include"

3. Build the common components

./configure --enable-tizen

4. Build the project using Tizen IDE

== Building the MoSync port

1. Download and install the MoSync IDE: http://www.mosync.com/download

2. Download and install cygwin: http://www.cygwin.com/

Install the following packages:

- automake
- autoconf
- pkg-config
- make

3. Download and unzip SmallBASIC from github:


Unzip the resulting smallbasic-SmallBASIC-xxx.zip file into a clean directory (the following steps will refer to this as $SB_HOME).

4. Build the common components:

$ cd $SB_HOME
$ sh autogen.sh
$ ./configure --enable-mosync
$ make -s

You should now see libsb_common.a in $SB_HOME/src/platform/mosync/common

Next, copy the dot files in $SB_HOME/ide/mosync into $SB_HOME

5. Setup the MoSync IDE project

Launch the MoSync IDE, then create a new workspace.

Click: Import / MoSync / Exiting MoSync project into workspace

Select root directory = $SB_HOME

Enter Ctrl+B to build the project.

6. Useful bash profile settings for MoSync android development:

alias adb="/c/Program\ Files\ \(x86\)/Android/android-sdk/platform-tools/adb.exe"
export ANDROID_LOG_TAGS="ActivityManager:I maWriteLog:I *:S"
alias adebug="adb -d logcat -c && adb -d logcat"


== Setup instructions for building FLTK version under a fresh ubuntu system

1. Install tools using synaptic package manager. Be sure to accept all included 
   dependencies. Note, some of these are only required for building FLTK to 
   completion but are not actually used in SmallBASIC:

 * subversion
 * autotools-dev
 * autogen
 * autoconf
 * libxft-dev
 * g++
 * libxi-dev
 * libgl1-mesa-dev
 * libglut3-dev
 * libsdl1.2-dev
 * libreadline-dev

2. Download code from subversion:

 $ mkdir src && cd src
 $ svn co http://svn.easysw.com/public/fltk/fltk/trunk fltk-2.0
 $ svn co https://smallbasic.svn.sourceforge.net/svnroot/smallbasic/trunk/smallbasic
 $ cd fltk-2.0 
 $ make (needs to complete at least up to building tests)
 $ sudo make install
 $ cd ../smallbasic
 $ sh autogen.sh
 $ configure --enable-fltk
 $ make
 $ sudo make install

== Setup instructions for building FLTK version under cygwin

Install cygwin along with mingw-gcc

./configure --host=i686-w64-mingw32 --enable-fltk

For 64 bit build:

./configure --host=x86_64-w64-mingw32 --enable-fltk

--- Old instructions ---

Download and install cygwin
--> http://www.cygwin.com/

Download and install MingW
--> http://sourceforge.net/projects/mingw/

Setup $HOME/.bash_profile:

 export PATH="/cygdrive/c/MinGW/bin:/usr/local/bin:/bin:"
 alias make=mingw32-make

Obtain and install FLTK as per the ubuntu instructions, then update
the fltk makeinclude file:

STRIP		= /cygdrive/c/cygwin/bin/strip
LIBCOMMAND	= /cygdrive/c/cygwin/bin/ar cr
RANLIB		= /cygdrive/c/cygwin/bin/ranlib

== Building the GTK version
 $ ./configure --enable-gtk
 $ make

== Building the N770 version
 $ ./configure --enable-gtk --enable-hildon
 $ make deb

== Building the SDL version

Optionally install guichan - see http://guichan.sourceforge.net/wiki/index.php

 $ ./configure --enable-sdl
 $ make

== Building the non-graphical console version (cygwin or linux)
 $ ./configure && make

 Windows 32 bit mingw console:

 $./configure --host=i686-w64-mingw32 && make 

 Windows 64 bit mingw console:

 $./configure --host=x86_64-w64-mingw32 && make 

== .indent.pro settings

 -brf -nbap -br -brs -cdb -cdw -ce -cli0 -fca -i2 -l110 -lc110 -lp
 -nbbo -nbc -ncs -nip -npcs -npsl -nut -ppi0 -sc