gnu: clang: Add 'compiler-cpu-architectures' property.
* gnu/packages/llvm.scm (clang-from-llvm): Add #:properties and honor it. (clang-properties): New procedures. (make-clang-toolchain): Set 'properties' field.
This commit is contained in:
		
							parent
							
								
									2576e2019d
								
							
						
					
					
						commit
						0a767f02d4
					
				
					 1 changed files with 70 additions and 1 deletions
				
			
		|  | @ -155,7 +155,9 @@ compiler.  In LLVM this library is called \"compiler-rt\".") | ||||||
|     (supported-systems (delete "mips64el-linux" %supported-systems)))) |     (supported-systems (delete "mips64el-linux" %supported-systems)))) | ||||||
| 
 | 
 | ||||||
| (define* (clang-from-llvm llvm clang-runtime hash | (define* (clang-from-llvm llvm clang-runtime hash | ||||||
|                           #:key (patches '()) tools-extra) |                           #:key (patches '()) tools-extra | ||||||
|  |                           (properties | ||||||
|  |                            (clang-properties (package-version llvm)))) | ||||||
|   "Produce Clang with dependencies on LLVM and CLANG-RUNTIME, and applying the |   "Produce Clang with dependencies on LLVM and CLANG-RUNTIME, and applying the | ||||||
| given PATCHES.  When TOOLS-EXTRA is given, it must point to the | given PATCHES.  When TOOLS-EXTRA is given, it must point to the | ||||||
| 'clang-tools-extra' tarball, which contains code for 'clang-tidy', 'pp-trace', | 'clang-tools-extra' tarball, which contains code for 'clang-tidy', 'pp-trace', | ||||||
|  | @ -426,10 +428,76 @@ given PATCHES.  When TOOLS-EXTRA is given, it must point to the | ||||||
| Objective-C++ programming languages.  It uses LLVM as its back end.  The Clang | Objective-C++ programming languages.  It uses LLVM as its back end.  The Clang | ||||||
| project includes the Clang front end, the Clang static analyzer, and several | project includes the Clang front end, the Clang static analyzer, and several | ||||||
| code analysis tools.") | code analysis tools.") | ||||||
|  |     (properties properties) | ||||||
|     (license (if (version>=? version "9.0") |     (license (if (version>=? version "9.0") | ||||||
|                  license:asl2.0         ;with LLVM exceptions |                  license:asl2.0         ;with LLVM exceptions | ||||||
|                  license:ncsa)))) |                  license:ncsa)))) | ||||||
| 
 | 
 | ||||||
|  | (define (clang-properties version) | ||||||
|  |   "Return package properties for Clang VERSION." | ||||||
|  |   `((compiler-cpu-architectures | ||||||
|  |      ("x86_64" | ||||||
|  |       ;; This list was obtained by running: | ||||||
|  |       ;; | ||||||
|  |       ;;   guix shell clang -- llc -march=x86-64 -mattr=help | ||||||
|  |       ;; | ||||||
|  |       ;; filtered from uninteresting entries such as "i686" and "pentium". | ||||||
|  |       ,@(if (version>=? version "10.0")           ;TODO: refine | ||||||
|  |             '("atom" | ||||||
|  |               "barcelona" | ||||||
|  |               "bdver1" | ||||||
|  |               "bdver2" | ||||||
|  |               "bdver3" | ||||||
|  |               "bdver4" | ||||||
|  |               "bonnell" | ||||||
|  |               "broadwell" | ||||||
|  |               "btver1" | ||||||
|  |               "btver2" | ||||||
|  |               "c3" | ||||||
|  |               "c3-2" | ||||||
|  |               "cannonlake" | ||||||
|  |               "cascadelake" | ||||||
|  |               "cooperlake" | ||||||
|  |               "core-avx-i" | ||||||
|  |               "core-avx2" | ||||||
|  |               "core2" | ||||||
|  |               "corei7" | ||||||
|  |               "corei7-avx" | ||||||
|  |               "generic" | ||||||
|  |               "geode" | ||||||
|  |               "goldmont" | ||||||
|  |               "goldmont-plus" | ||||||
|  |               "haswell" | ||||||
|  |               "icelake-client" | ||||||
|  |               "icelake-server" | ||||||
|  |               "ivybridge" | ||||||
|  |               "k8" | ||||||
|  |               "k8-sse3" | ||||||
|  |               "knl" | ||||||
|  |               "knm" | ||||||
|  |               "lakemont" | ||||||
|  |               "nehalem" | ||||||
|  |               "nocona" | ||||||
|  |               "opteron" | ||||||
|  |               "opteron-sse3" | ||||||
|  |               "sandybridge" | ||||||
|  |               "silvermont" | ||||||
|  |               "skx" | ||||||
|  |               "skylake" | ||||||
|  |               "skylake-avx512" | ||||||
|  |               "slm" | ||||||
|  |               "tigerlake" | ||||||
|  |               "tremont" | ||||||
|  |               "westmere" | ||||||
|  |               "x86-64" | ||||||
|  |               "x86-64-v2" | ||||||
|  |               "x86-64-v3" | ||||||
|  |               "x86-64-v4" | ||||||
|  |               "znver1" | ||||||
|  |               "znver2" | ||||||
|  |               "znver3") | ||||||
|  |             '()))))) | ||||||
|  | 
 | ||||||
| (define (make-clang-toolchain clang) | (define (make-clang-toolchain clang) | ||||||
|   (package |   (package | ||||||
|     (name (string-append (package-name clang) "-toolchain")) |     (name (string-append (package-name clang) "-toolchain")) | ||||||
|  | @ -471,6 +539,7 @@ code analysis tools.") | ||||||
|     (search-paths (package-search-paths clang)) |     (search-paths (package-search-paths clang)) | ||||||
| 
 | 
 | ||||||
|     (license (package-license clang)) |     (license (package-license clang)) | ||||||
|  |     (properties (package-properties clang))  ;for 'compiler-cpu-architectures' | ||||||
|     (home-page "https://clang.llvm.org") |     (home-page "https://clang.llvm.org") | ||||||
|     (synopsis "Complete Clang toolchain for C/C++ development") |     (synopsis "Complete Clang toolchain for C/C++ development") | ||||||
|     (description "This package provides a complete Clang toolchain for C/C++ |     (description "This package provides a complete Clang toolchain for C/C++ | ||||||
|  |  | ||||||
		Reference in a new issue