linux-kbuild.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] kbuild: add support to generate LLVM bitcode files
@ 2014-07-19  1:34 Vinícius Tinti
  2014-07-20 10:02 ` Sam Ravnborg
  0 siblings, 1 reply; 9+ messages in thread
From: Vinícius Tinti @ 2014-07-19  1:34 UTC (permalink / raw)
  To: Michal Marek
  Cc: linux-kbuild, linux-kernel, Vinícius Tinti, Behan Webster

Allows kbuild to generate LLVM bitcode files with the .ll extension when
building with Clang.

  # c code
  CC=clang make kernel/pid.ll

  # asm code
  CC=clang make arch/arm/kernel/calls.ll

Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
Signed-off-by: Behan Webster <behanw@converseincode.com>
---
 Makefile               |  7 +++++++
 scripts/Makefile.build | 18 ++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/Makefile b/Makefile
index f3c543d..4eb0d14 100644
--- a/Makefile
+++ b/Makefile
@@ -1484,6 +1484,13 @@ endif
 %.symtypes: %.c prepare scripts FORCE
 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 
+ifeq ($(COMPILER),clang)
+%.ll: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.ll: %.S prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+endif
+
 # Modules
 /: prepare scripts FORCE
 	$(cmd_crmodverdir)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index bf3e677..9ea19d6 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -174,6 +174,14 @@ cmd_cc_symtypes_c =                                                         \
 $(obj)/%.symtypes : $(src)/%.c FORCE
 	$(call cmd,cc_symtypes_c)
 
+ifeq ($(COMPILER),clang)
+quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
+cmd_cc_ll_c       = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -emit-llvm -S -o $@ $<
+
+$(obj)/%.ll: $(src)/%.c FORCE
+	$(call if_changed_dep,cc_ll_c)
+endif
+
 # C (.c) files
 # The C file is compiled and updated dependency information is generated.
 # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
@@ -315,6 +323,16 @@ quiet_cmd_asn1_compiler = ASN.1   $@
 $(obj)/%-asn1.c $(obj)/%-asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
 	$(call cmd,asn1_compiler)
 
+# LLVM bitcode
+# ---------------------------------------------------------------------------
+ifeq ($(COMPILER),clang)
+quiet_cmd_as_ll_S = CPP $(quiet_modtag) $@
+cmd_as_ll_S       = $(CPP) $(a_flags)   -o $@ $<
+
+$(obj)/%.ll: $(src)/%.S FORCE
+	$(call if_changed_dep,as_ll_S)
+endif
+
 # Build the compiled-in targets
 # ---------------------------------------------------------------------------
 
-- 
2.0.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] kbuild: add support to generate LLVM bitcode files
  2014-07-19  1:34 [PATCH] kbuild: add support to generate LLVM bitcode files Vinícius Tinti
@ 2014-07-20 10:02 ` Sam Ravnborg
  2014-07-20 21:04   ` Sam Ravnborg
  0 siblings, 1 reply; 9+ messages in thread
From: Sam Ravnborg @ 2014-07-20 10:02 UTC (permalink / raw)
  To: Vinícius Tinti
  Cc: Michal Marek, linux-kbuild, linux-kernel, Behan Webster

On Fri, Jul 18, 2014 at 10:34:37PM -0300, Vinícius Tinti wrote:
> Allows kbuild to generate LLVM bitcode files with the .ll extension when
> building with Clang.
> 
>   # c code
>   CC=clang make kernel/pid.ll
> 
>   # asm code
>   CC=clang make arch/arm/kernel/calls.ll
> 
> Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
> Signed-off-by: Behan Webster <behanw@converseincode.com>
> ---
>  Makefile               |  7 +++++++
>  scripts/Makefile.build | 18 ++++++++++++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index f3c543d..4eb0d14 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1484,6 +1484,13 @@ endif
>  %.symtypes: %.c prepare scripts FORCE
>  	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
>  
> +ifeq ($(COMPILER),clang)
> +%.ll: %.c prepare scripts FORCE
> +	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
> +%.ll: %.S prepare scripts FORCE
> +	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
> +endif
Can we drop the test for $(COMPILER) here?
If one try this with gcc then gcc will just fail if it do not support the clang flags supplied.

And help section should be updated to list .ll too.


> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index bf3e677..9ea19d6 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -174,6 +174,14 @@ cmd_cc_symtypes_c =                                                         \
>  $(obj)/%.symtypes : $(src)/%.c FORCE
>  	$(call cmd,cc_symtypes_c)
>  
> +ifeq ($(COMPILER),clang)
> +quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
> +cmd_cc_ll_c       = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -emit-llvm -S -o $@ $<

Can we drop the test for COMPILER here too?
Do -fverbose-asm make sense when generating .ll files?
It looks like a leftover from what you copied.


> +# LLVM bitcode
> +# ---------------------------------------------------------------------------
> +ifeq ($(COMPILER),clang)
> +quiet_cmd_as_ll_S = CPP $(quiet_modtag) $@
> +cmd_as_ll_S       = $(CPP) $(a_flags)   -o $@ $<
> +
> +$(obj)/%.ll: $(src)/%.S FORCE
> +	$(call if_changed_dep,as_ll_S)
> +endif
This chunk belongs together with the other chunk.
There is no reason to separate .S => .ll and .c => .ll rules.

The current rules for .c => .lst etc is a mess and not something to be too
much inspired from.

	Sam

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kbuild: add support to generate LLVM bitcode files
  2014-07-20 10:02 ` Sam Ravnborg
@ 2014-07-20 21:04   ` Sam Ravnborg
  2014-07-20 21:30     ` Sam Ravnborg
  0 siblings, 1 reply; 9+ messages in thread
From: Sam Ravnborg @ 2014-07-20 21:04 UTC (permalink / raw)
  To: Vinícius Tinti
  Cc: Michal Marek, linux-kbuild, linux-kernel, Behan Webster

> >  
> > +ifeq ($(COMPILER),clang)
> > +quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
> > +cmd_cc_ll_c       = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -emit-llvm -S -o $@ $<
> 
> Can we drop the test for COMPILER here too?
> Do -fverbose-asm make sense when generating .ll files?
> It looks like a leftover from what you copied.

Also  $(DISABLE_LTO) looks like a left-over.
It was added to avoid LTO when generating asm-offstes.s which
the original rule is also used for.
So this should be skipped too.

	Sam

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kbuild: add support to generate LLVM bitcode files
  2014-07-20 21:04   ` Sam Ravnborg
@ 2014-07-20 21:30     ` Sam Ravnborg
  2014-07-21 22:42       ` Tinti
  0 siblings, 1 reply; 9+ messages in thread
From: Sam Ravnborg @ 2014-07-20 21:30 UTC (permalink / raw)
  To: Vinícius Tinti
  Cc: Michal Marek, linux-kbuild, linux-kernel, Behan Webster

On Sun, Jul 20, 2014 at 11:04:58PM +0200, Sam Ravnborg wrote:
> > >  
> > > +ifeq ($(COMPILER),clang)
> > > +quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
> > > +cmd_cc_ll_c       = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -emit-llvm -S -o $@ $<
> > 
> > Can we drop the test for COMPILER here too?
> > Do -fverbose-asm make sense when generating .ll files?
> > It looks like a leftover from what you copied.
> 
> Also  $(DISABLE_LTO) looks like a left-over.
> It was added to avoid LTO when generating asm-offstes.s which
> the original rule is also used for.
> So this should be skipped too.
Third thing.
In some places we indent the assignmnet like this:
quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
      cmd_cc_ll_c = $(CC) $(c_flags) ....

This makes it more obvious that the "cmd_cc_ll_c" is actually the same.
Makefile.build does not do this much but please do for these targets.

	Sam

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kbuild: add support to generate LLVM bitcode files
  2014-07-20 21:30     ` Sam Ravnborg
@ 2014-07-21 22:42       ` Tinti
  2014-07-22  0:35         ` Sam Ravnborg
  2014-07-23 11:56         ` [PATCH v2] " Vinícius Tinti
  0 siblings, 2 replies; 9+ messages in thread
From: Tinti @ 2014-07-21 22:42 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: Michal Marek, linux-kbuild, linux-kernel, Behan Webster

1) Can we drop the test for $(COMPILER) here?

Yes.

2) And help section should be updated to list .ll too.

I will be adding it too.

3) This chunk belongs together with the other chunk.
There is no reason to separate .S => .ll and .c => .ll rules.

Sure. But in fact I was not able to create the .ll from .S and neither
create the .s
from the .S in some assembly files on kernel. Do you know how it works?

4) Also $(DISABLE_LTO) looks like a left-over.

Remove $(DISABLE_LTO)

5) quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
      cmd_cc_ll_c = $(CC) $(c_flags) ....

Understood.

Thanks.

On Sun, Jul 20, 2014 at 6:30 PM, Sam Ravnborg <sam@ravnborg.org> wrote:
> On Sun, Jul 20, 2014 at 11:04:58PM +0200, Sam Ravnborg wrote:
>> > >
>> > > +ifeq ($(COMPILER),clang)
>> > > +quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
>> > > +cmd_cc_ll_c       = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -emit-llvm -S -o $@ $<
>> >
>> > Can we drop the test for COMPILER here too?
>> > Do -fverbose-asm make sense when generating .ll files?
>> > It looks like a leftover from what you copied.
>>
>> Also  $(DISABLE_LTO) looks like a left-over.
>> It was added to avoid LTO when generating asm-offstes.s which
>> the original rule is also used for.
>> So this should be skipped too.
> Third thing.
> In some places we indent the assignmnet like this:
> quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
>       cmd_cc_ll_c = $(CC) $(c_flags) ....
>
> This makes it more obvious that the "cmd_cc_ll_c" is actually the same.
> Makefile.build does not do this much but please do for these targets.
>
>         Sam



-- 
Simplicity is the ultimate sophistication

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kbuild: add support to generate LLVM bitcode files
  2014-07-21 22:42       ` Tinti
@ 2014-07-22  0:35         ` Sam Ravnborg
  2014-07-23 11:56         ` [PATCH v2] " Vinícius Tinti
  1 sibling, 0 replies; 9+ messages in thread
From: Sam Ravnborg @ 2014-07-22  0:35 UTC (permalink / raw)
  To: Tinti; +Cc: Michal Marek, linux-kbuild, linux-kernel, Behan Webster

> 
> Sure. But in fact I was not able to create the .ll from .S and neither
> create the .s
> from the .S in some assembly files on kernel. Do you know how it works?

   make arch/x86/kernel/preempt.s

Works for me.
Something broke in your setup?

	Sam

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2] kbuild: add support to generate LLVM bitcode files
  2014-07-21 22:42       ` Tinti
  2014-07-22  0:35         ` Sam Ravnborg
@ 2014-07-23 11:56         ` Vinícius Tinti
  2014-07-23 12:00           ` Tinti
  1 sibling, 1 reply; 9+ messages in thread
From: Vinícius Tinti @ 2014-07-23 11:56 UTC (permalink / raw)
  To: Sam Ravnborg, Michal Marek
  Cc: Renato Golin, linux-kbuild, linux-kernel, Vinícius Tinti,
	Behan Webster

Allows kbuild to generate LLVM bitcode files with the .ll extension.

  # from c code
  CC=clang make kernel/pid.ll

  # from asm code
  CC=clang make arch/x86/kernel/preempt.ll

Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
Signed-off-by: Behan Webster <behanw@converseincode.com>
---
 .gitignore             |  1 +
 Makefile               |  6 ++++++
 scripts/Makefile.build | 14 ++++++++++++++
 3 files changed, 21 insertions(+)

diff --git a/.gitignore b/.gitignore
index f4c0b09..c5a7656 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,7 @@
 *.lzo
 *.patch
 *.gcno
+*.ll
 modules.builtin
 Module.symvers
 
diff --git a/Makefile b/Makefile
index 6b27741..7826c33 100644
--- a/Makefile
+++ b/Makefile
@@ -1213,6 +1213,8 @@ help:
 	@echo  '                    (default: $$(INSTALL_MOD_PATH)/lib/firmware)'
 	@echo  '  dir/            - Build all files in dir and below'
 	@echo  '  dir/file.[oisS] - Build specified target only'
+	@echo  '  dir/file.ll     - Build the LLVM bitcode file'
+	@echo  '                    (requires a compiler support for LLVM bitcode generation)'
 	@echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
 	@echo  '                    (requires a recent binutils and recent build (System.map))'
 	@echo  '  dir/file.ko     - Build module including final link'
@@ -1483,6 +1485,10 @@ endif
 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 %.symtypes: %.c prepare scripts FORCE
 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.ll: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.ll: %.S prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 
 # Modules
 /: prepare scripts FORCE
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index bf3e677..4d97e4f 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -174,6 +174,20 @@ cmd_cc_symtypes_c =                                                         \
 $(obj)/%.symtypes : $(src)/%.c FORCE
 	$(call cmd,cc_symtypes_c)
 
+# LLVM bitcode
+# Generate .ll files from .s and .c
+quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
+      cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -o $@ $<
+
+$(obj)/%.ll: $(src)/%.c FORCE
+	$(call if_changed_dep,cc_ll_c)
+
+quiet_cmd_as_ll_S = CPP $(quiet_modtag) $@
+      cmd_as_ll_S = $(CPP) $(a_flags)   -o $@ $<
+
+$(obj)/%.ll: $(src)/%.S FORCE
+	$(call if_changed_dep,as_ll_S)
+
 # C (.c) files
 # The C file is compiled and updated dependency information is generated.
 # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
-- 
2.0.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] kbuild: add support to generate LLVM bitcode files
  2014-07-23 11:56         ` [PATCH v2] " Vinícius Tinti
@ 2014-07-23 12:00           ` Tinti
  2014-09-11 23:13             ` [PATCH v3] " Vinícius Tinti
  0 siblings, 1 reply; 9+ messages in thread
From: Tinti @ 2014-07-23 12:00 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Michal Marek, Renato Golin, linux-kbuild, linux-kernel, Behan Webster

On Wed, Jul 23, 2014 at 8:56 AM, Vinícius Tinti <viniciustinti@gmail.com> wrote:
> Allows kbuild to generate LLVM bitcode files with the .ll extension.
>
>   # from c code
>   CC=clang make kernel/pid.ll
>
>   # from asm code
>   CC=clang make arch/x86/kernel/preempt.ll
>
> Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
> Signed-off-by: Behan Webster <behanw@converseincode.com>
> ---
>  .gitignore             |  1 +
>  Makefile               |  6 ++++++
>  scripts/Makefile.build | 14 ++++++++++++++
>  3 files changed, 21 insertions(+)
>
> diff --git a/.gitignore b/.gitignore
> index f4c0b09..c5a7656 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -32,6 +32,7 @@
>  *.lzo
>  *.patch
>  *.gcno
> +*.ll
>  modules.builtin
>  Module.symvers
>
> diff --git a/Makefile b/Makefile
> index 6b27741..7826c33 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1213,6 +1213,8 @@ help:
>         @echo  '                    (default: $$(INSTALL_MOD_PATH)/lib/firmware)'
>         @echo  '  dir/            - Build all files in dir and below'
>         @echo  '  dir/file.[oisS] - Build specified target only'
> +       @echo  '  dir/file.ll     - Build the LLVM bitcode file'
> +       @echo  '                    (requires a compiler support for LLVM bitcode generation)'
>         @echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
>         @echo  '                    (requires a recent binutils and recent build (System.map))'
>         @echo  '  dir/file.ko     - Build module including final link'
> @@ -1483,6 +1485,10 @@ endif
>         $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
>  %.symtypes: %.c prepare scripts FORCE
>         $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
> +%.ll: %.c prepare scripts FORCE
> +       $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
> +%.ll: %.S prepare scripts FORCE
> +       $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
>
>  # Modules
>  /: prepare scripts FORCE
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index bf3e677..4d97e4f 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -174,6 +174,20 @@ cmd_cc_symtypes_c =                                                         \
>  $(obj)/%.symtypes : $(src)/%.c FORCE
>         $(call cmd,cc_symtypes_c)
>
> +# LLVM bitcode
> +# Generate .ll files from .s and .c
> +quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
> +      cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -o $@ $<
> +
> +$(obj)/%.ll: $(src)/%.c FORCE
> +       $(call if_changed_dep,cc_ll_c)
> +
> +quiet_cmd_as_ll_S = CPP $(quiet_modtag) $@
> +      cmd_as_ll_S = $(CPP) $(a_flags)   -o $@ $<
> +
> +$(obj)/%.ll: $(src)/%.S FORCE
> +       $(call if_changed_dep,as_ll_S)
> +
>  # C (.c) files
>  # The C file is compiled and updated dependency information is generated.
>  # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
> --
> 2.0.1
>

The preempt.s works for me as well the preempt.ll.

The make help now displays about the .ll files but I have not found
other section in Documentation about it. If there is please let me know.
I have also added the *.ll in .gitignore.

Regards

-- 
Simplicity is the ultimate sophistication

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3] kbuild: add support to generate LLVM bitcode files
  2014-07-23 12:00           ` Tinti
@ 2014-09-11 23:13             ` Vinícius Tinti
  0 siblings, 0 replies; 9+ messages in thread
From: Vinícius Tinti @ 2014-09-11 23:13 UTC (permalink / raw)
  To: Michal Marek, Andrew Morton, Behan Webster, Zhao Gang,
	Borislav Petkov, Andi Kleen
  Cc: linux-kernel, linux-kbuild, Vinícius Tinti

Allows kbuild to generate LLVM bitcode files using '.ll' suffix.

  # from c code
  CC=clang make kernel/pid.ll

  # from asm code
  CC=clang make arch/x86/kernel/preempt.ll

Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
Signed-off-by: Behan Webster <behanw@converseincode.com>
---
 .gitignore             |  1 +
 Makefile               |  6 ++++++
 scripts/Makefile.build | 14 ++++++++++++++
 3 files changed, 21 insertions(+)

diff --git a/.gitignore b/.gitignore
index e213b27..823b9d6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,7 @@
 *.lzo
 *.patch
 *.gcno
+*.ll
 modules.builtin
 Module.symvers
 *.dwo
diff --git a/Makefile b/Makefile
index 1a60bdd..cd4a120 100644
--- a/Makefile
+++ b/Makefile
@@ -1250,6 +1250,8 @@ help:
 	@echo  '                    (default: $$(INSTALL_MOD_PATH)/lib/firmware)'
 	@echo  '  dir/            - Build all files in dir and below'
 	@echo  '  dir/file.[oisS] - Build specified target only'
+	@echo  '  dir/file.ll     - Build the LLVM bitcode file'
+	@echo  '                    (requires compiler support for LLVM bitcode generation)'
 	@echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
 	@echo  '                    (requires a recent binutils and recent build (System.map))'
 	@echo  '  dir/file.ko     - Build module including final link'
@@ -1526,6 +1528,10 @@ endif
 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 %.symtypes: %.c prepare scripts FORCE
 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.ll: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.ll: %.S prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 
 # Modules
 /: prepare scripts FORCE
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index bf3e677..4d97e4f 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -174,6 +174,20 @@ cmd_cc_symtypes_c =                                                         \
 $(obj)/%.symtypes : $(src)/%.c FORCE
 	$(call cmd,cc_symtypes_c)
 
+# LLVM bitcode
+# Generate .ll files from .s and .c
+quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
+      cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -o $@ $<
+
+$(obj)/%.ll: $(src)/%.c FORCE
+	$(call if_changed_dep,cc_ll_c)
+
+quiet_cmd_as_ll_S = CPP $(quiet_modtag) $@
+      cmd_as_ll_S = $(CPP) $(a_flags)   -o $@ $<
+
+$(obj)/%.ll: $(src)/%.S FORCE
+	$(call if_changed_dep,as_ll_S)
+
 # C (.c) files
 # The C file is compiled and updated dependency information is generated.
 # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-09-11 23:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-19  1:34 [PATCH] kbuild: add support to generate LLVM bitcode files Vinícius Tinti
2014-07-20 10:02 ` Sam Ravnborg
2014-07-20 21:04   ` Sam Ravnborg
2014-07-20 21:30     ` Sam Ravnborg
2014-07-21 22:42       ` Tinti
2014-07-22  0:35         ` Sam Ravnborg
2014-07-23 11:56         ` [PATCH v2] " Vinícius Tinti
2014-07-23 12:00           ` Tinti
2014-09-11 23:13             ` [PATCH v3] " Vinícius Tinti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).