curl-users
RE: compiling curl on AIX 5.3
Date: Thu, 28 Jun 2007 11:23:10 -0400
Thanks for the clarification.
This is what I have learned.
# cc -qlanglvl=extc89 test.c
# ./a.out
I am just CC
# cc test.c -o a.out2
# ./a.out2
I am just CC
# xlc test.c -o a.out3
# ./a.out3
I am STDC
Below is the c complier config file. xlc will get the ansi complier
option that I need it looks like.
# head -50 /etc/vac.cfg
*
* COMPONENT_NAME: (CC) C for AIX Compiler
*
* FUNCTIONS: C/C++ Configuration file
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1991, 2003
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
* ANSI C compiler, UNIX header files
xlc: use = DEFLT
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/lpp/xlopt,-lxlopt,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options = -qansialias
* C compiler, extended mode
cc: use = DEFLT
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/lpp/xlopt,-lxlopt,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options = -qlanglvl=extended,-qnoro,-qnoroconst
xlc128: use = DEFLT
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/lpp/xlopt,-lxlopt,-lc128,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options = -qansialias,-qldbl128
* C compiler, extended mode
cc128: use = DEFLT
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/lpp/xlopt,-lxlopt,-lc128,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options = -qlanglvl=extended,-qnoro,-qnoroconst,-qldbl128
* Strict ANSI compiler, ANSI headers
I then tried this but it did not work but not sure why at this point.
cc -qansialias test.c -o a.out4
# ./a.out4
I am just CC
I did a configure like below and did make and it built just fine and I
am testing now but seems to be working fine with the ssl rpms supplied
by IBM LINUX tool kit.
configure --with-PACKAGE=ssl --with-ssl=/opt/freeware --with-gnutls
--with-nss CC=xlc
Just for complete information this is the version of the IBM complier I
have installed.
# lslpp -l vac.C
Fileset Level State Description
------------------------------------------------------------------------
---- Path: /usr/lib/objrepos vac.C 6.0.0.12 COMMITTED C for AIX Compiler Path: /etc/objrepos vac.C 6.0.0.12 COMMITTED C for AIX Compiler Thanks ________________________________ From: curl-users-bounces_at_cool.haxx.se [mailto:curl-users-bounces_at_cool.haxx.se] On Behalf Of Song Ma Sent: Wednesday, June 27, 2007 10:53 PM To: the curl tool Subject: Re: compiling curl on AIX 5.3 Hi Marty, Daniel explained well the root cause. I've encountered the same problem on another UNIX platform which is using specialized C compiler. The reason is because "curl.h" can not set "CURL_ISOCPP" to "defined" status by telling the compiler type. The fix is to define CURL_ISOCPP explicitly before line 530. BTW, I am curious to say "-qlanglvl=extc89" is not the cause of your error. Contrarily, "cc -qlanglvl=extc89" will set the macro "__STDC__" on AIX 5.3. I guess your other compiler options may turn off this macro setting. Here is a little testing: (root@) /tmp> uname -a AIX 53JTEST2 3 5 00CEBB4A4C00 (root@) /tmp> cat test.c #include <stdio.h> int main(void) { #ifdef __STDC__ printf("I am STDC\n"); #else printf("I am just CC\n"); #endif return 0; } (root@) /tmp> cc -qlanglvl=extc89 test.c (root@) /tmp> ./a.out I am STDC (root@) /tmp> cc test.c -o a.out2 (root@) /tmp> ./a.out2 I am just CC attached " curl.h" code fragment: 519 #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ 520 defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ 521 defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) 522 523 /* This compiler is believed to have an ISO compatible preprocessor */ 524 #define CURL_ISOCPP 525 #else 526 /* This compiler is believed NOT to have an ISO compatible preprocessor */ 527 #undef CURL_ISOCPP 528 #endif 529 530 #ifdef CURL_ISOCPP 531 #define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number 532 #else " 2007/6/26, Daniel Stenberg <daniel_at_haxx.se>: On Mon, 25 Jun 2007, Everett, Marty wrote: > I did not change the config options from 7.15 to 7.16. I have tried other > version of 7.16 with the same results but with different line numbers. (Please don't top-post) The only difference (from 7.15.5 to 7.16.0) I could see that would affect that enum is that the latter checks for __HIGHC__ as well and consider such a compiler to be ISO C (and that's for the Metaware's High-C compiler). If you define CURL_ISOCPP before the first #ifdef CURL_ISOPP line, does that make it compile? BTW, I just tried a recent curl version on AIX 5.3 box, and configure found cc and I could build curl fine with it (no extra option for C89 or anything required).Received on 2007-06-28