# Copyright (c) 1997-2004, Perforce Software, Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use Config; $self->{CC} = "c++"; $self->{LD} = "c++"; $self->{CONST_CHAR_HINT} = 'char'; if( $Config{ 'myarchname' } =~ /x86_64/ ) { $self->{CONST_CHAR_HINT} = 'const char'; } $self->{DEFINE} .= " -DOS_LINUX"; # Some Perl builds - notably ActiveState, but also some Red Hat ones use very # restrictive preprocessor settings which are no good to us. So, just to be # on the safe side, we'll also add in what we need here. $self->{DEFINE} .= " -D_BSD_SOURCE -D_SVID_SOURCE"; print <<EOS; IMPORTANT NOTE -------------- If you get errors like this: Can't load 'blib/arch/auto/P4/P4.so' for module P4: blib/arch/auto/P4/P4.so: undefined symbol: _ZN10ClientUser7MessageEP5Error at /usr/lib/perl5/5.8.2/i686-linux-multi/DynaLoader.pm line 229. when you're running your 'make test', you are using build of the Perforce API compiled with gcc2 on a machine running gcc3. Please download a gcc3 compiled version of the Perforce API from http://www.perforce.com/downloads/perforce/rXX.Y/bin.linux26x86/p4api.tar (where rXX.Y is the current Perforce release - i.e. r07.2) EOS
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 5943 | Tony Smith |
Update P4Perl to build against 2007.2 API. The 2007.2 API has a more traditional directory structure and P4Perl needs to take that into account. This change also makes Makefile.PL check that the version of the API being used is less than or equal to the highest API version known when this version was written. Hopefully this will prevent people from struggling to build older (stable) versions of P4Perl against recent APIs only supported by the development builds. |
||
#3 | 5677 | Tony Smith |
Rework P4Perl build script to support 2006.1 API. There were some sweeping changes in the 2006.1 API which did away with the old const_char definition. Unfortunately, since P4Perl has to build with older APIs, I can't quite do the same. This change tweaks the way that Makefile.PL determines the definition for const_char so that (a) it's always 'const char' when a 2006.1 or later API is used, (b) it uses the platform specific hint for older APIs (c) it falls back on 'char' in the absence of a hint. In an ideal world, we'd be able to compute the options based on (a) OS, (b) compiler version (c) Perl version and (d) API version, but that's tough to get right. No functional change. |
||
#2 | 5396 | Tony Smith |
x86_64 porting changes. Use INT2PTR and PTR2INT to handle the stashing of the PerlClientApi pointer in a Perl scalar. This is necessary because, despite all documentation to the contrary, an I32 is not 64-bit capable on all 64-bit machines. Also, the hints file now looks for x86_64 in the architecture name and if it finds it, then const_char='const char' rather than the default of 'char'. |
||
#1 | 4579 | Tony Smith |
Rewrite P4Perl to be more like P4Ruby. This change does away with the old P4/P4::Client split and pulls all the functionality of P4::Client into P4. Hence P4::Client is now deprecated. There are a few gotcha's - see the Changes file, and documentation for the details, but in general it's backwards compatible. As part of this change, I'm also releasing the previous current versions of P4 and P4::Client as released versions - for posterity. P4 now gets a v3.x version number so the old versions will stand out clearly. Hopefully it's all working - works fine for me - but people should consider this a beta build, for now at least. |