The standard predefined macros are specified by the relevant language standards, so they are available with all compilers that implement those standards.
FILE
This macro expands to the name of the current input file, in the form of a C string constant. This is the path by which the preprocessor opened the file, not the short name specified in ‘#include’ or as the input file name argument. For example, "/usr/local/include/myheader.h" is a possible expansion of this macro.
The result you get back is probably dependent on how the Arduino build system organizes things. On my system I get only the file name returned.
While nobody would call me well organized I don't have any problems tracking down my source files once I have the name.