README.md #1

  • //
  • guest/
  • perforce_software/
  • p4/
  • 2017-2/
  • README.md
  • Markdown
  • View
  • Commits
  • Open Download .zip Download (4 KB)

Perforce Open Source Command Line and API

This is the source code for the Perforce command line and API. See LICENSE for all licensing information.

Dependencies

Outside of a C/C++ compiler you will need Jam (Just Another Make), a build system written by Christopher Seiwald. A source bundle can be found here:

https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/jam-2.6.zip

Starting with the 2017.1 release, the P4API must be linked against OpenSSL (preferably the latest 1.0.2 patch). More details about how to obtain or build OpenSSL and now to build p4 against OpenSSL are included below.

To build the Perforce command line interface

From the root of the p4 source run:

jam p4

Jam may ask you to specify an OS version if it cannot determine it. For example on OS X running 'jam p4' will return:

Set OSVER to 104, 105, or 106 for MACOSX 

To set any options in Jam use the '-s' flag. For the example above you would run:

jam -sOSVER=106 p4

To build on Cygwin run:

jam -sOS=CYGWIN

To build on Windows or Linux you will need to disable use of Smartheap:

jam -sSMARTHEAP=0 p4

Builds will be placed in a directory called 'p4-bin/bin.[OS][OSVER]' at the same level as your p4 directory.

Building with SSL support

If you wish to build a pre-2017.1 p4 with support for SSL servers you will need to add '-sSSL=yes' to the Jam call (this is now the default). Jam expect the OpenSSL libraries (libssl.a and libcrypto.a) in a directory named 'p4-bin/lib.[OS][OSVER]' and the OpenSSL headers (in a folder named openssl) in a directory named 'p4-bin/inc.[OS][OSVER]'. The base 'p4-bin' folder is the same directory mentioned above, one level above the p4 source.

Obtaining OpenSSL

Most Linux distributions provide OpenSSL development packages. If such a package is installed you can use the '-sSSLLIBDIR' and '-sSSLINCDIR' jam arguments to specify the location of libraries and headers. For example (on Ubuntu):

sudo apt-get install libssl-dev
jam -sOSVER=26 -sSMARTHEAP=0 -sSSLLIBDIR=/usr/lib/x86_64-linux-gnu/ -sSSLINCDIR=/usr/include/ p4

Pre-compiled OpenSSL builds for a number of platforms are available from a number of 3rd-party sources. We make no recommendations regarding these. For more information, please see the OpenSSL binary distribution page:

https://www.openssl.org/community/binaries.html

Building OpenSSL

OpenSSL builds on a wide range of platforms, with many build options: more than can be sensibly documented here. As such, this will only cover the steps to build the OpenSSL libraries with the same options as we build internally.

First, you'll need to get the latest OpenSSL 1.0.2 release from the OpenSSL downloads page:

https://www.openssl.org/source/

Once you've confirmed the checksum of the tarball and extracted the OpenSSL source, cd into the openssl-1.0.2* folder. We recommend reading the provided build documentation, so the following sets of commands are only for reference (they are not guaranteed to work if you do not have all of the appropriate OpenSSL dependencies.

  • Linux x86_64:

    make -s -f Makefile.org dclean ./Configure no-hw no-gost linux-x86_64 -m64 -Wa,--noexecstack shared -g -fPIC make depend build_libs build_apps

  • MacOSX 10.6 x86_64 and Darwin 10.0 x86_64:

    export CC=gcc-4.2 make -s -f Makefile.org dclean ./Configure no-hw no-gost darwin64-x86_64-cc shared -g -fPIC -isysroot/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 make depend build_libs build_apps

  • Windows x64 VS12 (Visual Studio 2013 + NASM):

    perl ./Configure no-shared no-hw no-gost VC-WIN64A -Zi cmd.exe /c ms\do_win64a.bat nmake -f ms\nt.mak

To build p4 using your OpenSSL build, either copy the libraries and headers into the appropriate default locations under 'p4-bin' as described above, or use the '-sSSLLIBDIR' and '-sSSLINCDIR' jam arguments to specify the location of libraries and headers.

To build the Perforce API

From the root of the p4 source run:

jam -sPRODUCTION=1 p4api.tar

As with building p4, Jam may ask you to specify an OS version.

# Perforce Open Source Command Line and API

This is the source code for the Perforce command line and API. See LICENSE
for all licensing information.


## Dependencies
Outside of a C/C++ compiler you will need Jam (Just Another Make), a build system
written by Christopher Seiwald. A source bundle can be found here: 

    https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/jam-2.6.zip

Starting with the 2017.1 release, the P4API must be linked against OpenSSL (preferably the latest 1.0.2 patch). More details about how to obtain or build OpenSSL and now to build p4 against OpenSSL are included below.
    
## To build the Perforce command line interface
From the root of the p4 source run:

    jam p4

Jam may ask you to specify an OS version if it cannot determine it. For example
on OS X running 'jam p4' will return:

    Set OSVER to 104, 105, or 106 for MACOSX 

To set any options in Jam use the '-s' flag. For the example above you would run:

    jam -sOSVER=106 p4

To build on Cygwin run:

    jam -sOS=CYGWIN

To build on Windows or Linux you will need to disable use of Smartheap:

    jam -sSMARTHEAP=0 p4

Builds will be placed in a directory called 'p4-bin/bin.[OS][OSVER]' at the same level as your p4 directory.


## Building with SSL support
If you wish to build a pre-2017.1 p4 with support for SSL servers you will need to add '-sSSL=yes' to the Jam call (this is now the default).
Jam expect the OpenSSL libraries (libssl.a and libcrypto.a) in a directory named 'p4-bin/lib.[OS][OSVER]' and the OpenSSL headers (in a folder named openssl) in a directory named 'p4-bin/inc.[OS][OSVER]'. The base 'p4-bin' folder is the same directory mentioned above, one level above the p4 source.

### Obtaining OpenSSL
Most Linux distributions provide OpenSSL development packages. If such a package is installed you can use the '-sSSLLIBDIR' and '-sSSLINCDIR' jam arguments to specify the location of libraries and headers. For example (on Ubuntu):

    sudo apt-get install libssl-dev
    jam -sOSVER=26 -sSMARTHEAP=0 -sSSLLIBDIR=/usr/lib/x86_64-linux-gnu/ -sSSLINCDIR=/usr/include/ p4
    
Pre-compiled OpenSSL builds for a number of platforms are available from a number of 3rd-party sources. We make no recommendations regarding these. For more information, please see the OpenSSL binary distribution page:

    https://www.openssl.org/community/binaries.html
    
### Building OpenSSL
OpenSSL builds on a wide range of platforms, with many build options: more than can be sensibly documented here. As such, this will only cover the steps to build the OpenSSL libraries with the same options as we build internally.

First, you'll need to get the latest OpenSSL 1.0.2 release from the OpenSSL downloads page:

    https://www.openssl.org/source/

Once you've confirmed the checksum of the tarball and extracted the OpenSSL source, cd into the openssl-1.0.2* folder. We recommend reading the provided build documentation, so the following sets of commands are only for reference (they are not guaranteed to work if you do not have all of the appropriate OpenSSL dependencies. 

* Linux x86_64:

      make -s -f Makefile.org dclean
      ./Configure no-hw no-gost linux-x86_64 -m64 -Wa,--noexecstack shared -g -fPIC
      make depend build_libs build_apps

* MacOSX 10.6 x86_64 and Darwin 10.0 x86_64:

      export CC=gcc-4.2
      make -s -f Makefile.org dclean
      ./Configure no-hw no-gost darwin64-x86_64-cc shared -g -fPIC -isysroot/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5
      make depend build_libs build_apps
    
* Windows x64 VS12 (Visual Studio 2013 + NASM):

      perl ./Configure no-shared no-hw no-gost VC-WIN64A -Zi 
      cmd.exe /c ms\do_win64a.bat 
      nmake -f ms\nt.mak
    
To build p4 using your OpenSSL build, either copy the libraries and headers into the appropriate default locations under 'p4-bin' as described above, or use the '-sSSLLIBDIR' and '-sSSLINCDIR' jam arguments to specify the location of libraries and headers.
    
## To build the Perforce API
From the root of the p4 source run:

    jam -sPRODUCTION=1 p4api.tar

As with building p4, Jam may ask you to specify an OS version.

# Change User Description Committed
#1 23020 Nick Poole Import 2017.2 code drop