Dependencies
------------

- ruby 1.8 or greater
- automake 1.7 or greater
- Qt 3.1 or greater 
- KDE 3.1 or greater (for korundum)

CVS Snapshot
------------

If building from a CVS snapshot, this initial make command in needed:

$ make -f Makefile.cvs

Configure flags needed
----------------------

In order to build korundum: (this is the default in fact, so you can just use ./configure)
   ./configure --with-smoke="qt kde"
in order to build just qtruby: 
   ./configure --with-smoke="qt"

Building the Qt extension without KDE build process
---------------------------------------------------

To build the Qt.so extension, provide 'extconf.rb' with the directories where
the Qt and Smoke libraries are installed:

$ cd qtruby/rubylib/qtruby
$ ruby extconf.rb --with-smoke-dir=/opt/kde3 \
      --with-qt-dir=/home/duke/src/kde/HEAD/qt-copy
$ make
$ make install

Building on Mac OS X
--------------------

Automake/autoconf don't work very well on Mac OS X, and so qmake and
exconf.rb must be used instead. You can use the native Aqua/Quartz Qt/Mac 
version of Qt - QtRuby doesn't require X11.

Build Qt/Mac and install in /Developer/qt. These configure flags work well:

./configure -system-zlib -qt-gif -plugin-imgfmt-mng -thread -no-stl 
-no-exceptions -fast

Configure QtRuby and build the Smoke library:
$ ./configure '--with-qt-dir=/Developer/qt'  '--enable-mac'
$ cd smoke/qt
# Generate the Smoke library sources:
$ perl generate.pl
# Overwrite the automake generated Makefile:
$ qmake -makefile
# Build the Smoke library and install into /usr/lib
$ sudo make
...

# Build the 'Qt' extension:
$ cd qtruby/rubylib/qtruby
$ ruby extconf.rb --with-qt-dir=/Developer/qt --with-smoke-dir=/usr \
      --with-smoke-include=../../../smoke
$ make
$ sudo make install
...

# Build the rbuic tool and install into /usr/bin
$ cd qtruby/rubylib/designer/rbuic
$ qmake -makefile
$ sudo make
...

# Build the 'qui' QWidgetFactory extension
$ cd qtruby/rubylib/designer/uilib
$ ruby extconf.rb --with-qtruby-include=../../qtruby --with-qt-dir=/Developer/qt
$ make
$ sudo make install

To get Mac menus to appear, when a QtRuby program is run from the command line,
link ruby against the carbon resource lib and call it 'rubyw', see:

http://www.rubygarden.org/ruby?RubyTkOnOSX

"Create rubyw executable for MacOS?: the Win32 distribution of ruby includes a 
'rubyw.exe' so I decided to attempt creating a 'rubyw' executable:

On my machine, ruby is installed at /usr/local/bin/ruby, so I did sudo 
cp /usr/local/bin/ruby /usr/local/bin/rubyw 
Using the suggestion directly above (on this page), I then ran 
sudo /Developer/Tools/Rez -t APPL Carbon.r -o rubyw 
I was then able to successfully run an example RubyTk app by 
running /usr/local/bin/rubyw ruby-1.8.0/ext/tk/sample/tkmenubutton.rb 
Everything worked as expected, and I was able to interact with the UI without 
any SetFrontProcess errors. "

Ryutaro Amano wrote this about creating a double clickable bundle:

"Thanks all, I have succeeded make rubyw.
sample script is launched in foreground.
And I have known the following steps to launch qt-ruby script by double clicking
from Finder.

As an example, I  take qtruby-1.0.11/qtruby/rubylib/tutorial/t14

cd qtruby-1.0.11/qtruby/rubylib/tutorial/t14
chmod 755 t14.rb
replace first line of t14.rb with "#!/usr/local/bin/rubyw"
mkdir -p Shoot.app/Contents/MacOS
mv t14.rb Shoot.app/Contents/MacOS/Shoot
cp {cannon.rb,gamebrd.rb,lcdrange.rb} Shoot.app/Contents/MacOS
cp  Info.plist Shoot.app/Contents

Info.plist is

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
        <key>CFBundleExecutable</key>
        <string>Shoot</string>
        <key>CFBundleIdentifier</key>
        <string>jp.co.ryutaro.qtquit</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleSignature</key>
        <string>????</string>
</dict>
</plist>

echo -n "APPL????" > Shoot.app/Contents/PkgInfo

Double click Shoot.app, Qt-Window appears in foreground."

QScintilla text editing widget support
--------------------------------------

QScintilla is a text editing widget with syntax highlighting for a
number of languages including ruby. It can be downloaded from here:

http://www.riverbankcomputing.co.uk/qscintilla/download.php

Use the '--enable-qscintilla=yes' configure option to build QtRuby with
QScintilla support. The classes in a 'Qext::' module, with names such as 
Qext::Scintilla.
