build: compile .c files separately

the header files in the widgets are a bit of a mess but i can fix that tomorow, anyway it builds fine and now when you change a file only that file will be compiled.

btw, it's a bad practice to include a .c includes are for header files. Now you just need to put the prototype of the function in the header, include the header in the .c you call the function and the linker will do all the work