You are on page 1of 10

CHAPTER

ELEVEN

BUILDING FROM SOURCE CODE

The Ring programming language is a free open source product (MIT License).
You can build Ring using CMake or using Scripts (Batch Files or Shell Scripts).
The next steps explains building using scripts.

11.1 Building using Microsoft Windows

Get the source code


git clone http://github.com/ring-lang/ring.git

Build Ring (Compiler/VM)


cd ring/src
buildvc.bat
buildvcw.bat

Build Ring2EXE
cd ../ring2exe
buildring2exe.bat

Build RingODBC
cd ../extensions/ringodbc
buildvc.bat

Build RingMySQL
cd ../extensions/ringmysql
buildvc.bat

Build RingSQLite
cd ../extensions/ringsqlite
buildvc.bat

Build RingOpenSSL
cd ../extensions/ringopenssl
buildvc.bat

Build RingInternet

142
Ring Documentation, Release 1.7

cd ../extensions/ringinternet
buildvc.bat

Build RingMurmurHash
cd ../extensions/ringmurmurhash
buildvc.bat

Generate RingConsoleColors Source Code and Build


cd ../extensions/ringconsolecolors
gencode.bat
buildvc.bat

Generate RingAllegro Source Code and Build


cd ../extensions/ringallegro
gencode.bat
buildvc.bat

Generate RingLibCurl Source Code and Build


cd ../extensions/ringcurl
gencode.bat
buildvc.bat

Generate RingZip Source Code and Build


cd ../extensions/ringzip
gencode.bat
buildvc.bat

Generate RingLibuv Source Code and Build


cd ../extensions/ringlibuv
gencode.bat
buildvc.bat

Generate RingFreeGLUT Source Code and Build


cd ../extensions/ringfreeglut
gencode.bat
buildvc.bat

Generate RingOpenGL Source Code and Build


The ringopengl folder contains many sub folders for different OpenGL versions
Starting from OpenGL 1.1 to OpenGL 4.6
cd ../extensions/ringopengl/opengl21
gencode.bat
buildvc.bat

Install Qt 5.5 : https://download.qt.io/archive/qt/5.5/5.5.1/


Generate RingQt Source Code and Build
cd ../extensions/ringqt
gencode.bat
buildmingw32.bat

To be able to call ring from any folder

11.1. Building using Microsoft Windows 143


Ring Documentation, Release 1.7

cd ../../bin
install.bat

Add Ring/bin to System path


Hit "windows key".
Type "Edit the System environment variables"
Select "Advanced" tab.
Click on "Enviroment Variables..."
Double click on "Path"
Add at the end the new path separated by semicolon.
;C:\Ring\Bin

Run Ring Notepad


cd applications/rnote
ring rnote.ring

11.2 Building using Ubuntu Linux

Get the source code


git clone http://github.com/ring-lang/ring.git

Install Libraries
cd ring/src
./installdep.sh

Build Ring (Compiler/VM)


sudo ./buildgcc.sh

Build Ring2EXE
cd ../ring2exe
sudo ./buildring2exe.sh

Build RingODBC
cd ../extensions/ringodbc
./buildgcc.sh

Build RingMySQL
cd ../extensions/ringmysql
./buildgcc.sh

Build RingSQLite
cd ../extensions/ringsqlite
./buildgcc.sh

Build RingOpenSSL
cd ../extensions/ringopenssl
./buildgcc.sh

Build RingInternet

11.2. Building using Ubuntu Linux 144


Ring Documentation, Release 1.7

cd ../extensions/ringinternet
./buildgcc.sh

Build RingMurmurHash
cd ../extensions/ringmurmurhash
./buildgcc.sh

Generate RingConsoleColors Source Code and Build


cd ../extensions/ringconsolecolors
./gencode.sh
./buildgcc.sh

Generate RingAllegro Source Code and Build


cd ../extensions/ringallegro
./gencode.sh
./buildgcc.sh

Generate RingLibCurl Source Code and Build


cd ../extensions/ringcurl
./gencode.sh
./buildgcc.sh

Generate RingZip Source Code and Build


cd ../extensions/ringzip
./gencode.sh
./buildgcc.sh

Generate RingLibuv Source Code and Build


We will build Libuv first
cd ../extensions/ringlibuv/libuv
sudo apt-get install m4 automake
sh autogen.sh
./configure
make
make check
sudo make install

Then we will build RingLibuv


cd ..
./gencode.sh
./buildgcc.sh

Generate RingFreeGLUT Source Code and Build


cd ../extensions/ringfreeglut
./gencode.sh
./buildgcc.sh

Generate RingOpenGL Source Code and Build


The ringopengl folder contains many sub folders for different OpenGL versions
Starting from OpenGL 1.1 to OpenGL 4.6

11.2. Building using Ubuntu Linux 145


Ring Documentation, Release 1.7

cd ../extensions/ringopengl/opengl21
gencode.sh
buildgcc.sh

Generate RingQt Source Code and Build


cd ../extensions/ringqt
./gencode.sh
./buildgcc.sh

To be able to call ring from any folder


cd ../../bin
sudo ./install.sh

Run Ring Notepad


cd applications/rnote
ring rnote.ring

11.3 Building using Fedora Linux

Get the source code


git clone http://github.com/ring-lang/ring.git

Install Libraries
cd ring/src
./installdepfedora.sh

Build Ring (Compiler/VM)


sudo ./buildgcc.sh

Build Ring2EXE
cd ../ring2exe
sudo ./buildring2exe.sh

Build RingODBC
cd ../extensions/ringodbc
./buildgcc.sh

Build RingMySQL
cd ../extensions/ringmysql
./buildgccfedora.sh

Build RingSQLite
cd ../extensions/ringsqlite
./buildgcc.sh

Build RingOpenSSL
cd ../extensions/ringopenssl
./buildgcc.sh

11.3. Building using Fedora Linux 146


Ring Documentation, Release 1.7

Build RingInternet
cd ../extensions/ringinternet
./buildgcc.sh

Build RingMurmurHash
cd ../extensions/ringmurmurhash
./buildgcc.sh

Generate RingConsoleColors Source Code and Build


cd ../extensions/ringconsolecolors
./gencode.sh
./buildgcc.sh

Generate RingAllegro Source Code and Build


cd ../extensions/ringallegro
./gencode.sh
./buildgcc.sh

Generate RingLibCurl Source Code and Build


cd ../extensions/ringcurl
./gencode.sh
./buildgcc.sh

Generate RingZip Source Code and Build


cd ../extensions/ringzip
./gencode.sh
./buildgcc.sh

Generate RingLibuv Source Code and Build


We will build Libuv first
cd ../extensions/ringlibuv/libuv
sudo dnf install m4 autoconf automake
sh autogen.sh
./configure
make
make check
sudo make install

Then we will build RingLibuv


cd ..
./gencode.sh
./buildgcc.sh

Generate RingFreeGLUT Source Code and Build


cd ../extensions/ringfreeglut
./gencode.sh
./buildgcc.sh

Generate RingOpenGL Source Code and Build


The ringopengl folder contains many sub folders for different OpenGL versions
Starting from OpenGL 1.1 to OpenGL 4.6

11.3. Building using Fedora Linux 147


Ring Documentation, Release 1.7

cd ../extensions/ringopengl/opengl21
gencode.sh
buildgcc.sh

Generate RingQt Source Code and Build


cd ../extensions/ringqt
./gencode.sh
./buildgccfedora.sh

To be able to call ring from any folder


cd ../../bin
sudo ./install.sh

Run Ring Notepad


cd applications/rnote
ring rnote.ring

11.4 Building using MacOS X

Get the source code


git clone http://github.com/ring-lang/ring.git

Install homebrew (follow the directions on homebrew’s homepage). Install Libraries


cd ring/src
./installdepmac.sh

Build Ring (Compiler/VM)


./buildclang.sh

Build Ring2EXE
cd ../ring2exe
sudo ./buildring2exe.sh

Build RingODBC
cd ../extensions/ringodbc
./buildclang.sh

Build RingMySQL
cd ../extensions/ringmysql
./buildclang.sh

Build RingSQLite
cd ../extensions/ringsqlite
./buildclang.sh

Build RingOpenSSL
cd ../extensions/ringopenssl
./buildclang.sh

11.4. Building using MacOS X 148


Ring Documentation, Release 1.7

Build RingInternet
cd ../extensions/ringinternet
./buildclang.sh

Build RingMurmurHash
cd ../extensions/ringmurmurhash
./buildclang.sh

Generate RingConsoleColors Source Code and Build


cd ../extensions/ringconsolecolors
./gencode.sh
./buildclang.sh

Generate RingAllegro Source Code and Build


cd ../extensions/ringallegro
./gencode.sh
./buildclang.sh

Generate RingLibCurl Source Code and Build


cd ../extensions/ringcurl
./gencode.sh
./buildclang.sh

Generate RingZip Source Code and Build


cd ../extensions/ringzip
./gencode.sh
./buildclang.sh

Generate RingLibuv Source Code and Build


cd ../extensions/ringlibuv
./gencode.sh
./buildclang.sh

Generate RingFreeGLUT Source Code and Build


cd ../extensions/ringfreeglut
./gencode.sh
./buildclang.sh

Generate RingOpenGL Source Code and Build


The ringopengl folder contains many sub folders for different OpenGL versions Starting from OpenGL 1.1 to OpenGL
4.6
cd ../extensions/ringopengl/opengl21
./gencode.sh
./buildclang.sh

Generate RingQt Source Code and Build


cd ../extensions/ringqt
./gencode.sh
./buildclang.sh

To be able to call ring from any folder

11.4. Building using MacOS X 149


Ring Documentation, Release 1.7

cd ../../bin
sudo ./install.sh

Run Ring Notepad


cd applications/rnote
sudo ring rnote.ring

11.5 Building using CMake

Install libraries (MySQL Client, OpenSSL, LibCurl, Allegro 5 and Qt 5.5)


cmake .
make

11.5. Building using CMake 150


CHAPTER

TWELVE

HOW TO CONTRIBUTE?

Ring is a free-open source project, Everyone is welcome to contribute to Ring.


Project Home : https://github.com/ring-lang/ring
You can help in many parts in the project
• Documentation
• Testing
• Samples
• Applications
• Editors Support
• Libraries in Ring
• Extensions in C/C++
• Compiler and Virtual Machine (VM)
• Ideas and suggestions

12.1 Special thanks to contributors

Throughout the creation of this project, Ring relied heavily on contributions from experts along with college students.
Their input was invaluable, and we want to take a moment to thank them and recognize them for all of their hard work.
Ring Team: http://ring-lang.sf.net/team.html

12.2 Documentation

You can modify anything in the documentation, by updating the text files (*.txt) in this folder : https://github.com/ring-
lang/ring/tree/master/docs/source
The documentation is created using Sphinx : http://www.sphinx-doc.org/en/stable/

12.3 Testing

You can write new tests in this folder


https://github.com/ring-lang/ring/tree/master/tests/scripts

151

You might also like