snipt

Ctrl+h for KB shortcuts

Python

Python / YouCompleteMe with C/CPP differentiation (WICED include paths)

#!/usr/bin/env python
#
# Copyright (C) 2014  Google Inc.
#
# This file is part of YouCompleteMe.
#
# YouCompleteMe is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# YouCompleteMe is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with YouCompleteMe.  If not, see <http://www.gnu.org/licenses/>.

import os
import ycm_core
import re

# These are the compilation flags that will be used in case there's no
# compilation database set (by default, one is not set).
# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
flags = [
#'-Wall',
'-Wextra',
'-Werror',
'-fexceptions',

# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
# language to use when compiling headers. So it will guess. Badly. So C++
# headers will be compiled as C headers. You don't want that so ALWAYS specify
# a "-std=<something>".
# For a C project, you would set this to something like 'c99' instead of
# 'c++11'.

## '-std=gnu11',

# ...and the same thing goes for the magic -x option which specifies the
# language that the files to be compiled are written in. This is mostly
# relevant for c++ headers.
# For a C project, you would set this to 'c' instead of 'c++'.

## '-x', 'c',

'-target','arm-none-abi',
'-mthumb',
'-mcpu=cortex-m3',
'-mfloat-abi=soft',


  '-DLINT',
  '-DWICED_VERSION=\"3.3.1\"',
  '-DBUS=\"SDIO\"',
  '-Ibuild/sprinkl_sr301-FreeRTOS-LwIP-EMW3162-SDIO/resources/',
  #'-DPLATFORM=\"EMW3162\"',
  '-DSR301_MOD_ISM43340CF'
  '-DJSMN_PARENT_LINKS',
  '-U__STRICT_ANSI__',
  '-Wcast-align',
  '-I', './tools/ARM_GNU/include/',
  '-I', './apps/sprinkl/sr301/.',
  '-I', './apps/sprinkl/sr301/protocols/HTTP',
  '-I', './apps/sprinkl/sr301/utilities/JSMN',
  '-I', './apps/sprinkl/sr301/utilities/JSMN_sprinkl',
  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/libraries/.',
  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/libraries//inc',
  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/libraries/../../../../ARM_CM3/CMSIS',
  '-I', './libraries/utilities/ring_buffer/.',
  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/.',
  '-I', './WICED/platform/GCC/.',
  '-I', './WICED/security/BESL/crypto_open/.',
  '-I', './WICED/security/BESL/crypto_open/srp',
  '-I', './libraries/utilities/TLV/.',
  '-I', './libraries/daemons/DHCP_server/.',
  '-I', '././WICED/network/LwIP/WWD/FreeRTOS/.',
  '-I', './libraries/utilities/base64/.',
  '-I', './libraries/utilities/crc/.',
  '-I', '././WICED/platform/MCU/STM32F2xx/.',
  '-I', '././WICED/platform/MCU/STM32F2xx/..',
  '-I', '././WICED/platform/MCU/STM32F2xx/../..',
  '-I', '././WICED/platform/MCU/STM32F2xx/../../include',
  '-I', '././WICED/platform/MCU/STM32F2xx/../../ARM_CM3',
  '-I', '././WICED/platform/MCU/STM32F2xx/../../ARM_CM3/CMSIS',
  '-I', '././WICED/platform/MCU/STM32F2xx/peripherals',
  '-I', '././WICED/platform/MCU/STM32F2xx/WAF',
  '-I', '././WICED/platform/MCU/STM32F2xx/../../../../../apps/waf/bootloader/',
  '-I', './libraries/filesystems/wicedfs/.',
  '-I', '././WICED/WWD/.',
  '-I', '././WICED/WWD/include',
  '-I', '././WICED/WWD/include/network',
  '-I', '././WICED/WWD/include/RTOS',
  '-I', '././WICED/WWD/internal/bus_protocols/SDIO',
  '-I', '././WICED/WWD/internal/chips/43362A2',
  '-I', './libraries/protocols/DNS/.',
  '-I', '././WICED/security/BESL/host/WICED',
  '-I', '././WICED/security/BESL/TLS',
  '-I', '././WICED/security/BESL/crypto',
  '-I', '././WICED/security/BESL/WPS',
  '-I', '././WICED/security/BESL/include',
  '-I', '././WICED/security/BESL/P2P',
  '-I', '././WICED/security/BESL/crypto/homekit_srp',
  '-I', '././WICED/security/BESL/crypto/ed25519',
  '-I', '././WICED/security/BESL/supplicant',
  '-I', './libraries/drivers/spi_flash/.',
  '-I', '././WICED/network/LwIP/WICED/.',
  '-I', '././WICED/network/LwIP/WWD/.',
  '-I', '././WICED/RTOS/FreeRTOS/WICED/.',
  '-I', '././WICED/RTOS/FreeRTOS/WWD/.',
  '-I', '././WICED/RTOS/FreeRTOS/WWD/./EMW3162',
  '-I', '././WICED/RTOS/FreeRTOS/WWD/./ARM_CM3',
  '-I', './libraries/drivers/ext_flash/.',
  '-I', './libraries/utilities/JSMN_sprinkl/.',
  '-I', './libraries/utilities/JSMN_sprinkl/../JSMN/',
  '-I', './libraries/utilities/miniz/.',
  '-I', './libraries/utilities/JSMN/.',
  '-I', './libraries/protocols/mqtt/.',
  '-I', './libraries/protocols/mqtt/mqtt/MQTTPacket/src',
  '-I', './libraries/protocols/HTTP/.',
  '-I', './libraries/protocols/SNTP/.',
  '-I', './libraries/filesystems/spiffs/.',
  '-I', '././WICED/.',
  '-I', './platforms/EMW3162/.',
  '-I', './WICED/network/LwIP/ver1.4.0.rc1',
  '-I', './WICED/network/LwIP/ver1.4.0.rc1/src/include',
  '-I', './WICED/network/LwIP/ver1.4.0.rc1/src/include/ipv4',
  '-I', './WICED/network/LwIP/WICED',
  '-I', './WICED/RTOS/FreeRTOS/ver7.5.2/Source/include',
  '-I', './WICED/RTOS/FreeRTOS/ver7.5.2/Source/portable/GCC/ARM_CM3',
  '-I', './WICED/WWD/internal/chips/43362A2',
  '-I', './libraries',
  '-I', './include',
  '-I', './libraries/drivers/bluetooth_le/include/',

  '-DUSE_STDPERIPH_DRIVER',
  '-D_STM32F205RGT6_',
  '-D_STM3x_',
  '-D_STM32x_',
  '-DMAX_WATCHDOG_TIMEOUT_SECONDS=22',
  '-DFIRMWARE_WITH_PMK_CALC_SUPPORT',
  '-DADD_LWIP_EAPOL_SUPPORT',
  '-DNXD_EXTENDED_BSD_SOCKET_SUPPORT',
  '-DOPENSSL',
  '-DSTDC_HEADERS',
  '-DADD_NETX_EAPOL_SUPPORT',
  '-DWWD_STARTUP_DELAY=10',
  '-DBOOTLOADER_MAGIC_NUMBER=0x4d435242',
  '-DWWD_DIRECT_RESOURCES',
  '-DHSE_VALUE=26000000',
  '-DCRLF_STDIO_REPLACEMENT',
  '-DNETWORK_LwIP=1',
  '-DLwIP_VERSION=\"v1.4.0.rc1\"',
  '-DRTOS_FreeRTOS=1',
  '-DconfigUSE_MUTEXES',
  '-DconfigUSE_RECURSIVE_MUTEXES',
  '-DFreeRTOS_VERSION=\"v7.5.2\"',
  '-DWICED_SDK_WIFI_CONFIG_DCT_H=\"./include/default_wifi_config_dct.h\"',
  '-DWICED_SDK_BT_CONFIG_DCT_H=\"./include/default_bt_config_dct.h\"'

]


# Set this to the absolute path to the folder (NOT the file!) containing the
# compile_commands.json file to use that instead of 'flags'. See here for
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
#
# Most projects will NOT need to set this to anything; you can just change the
# 'flags' list of compilation flags.
compilation_database_folder = ''

if os.path.exists( compilation_database_folder ):
  database = ycm_core.CompilationDatabase( compilation_database_folder )
else:
  database = None

SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm', '.S' ]

def DirectoryOfThisScript():
  return os.path.dirname( os.path.abspath( __file__ ) )


def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
  if not working_directory:
    return list( flags )
  new_flags = []
  make_next_absolute = False
  path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
  for flag in flags:
    new_flag = flag

    if make_next_absolute:
      make_next_absolute = False
      if not flag.startswith( '/' ):
        new_flag = os.path.join( working_directory, flag )

    for path_flag in path_flags:
      if flag == path_flag:
        make_next_absolute = True
        break

      if flag.startswith( path_flag ):
        path = flag[ len( path_flag ): ]
        new_flag = path_flag + os.path.join( working_directory, path )
        break

    if new_flag:
      new_flags.append( new_flag )
  return new_flags


def IsHeaderFile( filename ):
  extension = os.path.splitext( filename )[ 1 ]
  return extension in [ '.h', '.hxx', '.hpp', '.hh' ]


def GetCompilationInfoForFile( filename ):
  # The compilation_commands.json file generated by CMake does not have entries
  # for header files. So we do our best by asking the db for flags for a
  # corresponding source file, if any. If one exists, the flags for that file
  # should be good enough.
  if IsHeaderFile( filename ):
    basename = os.path.splitext( filename )[ 0 ]
    for extension in SOURCE_EXTENSIONS:
      replacement_file = basename + extension
      if os.path.exists( replacement_file ):
        compilation_info = database.GetCompilationInfoForFile(
          replacement_file )
        if compilation_info.compiler_flags_:
          return compilation_info
    return None
  return database.GetCompilationInfoForFile( filename )


# This is the entry point; this function is called by ycmd to produce flags for
# a file.
def FlagsForFile( filename, **kwargs ):
  if database:
    # Bear in mind that compilation_info.compiler_flags_ does NOT return a
    # python list, but a "list-like" StringVec object
    compilation_info = GetCompilationInfoForFile( filename )
    if not compilation_info:
      return None

    final_flags = MakeRelativePathsInFlagsAbsolute(
      compilation_info.compiler_flags_,
      compilation_info.compiler_working_dir_ )
  else:
    relative_to = DirectoryOfThisScript()
    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )

  # Add in C or CXX extensions
  print("Filename: ", filename, "\n");
  if  re.search(r'\.(?:cc|cpp|cxx)$', filename):
    final_flags.extend(["-x c++", "--std=c++14"])
    print("CPP FILE!!\n");
  elif re.search(r'\.c$', filename):
    final_flags.extend(["-x c", "--std=c11"])
    print("C file!\n");
  else:
      print("None!!!!!!!!!!!!!!!!!!!!\n");

  #print("Flags are: ", final_flags)

  return {
    'flags': final_flags,
    'do_cache': True
  }
# vim:set tw=0 nowrap :
https://snipt.net/embed/f9912222f923a9d3ec4b35f94eb43b99/
/raw/f9912222f923a9d3ec4b35f94eb43b99/
f9912222f923a9d3ec4b35f94eb43b99
python
Python
272
2019-07-21T19:17:06
True
False
False
Jul 30, 2016 at 04:11 PM
/api/public/snipt/147490/
python-youcompleteme-with-ccpp-differentiation-wiced-include-paths
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10"> 10</a> <a href="#L-11"> 11</a> <a href="#L-12"> 12</a> <a href="#L-13"> 13</a> <a href="#L-14"> 14</a> <a href="#L-15"> 15</a> <a href="#L-16"> 16</a> <a href="#L-17"> 17</a> <a href="#L-18"> 18</a> <a href="#L-19"> 19</a> <a href="#L-20"> 20</a> <a href="#L-21"> 21</a> <a href="#L-22"> 22</a> <a href="#L-23"> 23</a> <a href="#L-24"> 24</a> <a href="#L-25"> 25</a> <a href="#L-26"> 26</a> <a href="#L-27"> 27</a> <a href="#L-28"> 28</a> <a href="#L-29"> 29</a> <a href="#L-30"> 30</a> <a href="#L-31"> 31</a> <a href="#L-32"> 32</a> <a href="#L-33"> 33</a> <a href="#L-34"> 34</a> <a href="#L-35"> 35</a> <a href="#L-36"> 36</a> <a href="#L-37"> 37</a> <a href="#L-38"> 38</a> <a href="#L-39"> 39</a> <a href="#L-40"> 40</a> <a href="#L-41"> 41</a> <a href="#L-42"> 42</a> <a href="#L-43"> 43</a> <a href="#L-44"> 44</a> <a href="#L-45"> 45</a> <a href="#L-46"> 46</a> <a href="#L-47"> 47</a> <a href="#L-48"> 48</a> <a href="#L-49"> 49</a> <a href="#L-50"> 50</a> <a href="#L-51"> 51</a> <a href="#L-52"> 52</a> <a href="#L-53"> 53</a> <a href="#L-54"> 54</a> <a href="#L-55"> 55</a> <a href="#L-56"> 56</a> <a href="#L-57"> 57</a> <a href="#L-58"> 58</a> <a href="#L-59"> 59</a> <a href="#L-60"> 60</a> <a href="#L-61"> 61</a> <a href="#L-62"> 62</a> <a href="#L-63"> 63</a> <a href="#L-64"> 64</a> <a href="#L-65"> 65</a> <a href="#L-66"> 66</a> <a href="#L-67"> 67</a> <a href="#L-68"> 68</a> <a href="#L-69"> 69</a> <a href="#L-70"> 70</a> <a href="#L-71"> 71</a> <a href="#L-72"> 72</a> <a href="#L-73"> 73</a> <a href="#L-74"> 74</a> <a href="#L-75"> 75</a> <a href="#L-76"> 76</a> <a href="#L-77"> 77</a> <a href="#L-78"> 78</a> <a href="#L-79"> 79</a> <a href="#L-80"> 80</a> <a href="#L-81"> 81</a> <a href="#L-82"> 82</a> <a href="#L-83"> 83</a> <a href="#L-84"> 84</a> <a href="#L-85"> 85</a> <a href="#L-86"> 86</a> <a href="#L-87"> 87</a> <a href="#L-88"> 88</a> <a href="#L-89"> 89</a> <a href="#L-90"> 90</a> <a href="#L-91"> 91</a> <a href="#L-92"> 92</a> <a href="#L-93"> 93</a> <a href="#L-94"> 94</a> <a href="#L-95"> 95</a> <a href="#L-96"> 96</a> <a href="#L-97"> 97</a> <a href="#L-98"> 98</a> <a href="#L-99"> 99</a> <a href="#L-100">100</a> <a href="#L-101">101</a> <a href="#L-102">102</a> <a href="#L-103">103</a> <a href="#L-104">104</a> <a href="#L-105">105</a> <a href="#L-106">106</a> <a href="#L-107">107</a> <a href="#L-108">108</a> <a href="#L-109">109</a> <a href="#L-110">110</a> <a href="#L-111">111</a> <a href="#L-112">112</a> <a href="#L-113">113</a> <a href="#L-114">114</a> <a href="#L-115">115</a> <a href="#L-116">116</a> <a href="#L-117">117</a> <a href="#L-118">118</a> <a href="#L-119">119</a> <a href="#L-120">120</a> <a href="#L-121">121</a> <a href="#L-122">122</a> <a href="#L-123">123</a> <a href="#L-124">124</a> <a href="#L-125">125</a> <a href="#L-126">126</a> <a href="#L-127">127</a> <a href="#L-128">128</a> <a href="#L-129">129</a> <a href="#L-130">130</a> <a href="#L-131">131</a> <a href="#L-132">132</a> <a href="#L-133">133</a> <a href="#L-134">134</a> <a href="#L-135">135</a> <a href="#L-136">136</a> <a href="#L-137">137</a> <a href="#L-138">138</a> <a href="#L-139">139</a> <a href="#L-140">140</a> <a href="#L-141">141</a> <a href="#L-142">142</a> <a href="#L-143">143</a> <a href="#L-144">144</a> <a href="#L-145">145</a> <a href="#L-146">146</a> <a href="#L-147">147</a> <a href="#L-148">148</a> <a href="#L-149">149</a> <a href="#L-150">150</a> <a href="#L-151">151</a> <a href="#L-152">152</a> <a href="#L-153">153</a> <a href="#L-154">154</a> <a href="#L-155">155</a> <a href="#L-156">156</a> <a href="#L-157">157</a> <a href="#L-158">158</a> <a href="#L-159">159</a> <a href="#L-160">160</a> <a href="#L-161">161</a> <a href="#L-162">162</a> <a href="#L-163">163</a> <a href="#L-164">164</a> <a href="#L-165">165</a> <a href="#L-166">166</a> <a href="#L-167">167</a> <a href="#L-168">168</a> <a href="#L-169">169</a> <a href="#L-170">170</a> <a href="#L-171">171</a> <a href="#L-172">172</a> <a href="#L-173">173</a> <a href="#L-174">174</a> <a href="#L-175">175</a> <a href="#L-176">176</a> <a href="#L-177">177</a> <a href="#L-178">178</a> <a href="#L-179">179</a> <a href="#L-180">180</a> <a href="#L-181">181</a> <a href="#L-182">182</a> <a href="#L-183">183</a> <a href="#L-184">184</a> <a href="#L-185">185</a> <a href="#L-186">186</a> <a href="#L-187">187</a> <a href="#L-188">188</a> <a href="#L-189">189</a> <a href="#L-190">190</a> <a href="#L-191">191</a> <a href="#L-192">192</a> <a href="#L-193">193</a> <a href="#L-194">194</a> <a href="#L-195">195</a> <a href="#L-196">196</a> <a href="#L-197">197</a> <a href="#L-198">198</a> <a href="#L-199">199</a> <a href="#L-200">200</a> <a href="#L-201">201</a> <a href="#L-202">202</a> <a href="#L-203">203</a> <a href="#L-204">204</a> <a href="#L-205">205</a> <a href="#L-206">206</a> <a href="#L-207">207</a> <a href="#L-208">208</a> <a href="#L-209">209</a> <a href="#L-210">210</a> <a href="#L-211">211</a> <a href="#L-212">212</a> <a href="#L-213">213</a> <a href="#L-214">214</a> <a href="#L-215">215</a> <a href="#L-216">216</a> <a href="#L-217">217</a> <a href="#L-218">218</a> <a href="#L-219">219</a> <a href="#L-220">220</a> <a href="#L-221">221</a> <a href="#L-222">222</a> <a href="#L-223">223</a> <a href="#L-224">224</a> <a href="#L-225">225</a> <a href="#L-226">226</a> <a href="#L-227">227</a> <a href="#L-228">228</a> <a href="#L-229">229</a> <a href="#L-230">230</a> <a href="#L-231">231</a> <a href="#L-232">232</a> <a href="#L-233">233</a> <a href="#L-234">234</a> <a href="#L-235">235</a> <a href="#L-236">236</a> <a href="#L-237">237</a> <a href="#L-238">238</a> <a href="#L-239">239</a> <a href="#L-240">240</a> <a href="#L-241">241</a> <a href="#L-242">242</a> <a href="#L-243">243</a> <a href="#L-244">244</a> <a href="#L-245">245</a> <a href="#L-246">246</a> <a href="#L-247">247</a> <a href="#L-248">248</a> <a href="#L-249">249</a> <a href="#L-250">250</a> <a href="#L-251">251</a> <a href="#L-252">252</a> <a href="#L-253">253</a> <a href="#L-254">254</a> <a href="#L-255">255</a> <a href="#L-256">256</a> <a href="#L-257">257</a> <a href="#L-258">258</a> <a href="#L-259">259</a> <a href="#L-260">260</a> <a href="#L-261">261</a> <a href="#L-262">262</a> <a href="#L-263">263</a> <a href="#L-264">264</a> <a href="#L-265">265</a> <a href="#L-266">266</a> <a href="#L-267">267</a> <a href="#L-268">268</a> <a href="#L-269">269</a> <a href="#L-270">270</a> <a href="#L-271">271</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="ch">#!/usr/bin/env python</span> </span><span id="L-2"><a name="L-2"></a><span class="c1">#</span> </span><span id="L-3"><a name="L-3"></a><span class="c1"># Copyright (C) 2014 Google Inc.</span> </span><span id="L-4"><a name="L-4"></a><span class="c1">#</span> </span><span id="L-5"><a name="L-5"></a><span class="c1"># This file is part of YouCompleteMe.</span> </span><span id="L-6"><a name="L-6"></a><span class="c1">#</span> </span><span id="L-7"><a name="L-7"></a><span class="c1"># YouCompleteMe is free software: you can redistribute it and/or modify</span> </span><span id="L-8"><a name="L-8"></a><span class="c1"># it under the terms of the GNU General Public License as published by</span> </span><span id="L-9"><a name="L-9"></a><span class="c1"># the Free Software Foundation, either version 3 of the License, or</span> </span><span id="L-10"><a name="L-10"></a><span class="c1"># (at your option) any later version.</span> </span><span id="L-11"><a name="L-11"></a><span class="c1">#</span> </span><span id="L-12"><a name="L-12"></a><span class="c1"># YouCompleteMe is distributed in the hope that it will be useful,</span> </span><span id="L-13"><a name="L-13"></a><span class="c1"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span> </span><span id="L-14"><a name="L-14"></a><span class="c1"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span> </span><span id="L-15"><a name="L-15"></a><span class="c1"># GNU General Public License for more details.</span> </span><span id="L-16"><a name="L-16"></a><span class="c1">#</span> </span><span id="L-17"><a name="L-17"></a><span class="c1"># You should have received a copy of the GNU General Public License</span> </span><span id="L-18"><a name="L-18"></a><span class="c1"># along with YouCompleteMe. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span> </span><span id="L-19"><a name="L-19"></a> </span><span id="L-20"><a name="L-20"></a><span class="kn">import</span> <span class="nn">os</span> </span><span id="L-21"><a name="L-21"></a><span class="kn">import</span> <span class="nn">ycm_core</span> </span><span id="L-22"><a name="L-22"></a><span class="kn">import</span> <span class="nn">re</span> </span><span id="L-23"><a name="L-23"></a> </span><span id="L-24"><a name="L-24"></a><span class="c1"># These are the compilation flags that will be used in case there&#39;s no</span> </span><span id="L-25"><a name="L-25"></a><span class="c1"># compilation database set (by default, one is not set).</span> </span><span id="L-26"><a name="L-26"></a><span class="c1"># CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.</span> </span><span id="L-27"><a name="L-27"></a><span class="n">flags</span> <span class="o">=</span> <span class="p">[</span> </span><span id="L-28"><a name="L-28"></a><span class="c1">#&#39;-Wall&#39;,</span> </span><span id="L-29"><a name="L-29"></a><span class="s1">&#39;-Wextra&#39;</span><span class="p">,</span> </span><span id="L-30"><a name="L-30"></a><span class="s1">&#39;-Werror&#39;</span><span class="p">,</span> </span><span id="L-31"><a name="L-31"></a><span class="s1">&#39;-fexceptions&#39;</span><span class="p">,</span> </span><span id="L-32"><a name="L-32"></a> </span><span id="L-33"><a name="L-33"></a><span class="c1"># THIS IS IMPORTANT! Without a &quot;-std=&lt;something&gt;&quot; flag, clang won&#39;t know which</span> </span><span id="L-34"><a name="L-34"></a><span class="c1"># language to use when compiling headers. So it will guess. Badly. So C++</span> </span><span id="L-35"><a name="L-35"></a><span class="c1"># headers will be compiled as C headers. You don&#39;t want that so ALWAYS specify</span> </span><span id="L-36"><a name="L-36"></a><span class="c1"># a &quot;-std=&lt;something&gt;&quot;.</span> </span><span id="L-37"><a name="L-37"></a><span class="c1"># For a C project, you would set this to something like &#39;c99&#39; instead of</span> </span><span id="L-38"><a name="L-38"></a><span class="c1"># &#39;c++11&#39;.</span> </span><span id="L-39"><a name="L-39"></a> </span><span id="L-40"><a name="L-40"></a><span class="c1">## &#39;-std=gnu11&#39;,</span> </span><span id="L-41"><a name="L-41"></a> </span><span id="L-42"><a name="L-42"></a><span class="c1"># ...and the same thing goes for the magic -x option which specifies the</span> </span><span id="L-43"><a name="L-43"></a><span class="c1"># language that the files to be compiled are written in. This is mostly</span> </span><span id="L-44"><a name="L-44"></a><span class="c1"># relevant for c++ headers.</span> </span><span id="L-45"><a name="L-45"></a><span class="c1"># For a C project, you would set this to &#39;c&#39; instead of &#39;c++&#39;.</span> </span><span id="L-46"><a name="L-46"></a> </span><span id="L-47"><a name="L-47"></a><span class="c1">## &#39;-x&#39;, &#39;c&#39;,</span> </span><span id="L-48"><a name="L-48"></a> </span><span id="L-49"><a name="L-49"></a><span class="s1">&#39;-target&#39;</span><span class="p">,</span><span class="s1">&#39;arm-none-abi&#39;</span><span class="p">,</span> </span><span id="L-50"><a name="L-50"></a><span class="s1">&#39;-mthumb&#39;</span><span class="p">,</span> </span><span id="L-51"><a name="L-51"></a><span class="s1">&#39;-mcpu=cortex-m3&#39;</span><span class="p">,</span> </span><span id="L-52"><a name="L-52"></a><span class="s1">&#39;-mfloat-abi=soft&#39;</span><span class="p">,</span> </span><span id="L-53"><a name="L-53"></a> </span><span id="L-54"><a name="L-54"></a> </span><span id="L-55"><a name="L-55"></a> <span class="s1">&#39;-DLINT&#39;</span><span class="p">,</span> </span><span id="L-56"><a name="L-56"></a> <span class="s1">&#39;-DWICED_VERSION=</span><span class="se">\&quot;</span><span class="s1">3.3.1</span><span class="se">\&quot;</span><span class="s1">&#39;</span><span class="p">,</span> </span><span id="L-57"><a name="L-57"></a> <span class="s1">&#39;-DBUS=</span><span class="se">\&quot;</span><span class="s1">SDIO</span><span class="se">\&quot;</span><span class="s1">&#39;</span><span class="p">,</span> </span><span id="L-58"><a name="L-58"></a> <span class="s1">&#39;-Ibuild/sprinkl_sr301-FreeRTOS-LwIP-EMW3162-SDIO/resources/&#39;</span><span class="p">,</span> </span><span id="L-59"><a name="L-59"></a> <span class="c1">#&#39;-DPLATFORM=\&quot;EMW3162\&quot;&#39;,</span> </span><span id="L-60"><a name="L-60"></a> <span class="s1">&#39;-DSR301_MOD_ISM43340CF&#39;</span> </span><span id="L-61"><a name="L-61"></a> <span class="s1">&#39;-DJSMN_PARENT_LINKS&#39;</span><span class="p">,</span> </span><span id="L-62"><a name="L-62"></a> <span class="s1">&#39;-U__STRICT_ANSI__&#39;</span><span class="p">,</span> </span><span id="L-63"><a name="L-63"></a> <span class="s1">&#39;-Wcast-align&#39;</span><span class="p">,</span> </span><span id="L-64"><a name="L-64"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./tools/ARM_GNU/include/&#39;</span><span class="p">,</span> </span><span id="L-65"><a name="L-65"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./apps/sprinkl/sr301/.&#39;</span><span class="p">,</span> </span><span id="L-66"><a name="L-66"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./apps/sprinkl/sr301/protocols/HTTP&#39;</span><span class="p">,</span> </span><span id="L-67"><a name="L-67"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./apps/sprinkl/sr301/utilities/JSMN&#39;</span><span class="p">,</span> </span><span id="L-68"><a name="L-68"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./apps/sprinkl/sr301/utilities/JSMN_sprinkl&#39;</span><span class="p">,</span> </span><span id="L-69"><a name="L-69"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/platform/MCU/STM32F2xx/peripherals/libraries/.&#39;</span><span class="p">,</span> </span><span id="L-70"><a name="L-70"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/platform/MCU/STM32F2xx/peripherals/libraries//inc&#39;</span><span class="p">,</span> </span><span id="L-71"><a name="L-71"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/platform/MCU/STM32F2xx/peripherals/libraries/../../../../ARM_CM3/CMSIS&#39;</span><span class="p">,</span> </span><span id="L-72"><a name="L-72"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/ring_buffer/.&#39;</span><span class="p">,</span> </span><span id="L-73"><a name="L-73"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/platform/MCU/STM32F2xx/peripherals/.&#39;</span><span class="p">,</span> </span><span id="L-74"><a name="L-74"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/platform/GCC/.&#39;</span><span class="p">,</span> </span><span id="L-75"><a name="L-75"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/security/BESL/crypto_open/.&#39;</span><span class="p">,</span> </span><span id="L-76"><a name="L-76"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/security/BESL/crypto_open/srp&#39;</span><span class="p">,</span> </span><span id="L-77"><a name="L-77"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/TLV/.&#39;</span><span class="p">,</span> </span><span id="L-78"><a name="L-78"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/daemons/DHCP_server/.&#39;</span><span class="p">,</span> </span><span id="L-79"><a name="L-79"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/network/LwIP/WWD/FreeRTOS/.&#39;</span><span class="p">,</span> </span><span id="L-80"><a name="L-80"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/base64/.&#39;</span><span class="p">,</span> </span><span id="L-81"><a name="L-81"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/crc/.&#39;</span><span class="p">,</span> </span><span id="L-82"><a name="L-82"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/.&#39;</span><span class="p">,</span> </span><span id="L-83"><a name="L-83"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/..&#39;</span><span class="p">,</span> </span><span id="L-84"><a name="L-84"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/../..&#39;</span><span class="p">,</span> </span><span id="L-85"><a name="L-85"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/../../include&#39;</span><span class="p">,</span> </span><span id="L-86"><a name="L-86"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/../../ARM_CM3&#39;</span><span class="p">,</span> </span><span id="L-87"><a name="L-87"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/../../ARM_CM3/CMSIS&#39;</span><span class="p">,</span> </span><span id="L-88"><a name="L-88"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/peripherals&#39;</span><span class="p">,</span> </span><span id="L-89"><a name="L-89"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/WAF&#39;</span><span class="p">,</span> </span><span id="L-90"><a name="L-90"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/platform/MCU/STM32F2xx/../../../../../apps/waf/bootloader/&#39;</span><span class="p">,</span> </span><span id="L-91"><a name="L-91"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/filesystems/wicedfs/.&#39;</span><span class="p">,</span> </span><span id="L-92"><a name="L-92"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/WWD/.&#39;</span><span class="p">,</span> </span><span id="L-93"><a name="L-93"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/WWD/include&#39;</span><span class="p">,</span> </span><span id="L-94"><a name="L-94"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/WWD/include/network&#39;</span><span class="p">,</span> </span><span id="L-95"><a name="L-95"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/WWD/include/RTOS&#39;</span><span class="p">,</span> </span><span id="L-96"><a name="L-96"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/WWD/internal/bus_protocols/SDIO&#39;</span><span class="p">,</span> </span><span id="L-97"><a name="L-97"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/WWD/internal/chips/43362A2&#39;</span><span class="p">,</span> </span><span id="L-98"><a name="L-98"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/protocols/DNS/.&#39;</span><span class="p">,</span> </span><span id="L-99"><a name="L-99"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/host/WICED&#39;</span><span class="p">,</span> </span><span id="L-100"><a name="L-100"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/TLS&#39;</span><span class="p">,</span> </span><span id="L-101"><a name="L-101"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/crypto&#39;</span><span class="p">,</span> </span><span id="L-102"><a name="L-102"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/WPS&#39;</span><span class="p">,</span> </span><span id="L-103"><a name="L-103"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/include&#39;</span><span class="p">,</span> </span><span id="L-104"><a name="L-104"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/P2P&#39;</span><span class="p">,</span> </span><span id="L-105"><a name="L-105"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/crypto/homekit_srp&#39;</span><span class="p">,</span> </span><span id="L-106"><a name="L-106"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/crypto/ed25519&#39;</span><span class="p">,</span> </span><span id="L-107"><a name="L-107"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/security/BESL/supplicant&#39;</span><span class="p">,</span> </span><span id="L-108"><a name="L-108"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/drivers/spi_flash/.&#39;</span><span class="p">,</span> </span><span id="L-109"><a name="L-109"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/network/LwIP/WICED/.&#39;</span><span class="p">,</span> </span><span id="L-110"><a name="L-110"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/network/LwIP/WWD/.&#39;</span><span class="p">,</span> </span><span id="L-111"><a name="L-111"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/RTOS/FreeRTOS/WICED/.&#39;</span><span class="p">,</span> </span><span id="L-112"><a name="L-112"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/RTOS/FreeRTOS/WWD/.&#39;</span><span class="p">,</span> </span><span id="L-113"><a name="L-113"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/RTOS/FreeRTOS/WWD/./EMW3162&#39;</span><span class="p">,</span> </span><span id="L-114"><a name="L-114"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/RTOS/FreeRTOS/WWD/./ARM_CM3&#39;</span><span class="p">,</span> </span><span id="L-115"><a name="L-115"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/drivers/ext_flash/.&#39;</span><span class="p">,</span> </span><span id="L-116"><a name="L-116"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/JSMN_sprinkl/.&#39;</span><span class="p">,</span> </span><span id="L-117"><a name="L-117"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/JSMN_sprinkl/../JSMN/&#39;</span><span class="p">,</span> </span><span id="L-118"><a name="L-118"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/miniz/.&#39;</span><span class="p">,</span> </span><span id="L-119"><a name="L-119"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/utilities/JSMN/.&#39;</span><span class="p">,</span> </span><span id="L-120"><a name="L-120"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/protocols/mqtt/.&#39;</span><span class="p">,</span> </span><span id="L-121"><a name="L-121"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/protocols/mqtt/mqtt/MQTTPacket/src&#39;</span><span class="p">,</span> </span><span id="L-122"><a name="L-122"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/protocols/HTTP/.&#39;</span><span class="p">,</span> </span><span id="L-123"><a name="L-123"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/protocols/SNTP/.&#39;</span><span class="p">,</span> </span><span id="L-124"><a name="L-124"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/filesystems/spiffs/.&#39;</span><span class="p">,</span> </span><span id="L-125"><a name="L-125"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;././WICED/.&#39;</span><span class="p">,</span> </span><span id="L-126"><a name="L-126"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./platforms/EMW3162/.&#39;</span><span class="p">,</span> </span><span id="L-127"><a name="L-127"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/network/LwIP/ver1.4.0.rc1&#39;</span><span class="p">,</span> </span><span id="L-128"><a name="L-128"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/network/LwIP/ver1.4.0.rc1/src/include&#39;</span><span class="p">,</span> </span><span id="L-129"><a name="L-129"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/network/LwIP/ver1.4.0.rc1/src/include/ipv4&#39;</span><span class="p">,</span> </span><span id="L-130"><a name="L-130"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/network/LwIP/WICED&#39;</span><span class="p">,</span> </span><span id="L-131"><a name="L-131"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/RTOS/FreeRTOS/ver7.5.2/Source/include&#39;</span><span class="p">,</span> </span><span id="L-132"><a name="L-132"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/RTOS/FreeRTOS/ver7.5.2/Source/portable/GCC/ARM_CM3&#39;</span><span class="p">,</span> </span><span id="L-133"><a name="L-133"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./WICED/WWD/internal/chips/43362A2&#39;</span><span class="p">,</span> </span><span id="L-134"><a name="L-134"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries&#39;</span><span class="p">,</span> </span><span id="L-135"><a name="L-135"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./include&#39;</span><span class="p">,</span> </span><span id="L-136"><a name="L-136"></a> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;./libraries/drivers/bluetooth_le/include/&#39;</span><span class="p">,</span> </span><span id="L-137"><a name="L-137"></a> </span><span id="L-138"><a name="L-138"></a> <span class="s1">&#39;-DUSE_STDPERIPH_DRIVER&#39;</span><span class="p">,</span> </span><span id="L-139"><a name="L-139"></a> <span class="s1">&#39;-D_STM32F205RGT6_&#39;</span><span class="p">,</span> </span><span id="L-140"><a name="L-140"></a> <span class="s1">&#39;-D_STM3x_&#39;</span><span class="p">,</span> </span><span id="L-141"><a name="L-141"></a> <span class="s1">&#39;-D_STM32x_&#39;</span><span class="p">,</span> </span><span id="L-142"><a name="L-142"></a> <span class="s1">&#39;-DMAX_WATCHDOG_TIMEOUT_SECONDS=22&#39;</span><span class="p">,</span> </span><span id="L-143"><a name="L-143"></a> <span class="s1">&#39;-DFIRMWARE_WITH_PMK_CALC_SUPPORT&#39;</span><span class="p">,</span> </span><span id="L-144"><a name="L-144"></a> <span class="s1">&#39;-DADD_LWIP_EAPOL_SUPPORT&#39;</span><span class="p">,</span> </span><span id="L-145"><a name="L-145"></a> <span class="s1">&#39;-DNXD_EXTENDED_BSD_SOCKET_SUPPORT&#39;</span><span class="p">,</span> </span><span id="L-146"><a name="L-146"></a> <span class="s1">&#39;-DOPENSSL&#39;</span><span class="p">,</span> </span><span id="L-147"><a name="L-147"></a> <span class="s1">&#39;-DSTDC_HEADERS&#39;</span><span class="p">,</span> </span><span id="L-148"><a name="L-148"></a> <span class="s1">&#39;-DADD_NETX_EAPOL_SUPPORT&#39;</span><span class="p">,</span> </span><span id="L-149"><a name="L-149"></a> <span class="s1">&#39;-DWWD_STARTUP_DELAY=10&#39;</span><span class="p">,</span> </span><span id="L-150"><a name="L-150"></a> <span class="s1">&#39;-DBOOTLOADER_MAGIC_NUMBER=0x4d435242&#39;</span><span class="p">,</span> </span><span id="L-151"><a name="L-151"></a> <span class="s1">&#39;-DWWD_DIRECT_RESOURCES&#39;</span><span class="p">,</span> </span><span id="L-152"><a name="L-152"></a> <span class="s1">&#39;-DHSE_VALUE=26000000&#39;</span><span class="p">,</span> </span><span id="L-153"><a name="L-153"></a> <span class="s1">&#39;-DCRLF_STDIO_REPLACEMENT&#39;</span><span class="p">,</span> </span><span id="L-154"><a name="L-154"></a> <span class="s1">&#39;-DNETWORK_LwIP=1&#39;</span><span class="p">,</span> </span><span id="L-155"><a name="L-155"></a> <span class="s1">&#39;-DLwIP_VERSION=</span><span class="se">\&quot;</span><span class="s1">v1.4.0.rc1</span><span class="se">\&quot;</span><span class="s1">&#39;</span><span class="p">,</span> </span><span id="L-156"><a name="L-156"></a> <span class="s1">&#39;-DRTOS_FreeRTOS=1&#39;</span><span class="p">,</span> </span><span id="L-157"><a name="L-157"></a> <span class="s1">&#39;-DconfigUSE_MUTEXES&#39;</span><span class="p">,</span> </span><span id="L-158"><a name="L-158"></a> <span class="s1">&#39;-DconfigUSE_RECURSIVE_MUTEXES&#39;</span><span class="p">,</span> </span><span id="L-159"><a name="L-159"></a> <span class="s1">&#39;-DFreeRTOS_VERSION=</span><span class="se">\&quot;</span><span class="s1">v7.5.2</span><span class="se">\&quot;</span><span class="s1">&#39;</span><span class="p">,</span> </span><span id="L-160"><a name="L-160"></a> <span class="s1">&#39;-DWICED_SDK_WIFI_CONFIG_DCT_H=</span><span class="se">\&quot;</span><span class="s1">./include/default_wifi_config_dct.h</span><span class="se">\&quot;</span><span class="s1">&#39;</span><span class="p">,</span> </span><span id="L-161"><a name="L-161"></a> <span class="s1">&#39;-DWICED_SDK_BT_CONFIG_DCT_H=</span><span class="se">\&quot;</span><span class="s1">./include/default_bt_config_dct.h</span><span class="se">\&quot;</span><span class="s1">&#39;</span> </span><span id="L-162"><a name="L-162"></a> </span><span id="L-163"><a name="L-163"></a><span class="p">]</span> </span><span id="L-164"><a name="L-164"></a> </span><span id="L-165"><a name="L-165"></a> </span><span id="L-166"><a name="L-166"></a><span class="c1"># Set this to the absolute path to the folder (NOT the file!) containing the</span> </span><span id="L-167"><a name="L-167"></a><span class="c1"># compile_commands.json file to use that instead of &#39;flags&#39;. See here for</span> </span><span id="L-168"><a name="L-168"></a><span class="c1"># more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html</span> </span><span id="L-169"><a name="L-169"></a><span class="c1">#</span> </span><span id="L-170"><a name="L-170"></a><span class="c1"># Most projects will NOT need to set this to anything; you can just change the</span> </span><span id="L-171"><a name="L-171"></a><span class="c1"># &#39;flags&#39; list of compilation flags.</span> </span><span id="L-172"><a name="L-172"></a><span class="n">compilation_database_folder</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-173"><a name="L-173"></a> </span><span id="L-174"><a name="L-174"></a><span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span> <span class="n">compilation_database_folder</span> <span class="p">):</span> </span><span id="L-175"><a name="L-175"></a> <span class="n">database</span> <span class="o">=</span> <span class="n">ycm_core</span><span class="o">.</span><span class="n">CompilationDatabase</span><span class="p">(</span> <span class="n">compilation_database_folder</span> <span class="p">)</span> </span><span id="L-176"><a name="L-176"></a><span class="k">else</span><span class="p">:</span> </span><span id="L-177"><a name="L-177"></a> <span class="n">database</span> <span class="o">=</span> <span class="bp">None</span> </span><span id="L-178"><a name="L-178"></a> </span><span id="L-179"><a name="L-179"></a><span class="n">SOURCE_EXTENSIONS</span> <span class="o">=</span> <span class="p">[</span> <span class="s1">&#39;.cpp&#39;</span><span class="p">,</span> <span class="s1">&#39;.cxx&#39;</span><span class="p">,</span> <span class="s1">&#39;.cc&#39;</span><span class="p">,</span> <span class="s1">&#39;.c&#39;</span><span class="p">,</span> <span class="s1">&#39;.m&#39;</span><span class="p">,</span> <span class="s1">&#39;.mm&#39;</span><span class="p">,</span> <span class="s1">&#39;.S&#39;</span> <span class="p">]</span> </span><span id="L-180"><a name="L-180"></a> </span><span id="L-181"><a name="L-181"></a><span class="k">def</span> <span class="nf">DirectoryOfThisScript</span><span class="p">():</span> </span><span id="L-182"><a name="L-182"></a> <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span> <span class="n">__file__</span> <span class="p">)</span> <span class="p">)</span> </span><span id="L-183"><a name="L-183"></a> </span><span id="L-184"><a name="L-184"></a> </span><span id="L-185"><a name="L-185"></a><span class="k">def</span> <span class="nf">MakeRelativePathsInFlagsAbsolute</span><span class="p">(</span> <span class="n">flags</span><span class="p">,</span> <span class="n">working_directory</span> <span class="p">):</span> </span><span id="L-186"><a name="L-186"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">working_directory</span><span class="p">:</span> </span><span id="L-187"><a name="L-187"></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span> <span class="n">flags</span> <span class="p">)</span> </span><span id="L-188"><a name="L-188"></a> <span class="n">new_flags</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-189"><a name="L-189"></a> <span class="n">make_next_absolute</span> <span class="o">=</span> <span class="bp">False</span> </span><span id="L-190"><a name="L-190"></a> <span class="n">path_flags</span> <span class="o">=</span> <span class="p">[</span> <span class="s1">&#39;-isystem&#39;</span><span class="p">,</span> <span class="s1">&#39;-I&#39;</span><span class="p">,</span> <span class="s1">&#39;-iquote&#39;</span><span class="p">,</span> <span class="s1">&#39;--sysroot=&#39;</span> <span class="p">]</span> </span><span id="L-191"><a name="L-191"></a> <span class="k">for</span> <span class="n">flag</span> <span class="ow">in</span> <span class="n">flags</span><span class="p">:</span> </span><span id="L-192"><a name="L-192"></a> <span class="n">new_flag</span> <span class="o">=</span> <span class="n">flag</span> </span><span id="L-193"><a name="L-193"></a> </span><span id="L-194"><a name="L-194"></a> <span class="k">if</span> <span class="n">make_next_absolute</span><span class="p">:</span> </span><span id="L-195"><a name="L-195"></a> <span class="n">make_next_absolute</span> <span class="o">=</span> <span class="bp">False</span> </span><span id="L-196"><a name="L-196"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">flag</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span> <span class="s1">&#39;/&#39;</span> <span class="p">):</span> </span><span id="L-197"><a name="L-197"></a> <span class="n">new_flag</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="n">working_directory</span><span class="p">,</span> <span class="n">flag</span> <span class="p">)</span> </span><span id="L-198"><a name="L-198"></a> </span><span id="L-199"><a name="L-199"></a> <span class="k">for</span> <span class="n">path_flag</span> <span class="ow">in</span> <span class="n">path_flags</span><span class="p">:</span> </span><span id="L-200"><a name="L-200"></a> <span class="k">if</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">path_flag</span><span class="p">:</span> </span><span id="L-201"><a name="L-201"></a> <span class="n">make_next_absolute</span> <span class="o">=</span> <span class="bp">True</span> </span><span id="L-202"><a name="L-202"></a> <span class="k">break</span> </span><span id="L-203"><a name="L-203"></a> </span><span id="L-204"><a name="L-204"></a> <span class="k">if</span> <span class="n">flag</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span> <span class="n">path_flag</span> <span class="p">):</span> </span><span id="L-205"><a name="L-205"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">flag</span><span class="p">[</span> <span class="nb">len</span><span class="p">(</span> <span class="n">path_flag</span> <span class="p">):</span> <span class="p">]</span> </span><span id="L-206"><a name="L-206"></a> <span class="n">new_flag</span> <span class="o">=</span> <span class="n">path_flag</span> <span class="o">+</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="n">working_directory</span><span class="p">,</span> <span class="n">path</span> <span class="p">)</span> </span><span id="L-207"><a name="L-207"></a> <span class="k">break</span> </span><span id="L-208"><a name="L-208"></a> </span><span id="L-209"><a name="L-209"></a> <span class="k">if</span> <span class="n">new_flag</span><span class="p">:</span> </span><span id="L-210"><a name="L-210"></a> <span class="n">new_flags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">new_flag</span> <span class="p">)</span> </span><span id="L-211"><a name="L-211"></a> <span class="k">return</span> <span class="n">new_flags</span> </span><span id="L-212"><a name="L-212"></a> </span><span id="L-213"><a name="L-213"></a> </span><span id="L-214"><a name="L-214"></a><span class="k">def</span> <span class="nf">IsHeaderFile</span><span class="p">(</span> <span class="n">filename</span> <span class="p">):</span> </span><span id="L-215"><a name="L-215"></a> <span class="n">extension</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span> <span class="n">filename</span> <span class="p">)[</span> <span class="mi">1</span> <span class="p">]</span> </span><span id="L-216"><a name="L-216"></a> <span class="k">return</span> <span class="n">extension</span> <span class="ow">in</span> <span class="p">[</span> <span class="s1">&#39;.h&#39;</span><span class="p">,</span> <span class="s1">&#39;.hxx&#39;</span><span class="p">,</span> <span class="s1">&#39;.hpp&#39;</span><span class="p">,</span> <span class="s1">&#39;.hh&#39;</span> <span class="p">]</span> </span><span id="L-217"><a name="L-217"></a> </span><span id="L-218"><a name="L-218"></a> </span><span id="L-219"><a name="L-219"></a><span class="k">def</span> <span class="nf">GetCompilationInfoForFile</span><span class="p">(</span> <span class="n">filename</span> <span class="p">):</span> </span><span id="L-220"><a name="L-220"></a> <span class="c1"># The compilation_commands.json file generated by CMake does not have entries</span> </span><span id="L-221"><a name="L-221"></a> <span class="c1"># for header files. So we do our best by asking the db for flags for a</span> </span><span id="L-222"><a name="L-222"></a> <span class="c1"># corresponding source file, if any. If one exists, the flags for that file</span> </span><span id="L-223"><a name="L-223"></a> <span class="c1"># should be good enough.</span> </span><span id="L-224"><a name="L-224"></a> <span class="k">if</span> <span class="n">IsHeaderFile</span><span class="p">(</span> <span class="n">filename</span> <span class="p">):</span> </span><span id="L-225"><a name="L-225"></a> <span class="n">basename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span> <span class="n">filename</span> <span class="p">)[</span> <span class="mi">0</span> <span class="p">]</span> </span><span id="L-226"><a name="L-226"></a> <span class="k">for</span> <span class="n">extension</span> <span class="ow">in</span> <span class="n">SOURCE_EXTENSIONS</span><span class="p">:</span> </span><span id="L-227"><a name="L-227"></a> <span class="n">replacement_file</span> <span class="o">=</span> <span class="n">basename</span> <span class="o">+</span> <span class="n">extension</span> </span><span id="L-228"><a name="L-228"></a> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span> <span class="n">replacement_file</span> <span class="p">):</span> </span><span id="L-229"><a name="L-229"></a> <span class="n">compilation_info</span> <span class="o">=</span> <span class="n">database</span><span class="o">.</span><span class="n">GetCompilationInfoForFile</span><span class="p">(</span> </span><span id="L-230"><a name="L-230"></a> <span class="n">replacement_file</span> <span class="p">)</span> </span><span id="L-231"><a name="L-231"></a> <span class="k">if</span> <span class="n">compilation_info</span><span class="o">.</span><span class="n">compiler_flags_</span><span class="p">:</span> </span><span id="L-232"><a name="L-232"></a> <span class="k">return</span> <span class="n">compilation_info</span> </span><span id="L-233"><a name="L-233"></a> <span class="k">return</span> <span class="bp">None</span> </span><span id="L-234"><a name="L-234"></a> <span class="k">return</span> <span class="n">database</span><span class="o">.</span><span class="n">GetCompilationInfoForFile</span><span class="p">(</span> <span class="n">filename</span> <span class="p">)</span> </span><span id="L-235"><a name="L-235"></a> </span><span id="L-236"><a name="L-236"></a> </span><span id="L-237"><a name="L-237"></a><span class="c1"># This is the entry point; this function is called by ycmd to produce flags for</span> </span><span id="L-238"><a name="L-238"></a><span class="c1"># a file.</span> </span><span id="L-239"><a name="L-239"></a><span class="k">def</span> <span class="nf">FlagsForFile</span><span class="p">(</span> <span class="n">filename</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> <span class="p">):</span> </span><span id="L-240"><a name="L-240"></a> <span class="k">if</span> <span class="n">database</span><span class="p">:</span> </span><span id="L-241"><a name="L-241"></a> <span class="c1"># Bear in mind that compilation_info.compiler_flags_ does NOT return a</span> </span><span id="L-242"><a name="L-242"></a> <span class="c1"># python list, but a &quot;list-like&quot; StringVec object</span> </span><span id="L-243"><a name="L-243"></a> <span class="n">compilation_info</span> <span class="o">=</span> <span class="n">GetCompilationInfoForFile</span><span class="p">(</span> <span class="n">filename</span> <span class="p">)</span> </span><span id="L-244"><a name="L-244"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">compilation_info</span><span class="p">:</span> </span><span id="L-245"><a name="L-245"></a> <span class="k">return</span> <span class="bp">None</span> </span><span id="L-246"><a name="L-246"></a> </span><span id="L-247"><a name="L-247"></a> <span class="n">final_flags</span> <span class="o">=</span> <span class="n">MakeRelativePathsInFlagsAbsolute</span><span class="p">(</span> </span><span id="L-248"><a name="L-248"></a> <span class="n">compilation_info</span><span class="o">.</span><span class="n">compiler_flags_</span><span class="p">,</span> </span><span id="L-249"><a name="L-249"></a> <span class="n">compilation_info</span><span class="o">.</span><span class="n">compiler_working_dir_</span> <span class="p">)</span> </span><span id="L-250"><a name="L-250"></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-251"><a name="L-251"></a> <span class="n">relative_to</span> <span class="o">=</span> <span class="n">DirectoryOfThisScript</span><span class="p">()</span> </span><span id="L-252"><a name="L-252"></a> <span class="n">final_flags</span> <span class="o">=</span> <span class="n">MakeRelativePathsInFlagsAbsolute</span><span class="p">(</span> <span class="n">flags</span><span class="p">,</span> <span class="n">relative_to</span> <span class="p">)</span> </span><span id="L-253"><a name="L-253"></a> </span><span id="L-254"><a name="L-254"></a> <span class="c1"># Add in C or CXX extensions</span> </span><span id="L-255"><a name="L-255"></a> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Filename: &quot;</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">);</span> </span><span id="L-256"><a name="L-256"></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s1">r&#39;\.(?:cc|cpp|cxx)$&#39;</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span> </span><span id="L-257"><a name="L-257"></a> <span class="n">final_flags</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="s2">&quot;-x c++&quot;</span><span class="p">,</span> <span class="s2">&quot;--std=c++14&quot;</span><span class="p">])</span> </span><span id="L-258"><a name="L-258"></a> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;CPP FILE!!</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">);</span> </span><span id="L-259"><a name="L-259"></a> <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s1">r&#39;\.c$&#39;</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span> </span><span id="L-260"><a name="L-260"></a> <span class="n">final_flags</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="s2">&quot;-x c&quot;</span><span class="p">,</span> <span class="s2">&quot;--std=c11&quot;</span><span class="p">])</span> </span><span id="L-261"><a name="L-261"></a> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;C file!</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">);</span> </span><span id="L-262"><a name="L-262"></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-263"><a name="L-263"></a> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;None!!!!!!!!!!!!!!!!!!!!</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">);</span> </span><span id="L-264"><a name="L-264"></a> </span><span id="L-265"><a name="L-265"></a> <span class="c1">#print(&quot;Flags are: &quot;, final_flags)</span> </span><span id="L-266"><a name="L-266"></a> </span><span id="L-267"><a name="L-267"></a> <span class="k">return</span> <span class="p">{</span> </span><span id="L-268"><a name="L-268"></a> <span class="s1">&#39;flags&#39;</span><span class="p">:</span> <span class="n">final_flags</span><span class="p">,</span> </span><span id="L-269"><a name="L-269"></a> <span class="s1">&#39;do_cache&#39;</span><span class="p">:</span> <span class="bp">True</span> </span><span id="L-270"><a name="L-270"></a> <span class="p">}</span> </span><span id="L-271"><a name="L-271"></a><span class="c1"># vim:set tw=0 nowrap :</span> </span></pre></div> </td></tr></table>
C, YouCompleteMe, c++, python
--- 
+++ 
@@ -0,0 +1,271 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2014  Google Inc.
+#
+# This file is part of YouCompleteMe.
+#
+# YouCompleteMe is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# YouCompleteMe is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with YouCompleteMe.  If not, see <http://www.gnu.org/licenses/>.
+
+import os
+import ycm_core
+import re
+
+# These are the compilation flags that will be used in case there's no
+# compilation database set (by default, one is not set).
+# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
+flags = [
+#'-Wall',
+'-Wextra',
+'-Werror',
+'-fexceptions',
+
+# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
+# language to use when compiling headers. So it will guess. Badly. So C++
+# headers will be compiled as C headers. You don't want that so ALWAYS specify
+# a "-std=<something>".
+# For a C project, you would set this to something like 'c99' instead of
+# 'c++11'.
+
+## '-std=gnu11',
+
+# ...and the same thing goes for the magic -x option which specifies the
+# language that the files to be compiled are written in. This is mostly
+# relevant for c++ headers.
+# For a C project, you would set this to 'c' instead of 'c++'.
+
+## '-x', 'c',
+
+'-target','arm-none-abi',
+'-mthumb',
+'-mcpu=cortex-m3',
+'-mfloat-abi=soft',
+
+
+  '-DLINT',
+  '-DWICED_VERSION=\"3.3.1\"',
+  '-DBUS=\"SDIO\"',
+  '-Ibuild/sprinkl_sr301-FreeRTOS-LwIP-EMW3162-SDIO/resources/',
+  #'-DPLATFORM=\"EMW3162\"',
+  '-DSR301_MOD_ISM43340CF'
+  '-DJSMN_PARENT_LINKS',
+  '-U__STRICT_ANSI__',
+  '-Wcast-align',
+  '-I', './tools/ARM_GNU/include/',
+  '-I', './apps/sprinkl/sr301/.',
+  '-I', './apps/sprinkl/sr301/protocols/HTTP',
+  '-I', './apps/sprinkl/sr301/utilities/JSMN',
+  '-I', './apps/sprinkl/sr301/utilities/JSMN_sprinkl',
+  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/libraries/.',
+  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/libraries//inc',
+  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/libraries/../../../../ARM_CM3/CMSIS',
+  '-I', './libraries/utilities/ring_buffer/.',
+  '-I', './WICED/platform/MCU/STM32F2xx/peripherals/.',
+  '-I', './WICED/platform/GCC/.',
+  '-I', './WICED/security/BESL/crypto_open/.',
+  '-I', './WICED/security/BESL/crypto_open/srp',
+  '-I', './libraries/utilities/TLV/.',
+  '-I', './libraries/daemons/DHCP_server/.',
+  '-I', '././WICED/network/LwIP/WWD/FreeRTOS/.',
+  '-I', './libraries/utilities/base64/.',
+  '-I', './libraries/utilities/crc/.',
+  '-I', '././WICED/platform/MCU/STM32F2xx/.',
+  '-I', '././WICED/platform/MCU/STM32F2xx/..',
+  '-I', '././WICED/platform/MCU/STM32F2xx/../..',
+  '-I', '././WICED/platform/MCU/STM32F2xx/../../include',
+  '-I', '././WICED/platform/MCU/STM32F2xx/../../ARM_CM3',
+  '-I', '././WICED/platform/MCU/STM32F2xx/../../ARM_CM3/CMSIS',
+  '-I', '././WICED/platform/MCU/STM32F2xx/peripherals',
+  '-I', '././WICED/platform/MCU/STM32F2xx/WAF',
+  '-I', '././WICED/platform/MCU/STM32F2xx/../../../../../apps/waf/bootloader/',
+  '-I', './libraries/filesystems/wicedfs/.',
+  '-I', '././WICED/WWD/.',
+  '-I', '././WICED/WWD/include',
+  '-I', '././WICED/WWD/include/network',
+  '-I', '././WICED/WWD/include/RTOS',
+  '-I', '././WICED/WWD/internal/bus_protocols/SDIO',
+  '-I', '././WICED/WWD/internal/chips/43362A2',
+  '-I', './libraries/protocols/DNS/.',
+  '-I', '././WICED/security/BESL/host/WICED',
+  '-I', '././WICED/security/BESL/TLS',
+  '-I', '././WICED/security/BESL/crypto',
+  '-I', '././WICED/security/BESL/WPS',
+  '-I', '././WICED/security/BESL/include',
+  '-I', '././WICED/security/BESL/P2P',
+  '-I', '././WICED/security/BESL/crypto/homekit_srp',
+  '-I', '././WICED/security/BESL/crypto/ed25519',
+  '-I', '././WICED/security/BESL/supplicant',
+  '-I', './libraries/drivers/spi_flash/.',
+  '-I', '././WICED/network/LwIP/WICED/.',
+  '-I', '././WICED/network/LwIP/WWD/.',
+  '-I', '././WICED/RTOS/FreeRTOS/WICED/.',
+  '-I', '././WICED/RTOS/FreeRTOS/WWD/.',
+  '-I', '././WICED/RTOS/FreeRTOS/WWD/./EMW3162',
+  '-I', '././WICED/RTOS/FreeRTOS/WWD/./ARM_CM3',
+  '-I', './libraries/drivers/ext_flash/.',
+  '-I', './libraries/utilities/JSMN_sprinkl/.',
+  '-I', './libraries/utilities/JSMN_sprinkl/../JSMN/',
+  '-I', './libraries/utilities/miniz/.',
+  '-I', './libraries/utilities/JSMN/.',
+  '-I', './libraries/protocols/mqtt/.',
+  '-I', './libraries/protocols/mqtt/mqtt/MQTTPacket/src',
+  '-I', './libraries/protocols/HTTP/.',
+  '-I', './libraries/protocols/SNTP/.',
+  '-I', './libraries/filesystems/spiffs/.',
+  '-I', '././WICED/.',
+  '-I', './platforms/EMW3162/.',
+  '-I', './WICED/network/LwIP/ver1.4.0.rc1',
+  '-I', './WICED/network/LwIP/ver1.4.0.rc1/src/include',
+  '-I', './WICED/network/LwIP/ver1.4.0.rc1/src/include/ipv4',
+  '-I', './WICED/network/LwIP/WICED',
+  '-I', './WICED/RTOS/FreeRTOS/ver7.5.2/Source/include',
+  '-I', './WICED/RTOS/FreeRTOS/ver7.5.2/Source/portable/GCC/ARM_CM3',
+  '-I', './WICED/WWD/internal/chips/43362A2',
+  '-I', './libraries',
+  '-I', './include',
+  '-I', './libraries/drivers/bluetooth_le/include/',
+
+  '-DUSE_STDPERIPH_DRIVER',
+  '-D_STM32F205RGT6_',
+  '-D_STM3x_',
+  '-D_STM32x_',
+  '-DMAX_WATCHDOG_TIMEOUT_SECONDS=22',
+  '-DFIRMWARE_WITH_PMK_CALC_SUPPORT',
+  '-DADD_LWIP_EAPOL_SUPPORT',
+  '-DNXD_EXTENDED_BSD_SOCKET_SUPPORT',
+  '-DOPENSSL',
+  '-DSTDC_HEADERS',
+  '-DADD_NETX_EAPOL_SUPPORT',
+  '-DWWD_STARTUP_DELAY=10',
+  '-DBOOTLOADER_MAGIC_NUMBER=0x4d435242',
+  '-DWWD_DIRECT_RESOURCES',
+  '-DHSE_VALUE=26000000',
+  '-DCRLF_STDIO_REPLACEMENT',
+  '-DNETWORK_LwIP=1',
+  '-DLwIP_VERSION=\"v1.4.0.rc1\"',
+  '-DRTOS_FreeRTOS=1',
+  '-DconfigUSE_MUTEXES',
+  '-DconfigUSE_RECURSIVE_MUTEXES',
+  '-DFreeRTOS_VERSION=\"v7.5.2\"',
+  '-DWICED_SDK_WIFI_CONFIG_DCT_H=\"./include/default_wifi_config_dct.h\"',
+  '-DWICED_SDK_BT_CONFIG_DCT_H=\"./include/default_bt_config_dct.h\"'
+
+]
+
+
+# Set this to the absolute path to the folder (NOT the file!) containing the
+# compile_commands.json file to use that instead of 'flags'. See here for
+# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
+#
+# Most projects will NOT need to set this to anything; you can just change the
+# 'flags' list of compilation flags.
+compilation_database_folder = ''
+
+if os.path.exists( compilation_database_folder ):
+  database = ycm_core.CompilationDatabase( compilation_database_folder )
+else:
+  database = None
+
+SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm', '.S' ]
+
+def DirectoryOfThisScript():
+  return os.path.dirname( os.path.abspath( __file__ ) )
+
+
+def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
+  if not working_directory:
+    return list( flags )
+  new_flags = []
+  make_next_absolute = False
+  path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
+  for flag in flags:
+    new_flag = flag
+
+    if make_next_absolute:
+      make_next_absolute = False
+      if not flag.startswith( '/' ):
+        new_flag = os.path.join( working_directory, flag )
+
+    for path_flag in path_flags:
+      if flag == path_flag:
+        make_next_absolute = True
+        break
+
+      if flag.startswith( path_flag ):
+        path = flag[ len( path_flag ): ]
+        new_flag = path_flag + os.path.join( working_directory, path )
+        break
+
+    if new_flag:
+      new_flags.append( new_flag )
+  return new_flags
+
+
+def IsHeaderFile( filename ):
+  extension = os.path.splitext( filename )[ 1 ]
+  return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
+
+
+def GetCompilationInfoForFile( filename ):
+  # The compilation_commands.json file generated by CMake does not have entries
+  # for header files. So we do our best by asking the db for flags for a
+  # corresponding source file, if any. If one exists, the flags for that file
+  # should be good enough.
+  if IsHeaderFile( filename ):
+    basename = os.path.splitext( filename )[ 0 ]
+    for extension in SOURCE_EXTENSIONS:
+      replacement_file = basename + extension
+      if os.path.exists( replacement_file ):
+        compilation_info = database.GetCompilationInfoForFile(
+          replacement_file )
+        if compilation_info.compiler_flags_:
+          return compilation_info
+    return None
+  return database.GetCompilationInfoForFile( filename )
+
+
+# This is the entry point; this function is called by ycmd to produce flags for
+# a file.
+def FlagsForFile( filename, **kwargs ):
+  if database:
+    # Bear in mind that compilation_info.compiler_flags_ does NOT return a
+    # python list, but a "list-like" StringVec object
+    compilation_info = GetCompilationInfoForFile( filename )
+    if not compilation_info:
+      return None
+
+    final_flags = MakeRelativePathsInFlagsAbsolute(
+      compilation_info.compiler_flags_,
+      compilation_info.compiler_working_dir_ )
+  else:
+    relative_to = DirectoryOfThisScript()
+    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
+
+  # Add in C or CXX extensions
+  print("Filename: ", filename, "\n");
+  if  re.search(r'\.(?:cc|cpp|cxx)$', filename):
+    final_flags.extend(["-x c++", "--std=c++14"])
+    print("CPP FILE!!\n");
+  elif re.search(r'\.c$', filename):
+    final_flags.extend(["-x c", "--std=c11"])
+    print("C file!\n");
+  else:
+      print("None!!!!!!!!!!!!!!!!!!!!\n");
+
+  #print("Flags are: ", final_flags)
+
+  return {
+    'flags': final_flags,
+    'do_cache': True
+  }
+# vim:set tw=0 nowrap :