123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- # Copyright (c) 2018 Stefan Seefeld
- #
- # Use, modification and distribution is subject to the Boost Software
- # License Version 1.0. (See accompanying file LICENSE_1_0.txt or
- # http://www.boost.org/LICENSE_1_0.txt)
- # Supports the opencl library
- #
- # After 'using opencl', the following targets are available:
- #
- # /opencl//opencl -- The OpenCL library
- import project ;
- import ac ;
- import errors ;
- import feature ;
- import "class" : new ;
- import targets ;
- import modules ;
- import property-set ;
- header = CL/cl.h ;
- names = OpenCL ;
- library-id = 0 ;
- if --debug-configuration in [ modules.peek : ARGV ]
- {
- .debug = true ;
- }
- # Initializes the opencl library.
- #
- # Options for configuring opencl::
- #
- # <search>
- # The directory containing the OpenCL library.
- # <name>
- # Overrides the default library name.
- # <include>
- # The directory containing the OpenCL headers.
- #
- # Examples::
- #
- # # Find OpenCL in the default system location
- # using opencl ;
- # # Find opencl in /usr/local
- # using opencl : 1.2.7
- # : <include>/usr/local/include <search>/usr/local/lib ;
- #
- rule init ( version ? : # The opencl version (currently ignored)
- options * : # A list of the options to use
- requirements * ) # The requirements for the opencl target
- {
- local caller = [ project.current ] ;
- if ! $(.initialized)
- {
- .initialized = true ;
- project.initialize $(__name__) ;
- .project = [ project.current ] ;
- project opencl ;
- }
- local library-path = [ feature.get-values <search> : $(options) ] ;
- local include-path = [ feature.get-values <include> : $(options) ] ;
- local library-name = [ feature.get-values <name> : $(options) ] ;
- if ! $(library-path) && ! $(include-path) && ! $(library-name)
- {
- is-default = true ;
- }
- condition = [ property-set.create $(requirements) ] ;
- condition = [ property-set.create [ $(condition).base ] ] ;
- if $(.configured.$(condition))
- {
- if $(is-default)
- {
- if $(.debug)
- {
- ECHO "notice: [opencl] opencl is already configured" ;
- }
- }
- else
- {
- errors.user-error "opencl is already configured" ;
- }
- return ;
- }
- else
- {
- if $(.debug)
- {
- ECHO "notice: [opencl] Using pre-installed library" ;
- if $(condition)
- {
- ECHO "notice: [opencl] Condition" [ $(condition).raw ] ;
- }
- }
- local mt = [ new ac-library opencl : $(.project) : $(condition) :
- $(include-path) : $(library-path) : $(library-name) ] ;
- $(mt).set-header $(header) ;
- $(mt).set-default-names $(names) ;
- targets.main-target-alternative $(mt) ;
- }
- .configured.$(condition) = true ;
- }
|