I am running into something very strange during a simple trial run of writing my own function to check if "make" works.
In the "DeviceDriver.c" I made a function named "XInt32 DeviceDriver_GetADC( void)" . In this function I am calling two simple functions that just return an integer value for sanity sake.
1. ADC = EwBspadc_ar_GetFakeAdc1()
2. ADC = EwBspadc_ar_GetFakeAdc2();
I created new header and C files "ew_bsp_adc_ar.h" and " ew_bsp_adc_ar.c" The function " int EwBspadc_ar_GetFakeAdc1( void)" is prototyped and defined in "ew_bsp_adc_ar.h/c" . The second function " int EwBspadc_ar_GetFakeAdc2( void)" is prototyped and defined in pre-existing header and c files named "ew_bsp_inout.h/c".
If I invoke "make" and compile using the function call in the "DeviceDriver.c" That call the "int EwBspadc_ar_GetFakeAdc2( void)" which is prototyped and defined in "ew_bsp_inout.h/c", the "make" compiles and links OK..
If I make and compile using the function call in the DeviceDriver.c "int EwBspadc_ar_GetFakeAdc1( void)" prototyped and defined in header and c files named "ew_bsp_adc_ar.h/c", the "make" gives an error of "undefined reference on the EwBspadc_ar_GetFakeAdc1" function call. See the Error log below:

Does the make file not like the newly created "ew_bsp_adc_ar.h" and "ew_bsp_adc_ar.c" files where I prototyped the new function "int EwBspadc_ar_GetFakeAdc2( void)"?
Here are snippets of the pertinent files for reference:
Here is a snippet of the DeviceDriver.c that shows the #include ew_bsp_adc_ar.h and the function call defined in the "ew_bsp_adc_ar.c" file that does not compile.
#include "ewrte.h"
#include "ew_bsp_adc_ar.h"
#include "ew_bsp_inout.h"
#include "ew_bsp_clock.h"
:
:
:
XInt32 DeviceDriver_GetADC1( void )
{
ADC = EwBspadc_ar_GetFakeAdc1(); // Does Not Compile
//ADC = EwBspadc_ar_GetFakeAdc2(); // Compiles OK!
}
Here is snippet of the function definition in Ew_bsp_adc_ar.c
//ew_bsp_adc_ar.c
#include "ewconfig.h"
#include "stm32f7xx_hal.h"
#include "stm32746g_discovery.h"
#include "ew_bsp_adc_ar.h"
int EwBspadc_ar_GetFakeAdc1(void)
{
return 100;
}
/* msy */
.This DeviceDeriver.C using the function call defined in ew_bsp_inout.c Compiles OK.
#include "ewrte.h"
#include "ew_bsp_adc_ar.h"
#include "ew_bsp_inout.h"
#include "ew_bsp_clock.h"
:
:
:
XInt32 DeviceDriver_GetADC1( void )
{
// ADC = EwBspadc_ar_GetFakeAdc1(); // Does Not Compile
ADC = EwBspadc_ar_GetFakeAdc2(); // Compiles OK!
}
Snippet of ew_bsp_inout.c
int EwBspadc_ar_GetFakeAdc2(void)
{
return 100;
}
Good compile:
