On my multilib system, serf gets confused about where the lib directory is. Reproducible: Always Actual Results: scons -j9 BUILD_STATIC=no PREFIX=/usr LIBDIR=/usr/lib64 APR=SYSROOT='' /usr/bin/apr-1-config APU=SYSROOT='' /usr/bin/apu-1-config AR=llvm-ar RANLIB=llvm-ranlib CC=clang CPPFLAGS= CFLAGS=-march=bdver1 -O3 -pipe -flto=thin LINKFLAGS=-Wl,-O3 -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind ... clang -o auth/auth_basic.os -c -march=bdver1 -O3 -pipe -flto=thin -std=c89 -Wdeclaration-after-statement -Wmissing-prototypes -Wall -fPIC -DNDEBUG -DOPENSSL_NO_STDIO -DLINUX -D_REENTRANT -D_GNU_SOURCE -I. -I/usr/include/apr-1 -I/usr/include auth/auth_basic.c clang -o auth/auth_digest.os -c -march=bdver1 -O3 -pipe -flto=thin -std=c89 -Wdeclaration-after-statement -Wmissing-prototypes -Wall -fPIC -DNDEBUG -DOPENSSL_NO_STDIO -DLINUX -D_REENTRANT -D_GNU_SOURCE -I. -I/usr/include/apr-1 -I/usr/include auth/auth_digest.c clang -o auth/auth_spnego.os -c -march=bdver1 -O3 -pipe -flto=thin -std=c89 -Wdeclaration-after-statement -Wmissing-prototypes -Wall -fPIC -DNDEBUG -DOPENSSL_NO_STDIO -DLINUX -D_REENTRANT -D_GNU_SOURCE -I. -I/usr/include/apr-1 -I/usr/include auth/auth_spnego.c clang -o auth/auth_spnego_gss.os -c -march=bdver1 -O3 -pipe -flto=thin -std=c89 -Wdeclaration-after-statement -Wmissing-prototypes -Wall -fPIC -DNDEBUG -DOPENSSL_NO_STDIO -DLINUX -D_REENTRANT -D_GNU_SOURCE -I. -I/usr/include/apr-1 -I/usr/include auth/auth_spnego_gss.c clang -o auth/auth_spnego_sspi.os -c -march=bdver1 -O3 -pipe -flto=thin -std=c89 -Wdeclaration-after-statement -Wmissing-prototypes -Wall -fPIC -DNDEBUG -DOPENSSL_NO_STDIO -DLINUX -D_REENTRANT -D_GNU_SOURCE -I. -I/usr/include/apr-1 -I/usr/include auth/auth_spnego_sspi.c Creating 'serf-1.pc' buckets/ssl_buckets.c:570:32: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign] 570 | strlen(nm->d.ia5->data) != nm->d.ia5->length) | ^~~~~~~~~~~~~~~ /usr/include/string.h:407:35: note: passing argument to parameter '__s' here 407 | extern size_t strlen (const char *__s) | ^ 1 warning generated. clang -o libserf-1.so.1.3.0 -Wl,-O3 -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -shared -Wl,-soname=libserf-1.so.1 -Wl,-rpath=/usr/lib64 -Wl,-rpath=/usr/lib context.os incoming.os outgoing.os ssltunnel.os buckets/aggregate_buckets.os buckets/allocator.os buckets/barrier_buckets.os buckets/buckets.os buckets/bwtp_buckets.os buckets/chunk_buckets.os buckets/dechunk_buckets.os buckets/deflate_buckets.os buckets/file_buckets.os buckets/headers_buckets.os buckets/iovec_buckets.os b uckets/limit_buckets.os buckets/mmap_buckets.os buckets/request_buckets.os buckets/response_body_buckets.os buckets/response_buckets.os buckets/simple_buckets.os buckets/socket_buckets.os buckets/ssl_buckets.os auth/auth.os auth/auth_basic.os auth/auth_digest.os auth/auth_spnego.os auth/auth_spnego_gss.os auth/auth_spnego_sspi.os -L/usr/lib -lssl -lcrypto -lz -lapr-1 -laprutil-1 ld.lld: error: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crti.o is incompatible with elf32-i386 ld.lld: error: /usr/lib/llvm/18/bin/../../../../lib/clang/18/lib/linux/clang_rt.crtbegin-x86_64.o is incompatible with elf32-i386 ld.lld: error: context.os is incompatible with elf32-i386 ld.lld: error: incoming.os is incompatible with elf32-i386 ...
Created attachment 900507 [details, diff] serf-1.3.10-multilib.patch I'm no scons expert. But I feel like this is a decent solution.