haproxy on Opensolaris 2008.05

Posted on Updated on

When you want to build haproxy on Opensolaris 2008.05 you need the gcc and the gmake due to fact that the Sun CC does not support fully the C99 standard and the Makefile use GNU Make features.

I have tried to build haproxy with -xc99 but it was unable due the following code in src/client.c

/* Note: must not be declared <const> as its list will be overwritten */
static struct acl_kw_list acl_kws = {{ },{
{ “src_port”, acl_parse_int, acl_fetch_sport, acl_match_int },
{ “src”, acl_parse_ip, acl_fetch_src, acl_match_ip },
{ “dst”, acl_parse_ip, acl_fetch_dst, acl_match_ip },
{ “dst_port”, acl_parse_int, acl_fetch_dport, acl_match_int },
#if 0
{ “src_limit”, acl_parse_int, acl_fetch_sconn, acl_match_int },
{ “dst_conn”, acl_parse_int, acl_fetch_dconn, acl_match_int },

and some other code. I think SUN should make his cc compliant so that we are able to build haproxy with there compiler 😉 . When you install the gcc and add the follwoing statement into the Makefile


in both *_PCRE sections then you are able to compile haproxy with the follwoing options

gmake -f Makefile TARGET=solaris USE_STATIC_PCRE=1 CPU=i686

for the final build you must rearrange the link line, this line works for me

gcc -g -o haproxy src/haproxy.o src/sessionhash.o src/base64.o src/protocols.o src/uri_auth.o src/standard.o src/buffers.o src/log.o src/task.o src/time.o src/fd.o src/regex.o src/cfgparse.o src/server.o src/checks.o src/queue.o src/client.o src/proxy.o src/proto_uxst.o src/proto_http.o src/stream_sock.o src/appsession.o src/backend.o src/senddata.o src/dumpstats.o src/proto_tcp.o src/session.o src/hdr_idx.o src/ev_select.o src/acl.o src/memory.o src/ebtree.o src/eb32tree.o src/ev_poll.o -L/usr/lib -Wl,-Bstatic -Wl,-Bdynamic -lnsl -lsocket -lpcreposix -lpcre

The point was, which looks to me, that the libs must be added as last options.

One thought on “haproxy on Opensolaris 2008.05

    Lus said:
    February 27, 2009 at 23:05

    empty structure initialization is not a C99 feature, is a Gnu C extension, empty initializations should work with -features=extensions in Sun Studio 12


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s