I took a glance over the Linux edition and I had a suggestion. If you are going to be using Makefile's anyway, why not set the include path there? Have the user define an environment variable NASMX_DIR then use -I$(NASMX_DIR)/inc in your ASFLAGS.
##### Makefile #####
NAME=example
AS=nasm
ASFLAGS=-f elf32 -I$(NASMX_DIR)/inc
LD=gcc
LDFLAGS =-Wall -s
LIBS =-lc
# [ Suffixes ]
# Change the suffixes to match your system environment
O = .o
ASM = .asm
INC = .inc
LST = .lst
OBJS = $(NAME)$(O)
all: $(NAME)
demo2: $(OBJS)
$(LD) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
$(NAME)$(O): $(NAME)$(ASM)
$(AS) $(ASFLAGS) $(NAME)$(ASM) -o $(NAME)$(O)
clean:
rm *$(O) ./demo2
##### End Makefile #####
That way, the code doesn't have to use relative includes, it can use:
%include "nasmx.inc"
%include "linux/libc.inc"
You might need to provide a setpath.sh in the base directory of the NASMX package, but that wouldn't really be much different than the old setpath.bat in Windows