## Tecgraf/PUC-Rio Library Download Tips

All the libraries were build using Tecmake. Please use it if you intend to recompile the sources. Tecmake can be found at http://www.tecgraf.puc-rio.br/tecmake.

The IM files can be downloaded at http://sourceforge.net/projects/imtoolkit/files/.
The CD files can be downloaded at http://sourceforge.net/projects/canvasdraw/files/.
The IUP files can be downloaded at http://sourceforge.net/projects/iup/files/.
The Lua files can be downloaded at http://sourceforge.net/projects/luabinaries/files/.

### Build Configuration

Libraries and executables were built using speed optimization. In UNIX the dynamic libraries are built with the -fPIC parameter when in 64 bits. In MacOS X the dynamic libraries are in bundle format, except for the Lua bindings.

The DLLs were built using the cdecl calling convention. This should be a problem for Visual Basic users.

In Visual C++ we use the static multithread C Run Time Library for static libraries (-MT) and the dynamic multi thread C RTL for DLLs (-MD).

### Packaging

Some pre-compiled Binaries are available for download. They are named according to the platform where they were build.

In UNIX all strings are based in the result of the command "uname -a". The package name is a concatenation of the platform uname, the system major version number and the system minor version number. Some times a suffix must be added to complement the name. The compiler used is always gcc. Binaries for 64-bits receive the suffix: "_64". In Linux when there are different versions of gcc for the same uname, the platform name is created adding the major version number of the compiler added as a suffix: "g3" for gcc 3 and "g4" for gcc 4.

In Windows the platform name is the compiler and its major version number.

All library packages (*_lib*) contains pre-compiled binaries for the specified platform and includes. Packages with "_bin" suffix contains executables only.

The Lua bindings are in a separate folder identified by the Lua version (Lua51, Lua52, ...). The packages follows the same naming convention. But notice that you will have to download the main package and the Lua package in order to use the Lua bindings.

The package name is a general reference for the platform. If you have the same platform it will work fine, but it may also work in similar platforms.

Here are some examples of packages:

iup2_4_Linux26_lib.tar.gz = IUP 2.4 32-bits Libraries and Includes for Linux with Kernel version 2.6 built with gcc 3.
iup2_4_Linux26g4_64_bin.tar.gz = IUP 2.4 64-bits Executables for Linux with Kernel version 2.6 built with gcc 4.
iup2_4_Win32_vc8_lib.tar.gz = IUP 2.4 32-bits Static Libraries and Includes for Windows to use with Visual C++ 8 (2005).
iup2_4_Win32_dll9_lib.tar.gz = IUP 2.4 32-bits Dynamic Libraries (DLLs), import libraries and Includes for Windows to use with Visual C++ 9 (2008).
iup2_4_Win32_bin.tar.gz = IUP 2.4 32-bits Executables for Windows.

The Documentation files are in HTML format. Its package contains all the documentation files available on the website. The same documentation is also available in CHM and PDF formats. These two files are provided as a separate download, but they all have the same documentation.

The Source files are available in zip and tar.gz formats, but they have the same contents.

### Installation

For any platform we recommend you to create a folder to contain the third party libraries you download. Then just unpack the packages you download in that folder. The packages already contains a directory structure that separates each library or toolkit. For example:

    \mylibs\
            iup\
                bin\
                html\
                include\
                lib\Linux26
                lib\Linux26g4_64
                lib\vc8
                src
            cd\
            im\
            lua5.1\
            lua52\
            lua53\

This structure will also made the process of building from sources more simple, since the projects and makefiles will assume this structure .

### Usage

For makefiles use:

    1) "-I/mylibs/iup/include" to find include files
    2) "-L/mylibs/iup/lib/Linux26" to find library files
    3) "-liup" to specify the library files

For IDEs the configuration involves the same 3 steps above, but each IDE has a different dialog. The IUP toolkit has a Guide for some IDEs:

Borland C++ BuilderX - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/cppbx.html
Code Blocks - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/codeblocks.html
CodeLite - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/codelite.html
Dev-C++ - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/dev-cpp.html
Eclipse for C++ - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/eclipse.html
Microsoft Visual C++ (Visual Studio 2003) - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/msvc.html
Microsoft Visual C++ (Visual Studio 2005) - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/msvc8.html
NetBeans - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/netbeans.html
Open Watcom - http://www.tecgraf.puc-rio.br/iup/en/ide_guide/owc.html

### Available Platforms

The following platforms can be available:

Package Name | Description
--- | ---
AIX43 | IBM AIX 4.3 (ppc) / gcc 2.95 (Motif 2.1)
IRIX65 | SGI IRIX 6.5 (mips) / gcc 3.0 (Motif 2.1)
IRIX6465 | SGI IRIX 6.5 (mips) / gcc 3.3 (Motif 1.2)
Linux26g4 | Ubuntu 10.4 (x86) / Kernel 2.6 / gcc 4.4 (GTK 2.20)
Linux26g4_64 | Ubuntu 10.4 (x64) / Kernel 2.6 / gcc 4.4 (GTK 2.20)
Linux30 | Ubuntu 11.10 (x86) / Kernel 3.0 / gcc 4.6 (GTK 2.24)
Linux30_64 | Ubuntu 11.10 (x64) / Kernel 3.0 / gcc 4.6 (GTK 2.24)
Linux32 | Ubuntu 12.04 (x86) / Kernel 3.2 / gcc 4.6 (GTK 2.24)
Linux32_64 | Ubuntu 12.04 (x64) / Kernel 3.2 / gcc 4.6 (GTK 2.24)
Linux35_64 | Ubuntu 12.10 (x64) / Kernel 3.5 / gcc 4.7 (GTK 2.24)
Linux313_64 | Ubuntu 14.04 (x64) / Kernel 3.13 / gcc 4.8 (GTK 3.10)
Linux319_64 | Ubuntu 15.04 (x64) / Kernel 3.19 / gcc 4.9 (GTK 3.14)
Linux44_64 | Ubuntu 16.04 (x64) / Kernel 4.4 / gcc 5.3 (GTK 3.18)
Linux415_64 | Ubuntu 18.04 (x64) / Kernel 4.15 / gcc 7.3 (GTK 3.22)
Linux50_64 | Ubuntu 19.04 (x64) / Kernel 5.0 / gcc 8.3 (GTK 3.24)
Linux54_64 | Ubuntu 20.04 (x64) / Kernel 5.4 / gcc 9.3 (GTK 3.24)
SunOS510 | Sun Solaris 10 (sparc) / gcc 3.4 (Motif 2.1)
SunOS510x86 | Sun Solaris 10 (x86) / gcc 3.4 (Motif 2.1)
SunOS511x86 | Sun Solaris 11 (x86) / gcc 4.5 (GTK 2.20)
FreeBSD54 | Free BSD 5.4 (x86) / gcc 3.4
MacOS104 | Mac OS X 10.4 (ppc) [Tiger] / Darwin Kernel 8 / gcc 4.0
MacOS104x86 | Mac OS X 10.4 (x86) [Tiger] / Darwin Kernel 8 / gcc 4.0
MacOS105x86 | Mac OS X 10.5 (x86) [Leopard] / Darwin Kernel 9 / gcc 4.0
MacOS106 | Mac OS X 10.6 (x64) [Snow Leopard] / Darwin Kernel 10 / gcc 4.2
MacOS107 | Mac OS X 10.7 (x64) [Lion] / Darwin Kernel 11 / clang 4.x
MacOS109 | Mac OS X 10.9 (x64) [Mavericks] / Darwin Kernel 13 / clang 5.x
MacOS1010 | Mac OS X 10.10 (x64) [Yosemite] / Darwin Kernel 14 / clang 6.x
MacOS1011 | Mac OS X 10.11 (x64) [El Capitan] / Darwin Kernel 15 / clang 7.0
Win32_vc8 | Static library built with Microsoft Visual C++ 8.0 (2005) (static RTL/multithread) Also compatible with Microsoft Visual C++ 2005 Express Edition
Win32_vc9 | Static library built with Microsoft Visual C++ 9.0 (2008) (static RTL/multithread) Also compatible with Microsoft Visual C++ 2008 Express Edition
Win32_vc10 | Static library built with Microsoft Visual C++ 10.0 (2010) (static RTL/multithread) Also compatible with Microsoft Visual C++ 2010 Express Edition
Win32_vc11 | Static library built with Microsoft Visual C++ 11.0 (2012) (static RTL/multithread) Also compatible with Microsoft Visual C++ 2012 Express Edition
Win32_vc12 | Static library built with Microsoft Visual C++ 12.0 (2013) (static RTL/multithread) Also compatible with Microsoft Visual C++ 2013 Express Edition - https://www.visualstudio.com/vs/express/ ¹
Win32_vc14 | Static library built with Microsoft Visual C++ 14.0 (2015) (static RTL/multithread) Also compatible with Microsoft Visual Studio Community 2015 - https://www.visualstudio.com/vs/older-downloads/ ¹
Win32_vc15 | Static library built with Microsoft Visual C++ 15.0 (2017) (static RTL/multithread) Also compatible with Microsoft Visual Studio Community 2017 - https://www.visualstudio.com/downloads/ ¹
Win32_vc16 | Static library built with Microsoft Visual C++ 16.0 (2019) (static RTL/multithread) Also compatible with Microsoft Visual Studio Community 2019 - https://www.visualstudio.com/downloads/ ¹
Win32_dll8 | DLL and import library built with vc8, creates dependency with MSVCR80.DLL
Win32_dll9 | DLL and import library built with vc9, creates dependency with MSVCR90.DLL
Win32_dll10 | DLL and import library built with vc10, creates dependency with MSVCR100.DLL
Win32_dll11 | DLL and import library built with vc11, creates dependency with MSVCR110.DLL
Win32_dll12 | DLL and import library built with vc12, creates dependency with MSVCR120.DLL
Win32_dll14 | DLL and import library built with vc14, creates dependency with VCRUNTIME140.DLL
Win32_dll15 | DLL and import library built with vc15, creates dependency with VCRUNTIME140.DLL (what changes is the version of the ucrtbase.dll installed on the system)
Win32_dll16 | DLL and import library built with vc16, creates dependency with VCRUNTIME140.DLL (what changes is the version of the ucrtbase.dll installed on the system)
Win64_vc8 | Same as Win32_vc8 but for 64-bits systems using the x64 standard.
Win64_vc9 | Same as Win32_vc9 but for 64-bits systems using the x64 standard.
Win64_vc10 | Same as Win32_vc10 but for 64-bits systems using the x64 standard.
Win64_vc11 | Same as Win32_vc11 but for 64-bits systems using the x64 standard.
Win64_vc12 | Same as Win32_vc12 but for 64-bits systems using the x64 standard.
Win64_vc14 | Same as Win32_vc14 but for 64-bits systems using the x64 standard.
Win64_dll8 | Same as Win32_dll8 but for 64-bits systems using the x64 standard.
Win64_dll9 | Same as Win32_dll9 but for 64-bits systems using the x64 standard.
Win64_dll10 | Same as Win32_dll10 but for 64-bits systems using the x64 standard.
Win64_dll11 | Same as Win32_dll11 but for 64-bits systems using the x64 standard.
Win64_dll12 | Same as Win32_dll12 but for 64-bits systems using the x64 standard.
Win64_dll14 | Same as Win32_dll14 but for 64-bits systems using the x64 standard.
Win64_dll15 | Same as Win32_dll15 but for 64-bits systems using the x64 standard.
Win64_dll16 | Same as Win32_dll16 but for 64-bits systems using the x64 standard.
Win32_gcc4 | Static library built with Cygwin gcc 4.3 (Depends on Cygwin DLL 1.7) - http://www.cygwin.com/ ¹
Win32_cygw17 | Same as Win32_gcc4, but using the Cygwin Posix system and also with a DLL and import library
Win32_dllg4 | DLL and import library built with Cygwin gcc 4.3 (See Win32_gcc4)
Win32_mingw4 | Static library built with MingW gcc 4.6 - http://www.mingw.org/ ¹ Also compatible with Dev-C++ - http://www.bloodshed.net/devcpp.html and with Code Blocks - http://www.codeblocks.org/ ¹
Win32_dllw4 | DLL and import library built with MingW gcc 4.6 (See Win32_mingw4)
Win32_mingw6 | Static library built with MingW-w64 gcc 6.4 - http://mingw-w64.org/ ¹ Also compatible with Dev-C++ - http://www.bloodshed.net/devcpp.html and with Code Blocks - http://www.codeblocks.org/ ¹
Win32_dllw6 | DLL and import library built with MingW-w64 gcc 6.4 (See Win32_mingw6)
Win64_mingw4 | Static library built with MingW-w64 gcc 4.5 - http://mingw-w64.org/ ¹ Tool chains targeting Win64 / Personal Builds / "sezero" for 64-bits systems using the x64 standard.
Win64_dllw4 | DLL and import library built with MingW gcc 4.5, for 64-bits systems using the x64 standard. creates dependency with MSVCRT.DLL
Win64_dllw6 | DLL and import library built with MingW-w64 gcc 6.4 - http://mingw-w64.org/ ¹ for 64-bits systems using the x64 standard. creates dependency with MSVCRT.DLL
Win32_owc1 | Static library built with Open Watcom 1.5 - http://www.openwatcom.org/
Win32_bc55 | Static library built with Borland C++ 5.5 Compiler - https://downloads.embarcadero.com/free/c_builder ¹
Win32_bc6 | Static library built with Embarcadero C++ Builder 2010 / Embarcadero C++ 6 Compiler - https://downloads.embarcadero.com/free/c_builder (trial)
Win32_bin | Executables only for Windows NT/2000/XP/Vista/7 (can be generated by any of the above compilers)
Win64_bin | Same as Win32_bin but for 64-bits systems using the x64 standard
Win32_cygw17_bin | Executables only for Windows NT/2000/XP, but using the Cygwin Posix system (See Win32_cygw17)

¹ - Notice that all the Windows compilers with links here are free to download and use.
² - Recently Borland removed the C++ Builder X from download. But if you bought a book that has the CD of the compiler, then it is still free to use.
3 - Open Motif 2.2 is classified as 'experimental' by the Open Group.