You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Kevin Rogers <kr...@pdi.com> on 2005/09/19 21:16:56 UTC
Building against non-default gcc/g++ compiler
Hi all-
I'm trying to build Axis 1.5 using the Ant build system, and using a
non-default compiler (i.e., not the one which simply typing 'gcc' or
'g++' would resolve to). I have several compilers installed on my
machine, with gcc 3.2.3 being the default. However, I need to produce
builds for several different environments, which means I need to produce
builds for Axis-C against gcc3.2.2, gcc3.4, etc. I've already produced
the Xerces builds for these compilers to build Axis with.
Does anyone on this list know what needs to be done to get the Axis
build to successfully utilize another compiler? This seems like
something that would not be a big deal if the make Autoconf / configure
system were working for Axis 1.5. I tracked down the compiler
specification for the build to the build/buildInitialize.xml file. I
modified my buildInitalize.xml to contain the following (I added the
first two 'compilerarg' lines to specify compiler version and to be
verbose for debugging):
<compiler id="Linuxgcc" name="g++" if="linux">
<compilerarg value="-V3.2.2"/>
<compilerarg value="-v"/>
<compilerarg value="-g" if="debug"/>
<compilerarg value="-Wall"/>
<compilerarg value="-Wshadow"/>
<compilerarg value="-O2"/>
<defineset>
<define name="ENABLE_AXIS_EXCEPTION"/>
<define name="HAVE_CONFIG_H"/>
<define name="PIC"/>
</defineset>
<includepath path="${dir.include}"/>
</compiler>
After adding these lines, my build output looks as follows (note the
line which says 'gcc driver version 3.2.3 20030502 (Red Hat Linux
3.2.3-49) executing gcc version 3.2.2'):
162% ant
Buildfile: build.xml
pre-init:
set-platform-specifics:
checkIfDebug:
initialize:
build:
compile:
compileClient:
compileAxisClient:
buildVersionResource:
[cc] 126 total files to be compiled.
[cc] Using built-in specs.
[cc] Configured with: ../configure --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info --enable-shared
--enable-threads=posix --disable-checking --with-system-zlib
--enable-__cxa_atexit --host=i386-redhat-linux
[cc] Thread model: posix
[cc] gcc driver version 3.2.3 20030502 (Red Hat Linux 3.2.3-49)
executing gcc version 3.2.2
[cc] cc1plus -v
-I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
-D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
-D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
-D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
-Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
-D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
-DHAVE_CONFIG_H -DPIC
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/OtherFaultException.cpp
-D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase
OtherFaultException.cpp -O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
[cc] g++: installation problem, cannot exec `cc1plus': No such
file or directory
[cc] cc1plus -v
-I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
-D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
-D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
-D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
-Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
-D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
-DHAVE_CONFIG_H -DPIC
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/CharacterElement.cpp
-D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase
CharacterElement.cpp -O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
* ...omitting a *LOT* more like this for brevity... *
[cc] g++: installation problem, cannot exec `cc1plus': No such
file or directory
[cc] cc1plus -v
-I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
-D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
-D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
-D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
-Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
-D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
-DHAVE_CONFIG_H -DPIC
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/xsd/IDREF.cpp
-D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase IDREF.cpp
-O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
[cc] g++: installation problem, cannot exec `cc1plus': No such
file or directory
BUILD FAILED
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:231:
The following error occurred while executing this line:
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:219:
The following error occurred while executing this line:
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:90:
The following error occurred while executing this
line:/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build/buildClient.xml:23:
g++ failed with return code 1
Total time: 8 seconds
Thanks in advance for any help!
kevin
--
Kevin Rogers
PDI / Dreamworks
ext.29163 | 650.562.9163
krogers@pdi.com
Re: Building against non-default gcc/g++ compiler
Posted by Kevin Rogers <kr...@pdi.com>.
Hey John-
Indeed, you are correct - I got this sorted not too long after I posted
to the group. What was throwing me for a little bit of a loop was the
required parameters for the 'cc' compilation task used by Ant:
http://ant-contrib.sourceforge.net/cc.html
...which only accepts 'gcc' or 'g++' as a valid parameter for the
compiler name. My first instinct was to just create a soft link named
'gcc' to the compiler I wanted and pre-pend that to my PATH. Which
*would* have worked... had I done it correctly. ;)
I ended up doing something along these lines, which isn't the most
elegant solution in the world, but it works:
branch [no job set:~] 108% pwd
/home/krogers
branch [no job set:~] 109% mkdir temp_path
branch [no job set:~] 110% cd temp_path/
branch [no job set:~/temp_path] 111% ln -s /usr/bin/gcc343 gcc
branch [no job set:~/temp_path] 112% ll
total 0
lrwxrwxrwx 1 krogers user 15 Sep 20 09:57 gcc ->
/usr/bin/gcc343
branch [no job set:~/temp_path] 114% setenv PATH
/home/krogers/temp_path:$PATH
branch [no job set:~/temp_path] 115% which gcc
/home/krogers/temp_path/gcc
branch [no job set:~/temp_path] 116% gcc -v
Reading specs from /opt/gcc343/lib/gcc/i686-pc-linux-gnu/3.4.3/specs
Configured with: ./configure --prefix=/opt/gcc343 --program-suffix=343
Thread model: posix
gcc version 3.4.3
Thanks for your help!
kevin
John Hawkins wrote:
>
> Hi Kevin,
> this just looks like you don't have your path set up correctly for the
> new compiler you're using? Everything you've done so far looks good.
>
> cheers,
> John.
>
>
>
> *Kevin Rogers <kr...@pdi.com>*
>
> 19/09/2005 20:16
> Please respond to
> "Apache AXIS C User List"
>
>
>
> To
> Apache AXIS C User List <ax...@ws.apache.org>
> cc
>
> Subject
> Building against non-default gcc/g++ compiler
>
>
>
>
>
>
>
>
>
>
> Hi all-
>
> I'm trying to build Axis 1.5 using the Ant build system, and using a
> non-default compiler (i.e., not the one which simply typing 'gcc' or
> 'g++' would resolve to). I have several compilers installed on my
> machine, with gcc 3.2.3 being the default. However, I need to produce
> builds for several different environments, which means I need to produce
> builds for Axis-C against gcc3.2.2, gcc3.4, etc. I've already produced
> the Xerces builds for these compilers to build Axis with.
>
> Does anyone on this list know what needs to be done to get the Axis
> build to successfully utilize another compiler? This seems like
> something that would not be a big deal if the make Autoconf / configure
> system were working for Axis 1.5. I tracked down the compiler
> specification for the build to the build/buildInitialize.xml file. I
> modified my buildInitalize.xml to contain the following (I added the
> first two 'compilerarg' lines to specify compiler version and to be
> verbose for debugging):
>
> <compiler id="Linuxgcc" name="g++" if="linux">
> <compilerarg value="-V3.2.2"/>
> <compilerarg value="-v"/>
> <compilerarg value="-g" if="debug"/>
> <compilerarg value="-Wall"/>
> <compilerarg value="-Wshadow"/>
> <compilerarg value="-O2"/>
> <defineset>
> <define name="ENABLE_AXIS_EXCEPTION"/>
> <define name="HAVE_CONFIG_H"/>
> <define name="PIC"/>
> </defineset>
> <includepath path="${dir.include}"/>
> </compiler>
>
>
> After adding these lines, my build output looks as follows (note the
> line which says 'gcc driver version 3.2.3 20030502 (Red Hat Linux
> 3.2.3-49) executing gcc version 3.2.2'):
>
>
> 162% ant
> Buildfile: build.xml
>
> pre-init:
>
> set-platform-specifics:
>
> checkIfDebug:
>
> initialize:
>
> build:
>
> compile:
>
> compileClient:
>
> compileAxisClient:
>
> buildVersionResource:
> [cc] 126 total files to be compiled.
> [cc] Using built-in specs.
> [cc] Configured with: ../configure --prefix=/usr
> --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared
> --enable-threads=posix --disable-checking --with-system-zlib
> --enable-__cxa_atexit --host=i386-redhat-linux
> [cc] Thread model: posix
> [cc] gcc driver version 3.2.3 20030502 (Red Hat Linux 3.2.3-49)
> executing gcc version 3.2.2
> [cc] cc1plus -v
> -I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
> -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
> -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
> -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
> -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
> -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
> -D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
> -DHAVE_CONFIG_H -DPIC
> /usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/OtherFaultException.cpp
>
> -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase
> OtherFaultException.cpp -O2 -Wall -Wshadow -version -fPIC -o
> /tmp/ccd59UCn.s
> [cc] g++: installation problem, cannot exec `cc1plus': No such
> file or directory
> [cc] cc1plus -v
> -I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
> -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
> -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
> -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
> -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
> -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
> -D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
> -DHAVE_CONFIG_H -DPIC
> /usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/CharacterElement.cpp
>
> -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase
> CharacterElement.cpp -O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
>
> * ...omitting a *LOT* more like this for brevity... *
>
> [cc] g++: installation problem, cannot exec `cc1plus': No such
> file or directory
> [cc] cc1plus -v
> -I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
> -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
> -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
> -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
> -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
> -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
> -D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
> -DHAVE_CONFIG_H -DPIC
> /usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/xsd/IDREF.cpp
>
> -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase IDREF.cpp
> -O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
> [cc] g++: installation problem, cannot exec `cc1plus': No such
> file or directory
>
> BUILD FAILED
> /usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:231:
>
> The following error occurred while executing this line:
> /usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:219:
>
> The following error occurred while executing this line:
> /usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:90:
>
> The following error occurred while executing this
> line:/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build/buildClient.xml:23:
>
> g++ failed with return code 1
>
> Total time: 8 seconds
>
>
> Thanks in advance for any help!
> kevin
>
> --
> Kevin Rogers
> PDI / Dreamworks
> ext.29163 | 650.562.9163
> krogers@pdi.com
>
>
--
Kevin Rogers
PDI / Dreamworks
ext.29163 | 650.562.9163
krogers@pdi.com
Re: Building against non-default gcc/g++ compiler
Posted by John Hawkins <HA...@uk.ibm.com>.
Hi Kevin,
this just looks like you don't have your path set up correctly for the new
compiler you're using? Everything you've done so far looks good.
cheers,
John.
Kevin Rogers <kr...@pdi.com>
19/09/2005 20:16
Please respond to
"Apache AXIS C User List"
To
Apache AXIS C User List <ax...@ws.apache.org>
cc
Subject
Building against non-default gcc/g++ compiler
Hi all-
I'm trying to build Axis 1.5 using the Ant build system, and using a
non-default compiler (i.e., not the one which simply typing 'gcc' or
'g++' would resolve to). I have several compilers installed on my
machine, with gcc 3.2.3 being the default. However, I need to produce
builds for several different environments, which means I need to produce
builds for Axis-C against gcc3.2.2, gcc3.4, etc. I've already produced
the Xerces builds for these compilers to build Axis with.
Does anyone on this list know what needs to be done to get the Axis
build to successfully utilize another compiler? This seems like
something that would not be a big deal if the make Autoconf / configure
system were working for Axis 1.5. I tracked down the compiler
specification for the build to the build/buildInitialize.xml file. I
modified my buildInitalize.xml to contain the following (I added the
first two 'compilerarg' lines to specify compiler version and to be
verbose for debugging):
<compiler id="Linuxgcc" name="g++" if="linux">
<compilerarg value="-V3.2.2"/>
<compilerarg value="-v"/>
<compilerarg value="-g" if="debug"/>
<compilerarg value="-Wall"/>
<compilerarg value="-Wshadow"/>
<compilerarg value="-O2"/>
<defineset>
<define name="ENABLE_AXIS_EXCEPTION"/>
<define name="HAVE_CONFIG_H"/>
<define name="PIC"/>
</defineset>
<includepath path="${dir.include}"/>
</compiler>
After adding these lines, my build output looks as follows (note the
line which says 'gcc driver version 3.2.3 20030502 (Red Hat Linux
3.2.3-49) executing gcc version 3.2.2'):
162% ant
Buildfile: build.xml
pre-init:
set-platform-specifics:
checkIfDebug:
initialize:
build:
compile:
compileClient:
compileAxisClient:
buildVersionResource:
[cc] 126 total files to be compiled.
[cc] Using built-in specs.
[cc] Configured with: ../configure --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info --enable-shared
--enable-threads=posix --disable-checking --with-system-zlib
--enable-__cxa_atexit --host=i386-redhat-linux
[cc] Thread model: posix
[cc] gcc driver version 3.2.3 20030502 (Red Hat Linux 3.2.3-49)
executing gcc version 3.2.2
[cc] cc1plus -v
-I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
-D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
-D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
-D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
-Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
-D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
-DHAVE_CONFIG_H -DPIC
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/OtherFaultException.cpp
-D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase
OtherFaultException.cpp -O2 -Wall -Wshadow -version -fPIC -o
/tmp/ccd59UCn.s
[cc] g++: installation problem, cannot exec `cc1plus': No such
file or directory
[cc] cc1plus -v
-I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
-D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
-D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
-D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
-Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
-D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
-DHAVE_CONFIG_H -DPIC
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/CharacterElement.cpp
-D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase
CharacterElement.cpp -O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
* ...omitting a *LOT* more like this for brevity... *
[cc] g++: installation problem, cannot exec `cc1plus': No such
file or directory
[cc] cc1plus -v
-I/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/include
-D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2
-D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux
-D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux
-Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__
-D__PIC__ -D__pic__ -DAXIS_CLIENT_LIB -DENABLE_AXIS_EXCEPTION
-DHAVE_CONFIG_H -DPIC
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/src/soap/xsd/IDREF.cpp
-D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase IDREF.cpp
-O2 -Wall -Wshadow -version -fPIC -o /tmp/ccd59UCn.s
[cc] g++: installation problem, cannot exec `cc1plus': No such
file or directory
BUILD FAILED
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:231:
The following error occurred while executing this line:
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:219:
The following error occurred while executing this line:
/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build.xml:90:
The following error occurred while executing this
line:/usr/pic1/axis-c-1.5.0-FINAL-linux-bin/axis-c-1.5.0-linux-src/build/buildClient.xml:23:
g++ failed with return code 1
Total time: 8 seconds
Thanks in advance for any help!
kevin
--
Kevin Rogers
PDI / Dreamworks
ext.29163 | 650.562.9163
krogers@pdi.com