Link faild :undefined reference to "symbol"

Collected 2 compatible libraries
Looking for dependencies...
Library Dependency Graph
|-- <hw_src> (/home/sunqi/Desktop/new_prj/cmsis/lib/hw_src)
|   |-- <STM32F10x_HD_STDLIB> (/home/sunqi/Desktop/new_prj/cmsis/lib/STM32F10x_HD_STDLIB)
|-- <STM32F10x_HD_STDLIB> (/home/sunqi/Desktop/new_prj/cmsis/lib/STM32F10x_HD_STDLIB)
arm-none-eabi-g++ -o .pioenvs/stm32f103zet6/firmware.elf -Os -Wl,--gc-sections,--relax -mthumb -nostartfiles -nostdlib -mcpu=cortex-m3 -Wl,-T"/home/sunqi/.platformio/platformio/ldscripts/stm32_f103zet6.ld" .pioenvs/stm32f103zet6/src/main.o -L/home/sunqi/.platformio/platforms/ststm32/ldscripts -L.pioenvs/stm32f103zet6 -Wl,--start-group -lc -lgcc -lm -lstdc++ -lnosys .pioenvs/stm32f103zet6/libFrameworkCMSISVariant.a .pioenvs/stm32f103zet6/libFrameworkCMSISCommon.a .pioenvs/stm32f103zet6/lib/libSTM32F10x_HD_STDLIB.a .pioenvs/stm32f103zet6/lib/libhw_src.a -Wl,--end-group
.pioenvs/stm32f103zet6/src/main.o: In function `main':
/home/sunqi/Desktop/new_prj/cmsis/src/main.cpp:21: undefined reference to `delay_init()'
/home/sunqi/Desktop/new_prj/cmsis/src/main.cpp:22: undefined reference to `LED_Init()'
/home/sunqi/Desktop/new_prj/cmsis/src/main.cpp:27: undefined reference to `delay_ms(unsigned short)'
/home/sunqi/Desktop/new_prj/cmsis/src/main.cpp:30: undefined reference to `delay_ms(unsigned short)'

these functions are declared in ${projectRoot}/lib/hw_lib

$ tree -L 4

project_cmsis
├── lib
│   ├── hw_src
│   │   ├── delay.c
│   │   ├── delay.h
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── sys.c
│   │   ├── sys.h
│   │   ├── usart.c
│   │   └── usart.h
│   ├── readme.txt
│   └── STM32F10x_HD_STDLIB
│       ├── misc.c
│       ├── misc.h
│       ├── stm32f10x_adc.c
│       ├── stm32f10x_adc.h
│       ├── stm32f10x_bkp.c
│       ├── stm32f10x_bkp.h
│       ├── stm32f10x_can.c
│       ├── stm32f10x_can.h
│       ├── stm32f10x_cec.c
│       ├── stm32f10x_cec.h
│       ├── stm32f10x_conf.h
│       ├── stm32f10x_crc.c
│       ├── stm32f10x_crc.h
│       ├── stm32f10x_dac.c
│       ├── stm32f10x_dac.h
│       ├── stm32f10x_dbgmcu.c
│       ├── stm32f10x_dbgmcu.h
│       ├── stm32f10x_dma.c
│       ├── stm32f10x_dma.h
│       ├── stm32f10x_exti.c
│       ├── stm32f10x_exti.h
│       ├── stm32f10x_flash.c
│       ├── stm32f10x_flash.h
│       ├── stm32f10x_fsmc.c
│       ├── stm32f10x_fsmc.h
│       ├── stm32f10x_gpio.c
│       ├── stm32f10x_gpio.h
│       ├── stm32f10x.h
│       ├── stm32f10x_i2c.c
│       ├── stm32f10x_i2c.h
│       ├── stm32f10x_iwdg.c
│       ├── stm32f10x_iwdg.h
│       ├── stm32f10x_pwr.c
│       ├── stm32f10x_pwr.h
│       ├── stm32f10x_rcc.c
│       ├── stm32f10x_rcc.h
│       ├── stm32f10x_rtc.c
│       ├── stm32f10x_rtc.h
│       ├── stm32f10x_sdio.c
│       ├── stm32f10x_sdio.h
│       ├── stm32f10x_spi.c
│       ├── stm32f10x_spi.h
│       ├── stm32f10x_tim.c
│       ├── stm32f10x_tim.h
│       ├── stm32f10x_usart.c
│       ├── stm32f10x_usart.h
│       ├── stm32f10x_wwdg.c
│       ├── stm32f10x_wwdg.h
│       ├── system_stm32f10x.c
│       └── system_stm32f10x.h
├── platformio.ini
└── src
    └── main.cpp