lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZiKJNrei7zUVaLkb@bergen.fjasle.eu>
Date: Fri, 19 Apr 2024 17:09:42 +0200
From: Nicolas Schier <nicolas@...sle.eu>
To: Masahiro Yamada <masahiroy@...nel.org>
Cc: linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 4/4] kbuild: use $(src) instead of $(srctree)/$(src) for
 source directory

On Tue 16 Apr 2024 21:18:38 GMT, Masahiro Yamada wrote:
> Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for
> checked-in source files. It is merely a convention without any functional
> difference. In fact, $(obj) and $(src) are exactly the same, as defined
> in scripts/Makefile.build:
> 
>     src := $(obj)
> 
> When the kernel is built in a separate output directory, $(src) does
> not match the directory in the source tree. It still works because the
> top Makefile sets VPATH to $(srctree). However, VPATH does not cover
> all cases. There are many places where the exact path to the source
> directory is needed. For example, when adding a header search path for
> local headers, it is typical to pass -I$(srctree)/$(src) to the compiler.
> 
> However, it introduces inconsistency between upstream Makefiles and
> downstream Makefiles; when the source directory path is needed,
> $(srctree)/$(src) is used in the upstream kernel, while $(src) is used
> in external modules.
> 
> To resolve the distortion, this commit changes the semantics of $(src)
> so that it always points to the directory in the source tree.
> 
> Going forward, the variables used in Makefiles will work as follows:
> 
>   $(obj)     - directory in the object tree
>   $(src)     - directory in the source tree  (changed by this commit!)
>   $(objtree) - the top of the kernel object tree
>   $(srctree) - the top of the kernel source tree
> 
> This is a tweewide Makefile conversion for replacing $(srctree)/$(src)
> with $(src).

tweewide -> treewide

[...]
> diff --git a/drivers/Makefile b/drivers/Makefile
> index 3bf5cab4b451..fe9ceb0d2288 100644
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -6,11 +6,6 @@
>  # Rewritten to use lists instead of if-statements.
>  #
>  
> -# Some driver Makefiles miss $(srctree)/ for include directive.
> -ifdef building_out_of_srctree
> -MAKEFLAGS += --include-dir=$(srctree)
> -endif
> -

Ah, it's nice to get rid of this.

>  obj-y				+= cache/
>  obj-y				+= irqchip/
>  obj-y				+= bus/
[...]
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 3179747cbd2c..c53d2f168801 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -209,13 +209,13 @@ _c_flags += $(if $(patsubst n%,, \
>  	-D__KCSAN_INSTRUMENT_BARRIERS__)
>  endif
>  
> -# $(srctree)/$(src) for including checkin headers from generated source files
> -# $(objtree)/$(obj) for including generated headers from checkin source files
> +# $(src) for including checkin headers from generated source files
> +# $(obj) for including generated headers from checkin source files

this is a funny criss-cross of words; but might the following be more 
accurate?

# $(src) for including headers from checked-in source files
# $(obj) for including generated headers




Anyway, thanks for the patch.  I think it is quite a good way forward!

Reviewed-by: Nicolas Schier <nicolas@...sle.eu>

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ