diff mbox series

selinux: fix Makefile for versions of make < v4.3

Message ID 20230601214751.406786-1-paul@paul-moore.com (mailing list archive)
State Accepted
Delegated to: Paul Moore
Headers show
Series selinux: fix Makefile for versions of make < v4.3 | expand

Commit Message

Paul Moore June 1, 2023, 9:47 p.m. UTC
As noted in the comments of this commit, the current SELinux Makefile
requires features found in make v4.3 or later, which is problematic
as the Linux Kernel currently only requires make v3.82.  This patch
fixes the SELinux Makefile so that it works properly on these older
versions of make, and adds a couple of comments to the Makefile about
how it can be improved once make v4.3 is required by the kernel.

Fixes: 6f933aa7dfd0 ("selinux: more Makefile tweaks")
Signed-off-by: Paul Moore <paul@paul-moore.com>
---
 security/selinux/Makefile | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

Comments

Paul Moore June 1, 2023, 10:36 p.m. UTC | #1
On Thu, Jun 1, 2023 at 5:47 PM Paul Moore <paul@paul-moore.com> wrote:
>
> As noted in the comments of this commit, the current SELinux Makefile
> requires features found in make v4.3 or later, which is problematic
> as the Linux Kernel currently only requires make v3.82.  This patch
> fixes the SELinux Makefile so that it works properly on these older
> versions of make, and adds a couple of comments to the Makefile about
> how it can be improved once make v4.3 is required by the kernel.
>
> Fixes: 6f933aa7dfd0 ("selinux: more Makefile tweaks")
> Signed-off-by: Paul Moore <paul@paul-moore.com>
> ---
>  security/selinux/Makefile | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/security/selinux/Makefile b/security/selinux/Makefile
> index ab8c3093d5fd..abf19fee09f8 100644
> --- a/security/selinux/Makefile
> +++ b/security/selinux/Makefile
> @@ -3,6 +3,11 @@
>  # Makefile for building the SELinux module as part of the kernel tree.
>  #
>
> +# NOTE: There are a number of improvements that can be made to this Makefile
> +# once the kernel requires make v4.3 or greater; the most important feature
> +# lacking in older versions of make is support for grouped targets.  These
> +# improvements are noted inline in the Makefile below ...
> +
>  obj-$(CONFIG_SECURITY_SELINUX) := selinux.o
>
>  ccflags-y := -I$(srctree)/security/selinux -I$(srctree)/security/selinux/include
> @@ -19,11 +24,17 @@ selinux-$(CONFIG_IMA) += ima.o
>
>  genhdrs := flask.h av_permissions.h
>
> -$(addprefix $(obj)/,$(selinux-y)): $(addprefix $(obj)/,$(genhdrs))
> +# see the note above, replace the dependency rule with the one below:
> +#  $(addprefix $(obj)/,$(selinux-y)): $(addprefix $(obj)/,$(genhdrs))
> +$(addprefix $(obj)/,$(selinux-y)): $(obj)/flask.h
>
>  quiet_cmd_genhdrs = GEN     $(addprefix $(obj)/,$(genhdrs))
>        cmd_genhdrs = $< $(addprefix $(obj)/,$(genhdrs))
>
> -targets += $(genhdrs)
> -$(addprefix $(obj)/,$(genhdrs)) &: scripts/selinux/genheaders/genheaders FORCE
> +# see the note above, replace the $targets and $genhdrs dependency rule with
> +# the lines below:

My apologies, I didn't fully refresh my patch before sending it out so
there is a slight difference in the comments, below is what I
currently have in my working branch:

-# see the note above, replace the $targets and $genhdrs dependency rule with
-# the lines below:
+# see the note above, replace the $targets and 'flask.h' rule with the lines
+# below:
Paul Moore June 2, 2023, 7:36 p.m. UTC | #2
On Thu, Jun 1, 2023 at 6:36 PM Paul Moore <paul@paul-moore.com> wrote:
> On Thu, Jun 1, 2023 at 5:47 PM Paul Moore <paul@paul-moore.com> wrote:
> >
> > As noted in the comments of this commit, the current SELinux Makefile
> > requires features found in make v4.3 or later, which is problematic
> > as the Linux Kernel currently only requires make v3.82.  This patch
> > fixes the SELinux Makefile so that it works properly on these older
> > versions of make, and adds a couple of comments to the Makefile about
> > how it can be improved once make v4.3 is required by the kernel.
> >
> > Fixes: 6f933aa7dfd0 ("selinux: more Makefile tweaks")
> > Signed-off-by: Paul Moore <paul@paul-moore.com>
> > ---
> >  security/selinux/Makefile | 17 ++++++++++++++---
> >  1 file changed, 14 insertions(+), 3 deletions(-)
> >
> > diff --git a/security/selinux/Makefile b/security/selinux/Makefile
> > index ab8c3093d5fd..abf19fee09f8 100644
> > --- a/security/selinux/Makefile
> > +++ b/security/selinux/Makefile
> > @@ -3,6 +3,11 @@
> >  # Makefile for building the SELinux module as part of the kernel tree.
> >  #
> >
> > +# NOTE: There are a number of improvements that can be made to this Makefile
> > +# once the kernel requires make v4.3 or greater; the most important feature
> > +# lacking in older versions of make is support for grouped targets.  These
> > +# improvements are noted inline in the Makefile below ...
> > +
> >  obj-$(CONFIG_SECURITY_SELINUX) := selinux.o
> >
> >  ccflags-y := -I$(srctree)/security/selinux -I$(srctree)/security/selinux/include
> > @@ -19,11 +24,17 @@ selinux-$(CONFIG_IMA) += ima.o
> >
> >  genhdrs := flask.h av_permissions.h
> >
> > -$(addprefix $(obj)/,$(selinux-y)): $(addprefix $(obj)/,$(genhdrs))
> > +# see the note above, replace the dependency rule with the one below:
> > +#  $(addprefix $(obj)/,$(selinux-y)): $(addprefix $(obj)/,$(genhdrs))
> > +$(addprefix $(obj)/,$(selinux-y)): $(obj)/flask.h
> >
> >  quiet_cmd_genhdrs = GEN     $(addprefix $(obj)/,$(genhdrs))
> >        cmd_genhdrs = $< $(addprefix $(obj)/,$(genhdrs))
> >
> > -targets += $(genhdrs)
> > -$(addprefix $(obj)/,$(genhdrs)) &: scripts/selinux/genheaders/genheaders FORCE
> > +# see the note above, replace the $targets and $genhdrs dependency rule with
> > +# the lines below:
>
> My apologies, I didn't fully refresh my patch before sending it out so
> there is a slight difference in the comments, below is what I
> currently have in my working branch:

Merged into selinux/next.

> -# see the note above, replace the $targets and $genhdrs dependency rule with
> -# the lines below:
> +# see the note above, replace the $targets and 'flask.h' rule with the lines
> +# below:
diff mbox series

Patch

diff --git a/security/selinux/Makefile b/security/selinux/Makefile
index ab8c3093d5fd..abf19fee09f8 100644
--- a/security/selinux/Makefile
+++ b/security/selinux/Makefile
@@ -3,6 +3,11 @@ 
 # Makefile for building the SELinux module as part of the kernel tree.
 #
 
+# NOTE: There are a number of improvements that can be made to this Makefile
+# once the kernel requires make v4.3 or greater; the most important feature
+# lacking in older versions of make is support for grouped targets.  These
+# improvements are noted inline in the Makefile below ...
+
 obj-$(CONFIG_SECURITY_SELINUX) := selinux.o
 
 ccflags-y := -I$(srctree)/security/selinux -I$(srctree)/security/selinux/include
@@ -19,11 +24,17 @@  selinux-$(CONFIG_IMA) += ima.o
 
 genhdrs := flask.h av_permissions.h
 
-$(addprefix $(obj)/,$(selinux-y)): $(addprefix $(obj)/,$(genhdrs))
+# see the note above, replace the dependency rule with the one below:
+#  $(addprefix $(obj)/,$(selinux-y)): $(addprefix $(obj)/,$(genhdrs))
+$(addprefix $(obj)/,$(selinux-y)): $(obj)/flask.h
 
 quiet_cmd_genhdrs = GEN     $(addprefix $(obj)/,$(genhdrs))
       cmd_genhdrs = $< $(addprefix $(obj)/,$(genhdrs))
 
-targets += $(genhdrs)
-$(addprefix $(obj)/,$(genhdrs)) &: scripts/selinux/genheaders/genheaders FORCE
+# see the note above, replace the $targets and $genhdrs dependency rule with
+# the lines below:
+#  targets += $(genhdrs)
+#  $(addprefix $(obj)/,$(genhdrs)) &: scripts/selinux/...
+targets += flask.h
+$(obj)/flask.h: scripts/selinux/genheaders/genheaders FORCE
 	$(call if_changed,genhdrs)