Alright, we have contracted a program to be built but did not specify that the end results should be organized properly and we did not provide any 'makefile' instructions.
1) In this project, you will take a single directory of code and organize it into multiple directories for better organization. We're not talking about organizing or commenting the source code, just the source 'files'.
2) You will also organize the libraries our program needs into directories as well. Those libraries are: Xerces-C and Boost
3) You will need to make sure all of the files compile properly in their new locations.
4) The program should be entirely distributable without source code. This program relies on Xerces, Boost, and Libstd. We do not care if we have to distribute it as a single 100MB file, so long as we can distribute it to a wide variety of linux flavors.
We want to give out a [url removed, login to view] file for our customers to download and install without having to install libraries and this and that. And we do not want to give out our source code.
The fewer the files in the tar the better, but we do not care about size (much).
5) You will author this make file, and it will output all needed files for distribution to a very organized directory called "/dist/"
(there is one config file, which we have, and we will give you!)
6) You will author a [url removed, login to view] file with a quick installation procedure for installing the application.
7) Lastly, you will need to author an RPM specfile for easy distribution of the application.
You will be given access to our machine, for you to work on the actual source.
1) A completely organized directory containing the source code, which will be organized into it's own directories, and a /src/lib/ directory containing all external dependancies.
2) A single makefile (or at most, 1 per linux flavor or system architecture) that will output the compiled source into a well organized /dist/ directory(s) (above the source directory).
3) All deliverables must be in ready-to-run condition. The should be absolutely no errors.
4) The key is incredible organization. Everything should be organized and seperated in a very logical manner. The developer will have a bit of descretion in the specifics, but the end result should be a well organized source directory with make files that output to an equally organized distribution directory.
5) The distribution of the program should be as simple as tar'ing the /dist/ directory and sending it to a client, who can extract it and follow the [4 steps or less] [url removed, login to view] instructions (which will be authored by the winner of this bid).
6) All work will be considered 'WORK FOR HIRE'. The developer will retain absolutely no rights to the produced software or it's components.
7) Both the /src/ directory and it's makefiles should be portable. If moving the code to another machine for compilation requires additional steps, the developer must document these steps and ensure that we are able to move the source. Same goes for the distribution files. If additional steps are required for various machines or libstd versions, no problem, but everything must be documented.
8) RPM specfile with instructions for using it.
Both the makefile and the distributed source code should be easily distributable to all major linux platforms and architectures regardless of the version of libstd on the machine.
All in-house testing will be done on i386/i686 machines running CentOS 3.4 and Redhat Enterprise ES R4 w/Nahant Update 1, but we may try it on various versions of SuSE and Redhat as well.