File tree Expand file tree Collapse file tree 8 files changed +107
-1
lines changed 
connectivity/drivers/wifi 
COMPONENT_ESPRESSIF_ESP8266 
TARGET_STM/COMPONENT_EMW3080B Expand file tree Collapse file tree 8 files changed +107
-1
lines changed Original file line number Diff line number Diff line change @@ -12,3 +12,15 @@ target_include_directories(mbed-wifi
1212        .
1313        ./ESP8266
1414)
15+ 
16+ # Link override object file coming from static library anyway 
17+ # 
18+ # NOTE: This linker option is to pretend undefined symbol and won't cause 
19+ #       undefined symbol error even though the override object file actually 
20+ #       doesn't provide such symbol definition. 
21+ if (${MBED_TOOLCHAIN}  STREQUAL  "GCC_ARM" )
22+     target_link_options (mbed-wifi
23+         INTERFACE 
24+             LINKER:--undefined=LINK_ESP8266INTERFACE_CPP
25+     )
26+ endif ()
Original file line number Diff line number Diff line change @@ -1149,6 +1149,20 @@ WiFiInterface *WiFiInterface::get_default_instance()
11491149    return  &esp;
11501150}
11511151
1152+ /* 
1153+  * With e.g. GCC linker option "--undefined=<LINK_FOO>", pull in this 
1154+  * object file anyway for being able to override weak symbol successfully 
1155+  * even though from static library. See: 
1156+  * https://stackoverflow.com/questions/42588983/what-does-the-gnu-ld-undefined-option-do 
1157+  * 
1158+  * NOTE: For C++ name mangling, 'extern "C"' is necessary to match the 
1159+  *       <LINK_FOO> symbol correctly. 
1160+  */  
1161+ extern  " C" 
1162+ void  LINK_ESP8266INTERFACE_CPP (void )
1163+ {
1164+ }
1165+ 
11521166#endif 
11531167
11541168void  ESP8266Interface::refresh_conn_state_cb ()
Original file line number Diff line number Diff line change @@ -21,3 +21,15 @@ target_sources(mbed-wifi
2121        utils/cydhcp_server_debug.cpp
2222        utils/cynetwork_utils.c
2323)
24+ 
25+ # Link override object file coming from static library anyway 
26+ # 
27+ # NOTE: This linker option is to pretend undefined symbol and won't cause 
28+ #       undefined symbol error even though the override object file actually 
29+ #       doesn't provide such symbol definition. 
30+ if (${MBED_TOOLCHAIN}  STREQUAL  "GCC_ARM" )
31+     target_link_options (mbed-wifi
32+         INTERFACE 
33+             LINKER:--undefined=LINK_WHD_INTERFACE_CPP
34+     )
35+ endif ()
Original file line number Diff line number Diff line change @@ -32,3 +32,17 @@ WhdSoftAPInterface *WhdSoftAPInterface::get_default_instance()
3232    static  WhdSoftAPInterface softap;
3333    return  &softap;
3434}
35+ 
36+ /* 
37+  * With e.g. GCC linker option "--undefined=<LINK_FOO>", pull in this 
38+  * object file anyway for being able to override weak symbol successfully 
39+  * even though from static library. See: 
40+  * https://stackoverflow.com/questions/42588983/what-does-the-gnu-ld-undefined-option-do 
41+  * 
42+  * NOTE: For C++ name mangling, 'extern "C"' is necessary to match the 
43+  *       <LINK_FOO> symbol correctly. 
44+  */  
45+ extern  " C" 
46+ void  LINK_WHD_INTERFACE_CPP (void )
47+ {
48+ }
Original file line number Diff line number Diff line change @@ -21,3 +21,15 @@ target_sources(mbed-wifi
2121        mx_wifi/core/mx_wifi_ipc.c
2222        mx_wifi/core/mx_wifi_slip.c
2323)
24+ 
25+ # Link override object file coming from static library anyway 
26+ # 
27+ # NOTE: This linker option is to pretend undefined symbol and won't cause 
28+ #       undefined symbol error even though the override object file actually 
29+ #       doesn't provide such symbol definition. 
30+ if (${MBED_TOOLCHAIN}  STREQUAL  "GCC_ARM" )
31+     target_link_options (mbed-wifi
32+         INTERFACE 
33+             LINKER:--undefined=LINK_EMW3080BINTERFACE_CPP
34+     )
35+ endif ()
Original file line number Diff line number Diff line change @@ -365,3 +365,19 @@ WiFiInterface *WiFiInterface::get_target_default_instance()
365365    return  &wifi;
366366}
367367#endif  /*  MBED_CONF_NSAPI_PRESENT */ 
368+ 
369+ #if  MBED_CONF_EMW3080B_PROVIDE_DEFAULT || defined(MBED_CONF_NSAPI_PRESENT)
370+ /* 
371+  * With e.g. GCC linker option "--undefined=<LINK_FOO>", pull in this 
372+  * object file anyway for being able to override weak symbol successfully 
373+  * even though from static library. See: 
374+  * https://stackoverflow.com/questions/42588983/what-does-the-gnu-ld-undefined-option-do 
375+  * 
376+  * NOTE: For C++ name mangling, 'extern "C"' is necessary to match the 
377+  *       <LINK_FOO> symbol correctly. 
378+  */  
379+ extern  " C" 
380+ void  LINK_EMW3080BINTERFACE_CPP (void )
381+ {
382+ }
383+ #endif 
Original file line number Diff line number Diff line change @@ -23,4 +23,16 @@ target_sources(mbed-wiced
2323        wiced_interface/default_wifi_interface.cpp
2424)
2525
26- target_link_libraries (mbed-wifi PUBLIC  mbed-wiced)
26+ target_link_libraries (mbed-wifi PUBLIC  mbed-wiced)
27+ 
28+ # Link override object file coming from static library anyway 
29+ # 
30+ # NOTE: This linker option is to pretend undefined symbol and won't cause 
31+ #       undefined symbol error even though the override object file actually 
32+ #       doesn't provide such symbol definition. 
33+ if (${MBED_TOOLCHAIN}  STREQUAL  "GCC_ARM" )
34+     target_link_options (mbed-wifi
35+         INTERFACE 
36+             LINKER:--undefined=LINK_DEFAULT_WIFI_INTERFACE_CPP
37+     )
38+ endif ()
Original file line number Diff line number Diff line change @@ -25,4 +25,18 @@ WiFiInterface *WiFiInterface::get_target_default_instance()
2525    return  &wifi;
2626}
2727
28+ /* 
29+  * With e.g. GCC linker option "--undefined=<LINK_FOO>", pull in this 
30+  * object file anyway for being able to override weak symbol successfully 
31+  * even though from static library. See: 
32+  * https://stackoverflow.com/questions/42588983/what-does-the-gnu-ld-undefined-option-do 
33+  * 
34+  * NOTE: For C++ name mangling, 'extern "C"' is necessary to match the 
35+  *       <LINK_FOO> symbol correctly. 
36+  */  
37+ extern  " C" 
38+ void  LINK_DEFAULT_WIFI_INTERFACE_CPP (void )
39+ {
40+ }
41+ 
2842#endif 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments