Re: C++ code compiles and links with make, compiles but won't link with cpptasks

Nick Williams <[email protected]> Thu, 7 Jul 2011 04:49:47 -0500
Newsgroups gmane.comp.java.ant-contrib.devel
Message-ID <[email protected]>
--===============5848116573141051243==
Content-Type: multipart/signed; micalg=sha1; boundary=Apple-Mail-2-1012506253;
	protocol="application/pkcs7-signature"


--Apple-Mail-2-1012506253
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

Follow-up: I did a little more Googling and was reminded about -lstdc++, =
so I added the following:

<linkerarg value=3D"-lstdc++" />

And it works now. Compiles and links perfectly.

But my questions still stand: Why does it use g++ to compile and gcc to =
link when I asked for g++ for both of them? Do I need to file a bug? Or =
am I doing something wrong?

Thanks!

Nick

On Jul 7, 2011, at 4:44 AM, Nick Williams wrote:

> Environment: MacBook Pro Intel Core Due running Mac OS X Snow Leopard =
10.6.7, And 1.8.2 and cpptasks 1.0b5.
>=20
> I have a make file (which I can provide on request) that compiles all =
of the .cpp files in the directory to .o files then links them as the =
shared library file librawsockets.jnilib (.jnilib is the Mac extension =
for .so files that are specific to Java native code ... but it's the =
same file type). The output when I run this make file is:
>=20
> g++ -Wall -O2 -pipe -D_REENTRANT  =
-I/System/Library/Frameworks/JavaVM.framework/Home/include -c =
Constants.cpp -o Constants.o
> g++ -Wall -O2 -pipe -D_REENTRANT  =
-I/System/Library/Frameworks/JavaVM.framework/Home/include -c =
RawSocketImpl.cpp -o RawSocketImpl.o
> RawSocketImpl.cpp:216: warning: =91sockaddr* =
initIPv4SocketAddress(JNIEnv*, sockaddr_in*, _jbyteArray*)=92 defined =
but not used
> RawSocketImpl.cpp:230: warning: =91sockaddr* =
initIPv6SocketAddress(JNIEnv*, sockaddr_in6*, _jbyteArray*)=92 defined =
but not used
> g++ -Wall -O2 -pipe -D_REENTRANT  =
-I/System/Library/Frameworks/JavaVM.framework/Home/include -c =
SocketUtilities.cpp -o SocketUtilities.o
> g++  -o librawsockets.jnilib Constants.o RawSocketImpl.o =
SocketUtilities.o  -dynamiclib -noprebind -single_module -framework =
JavaVM
> ld: warning: option -noprebind is obsolete and being ignored
>=20
> The file is created successfully and all of the native code works with =
my Java code perfectly. Now, I'm trying to port this to Ant because I'm =
using Ant to compile my Java code and run my unit tests and I want Ant =
to do this, too. So here's what I have so far:
>=20
> 	<cc name=3D"g++" objdir=3D"${rawsockets.dir.output.native}" =
outtype=3D"shared" runtime=3D"dynamic" rebuild=3D"true" =
relentless=3D"true"
> 		warnings=3D"diagnostic" outfile=3D"librawsockets.jnilib" =
optimize=3D"full" failonerror=3D"true">
> 		<defineset define=3D"_REENTRANT" />
> 		<includepath path=3D"${jdk.include.1.6}" />
> 		<compilerarg value=3D"-pipe" />
> 		<fileset dir=3D"/Users/Nicholas/RawSocketsNativeSrc" =
includes=3D"*.cpp" />
> 		<linker name=3D"g++">
> 			<linkerarg value=3D"-noprebind" />
> 			<linkerarg value=3D"-single_module" />
> 			<linkerarg value=3D"-framework" />
> 			<linkerarg value=3D"JavaVM" />
> 		</linker>
> 	</cc>
>=20
> And my output is this (it compiles exactly the same but doesn't link):
>=20
>       [cc] 3 total files to be compiled.
>       [cc] g++ -pipe -c -O2 -fPIC -D_REENTRANT -W -Wall =
-I/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include=
 /Users/Nicholas/RawSocketsNativeSrc/RawSocketImpl.cpp =
/Users/Nicholas/RawSocketsNativeSrc/Constants.cpp =
/Users/Nicholas/RawSocketsNativeSrc/SocketUtilities.cpp
>       [cc] /Users/Nicholas/RawSocketsNativeSrc/RawSocketImpl.cpp:216: =
warning: =91sockaddr* initIPv4SocketAddress(JNIEnv*, sockaddr_in*, =
_jbyteArray*)=92 defined but not used
>       [cc] /Users/Nicholas/RawSocketsNativeSrc/RawSocketImpl.cpp:230: =
warning: =91sockaddr* initIPv6SocketAddress(JNIEnv*, sockaddr_in6*, =
_jbyteArray*)=92 defined but not used
>       [cc] Starting link
>       [cc] gcc -Wl,-noprebind -Wl,-single_module -framework JavaVM =
-prebind -dynamiclib -o liblibrawsockets.jnilib.so =
out/production/native/RawSocketImpl.o out/production/native/Constants.o =
out/production/native/SocketUtilities.o
>       [cc] ld: warning: option -noprebind is obsolete and being =
ignored
>       [cc] Undefined symbols:
>       [cc]   "___cxa_rethrow", referenced from:
>       [cc]       std::_Rb_tree<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> >, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int>, =
std::_Select1st<std::pair<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> > const, int> >, =
std::less<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > >, =
std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> > =
>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> const&)in Constants.o
>       [cc]   "operator new(unsigned long)", referenced from:
>       [cc]       std::_Rb_tree<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> >, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int>, =
std::_Select1st<std::pair<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> > const, int> >, =
std::less<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > >, =
std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> > =
>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> const&)in Constants.o
>       [cc]       std::vector<_jobject*, std::allocator<_jobject*> =
>::_M_insert_aux(__gnu_cxx::__normal_iterator<_jobject**, =
std::vector<_jobject*, std::allocator<_jobject*> > >, _jobject* =
const&)in SocketUtilities.o
>       (and on and on and on)
> BUILD FAILED
>=20
> I even tried this:
>=20
> 	<cc name=3D"g++" objdir=3D"${rawsockets.dir.output.native}" =
outtype=3D"shared" runtime=3D"dynamic" rebuild=3D"true" =
relentless=3D"true"
> 		warnings=3D"diagnostic" outfile=3D"rawsockets" =
optimize=3D"full" failonerror=3D"true">
> 		<defineset define=3D"_REENTRANT" />
> 		<includepath path=3D"${jdk.include.1.6}" />
> 		<compilerarg value=3D"-pipe" />
> 		<fileset dir=3D"/Users/Nicholas/RawSocketsNativeSrc" =
includes=3D"*.cpp" />
> 		<linker name=3D"g++">
> 			<linkerarg value=3D"-single_module" />
> 			<linkerarg value=3D"-framework" />
> 			<linkerarg value=3D"JavaVM" />
> 		</linker>
> 	</cc>
>=20
> But I still get this:
>=20
>       [cc] 3 total files to be compiled.
>       [cc] g++ -pipe -c -O2 -fPIC -D_REENTRANT -W -Wall =
-I/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include=
 /Users/Nicholas/RawSocketsNativeSrc/RawSocketImpl.cpp =
/Users/Nicholas/RawSocketsNativeSrc/Constants.cpp =
/Users/Nicholas/RawSocketsNativeSrc/SocketUtilities.cpp
>       [cc] /Users/Nicholas/RawSocketsNativeSrc/RawSocketImpl.cpp:216: =
warning: =91sockaddr* initIPv4SocketAddress(JNIEnv*, sockaddr_in*, =
_jbyteArray*)=92 defined but not used
>       [cc] /Users/Nicholas/RawSocketsNativeSrc/RawSocketImpl.cpp:230: =
warning: =91sockaddr* initIPv6SocketAddress(JNIEnv*, sockaddr_in6*, =
_jbyteArray*)=92 defined but not used
>       [cc] Starting link
>       [cc] gcc -Wl,-single_module -framework JavaVM -prebind =
-dynamiclib -o librawsockets.so out/production/native/RawSocketImpl.o =
out/production/native/Constants.o =
out/production/native/SocketUtilities.o
>       [cc] Undefined symbols:
>       [cc]   "___cxa_rethrow", referenced from:
>       [cc]       std::_Rb_tree<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> >, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int>, =
std::_Select1st<std::pair<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> > const, int> >, =
std::less<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > >, =
std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> > =
>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> const&)in Constants.o
>       [cc]   "operator new(unsigned long)", referenced from:
>       [cc]       std::_Rb_tree<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> >, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int>, =
std::_Select1st<std::pair<std::basic_string<char, =
std::char_traits<char>, std::allocator<char> > const, int> >, =
std::less<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > >, =
std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> > =
>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, =
std::pair<std::basic_string<char, std::char_traits<char>, =
std::allocator<char> > const, int> const&)in Constants.o
>       [cc]       std::vector<_jobject*, std::allocator<_jobject*> =
>::_M_insert_aux(__gnu_cxx::__normal_iterator<_jobject**, =
std::vector<_jobject*, std::allocator<_jobject*> > >, _jobject* =
const&)in SocketUtilities.o
>       (and on and on and on)
> BUILD FAILED
>=20
> I can manually change the name of the .so/.jnilib file, so I'm not =
worried about that. But why won't this thing link, I wondered? The =
things that I see are different are the fact that the linker is using =
gcc (even though the compiler is g++ and I specifically told it to use =
g++) and that the options -Wl, and -prebind are added. I suspected that =
gcc was the problem, so I changed my makefile to use gcc to link (but =
keep using g++ to compile) just like the Ant output and it failed the =
exact same way, with all of the Undefined symbols errors.
>=20
> Is this a bug that it's mixing the gcc linker with the g++ compiler =
(and ignoring my request for the g++ linker)? Or am I doing something =
wrong?
>=20
> Thanks!
>=20
> Nick


--Apple-Mail-2-1012506253
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMvTCCBjQw
ggQcoAMCAQICAR4wDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxKTAn
BgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3MTAyNDIxMDE1NVoX
DTE3MTAyNDIxMDE1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSsw
KQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFy
dENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMcJg8zOLdgasSmkLhOrlr6KMoOMpohBllVHrdRvEg/q6r8jR+EK
75xCGhR8ToREoqe7zM9/UnC6TS2y9UKTpT1v7RSMzR0t6ndl0TWBuUr/UXBhPk+Kmy7bI4yW4urC
+y7P3/1/X7U8ocb8VpH/Clt+4iq7nirMcNh6qJR+xjOhV+VHzQMALuGYn5KZmc1NbJQYclsGkDxD
z2UbFqE2+6vIZoL+jb9x4Pa5gNf1TwSDkOkikZB1xtB4ZqtXThaABSONdfmv/Z1pua3FYxnCFmdr
/+N2JLKutIxMYqQOJebr/f/h5t95m4JgrM3Y/w7YX9d7YAL9jvN4SydHsU6n65cCAwEAAaOCAa0w
ggGpMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRTcu2SnODaywFc
fH6WNU7y1LhRgjAfBgNVHSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRa
MFgwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYh
aHR0cDovL3d3dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6
Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5j
b20vc2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBAAqDCH14qywG
XLhjjF6uHLkjd02hcdh9hrw+VUsv+q1eeQWB21jWj3kJ96AUlPCoEGZ/ynJNScWy6QMVQjbbMXlt
UfO4n4bGGdKo3awPWp61tjAFgraLJgDk+DsSvUD6EowjMTNx25GQgyYJ5RPIzKKR9tQW8gGK+2+R
HxkUCTbYFnL6kl8Ch507rUdPPipJ9CgJFws3kDS3gOS5WFMxcjO5DwKfKSETEPrHh7p5shuuNktv
sv6hxHTLhiMKX893gxdT3XLS9OKmCv87vkINQcNEcIIoFWbP9HORz9v3vQwR4e3ksLc2JZOAFK+s
sS5XMEoznzpihEP0PLc4dCBYjbvSD7kxgDwZ+Aj8Q9PkbvE9sIPP7ON0fz095HdThKjiVJe6vofq
+n6b1NBc8XdrQvBmunwxD5nvtTW4vtN6VY7mUCmxsCieuoBJ9OlqmsVWQvifIYf40dJPZkk9YgGT
zWLpXDSfLSplbY2LL9C9U0ptvjcDjefLTvqSFc7tw1sEhF0n/qpA2r0GpvkLRDmcSwVyPvmjFBGq
Up/pNy8ZuPGQmHwFi2/14+xeSUDG2bwnsYJQG2EdJCB6luQ57GEnTA/yKZSTKI8dDQa8Sd3zfXb1
9mOgSF0bBdXbuKhEpuP9wirslFe6fQ1t5j5R0xi72MZ8ikMu1RQZKCyDbMwazlHiMIIGgTCCBWmg
AwIBAgIDAksTMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYG
A1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcN
MTEwMzE0MDkwNDU2WhcNMTIwMzE0MDYyNjAxWjCBmzEgMB4GA1UEDRMXMzc5NzMxLUowZTcyNjVo
cEgzc0tBMTQxHjAcBgNVBAoTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEpMCcGA1UEAxMgU3RhcnRD
b20gRnJlZSBDZXJ0aWZpY2F0ZSBNZW1iZXIxLDAqBgkqhkiG9w0BCQEWHW5pY2hvbGFzQG5pY2hv
bGFzd2lsbGlhbXMubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoaTlckerJOea
b9xtimtlYr14sa8UhNiaa6v4xokun877PEhmHPLSZv2rOr+6QQVnkKlVY599j0EKTq1gzIHsKytZ
/GWArCVsq87DlWeY7aPYO5Shh/Q+B2UlCJG3A1S2k388SfC3cSWuPbUwBwDMCiWDgWdfMWfoZkgg
7H/1SO2+PlfuUM3oXhzu7ZJ12ZS1CeE7nh6pGH5MJn2TwNX8w5gAdV9e9vwqESnQIzTRvfjSR+Ck
ynyUKal0/bv3g5HdAiaPYgmo9ShU0JB/tqhMw+Dxpw5U6ZTQT9Awrqk9lZboIW6g/iQcqXEVeDxh
UVlRnsPkjSYL6mg2qj7qUJRymwIDAQABo4IC2TCCAtUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
HQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBS9Vs8GvIOd2E4JvRnbtqia
/lxNeTAfBgNVHSMEGDAWgBRTcu2SnODaywFcfH6WNU7y1LhRgjAoBgNVHREEITAfgR1uaWNob2xh
c0BuaWNob2xhc3dpbGxpYW1zLm5ldDCCAUIGA1UdIASCATkwggE1MIIBMQYLKwYBBAGBtTcBAgIw
ggEgMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsG
AQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG3BggrBgEF
BQcCAjCBqjAUFg1TdGFydENvbSBMdGQuMAMCAQEagZFMaW1pdGVkIExpYWJpbGl0eSwgc2VlIHNl
Y3Rpb24gKkxlZ2FsIExpbWl0YXRpb25zKiBvZiB0aGUgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkgUG9saWN5IGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xp
Y3kucGRmMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuc3RhcnRzc2wuY29tL2NydHUxLWNy
bC5jcmwwgY4GCCsGAQUFBwEBBIGBMH8wOQYIKwYBBQUHMAGGLWh0dHA6Ly9vY3NwLnN0YXJ0c3Ns
LmNvbS9zdWIvY2xhc3MxL2NsaWVudC9jYTBCBggrBgEFBQcwAoY2aHR0cDovL2FpYS5zdGFydHNz
bC5jb20vY2VydHMvc3ViLmNsYXNzMS5jbGllbnQuY2EuY3J0MCMGA1UdEgQcMBqGGGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEAYYmPOR5izOIjeEsh/Yu54Y81Zepj
M+nF3+eDaXynkJBgXJ14WyIG0Ov3jiPJs5QQcX7kN9bl8HSjdynQxMEOc+BMrN94AJkpzSN2ez8I
ii1iPMGoV9BLscNVW3JRYaHPJAj1rpeYs6AfcHUcmdR+ro59CsINXL+sr031T61jxQ86XsOLB6PN
6uK2seKcPGySuzMI80oD6w0cZakmnP6UqgswGwpNw9FFrwrLMyYmEEBnw3UkgE8/LjtNKg0vt/I1
fDy2HlDb+oAxmT3v0ZKvBRNfOOVdhkrJvxj4ulQuzbP97qETNIVk/ahI9UhJJHxoz1DdsH8SOoi8
YzB+vvUqfzGCA28wggNrAgEBMIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20g
THRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UE
AxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAwJLEzAJ
BgUrDgMCGgUAoIIBrzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0x
MTA3MDcwOTQ5NDhaMCMGCSqGSIb3DQEJBDEWBBT0v2IclyXE7ujrN6jbEzyPc87ehjCBpQYJKwYB
BAGCNxAEMYGXMIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkG
A1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRD
b20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAwJLEzCBpwYLKoZIhvcN
AQkQAgsxgZeggZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYD
VQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFydENv
bSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQIDAksTMA0GCSqGSIb3DQEB
AQUABIIBAJIov84TKEt1OSjpZYyFf2CaJUjOpTsS7Dc3l/bu/3AQpbQkfsWHlBBXBk0cSqiMTUzP
2aMEop8pdqFtpduM4rhteGuC+2suaBTxbz0t7BQDRJ7afCyv/a3jW2w6AGmyFfhxVNcmWG/XcGd9
/Xg4bEqOpH1IxxuMLg8B2a9ssFmEZAmB66h4JGR+NR4aXzL7DEFiKulp0914s0D0BMcZuNLKHv2j
tLcYr4SCQlFSej4eyfovFtfaeDXoMd0CuwewAkBUYJsOaYsyl5E+QsPni7XFqwSDwWdCP3Clr0st
jJ5a6tkCOkBl7gqkLX+j34Jl5QvUHWqixHqAT8h96yau9NEAAAAAAAA=

--Apple-Mail-2-1012506253--


--===============5848116573141051243==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
--===============5848116573141051243==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Ant-contrib-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ant-contrib-developers

--===============5848116573141051243==--