2019-04-23 12:24:47 +00:00
|
|
|
extern crate bindgen;
|
|
|
|
extern crate cc;
|
2019-04-23 23:26:47 +00:00
|
|
|
extern crate glob;
|
2019-04-23 12:24:47 +00:00
|
|
|
extern crate llvm_tools;
|
|
|
|
|
2019-04-23 23:26:47 +00:00
|
|
|
use glob::glob;
|
|
|
|
use llvm_tools::LlvmTools;
|
2019-04-23 12:24:47 +00:00
|
|
|
use std::env;
|
2019-04-23 23:26:47 +00:00
|
|
|
use std::fs;
|
2019-04-23 12:24:47 +00:00
|
|
|
use std::path::PathBuf;
|
|
|
|
use std::process::Command;
|
|
|
|
|
|
|
|
const STDLIB_INCLUDE_PATHS: &[&'static str] = &[
|
|
|
|
"/usr/lib/gcc/arm-none-eabi/5.4.1/include",
|
|
|
|
"/usr/lib/gcc/arm-none-eabi/5.4.1/include-fixed",
|
|
|
|
"/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/include",
|
|
|
|
];
|
|
|
|
|
|
|
|
const SDK_INCLUDE_PATHS: &[&'static str] = &[
|
|
|
|
"vendor/sdk/component/soc/realtek/common/bsp",
|
|
|
|
"vendor/sdk/component/os/freertos",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/include",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3",
|
|
|
|
"vendor/sdk/component/os/os_dep/include",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/driver",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/os",
|
|
|
|
"vendor/sdk/component/common/api/network/include",
|
|
|
|
"vendor/sdk/component/common/api",
|
|
|
|
"vendor/sdk/component/common/api/platform",
|
|
|
|
"vendor/sdk/component/common/api/wifi",
|
|
|
|
"vendor/sdk/component/common/api/wifi/rtw_wpa_supplicant/src",
|
|
|
|
"vendor/sdk/component/common/mbed/api",
|
|
|
|
"vendor/sdk/component/common/mbed/hal",
|
|
|
|
"vendor/sdk/component/common/mbed/hal_ext",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a",
|
|
|
|
"vendor/sdk/component/common/file_system",
|
|
|
|
"vendor/sdk/component/common/network",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/port/realtek/freertos",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/include",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/include/lwip",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/include/ipv4",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/port/realtek",
|
|
|
|
"vendor/sdk/component/common/test",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/cmsis",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/cmsis/device",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/platform",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/rtl_std_lib/include",
|
|
|
|
"vendor/sdk/component/common/drivers/wlan/realtek/include",
|
|
|
|
"vendor/sdk/component/common/drivers/wlan/realtek/src/osdep",
|
|
|
|
"vendor/sdk/component/common/drivers/wlan/realtek/src/hci",
|
|
|
|
"vendor/sdk/component/common/drivers/wlan/realtek/src/hal",
|
|
|
|
"vendor/sdk/component/common/drivers/wlan/realtek/src/hal/OUTSRC",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/ram_lib/wlan/realtek/wlan_ram_map/rom",
|
|
|
|
"vendor/sdk/component/common/network/ssl/polarssl-1.3.8/include",
|
|
|
|
"vendor/sdk/component/common/network/ssl/ssl_ram_map/rom",
|
|
|
|
"vendor/sdk/component/common/utilities",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/rtl_std_lib/include",
|
|
|
|
"vendor/sdk/component/common/application/apple/WACServer/External/Curve25519",
|
|
|
|
"vendor/sdk/component/common/application/apple/WACServer/External/GladmanAES",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/ram_lib/usb_otg/include",
|
|
|
|
"vendor/sdk/component/common/video/v4l2/inc",
|
|
|
|
"vendor/sdk/component/common/media/rtp_codec",
|
|
|
|
"vendor/sdk/component/common/drivers/usb_class/host/uvc/inc",
|
|
|
|
"vendor/sdk/component/common/drivers/usb_class/device",
|
|
|
|
"vendor/sdk/component/common/drivers/usb_class/device/class",
|
|
|
|
"vendor/sdk/component/common/drivers/sdio/realtek/sdio_host/inc",
|
|
|
|
"vendor/sdk/component/common/audio",
|
|
|
|
"vendor/sdk/component/common/drivers/i2s",
|
|
|
|
"vendor/sdk/component/common/application/xmodem",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTClient",
|
|
|
|
];
|
|
|
|
|
|
|
|
const SDK_C_FILES: &[&'static str] = &[
|
|
|
|
//cmsis
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/cmsis/device/system_8195a.c",
|
|
|
|
//console
|
|
|
|
"vendor/sdk/component/common/api/at_cmd/atcmd_cloud.c",
|
|
|
|
"vendor/sdk/component/common/api/at_cmd/atcmd_ethernet.c",
|
|
|
|
"vendor/sdk/component/common/api/at_cmd/atcmd_lwip.c",
|
|
|
|
"vendor/sdk/component/common/api/at_cmd/atcmd_sys.c",
|
|
|
|
"vendor/sdk/component/common/api/at_cmd/atcmd_wifi.c",
|
|
|
|
"vendor/sdk/component/common/api/at_cmd/log_service.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/driver/low_level_io.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/driver/rtl_consol.c",
|
|
|
|
//network - api
|
|
|
|
"vendor/sdk/component/common/api/wifi/rtw_wpa_supplicant/src/crypto/tls_polarssl.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/rtw_wpa_supplicant/wpa_supplicant/wifi_eap_config.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/rtw_wpa_supplicant/wpa_supplicant/wifi_p2p_config.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/rtw_wpa_supplicant/wpa_supplicant/wifi_wps_config.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/wifi_conf.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/wifi_ind.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/wifi_promisc.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/wifi_simple_config.c",
|
|
|
|
"vendor/sdk/component/common/api/wifi/wifi_util.c",
|
|
|
|
"vendor/sdk/component/common/api/lwip_netconf.c",
|
|
|
|
//network - app
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTClient/MQTTClient.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTConnectClient.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTConnectServer.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTDeserializePublish.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTFormat.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTClient/MQTTFreertos.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTPacket.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTSerializePublish.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTSubscribeClient.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTSubscribeServer.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTUnsubscribeClient.c",
|
|
|
|
"vendor/sdk/component/common/application/mqtt/MQTTPacket/MQTTUnsubscribeServer.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/platform/ota_8195a.c",
|
|
|
|
"vendor/sdk/component/common/api/network/src/ping_test.c",
|
|
|
|
"vendor/sdk/component/common/utilities/ssl_client.c",
|
|
|
|
"vendor/sdk/component/common/utilities/ssl_client_ext.c",
|
|
|
|
"vendor/sdk/component/common/utilities/tcptest.c",
|
|
|
|
"vendor/sdk/component/common/api/network/src/wlan_network.c",
|
|
|
|
//network - lwip
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/api_lib.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/api_msg.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/err.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/netbuf.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/netdb.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/netifapi.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/sockets.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/api/tcpip.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/autoip.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/icmp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/igmp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/inet.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/inet_chksum.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/ip.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/ip_addr.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/ipv4/ip_frag.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/def.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/dhcp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/dns.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/init.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/lwip_timers.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/mem.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/memp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/netif.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/pbuf.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/raw.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/stats.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/sys.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/tcp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/tcp_in.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/tcp_out.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/core/udp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/src/netif/etharp.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/port/realtek/freertos/ethernetif.c",
|
|
|
|
"vendor/sdk/component/common/drivers/wlan/realtek/src/osdep/lwip_intf.c",
|
|
|
|
"vendor/sdk/component/common/network/lwip/lwip_v1.4.1/port/realtek/freertos/sys_arch.c",
|
|
|
|
"vendor/sdk/component/common/network/dhcp/dhcps.c",
|
|
|
|
"vendor/sdk/component/common/network/sntp/sntp.c",
|
|
|
|
//network - httpc
|
|
|
|
"vendor/sdk/component/common/network/httpc/httpc_tls.c",
|
|
|
|
//network - httpd
|
|
|
|
"vendor/sdk/component/common/network/httpd/httpd_tls.c",
|
|
|
|
//network - mdns
|
|
|
|
"vendor/sdk/component/common/network/mDNS/mDNSPlatform.c",
|
|
|
|
//network - wsclient
|
|
|
|
"vendor/sdk/component/common/network/websocket/wsclient_tls.c",
|
|
|
|
//os - freertos
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_5.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3/port.c",
|
|
|
|
"vendor/sdk/component/os/freertos/cmsis_os.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/croutine.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/event_groups.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/list.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/queue.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/tasks.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_v8.1.2/Source/timers.c",
|
|
|
|
//os - osdep
|
|
|
|
"vendor/sdk/component/os/os_dep/device_lock.c",
|
|
|
|
"vendor/sdk/component/os/freertos/freertos_service.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/os/mailbox.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/misc/os/osdep_api.c",
|
|
|
|
"vendor/sdk/component/os/os_dep/osdep_service.c",
|
|
|
|
"vendor/sdk/component/os/os_dep/tcm_heap.c",
|
|
|
|
//peripheral - api
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/analogin_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/dma_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/efuse_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/ethernet_api.c",
|
|
|
|
"vendor/sdk/component/common/drivers/ethernet_mii/ethernet_mii.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/flash_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/gpio_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/gpio_irq_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/i2c_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/i2s_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/log_uart_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/nfc_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/pinmap.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/pinmap_common.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/port_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/pwmout_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/rtc_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/serial_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/sleep.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/spdio_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/spi_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/sys_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/timer_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/us_ticker.c",
|
|
|
|
"vendor/sdk/component/common/mbed/common/us_ticker_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/common/wait_api.c",
|
|
|
|
"vendor/sdk/component/common/mbed/targets/hal/rtl8195a/wdt_api.c",
|
|
|
|
//peripheral - hal
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_32k.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_adc.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_gdma.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_gpio.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_i2c.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_i2s.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_mii.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_nfc.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_pcm.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_pwm.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_sdr_controller.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_ssi.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_timer.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/src/hal_uart.c",
|
|
|
|
//peripheral - rtl8195a
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_adc.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_gdma.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_gpio.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_i2c.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_i2s.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_mii.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_nfc.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_pwm.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_ssi.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_timer.c",
|
|
|
|
"vendor/sdk/component/soc/realtek/8195a/fwlib/rtl8195a/src/rtl8195a_uart.c",
|
|
|
|
//all:SRC_C += vendor/sdk/component/common/drivers/wlan/realtek/src/core/option/rtw_opt_skbuf.c
|
|
|
|
"vendor/sdk/component/common/utilities/cJSON.c",
|
|
|
|
"vendor/sdk/component/common/utilities/http_client.c",
|
|
|
|
"vendor/sdk/component/common/utilities/uart_socket.c",
|
|
|
|
"vendor/sdk/component/common/utilities/webserver.c",
|
|
|
|
"vendor/sdk/component/common/utilities/xml.c",
|
|
|
|
];
|
|
|
|
|
2019-04-23 23:26:47 +00:00
|
|
|
const SDK_STATIC_LIBS: &[&'static str] = &[
|
|
|
|
"platform",
|
|
|
|
"wlan",
|
|
|
|
"http",
|
|
|
|
"dct",
|
|
|
|
"wps",
|
|
|
|
"rtlstd",
|
|
|
|
"websocket",
|
|
|
|
"xmodem",
|
|
|
|
"mdns"
|
|
|
|
];
|
|
|
|
|
2019-04-23 12:24:47 +00:00
|
|
|
fn main() {
|
|
|
|
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
2019-04-23 23:26:47 +00:00
|
|
|
let sdk_staticlib_path = PathBuf::from("vendor/sdk/component/soc/realtek/8195a/misc/bsp/lib/common/GCC").canonicalize().unwrap();
|
2019-04-23 12:24:47 +00:00
|
|
|
|
|
|
|
let tools = LlvmTools::new().unwrap();
|
|
|
|
let objcopy = match tools.tool("llvm-objcopy") {
|
|
|
|
Some(path) => path,
|
|
|
|
None => panic!("Couldn't find objcopy"),
|
|
|
|
};
|
|
|
|
|
2019-04-23 23:26:47 +00:00
|
|
|
for lib_name in SDK_STATIC_LIBS.iter() {
|
|
|
|
fs::create_dir_all(out_path.join("static").join(lib_name)).expect("Could not create directory");
|
|
|
|
|
|
|
|
Command::new("ar")
|
|
|
|
.arg("x")
|
|
|
|
.arg(sdk_staticlib_path.join(format!("lib_{}.a", lib_name)).to_str().unwrap())
|
|
|
|
.current_dir(out_path.join("static").join(lib_name))
|
|
|
|
.status().unwrap();
|
|
|
|
}
|
|
|
|
|
|
|
|
let sdk_static_lib_object_paths = glob(out_path.join("static/**/*.o").to_str().unwrap()).unwrap().into_iter().filter_map(|entry| {
|
|
|
|
match entry {
|
|
|
|
Ok(path) => Some(path),
|
|
|
|
Err(_) => None,
|
|
|
|
}
|
|
|
|
}).collect::<Vec<_>>();
|
|
|
|
|
2019-04-23 12:24:47 +00:00
|
|
|
Command::new(objcopy)
|
|
|
|
.args(&["--rename-section", ".data=.loader.data,contents,alloc,load,readonly,data"])
|
|
|
|
.args(&["-I", "binary"])
|
|
|
|
.args(&["-B", "arm"])
|
|
|
|
.arg("vendor/sdk/component/soc/realtek/8195a/misc/bsp/image/ram_1.r.bin")
|
|
|
|
.arg(out_path.join("ram_1.r.o"))
|
|
|
|
.status().unwrap();
|
|
|
|
|
|
|
|
let mut compiler = cc::Build::new();
|
|
|
|
|
|
|
|
compiler
|
|
|
|
.include("include")
|
|
|
|
.define("M3", None)
|
|
|
|
.define("CONFIG_PLATFORM_8195A", None)
|
|
|
|
.define("GCC_ARMCM3", None)
|
|
|
|
.define("F_CPU", "166000000L")
|
|
|
|
.flag("-mcpu=cortex-m3")
|
|
|
|
.flag("-mthumb")
|
|
|
|
.flag("-g2")
|
|
|
|
.flag("-w")
|
|
|
|
.flag("-O2")
|
|
|
|
.flag("-Wno-pointer-sign")
|
|
|
|
.flag("-fno-common")
|
|
|
|
.flag("-fmessage-length=0")
|
|
|
|
.flag("-ffunction-sections")
|
|
|
|
.flag("-fdata-sections")
|
|
|
|
.flag("-fomit-frame-pointer")
|
|
|
|
.flag("-fno-short-enums")
|
|
|
|
.flag("-std=gnu99")
|
|
|
|
.flag("-fsigned-char");
|
|
|
|
|
|
|
|
for path in STDLIB_INCLUDE_PATHS {
|
|
|
|
compiler.include(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
for path in SDK_INCLUDE_PATHS {
|
|
|
|
compiler.include(path);
|
|
|
|
}
|
|
|
|
|
2019-04-23 23:26:47 +00:00
|
|
|
for path in sdk_static_lib_object_paths {
|
|
|
|
compiler.object(path);
|
|
|
|
}
|
|
|
|
|
2019-04-23 12:24:47 +00:00
|
|
|
compiler
|
|
|
|
.object(out_path.join("ram_1.r.o"))
|
2019-04-23 23:26:47 +00:00
|
|
|
.object("vendor/sdk/component/soc/realtek/8195a/misc/bsp/lib/common/GCC/lib_wlan.a")
|
2019-04-23 12:24:47 +00:00
|
|
|
.files(SDK_C_FILES)
|
|
|
|
.file("src/freertos_rs.c")
|
|
|
|
.compile("sdk");
|
|
|
|
|
2019-04-23 12:54:38 +00:00
|
|
|
let bindings = bindgen::Builder::default()
|
|
|
|
.header("include/wrapper.h")
|
2019-04-24 12:31:25 +00:00
|
|
|
.whitelist_function("log_uart_init")
|
|
|
|
.whitelist_function("console_init")
|
2019-04-23 12:54:38 +00:00
|
|
|
.whitelist_function("wifi_manager_init")
|
|
|
|
.whitelist_function("wifi_off")
|
|
|
|
.whitelist_function("wifi_on")
|
|
|
|
.whitelist_function("wifi_scan_networks")
|
|
|
|
.whitelist_function("vTaskStartScheduler")
|
|
|
|
.whitelist_function("pvPortMalloc")
|
|
|
|
.whitelist_function("vPortFree")
|
|
|
|
.whitelist_type("rtw_mode_t")
|
|
|
|
.whitelist_type("rtw_scan_result_t")
|
|
|
|
.whitelist_type("rtw_scan_result_handler_t")
|
|
|
|
.clang_arg("-Iinclude")
|
|
|
|
.clang_args(STDLIB_INCLUDE_PATHS.iter().map(|path| format!("-I{}", path)))
|
|
|
|
.clang_args(SDK_INCLUDE_PATHS.iter().map(|path| format!("-I{}", path)))
|
|
|
|
.use_core()
|
|
|
|
.ctypes_prefix("cty")
|
|
|
|
.rustfmt_bindings(true)
|
|
|
|
.generate()
|
|
|
|
.expect("Unable to generate C SDK bindings");
|
|
|
|
|
|
|
|
bindings
|
|
|
|
.write_to_file(out_path.join("bindings.rs"))
|
|
|
|
.expect("Couldn't write bindings.rs!");
|
2019-04-23 12:24:47 +00:00
|
|
|
}
|