Well, I think it is a misbehavior. Here is an example. There are four files in the example:
; in the file '/Main.asm' :
include '/A/A1.inc'
include '/B/B1.asm'
;----------------------------------------------------
; in the file '/A/A1.inc' :
macro GetFile name {
file name
}
;-----------------------------------------------------
; in the file '/B/B1.asm' :
; The file 'MyFile.xxx' full path is '/B/MyFile.xxx'
GetFile 'MyFile.xxx' ; fails because of discussed misbehavior,
; FASM computes the path, relatively to the macro definition,
; instead of macro invocation.
GetFile '../B/MyFile.xxx' ; works - relative to the macro definition IMHO wrong.
GetFile 'B/MyFile.xxx' ; also works - relative to the main file as described in the manual.
;----------------------------------------------------