Skip to contentSkip to conversation

isl: new package

PATCH New Steve Thomas 3 participants 7 messages May 19, 2014 – Jun 9, 2014 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH v6 1/3 isl: new package

isl is a library for manipulating sets and relations of integer points bounded by linear constraints.

isl is needed for the optional graphite optimisations that are supported by gcc since version 4.5. Therefore this package is required for the toolchain to support graphite.

Graphite optimisations primarily involve loop blocking flattening and interchage so are probably of mimimal use in an embedded system where small sizes are favoured.

---
Changes v6 -> v7:
- no change

Changes v4 -> v5:
- no change

Changes v3 -> v4:
- removing the parts not needed

Changes v2 -> v3:
- removed packages from Config.in
- disabled target builds
- added empty line to commit messages
- removed isl patch as different version used

Changes v1 -> v2:
- added more lucid and verbose description in commit messages
- fixed the url and removed the sources files
- add complete graphite as three commits yet a single patch

---
 package/isl/isl.mk | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 package/isl/isl.mk
package/isl/isl.mk new file +14 -0
new file mode 100644
index 0000000..68de1aa
@@ -0,0 +1,14 @@
+################################################################################
+#
+# isl
+#
+################################################################################
+
+ISL_VERSION = 0.11.1
+ISL_SITE = http://isl.gforge.inria.fr/
+ISL_LICENSE = MIT
+ISL_LICENSE_FILES = LICENSE
+ISL_INSTALL_STAGING = YES
+ISL_DEPENDENCIES = gmp
+
+$(eval $(host-autotools-package))
Signature · 1 line
1.9.3
#2 lore raw

PATCH v6 1/3 isl: new package

Dear Steve Thomas,

Quoted 7 lines · Steve Thomas

isl is a library for manipulating sets and relations of integer points bounded by linear constraints.

isl is needed for the optional graphite optimisations that are supported by gcc since version 4.5. Therefore this package is required for the toolchain to support graphite.

Quoted 5 lines

Graphite optimisations primarily involve loop blocking flattening and interchage so are probably of mimimal use in an embedded system where small sizes are favoured.

I've committed your patch, after making a few changes (see below).

Quoted 1 line

+ISL_VERSION = 0.11.1

I've updated to 0.12.2 and used the .bz2 tarball. Updating to 0.13 was not possible due to incompatibility with cloog.

package/isl/isl.mk line 12

Quoted 5 lines
package/isl/isl.mk new file +5 -0
+ISL_SITE = http://isl.gforge.inria.fr/
+ISL_LICENSE = MIT
+ISL_LICENSE_FILES = LICENSE
+ISL_INSTALL_STAGING = YES
+ISL_DEPENDENCIES = gmp

I had to use ISL_LIBTOOL_PATCH = NO to disable applying our Buildroot libtool patch, which wasn't applying properly. It was anyway unnecessary since it's a host only package.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH v6 2/3 cloog: new package

In reply to a message not in the archive

CLooG is a free software and library to generate code for scanning Z-polyhedra.

cloog is needed for the optional graphite optimisations that are supported by gcc since version 4.5. Therefore this package is required for the toolchain to support graphite.

Graphite optimisations primarily involve loop blocking flattening and interchage so are probably of mimimal use in an embedded system where small sizes are favoured.

cloog depends on isl.

---
Changes v6 -> v7:
- no change

Changes v4 -> v5:
- no change

Changes v3 -> v4:
- removing the parts not needed

Changes v2 -> v3:
- removed packages from Config.in
- disabled target builds
- added empty line to commit messages
- removed isl patch as different version used

Changes v1 -> v2:
- added more lucid and verbose description in commit messages
- fixed the url and removed the sources files
- add complete graphite as three commits yet a single patch

---
 package/cloog/cloog.mk | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 package/cloog/cloog.mk
package/cloog/cloog.mk new file +16 -0
new file mode 100644
index 0000000..9308e8f
@@ -0,0 +1,16 @@
+################################################################################
+#
+# cloog
+#
+################################################################################
+
+CLOOG_VERSION = 0.18.1
+CLOOG_SITE = http://www.bastoul.net/cloog/pages/download/
+CLOOG_INSTALL_STAGING = YES
+CLOOG_LICENSE = LGPLv2.1
+CLOOG_LICENSE_FILES = LICENSE
+CLOOG_DEPENDENCIES = gmp isl
+
+HOST_CLOOG_CONF_OPT = --with-isl=system --with-polylib=no
+
+$(eval $(host-autotools-package))
Signature · 1 line
1.9.3
#4 lore raw

PATCH v6 2/3 cloog: new package

Dear Steve Thomas,

Quoted 7 lines · Steve Thomas

CLooG is a free software and library to generate code for scanning Z-polyhedra.

cloog is needed for the optional graphite optimisations that are supported by gcc since version 4.5. Therefore this package is required for the toolchain to support graphite.

Quoted 7 lines

Graphite optimisations primarily involve loop blocking flattening and interchage so are probably of mimimal use in an embedded system where small sizes are favoured.

cloog depends on isl.

Patch applied, with a few changes, see below.

Quoted 1 line

+CLOOG_VERSION = 0.18.1

Bumped to 0.18.2. I had to add a patch adding missing CMake-related files.

package/cloog/cloog.mk line 9

Quoted 2 lines
package/cloog/cloog.mk new file +2 -0
+CLOOG_SITE = http://www.bastoul.net/cloog/pages/download/
+CLOOG_INSTALL_STAGING = YES

Dropped, it's a host-only package.

Quoted 1 line

+CLOOG_LICENSE = LGPLv2.1

License is LGPLv2.1+

Quoted 1 line

+CLOOG_LICENSE_FILES = LICENSE

This file did not exist in 0.18.2.

package/cloog/cloog.mk line 16

Quoted 5 lines
package/cloog/cloog.mk new file +5 -0
+CLOOG_DEPENDENCIES = gmp isl
+
+HOST_CLOOG_CONF_OPT = --with-isl=system --with-polylib=no
+
+$(eval $(host-autotools-package))

Like for isl, I also had to disable the libtool patch.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH v6 3/3 Add an BR2_GCC_ENABLE_GRAPHITE flag for the buildroot toolchain

In reply to a message not in the archive

The gcc graphite optimisations such as loop-interchange, blocking and loop-flattening, also known as graphite are an optional feature of gcc that is very well supported since about gcc version 4.5.

This patch adds support for graphite for the toolchain as an optional flag for versions 4.8 onwards as an optional flag, that is disabled by default.

---
Changes v5 -> v6:
- removing supported versions (as per gentoo) should be 4.8 onwards (MORIN)
Changes v4 -> v5:
- fixed email address
- removed the cloog version check
- added note about the isl version check

Changes v3 -> v4:
- no changes apart from incorrect email.

Changes v2 -> v3:
- removed packages from Config.in
- disabled target builds
- added empty line to commit messages
- removed isl patch as different version used

Changes v1 -> v2:
- added more lucid and verbose description in commit messages
- fixed the url and removed the sources files
- add complete graphite as three commits yet a single patch

---
 package/gcc/Config.in.host |  6 ++++++
 package/gcc/gcc.mk         | 10 ++++++++++
 2 files changed, 16 insertions(+)
package/gcc/Config.in.host +6 -0
index ca991da..d2fecda 100644
@@ -3,6 +3,9 @@ comment "GCC Options"
 config BR2_GCC_NEEDS_MPC
 	bool
 
+config BR2_GCC_SUPPORTS_GRAPHITE
+   bool
+
 choice
 	prompt "GCC compiler Version"
 	default BR2_GCC_VERSION_4_4_X if BR2_sparc_sparchfleon || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleon || BR2_sparc_sparcsfleonv8
@@ -52,6 +55,7 @@ choice
 	config BR2_GCC_VERSION_4_8_X
 		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
 		select BR2_GCC_NEEDS_MPC
+		select BR2_GCC_SUPPORTS_GRAPHITE
 		bool "gcc 4.8.x"
 
 	config BR2_GCC_VERSION_4_8_ARC
@@ -62,6 +66,7 @@ choice
 	config BR2_GCC_VERSION_4_9_X
 		depends on !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
 		select BR2_GCC_NEEDS_MPC
+		select BR2_GCC_SUPPORTS_GRAPHITE
 		bool "gcc 4.9.x"
 
 	config BR2_GCC_VERSION_4_9_MICROBLAZE
@@ -72,6 +77,7 @@ choice
 	config BR2_GCC_VERSION_SNAP
 		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
 		select BR2_GCC_NEEDS_MPC
+		select BR2_GCC_SUPPORTS_GRAPHITE
 		bool "gcc snapshot"
 endchoice
 
package/gcc/gcc.mk +10 -0
index 32219cc..8a35dbd 100644
@@ -156,6 +156,16 @@ HOST_GCC_COMMON_DEPENDENCIES += host-mpc
 HOST_GCC_COMMON_CONF_OPT += --with-mpc=$(HOST_DIR)/usr
 endif
 
+ifeq ($(BR2_GCC_ENABLE_GRAPHITE),y)
+HOST_GCC_COMMON_DEPENDENCIES += \
+   host-isl \
+   host-cloog
+
+#This is needed as with-isl doesn't work
+HOST_GCC_COMMON_CONF_OPT += \
+   --disable-isl-version-check
+endif
+
 ifneq ($(BR2_arc)$(BR2_GCC_VERSION_SNAP),)
 HOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison
 endif
Signature · 1 line
1.9.3
#6 lore raw

PATCH v6 3/3 Add an BR2_GCC_ENABLE_GRAPHITE flag for the buildroot toolchain

package/gcc/gcc.mk HOST_GCC_COMMON_DEPENDENCIES += host-mpc · line 167

Quoted 9 lines · Steve Thomas
package/gcc/gcc.mk +9 -0
+ifeq ($(BR2_GCC_ENABLE_GRAPHITE),y)
+HOST_GCC_COMMON_DEPENDENCIES += \
+   host-isl \
+   host-cloog
+
+#This is needed as with-isl doesn't work
+HOST_GCC_COMMON_CONF_OPT += \
+   --disable-isl-version-check
+endif

Hi.
Hidden option?
How about adding something like:

config BR2_GCC_ENABLE_GRAPHITE
bool "Enable graphite loop optimizations"
depends on BR2_GCC_SUPPORTS_GRAPHITE
help
Enable the support for the framework for loop optimizations based on a polyhedral intermediate representation.

...to package/gcc/Config.in.host before BR2_GCC_ENABLE_TLS ? Regards.

#7 lore raw

PATCH v6 3/3 Add an BR2_GCC_ENABLE_GRAPHITE flag for the buildroot toolchain

In reply to Steve Thomas

Dear Steve Thomas,

Quoted 9 lines · Steve Thomas

The gcc graphite optimisations such as loop-interchange, blocking and loop-flattening, also known as graphite are an optional feature of gcc that is very well supported since about gcc version 4.5.

This patch adds support for graphite for the toolchain as an optional flag for versions 4.8 onwards as an optional flag, that is disabled by default.

Patch applied, with a few changes, see below.

package/gcc/Config.in.host comment "GCC Options" · line 7

Quoted 2 lines
package/gcc/Config.in.host +2 -0
+config BR2_GCC_SUPPORTS_GRAPHITE
+   bool

Indentation should be one tab.

And of course I've added the BR2_GCC_ENABLE_GRAPHITE option, otherwise your patch wouldn't work.

package/gcc/gcc.mk HOST_GCC_COMMON_DEPENDENCIES += host-mpc · line 162

Quoted 12 lines
package/gcc/gcc.mk +4 -0
index 32219cc..8a35dbd 100644
@@ -156,6 +156,16 @@ HOST_GCC_COMMON_DEPENDENCIES += host-mpc
 HOST_GCC_COMMON_CONF_OPT += --with-mpc=$(HOST_DIR)/usr
 endif
 
+ifeq ($(BR2_GCC_ENABLE_GRAPHITE),y)
+HOST_GCC_COMMON_DEPENDENCIES += \
+   host-isl \
+   host-cloog

Used a single line.

package/gcc/gcc.mk HOST_GCC_COMMON_DEPENDENCIES += host-mpc · line 166

Quoted 4 lines
package/gcc/gcc.mk +4 -0
+
+#This is needed as with-isl doesn't work
+HOST_GCC_COMMON_CONF_OPT += \
+   --disable-isl-version-check

Here, --with-isl and --with-cloog are working perfectly fine, as well as --without-isl and --without-cloog, so I've used them.

Can you test if the latest master works for you?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com