Subject: Re: [PATCH v3 11/34] fsmonitor-fs-listen-win32: stub in backend for Windows

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Fri, 02 Jul 2021 00:45:45 +0200

On Thu, Jul 01 2021, Jeff Hostetler via GitGitGadget wrote:

> From: Jeff Hostetler <[email-masked]>
>
> Stub in empty backend for fsmonitor--daemon on Windows.
>
> Signed-off-by: Jeff Hostetler <[email-masked]>
> ---
>  Makefile                                     | 13 ++++++
>  compat/fsmonitor/fsmonitor-fs-listen-win32.c | 21 +++++++++
>  compat/fsmonitor/fsmonitor-fs-listen.h       | 49 ++++++++++++++++++++
>  config.mak.uname                             |  2 +
>  contrib/buildsystems/CMakeLists.txt          |  5 ++
>  5 files changed, 90 insertions(+)
>  create mode 100644 compat/fsmonitor/fsmonitor-fs-listen-win32.c
>  create mode 100644 compat/fsmonitor/fsmonitor-fs-listen.h
>
> diff --git a/Makefile b/Makefile
> index c45caacf2c3..a2a6e1f20f6 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -467,6 +467,11 @@ all::
>  # directory, and the JSON compilation database 'compile_commands.json' will be
>  # created at the root of the repository.
>  #
> +# If your platform supports a built-in fsmonitor backend, set
> +# FSMONITOR_DAEMON_BACKEND to the "<name>" of the corresponding
> +# `compat/fsmonitor/fsmonitor-fs-listen-<name>.c` that implements the
> +# `fsmonitor_fs_listen__*()` routines.
> +#
>  # Define DEVELOPER to enable more compiler warnings. Compiler version
>  # and family are auto detected, but could be overridden by defining
>  # COMPILER_FEATURES (see config.mak.dev). You can still set
> @@ -1929,6 +1934,11 @@ ifdef NEED_ACCESS_ROOT_HANDLER
>  	COMPAT_OBJS += compat/access.o
>  endif
>  
> +ifdef FSMONITOR_DAEMON_BACKEND
> +	COMPAT_CFLAGS += -DHAVE_FSMONITOR_DAEMON_BACKEND
> +	COMPAT_OBJS += compat/fsmonitor/fsmonitor-fs-listen-$(FSMONITOR_DAEMON_BACKEND).o
> +endif
> +
>  ifeq ($(TCLTK_PATH),)
>  NO_TCLTK = NoThanks
>  endif
> @@ -2793,6 +2803,9 @@ GIT-BUILD-OPTIONS: FORCE
>  	@echo PAGER_ENV=\''$(subst ','\'',$(subst ','\'',$(PAGER_ENV)))'\' >>$@+
>  	@echo DC_SHA1=\''$(subst ','\'',$(subst ','\'',$(DC_SHA1)))'\' >>$@+
>  	@echo X=\'$(X)\' >>$@+
> +ifdef FSMONITOR_DAEMON_BACKEND
> +	@echo FSMONITOR_DAEMON_BACKEND=\''$(subst ','\'',$(subst ','\'',$(FSMONITOR_DAEMON_BACKEND)))'\' >>$@+
> +endif

Why put this in an ifdef?

In 342e9ef2d9e (Introduce a performance testing framework, 2012-02-17)
we started doing that for some perf/test options (which b.t.w., I don't
really see the reason for, maybe it's some subtlety in how test-lib.sh
picks those up).

But for all the other compile-time stuff we don't ifdef it, we just
define it, and then you get an empty value or not.

This would AFAICT be the first build-time-for-the-C-program option we
ifdef for writing a line to GIT-BUILD-OPTIONS.