Building An Executable

From NARS2000
Revision as of 03:55, 26 February 2012 by WikiSysop (talk | contribs) (→‎Folders)
Jump to navigationJump to search

Platforms

The current version of NARS2000 runs on Windows platforms only, however the goal is to move it to Linux, Mac OS, etc. as per user requests and developer interests. As such, for the moment, the following description for building an executable is necessarily biased towards Windows.

Downloads

To build the executable you'll need the following

  • C Compiler and Linker
  • Make program
  • Resource Compiler
  • Windows SDK
  • Parser Generator
  • Zip Utility
  • PHP (Hypertext Preprocessor)
  • NARS2000 Source Code
  • NARS2000 External Libraries
  • Optionally, Version Control program
  • Optionally, a File Differencing/Merge program


All of the tools you'll need are freely available. Some of them happen to be Microsoft-specific, however there is no reason more generic tools (such as DJGPP, Cygwin or MinGW) can't be used, a task I'm hoping someone will volunteer to investigate. In particular, the tools currently used are as follows:

  • C Compiler and Linker: Microsoft Visual C++ Express (requires Windows XP or later) — includes Link, Make, a Resource Compiler, and an SDK (among others)
  • Parser Generator: Bison (Save and run setup.exe, Choose A Download Source: Install from Internet, Select Packages: Choose All (Default), Devel, and bison, other dependent packages will be installed along with bison)
  • Zip Utility: 7-Zip (Latest version)
  • PHP (Hypertext Preprocessor): Downloads (Windows binaries/VC9 x86 Thread Safe/Latest version/Zip or Installer, your choice) (Items to Install: Entire Script Executable, and entire Extras)
  • NARS2000 Source Code: tar ball (or use a Version Control program)
  • NARS2000 External Libraries: Miscellaneous Library qdebug Library gsl Library MPIR/MPFR Libraries
  • Version Control program: Tortoise SVN (Current version, 32- or 64-bit depending upon your OS)
  • File Differencing/Merge program: WinMerge (Latest stable version)

Install Tools

To install the Parser Generator (Bison), run the Cygwin setup.exe program and choose the Devel category, then bison (when the Cygwin setup program asks you to choose a Default Text File Type, choose DOS/text so any committed files are the same as in the version control repository).

Install the rest of the tools as per their separate instructions.

Install The Source Code

  1. First create a root folder somewhere on one of your hard drives, perhaps calling it NARS2000, as in C:\NARS2000 or perhaps at some lower level. The source code and external libraries are installed below this level.
  2. Under the root folder make two folders: trunk and msieve. The first folder holds the main body of code. The latter is used for the code used to factor numbers.
  3. Choose one of the following two steps:
    • (Recommended) Use a Version Control program such as TortoiseSVN to download the source code (see Check Out The Source Code),
      OR
    • Download the source code tar balls (trunk.tar.gz from trunk and msieve.tar.gz from msieve) into the root folder and decompress them with tar zxvf trunk.tar.gz and tar zxvf msieve.tar.gz. The tar program is part of Cygwin and is found in C:\Cygwin\bin (or wherever you installed Cygwin). These commands also create the trunk and msieve folders and several folders below them.
  4. Download the misc.zip, qdebug.zip, gsldir.zip, and mplibs.zip files into the root folder and unzip them using 7z.exe as in 7z x misc.zip, 7z x qdebug.zip, 7z x gsldir.zip, and 7z x mplibs.zip.

Check Out The Source Code

An alternate way to initialize your copy of the source code for the first time is to use a version control program such as TortoiseSVN mentioned above. After installing this program, there are two directories you'll need to install.

  • First, bring up Windows Explorer, right-click on the trunk folder, and choose SVN Checkout.... The URL of repository: is svn://svn.nars2000.org/nars2000/trunk and the Checkout directory: is C:\NARS2000\trunk (or wherever your trunk folder is) — quite likely you will have to edit this field as the default text inserted by TortoiseSVN usually ends with NARS2000.
  • Second, bring up Windows Explorer, right-click on the msieve folder, and choose SVN Checkout.... The URL of repository: is svn://svn.nars2000.org/nars2000/msieve and the Checkout directory: is C:\NARS2000\msieve (or wherever your msieve folder is)

In both cases, the Checkout Depth should be Fully recursive. Click on OK to initialize your copy of the source code.

The above steps need be done only once in order to establish the special hidden SVN directories.

You will still need to download and unzip qdebug.zip, misc.zip, gsldir.zip, and mplibs.zip as described above.

Subsequently, you may update your copy of the source code by right-clicking on the trunk and/or msieve folders and choose SVN Update.

Folders

After unzipping the above files, the structure under the root folder should look something like the following where some of the lower level directories have been omitted:

branches\
ecm\
gsl\
mpfr\
mpir\
msieve\
qdebug\
trunk\
trunk\binaries\
trunk\Extensions\
trunk\htdocs\
trunk\images\
trunk\MediaWiki\
trunk\ReleaseNotes\
trunk\WineHQ\

Choose How To Build

The following sections describe two alternate ways to build the executable. One is the GUI interface of VC++ Express, the other is a command line interface using a makefile.

Set Up VC++ Express

If you are using VC++ Express, the project file is in the trunk folder and is called NARS2000.vcproj. You may load it manually every time you invoke VC++ Express, or you may load it automatically by placing the path to the project file on the command line in the VC++ Express shortcut as in "C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\VCExpress.exe" C:\NARS2000\trunk\NARS2000.vcproj or wherever you defined your NARS2000 root folder.

The vast majority of the project settings are found in the above file with some exceptions.

Set Up Makefile Environment Variables

If you are building from the makefile, you'll need to set some environment variables in your autoexec.bat file:

REM Path of the root of the NARS2000 project *ending with a backslash*
Set NARSROOT=C:\NARS2000\

REM Path and name of zip program (7-Zip)
Set ZIPPRG="C:\Program Files\7-Zip\7z"

REM Path and name of parser generator (bison)
Set PARGEN=C:\Cygwin\bin\bison

REM Path and name of the <makepro.php> program
Set MAKEPRO=%NARSROOT%makepro.php

REM Folder of SDK ("C:\Program Files\Microsoft SDKs\Windows\v7.0A")
Set SDK=U:\

REM MSVC compiler ("C:\Program Files\Microsoft Visual Studio 10.0")    (Version 16.00.30319.01)
Set MSVC=V:\VC\

I find it convenient to use the Windows subst command to map drive letters as in the references to drives U: and V: above.

subst U: "C:\Program Files\Microsoft SDKs\Windows\v7.0A" (or whatever the current version is)
subst V: "C:\Program Files\Microsoft Visual Studio 10.0" (...)

If you install the above tools in other folders, make the appropriate changes to the above lines.

You will also have to append the folders C:\Cygwin\bin, U:\bin, V:\Common7\IDE, and V:\VC\bin to your path (PATH=%PATH%;C:\Cygwin\bin;U:\bin;V:\Common7\IDE;V:\VC\bin) so the C compiler can find some of its DLLs and tools.

Building The Executable

At this point you should be ready to build the executable. To do this from VC++ Express (having already opened the project file), click on the menu item Build | Build Solution or press F7. To do this from a makefile, type mkn.