1require File.join( File.dirname(__FILE__), 'lib_finder.rb' )
2
3module RestinioPCREFind
4
5  def self.find_libs( libs )
6
7    lib_dirs = ENV[ "LIB" ]
8    if lib_dirs
9
10      dirs_to_look = lib_dirs.split( ';' ).select{|p| p != "" }
11
12      dir = dirs_to_look.find_index{|d| RestinioLibFinder.all_files_exist( d, libs ) }
13    end
14
15    if dir
16      libs
17    else
18      []
19    end
20  end
21
22  def self.get_libs_vc
23    find_libs( [ 'pcre.lib' ] )
24  end
25
26  def self.get_libs_linux
27    [ 'pcre' ]
28  end
29
30  def self.get_libs_names_linux
31    [ 'libpcre.a' ]
32  end
33
34  def self.get_libs_mingw
35    [ 'pcre' ]
36  end
37
38  def self.get_libs_names_mingw
39    [ 'libpcre.a' ]
40  end
41
42  def self.get_libs( toolset )
43    if 'mswin' == toolset.tag( 'target_os' )
44        if 'vc' == toolset.name
45          get_libs_vc
46        elsif 'gcc' == toolset.name
47          get_libs_mingw
48        end
49    else
50      get_libs_linux
51    end
52  end
53
54  def self.get_libs_names( toolset )
55    if 'mswin' == toolset.tag( 'target_os' )
56        if 'vc' == toolset.name
57          get_libs_vc
58        elsif 'gcc' == toolset.name
59          get_libs_names_mingw
60        end
61    else
62      get_libs_names_linux
63    end
64  end
65
66  def self.try_to_get_custom_file
67    RestinioLibFinder.try_to_get_custom_file( 'PCRE_PRJ_FILE', 'local-pcre.rb' )
68  end
69
70
71  def self.has_pcre( toolset )
72    custom_prj = try_to_get_custom_file
73    if File.exist?(custom_prj)
74      true
75    else
76      libraries = get_libs_names( toolset )
77      if !libraries.empty?
78        RestinioLibFinder.check_libs_available( toolset, libraries )
79      else
80        false
81      end
82    end
83  end
84
85
86end #module RestinioPCREFind
87