source: vendor/current/.ycm_extra_conf.py

Last change on this file was 988, checked in by Silvan Scherrer, 9 years ago

Samba Server: update vendor to version 4.4.3

File size: 9.6 KB
Line 
1# This file is NOT licensed under the GPLv3, which is the license for the rest
2# of Samba.
3#
4# Here's the license text for this file:
5#
6# This is free and unencumbered software released into the public domain.
7#
8# Anyone is free to copy, modify, publish, use, compile, sell, or
9# distribute this software, either in source code form or as a compiled
10# binary, for any purpose, commercial or non-commercial, and by any
11# means.
12#
13# In jurisdictions that recognize copyright laws, the author or authors
14# of this software dedicate any and all copyright interest in the
15# software to the public domain. We make this dedication for the benefit
16# of the public at large and to the detriment of our heirs and
17# successors. We intend this dedication to be an overt act of
18# relinquishment in perpetuity of all present and future rights to this
19# software under copyright law.
20#
21# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27# OTHER DEALINGS IN THE SOFTWARE.
28#
29# For more information, please refer to <http://unlicense.org/>
30
31import os
32import ycm_core
33
34flags = [
35'-Wall',
36'-Wextra',
37'-Werror',
38'-Wno-unused-parameter',
39# This is a C project
40'-x', 'c',
41# Defines
42'-DCONFIG_H_IS_FROM_SAMBA=1',
43'-DHAVE_CONFIG_H=1',
44'-D_SAMBA_BUILD_=4',
45'-DAD_DC_BUILD_IS_ENABLED=1',
46'-D_GNU_SOURCE=1',
47'-DHAVE_IPV6=1',
48# Includes
49'-I.',
50'-Iauth',
51'-Iauth/credentials',
52'-Iauth/gensec',
53'-Iauth/kerberos',
54'-Iauth/ntlmssp',
55'-Idfs_server',
56'-Idynconfig',
57'-Iinclude',
58'-Iinclude/public',
59'-Ilib',
60'-Ilib/addns',
61'-Ilib/async_req',
62'-Ilib/ccan',
63'-Ilib/compression',
64'-Ilib/crypto',
65'-Ilib/dbwrap',
66'-Ilib/krb5_wrap',
67'-Ilib/ldb',
68'-Ilib/ldb-samba',
69'-Ilib/ldb/include',
70'-Ilib/param',
71'-Ilib/replace',
72'-Ilib/smbconf',
73'-Ilib/socket',
74'-Ilib/talloc',
75'-Ilib/tdb',
76'-Ilib/tdb/include',
77'-Ilib/tevent',
78'-Ilib/tsocket',
79'-Ilib/util/charset',
80'-Ilibcli/auth',
81'-Ilibcli/cldap',
82'-Ilibcli/dns',
83'-Ilibcli/drsuapi',
84'-Ilibcli/ldap',
85'-Ilibcli/lsarpc',
86'-Ilibcli/named_pipe_auth',
87'-Ilibcli/nbt',
88'-Ilibcli/netlogon',
89'-Ilibcli/registry',
90'-Ilibcli/security',
91'-Ilibcli/smb',
92'-Ilibcli/util',
93'-Ilibds/common',
94'-Ilibrpc',
95'-Insswitch',
96'-Insswitch/libwbclient',
97'-Isource3',
98'-Isource3/auth',
99'-Isource3/include',
100'-Isource3/lib',
101'-Isource3/lib/asys',
102'-Isource3/lib/pthreadpool',
103'-Isource3/librpc',
104'-Isource3/modules',
105'-Isource3/passdb',
106'-Isource3/rpc_server',
107'-Isource4',
108'-Isource4/auth',
109'-Isource4/auth/gensec',
110'-Isource4/auth/kerberos',
111'-Isource4/dsdb',
112'-Isource4/include',
113'-Isource4/lib',
114'-Isource4/lib/events',
115'-Isource4/lib/socket',
116'-Isource4/lib/stream',
117'-Isource4/lib/tls',
118'-Isource4/libcli',
119'-Isource4/libcli/ldap',
120'-Isource4/param',
121'-Isource4/winbind',
122# Generated headers
123'-Ibin/default',
124'-Ibin/default/auth/credentials',
125'-Ibin/default/auth/gensec',
126'-Ibin/default/file_server',
127'-Ibin/default/include',
128'-Ibin/default/include/public',
129'-Ibin/default/include/public/core',
130'-Ibin/default/include/public/gen_ndr',
131'-Ibin/default/include/public/ndr',
132'-Ibin/default/include/public/samba',
133'-Ibin/default/include/public/util',
134'-Ibin/default/libcli/nbt',
135'-Ibin/default/lib/crypto',
136'-Ibin/default/lib/ldb/include',
137'-Ibin/default/lib/ldb-samba',
138'-Ibin/default/lib/param',
139'-Ibin/default/librpc/gen_ndr',
140'-Ibin/default/lib/util',
141'-Ibin/default/source3/include',
142'-Ibin/default/source3/librpc/gen_ndr',
143'-Ibin/default/source3/param',
144'-Ibin/default/source4',
145'-Ibin/default/source4/auth',
146'-Ibin/default/source4/auth/gensec',
147'-Ibin/default/source4/auth/kerberos',
148'-Ibin/default/source4/auth/ntlm',
149'-Ibin/default/source4/cldap_server',
150'-Ibin/default/source4/dsdb/common',
151'-Ibin/default/source4/dsdb/kcc',
152'-Ibin/default/source4/dsdb/repl',
153'-Ibin/default/source4/dsdb/samdb',
154'-Ibin/default/source4/dsdb/samdb/ldb_modules',
155'-Ibin/default/source4/dsdb/schema',
156'-Ibin/default/source4/heimdal/kdc',
157'-Ibin/default/source4/heimdal/lib/asn1',
158'-Ibin/default/source4/heimdal/lib/gssapi',
159'-Ibin/default/source4/heimdal/lib/gssapi/krb5',
160'-Ibin/default/source4/heimdal/lib/gssapi/spnego',
161'-Ibin/default/source4/heimdal/lib/hdb',
162'-Ibin/default/source4/heimdal/lib/hx509',
163'-Ibin/default/source4/heimdal/lib/krb5',
164'-Ibin/default/source4/heimdal/lib/ntlm',
165'-Ibin/default/source4/heimdal/lib/wind',
166'-Ibin/default/source4/ldap_server',
167'-Ibin/default/source4/libcli',
168'-Ibin/default/source4/libcli/composite',
169'-Ibin/default/source4/libcli/ldap',
170'-Ibin/default/source4/libcli/rap',
171'-Ibin/default/source4/libcli/raw',
172'-Ibin/default/source4/libcli/resolve',
173'-Ibin/default/source4/libcli/smb2',
174'-Ibin/default/source4/libcli/util',
175'-Ibin/default/source4/libcli/wrepl',
176'-Ibin/default/source4/lib/cmdline',
177'-Ibin/default/source4/libnet',
178'-Ibin/default/source4/lib/registry',
179'-Ibin/default/source4/lib/registry/tests',
180'-Ibin/default/source4/lib/registry/tools',
181'-Ibin/default/source4/librpc/gen_ndr',
182'-Ibin/default/source4/librpc/rpc',
183'-Ibin/default/source4/lib/socket',
184'-Ibin/default/source4/nbt_server',
185'-Ibin/default/source4/nbt_server/dgram',
186'-Ibin/default/source4/nbt_server/wins',
187'-Ibin/default/source4/ntptr',
188'-Ibin/default/source4/ntvfs',
189'-Ibin/default/source4/ntvfs/cifs_posix_cli',
190'-Ibin/default/source4/ntvfs/common',
191'-Ibin/default/source4/ntvfs/ipc',
192'-Ibin/default/source4/ntvfs/posix',
193'-Ibin/default/source4/ntvfs/simple',
194'-Ibin/default/source4/rpc_server',
195'-Ibin/default/source4/rpc_server/backupkey',
196'-Ibin/default/source4/rpc_server/common',
197'-Ibin/default/source4/rpc_server/lsa',
198'-Ibin/default/source4/rpc_server/samr',
199'-Ibin/default/source4/rpc_server/srvsvc',
200'-Ibin/default/source4/smbd',
201'-Ibin/default/source4/smb_server',
202'-Ibin/default/source4/smb_server/smb',
203'-Ibin/default/source4/smb_server/smb2',
204'-Ibin/default/source4/torture/auth',
205'-Ibin/default/source4/torture/basic',
206'-Ibin/default/source4/torture/dfs',
207'-Ibin/default/source4/torture/drs',
208'-Ibin/default/source4/torture/ldap',
209'-Ibin/default/source4/torture/libnet',
210'-Ibin/default/source4/torture/libnetapi',
211'-Ibin/default/source4/torture/libsmbclient',
212'-Ibin/default/source4/torture/local',
213'-Ibin/default/source4/torture/nbench',
214'-Ibin/default/source4/torture/nbt',
215'-Ibin/default/source4/torture/ndr',
216'-Ibin/default/source4/torture/ntp',
217'-Ibin/default/source4/torture/rap',
218'-Ibin/default/source4/torture/raw',
219'-Ibin/default/source4/torture/rpc',
220'-Ibin/default/source4/torture/smb2',
221'-Ibin/default/source4/torture/unix',
222'-Ibin/default/source4/torture/winbind',
223'-Ibin/default/source4/winbind',
224'-Ibin/default/source4/wrepl_server',
225'-Ibin/default/testsuite/headers',
226]
227
228# Set this to the absolute path to the folder (NOT the file!) containing the
229# compile_commands.json file to use that instead of 'flags'. See here for
230# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
231#
232# Most projects will NOT need to set this to anything; you can just change the
233# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
234compilation_database_folder = ''
235
236if os.path.exists( compilation_database_folder ):
237 database = ycm_core.CompilationDatabase( compilation_database_folder )
238else:
239 database = None
240
241SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
242
243def DirectoryOfThisScript():
244 return os.path.dirname( os.path.abspath( __file__ ) )
245
246
247def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
248 if not working_directory:
249 return list( flags )
250 new_flags = []
251 make_next_absolute = False
252 path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
253 for flag in flags:
254 new_flag = flag
255
256 if make_next_absolute:
257 make_next_absolute = False
258 if not flag.startswith( '/' ):
259 new_flag = os.path.join( working_directory, flag )
260
261 for path_flag in path_flags:
262 if flag == path_flag:
263 make_next_absolute = True
264 break
265
266 if flag.startswith( path_flag ):
267 path = flag[ len( path_flag ): ]
268 new_flag = path_flag + os.path.join( working_directory, path )
269 break
270
271 if new_flag:
272 new_flags.append( new_flag )
273 return new_flags
274
275
276def IsHeaderFile( filename ):
277 extension = os.path.splitext( filename )[ 1 ]
278 return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
279
280
281def GetCompilationInfoForFile( filename ):
282 # The compilation_commands.json file generated by CMake does not have entries
283 # for header files. So we do our best by asking the db for flags for a
284 # corresponding source file, if any. If one exists, the flags for that file
285 # should be good enough.
286 if IsHeaderFile( filename ):
287 basename = os.path.splitext( filename )[ 0 ]
288 for extension in SOURCE_EXTENSIONS:
289 replacement_file = basename + extension
290 if os.path.exists( replacement_file ):
291 compilation_info = database.GetCompilationInfoForFile(
292 replacement_file )
293 if compilation_info.compiler_flags_:
294 return compilation_info
295 return None
296 return database.GetCompilationInfoForFile( filename )
297
298
299def FlagsForFile( filename, **kwargs ):
300 if database:
301 # Bear in mind that compilation_info.compiler_flags_ does NOT return a
302 # python list, but a "list-like" StringVec object
303 compilation_info = GetCompilationInfoForFile( filename )
304 if not compilation_info:
305 return None
306
307 final_flags = MakeRelativePathsInFlagsAbsolute(
308 compilation_info.compiler_flags_,
309 compilation_info.compiler_working_dir_ )
310 else:
311 relative_to = DirectoryOfThisScript()
312 final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
313
314 return {
315 'flags': final_flags,
316 'do_cache': True
317 }
Note: See TracBrowser for help on using the repository browser.