Here are the steps for compiling qadpz.

1. Compiling for Linux or other Unix distributions:

1.1 Edit the Makefile.base file from the 'src' subdirectory and configure the additional libraries used by qadpz; you will need to add the right path for the include/library files if they are not located in the standard path.
  HAVE_CURL    - for the libcurl library (recommended)
               - contains routines for http client
  HAVE_OPENSSL - for the openssl library (recommended)
               - contains routines for encryption
  HAVE_BZIP2   - for the bzip2 library (optional)
               - contains routines for compression

1.2 In the 'src' subdirectory execute one of the following commands:

  make slv     # to compile only the slave part of qadpz
  make mast    # to compile only the master part of qadpz
  make cli     # to compile only the client part of qadpz

  make main    # to compile all parts (slave, master, client)

1.3 The resulting executables and libraries will be located in the 'bin' subdirectory:

 (slave)  qadpz_slave     - slave executable file
   - helper slave library for starting executable
                            or script files as tasks on the slave (the slave
                            by itself can start only shared libraries as tasks)

 (master) qadpz_master    - master executable file
          qadpz_admin     - utility for administration of users, security keys
                            and slave upgrades on the master

 (client) qadpz_run       - client executable file (used for starting and
                            controlling jobs described in xml project files)
          libcli_serv.a   - library file for the client API (service)
                            (if you wish to write your own client program)

1.4 You can compile also the samples by executing the following command (in the same 'src' subdirectory):

  make samples

The other way is to run 'make' in each individual sample directory located under the 'sample' subdirectory (dumb, simple, etc.).

1.5 After compiling the samples, you will get the following files in the 'bin' subdirectory:

 (dumb)  - slave binary for the task (as a shared library)

 (simple)  simple          - slave binary for the task (as an executable)

1.6 Next step is to configure each part of the system:

 (master)  master.cfg   - configuration file for the master
           users.txt    - users file for the master (with username/password)
           privkey      - file containing the private key of the master
                          (only the master process should have access to it!)

 (slave)   slave.cfg    - configuration file for the slave

 (client)  client.cfg   - configuration file for the client
           pubkey       - file containing the public key of the master
                          (use qadpz_admin on the master to extract it from
                           the master's private key)

 * use qadpz_admin to generate/configure the users and key files on the master.
 * you will not need the private and public keys if you don't enable openssl
  when compiling (i.e. HAVE_OPENSSL=0 in src/Makefile.base); also users will
  not need any passwords in this case (passwords will be blank, but you still
  need to define the users).
 * if you change the private key on the master, you will need to regenerate
  and distribute again the public key to each of the clients; if the master
  is running, you will need to restart in order to use the new keys.
 * if you add/change a user while the master is running, you don't need to
  restart it: the master will automatically read the new user list after 
  a while (as configured in the master's config file).
 * for non-Linux unix systems you will need a random seed file on both the
  master and client.

1.7 Install the binary and config files on each of the computers:

 (slave)   qadpz_slave + slave.cfg
 (master)  qadpz_master + qadpz_admin + master.cfg + users.txt + privkey
 (client)  qadpz_run + client.cfg + pubkey

1.8 Start the master and the slaves on each computer.

 * you will need some disk space on the slave for downloading and storing
  binaries and data files ("tmp_dir" parameter in slave's config file).
 * you can disable log generation by commenting out the "dbug_file" parameter
  in each config file.

1.9 You will also need a web server where you can store (upload/download) binary and data files for each job/task. You can use the download.cgi and upload.cgi as CGI scripts for this (they are written in Perl, so you will need support for Perl on the web server).

1.10 You can try some of the examples to see how the system works by using the generic 'qadpz_run' client and using the xml sample project files from the 'bin' directory.

2. Compiling for Win32:

You will need Visual C++ for compiling. The project files for each part of qadpz are located in the 'src' subdirectory. You will get similar files like the ones for Unix (executables will have '.exe' suffix, and you will have '.dll' libraries instead of '.so' unix shared libraries). The configuration is done in the same way as described in 1.6.

3. Compiling for Mac OS X/Darwin:

The procedure is the same as for the Linux/UNIX systems. You will need also to install the 'dlcompat' library from: