
On 13-01-02 01:01 AM, xuan bach wrote:
========================= BASEDIR=/usr/local INCS= -I$(BASEDIR)/include/omega -I. LIBS= -L$(BASEDIR)/lib LIB= -lcode_gen -lomega -lm
GHC=ghc
#---------------------------------------------------- CFILES=$(CURDIR)/cfile HSFILES=$(CURDIR)/hsfile COBJFILES=$(CFILES)/termops.o $(CFILES)/termops2.o ALLCFILES=$(CFILES)/termops.c $(CFILES)/termops2.c #----------------------------------------------------
GHC_FLAGS= -O2 -fglasgow-exts -fallow-overlapping-instances
_ffi_ex: $(COBJFILES) ghc $(GHC_FLAGS) -lstdc++ --make -main-is FfiEx -o ffi_ex FfiEx.hs $(HSFILES)/*.hs $(LIBS) $(LIB) $(COBJFILES) ========================= => *fatal error: omega.h: No such file or directory
An implicit rule is triggered to compile *.c to *.o. The rule goes like $(CC) -c $(CPPFLAGS) $(CFLAGS) Therefore, your -I$(BASEDIR)/include/omega -I. is ignored. To solve, put -I$(BASEDIR)/include/omega -I. in CFLAGS, or write your own rule for compiling *.c to *.o.