[DTrace-devel] [PATCH v2 9/9] build: add configure script

Nick Alcock nick.alcock at oracle.com
Thu Jan 25 20:49:20 UTC 2024


On 25 Jan 2024, Sam James spake thusly:

> Nick Alcock <nick.alcock at oracle.com> writes:
>> -NATIVE_BITNESS_ONLY := $(shell echo 'int main (void) { }' | gcc -x c -o /dev/null -m32 - 2>/dev/null || echo t)
>
> $(CC) here, we might be pointed to a specific version of GCC or similar

Good point (plus moving the definition of CC up). I've added a patch
that adjusts everything outside the testsuite accordingly (because doing
the same inside the testsuite is about ten times as much work :) ).

(We have dropped the -dumpmachine patch in the next series, btw, on the
grounds that we haven't in any way tested anything about
cross-compilation and it's better not to make it seem like we have.)

>> +BITNESS := 64
>> +NATIVE_BITNESS_ONLY := $(shell echo 'int main (void) { }' | gcc -x c -o /dev/null -m32 - 2>/dev/null || echo t)
>
> $(CC) again

It's actually the same thing, just code motion. (This is still in the
latest version of the series because I fix it up in a later commit.)

>> +ARCHINC := $(subst sparc64,sparc,$(subst aarch64,arm64,$(subst x86_64,i386,$(ARCH))))
>> +
>> +INVARIANT_CFLAGS := -std=gnu99 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(if $(NATIVE_BITNESS_ONLY),-DNATIVE_BITNESS_ONLY) -D_DT_VERSION=\"$(VERSION)\"
>> +CPPFLAGS += -Iinclude -Iuts/common -Iinclude/$(ARCHINC) -I$(objdir)
>> +
>> +export CC = gcc
>> +override CFLAGS += $(INVARIANT_CFLAGS)
>> +PREPROCESS = $(CC) -E
>> +export BPFC = bpf-unknown-none-gcc
>
> Are these overridable too? We may not have exactly the same tuple name
> (undecided yet).

Yeah, they're all overrideable, like any makefile variable (and more
specifically $(BPFC) exists because we do expect it to be the sort
of thing people might want to override).

>> +--kernels="6.1 6.2 6.3"		Space-separated list of kernel versions to
>> +				produce translators for
>> +--kernel-mod-dir=DIR		Directory used to search for kernel build trees
>> +--kernel-src-dir=DIR		Source location of kernel tree for local builds
>> +--kernel-obj-dir=DIR		O= passed to local kernels built with O=
>
> Thank you for this!

Thank you for suggesting it. Having configure options that stick across
builds makes development a lot more convenient too!

>> [...]
>> +        HAVE_LIBSYSTEMD=*) write_config_var LIBSYSTEMD "$option";;
>> +        HAVE_FUSE_LOG=*) write_config_var FUSE_LOG "$option";;
>> +        --with-libfuse3=*) write_config_var LIBFUSE3 "$option";;
>> +        HAVE_LIBFUSE3=*) write_config_var LIBFUSE3 "$option";;
>> +        HAVE_FUSE_NUMA=*) write_config_var FUSE_NUMA "$option";;
>> +        HAVE_CLOSE_RANGE=*) write_config_var CLOSE_RANGE "$option";;
>> +        HAVE_GETTID=*) write_config_var GETTID "$option";;
>> +	*) echo "Unknown option $option" >&2
>
> This allows disabling the use of e.g. fuse3 even if it's detected on the
> system, right? If so, great.

Yes. Not sure why you'd want to, mind you: maybe to force use of fuse2?
(If you have neither, the build will fail.)

-- 
NULL && (void)



More information about the DTrace-devel mailing list