c2hs-0.16.0: tests/system/Makefile
# Note that file.o and File.o are the same file on case-insensitive systems
# Therefore we shouldn't use one for C and one for HS
HC=ghc
HCFLAGS= -fffi
C2HS = ../../dist/build/c2hs/c2hs
# C2HSFLAGS = -d trace -d genbind -d ctrav -d chs
PRGMS = simple calls enums pointer structs marsh cpp
default: tests
# builds
C2HS.o: ../../C2HS.hs
cp -p ../../C2HS.hs .
$(HC) -c C2HS.hs
simple: C2HS.o Simple.chs simple.h simple.c
$(C2HS) $(C2HSFLAGS) simple.h Simple.chs
$(HC) -c -o Simple_hs.o Simple.hs $(HCFLAGS)
$(CC) -c simple.c
$(HC) -o simple simple.o Simple_hs.o C2HS.o
calls: C2HS.o Calls.chs calls.h
$(C2HS) $(C2HSFLAGS) calls.h Calls.chs
$(HC) -c -o Calls.o Calls.hs -#include\"calls.h\" $(HCFLAGS) || \
echo "!!! Building calls failed ! known bug #?"
enums: C2HS.o Enums.chs enums.h
$(C2HS) $(C2HSFLAGS) enums.h Enums.chs
$(CC) -o enums_c.o -c enums.c
$(HC) -o enums enums_c.o Enums.hs -#include\"enums.h\" $(HCFLAGS) C2HS.o
pointer: C2HS.o Pointer.chs pointer.h pointer.c
$(C2HS) $(C2HSFLAGS) pointer.h Pointer.chs
$(CC) -o pointer_c.o -c pointer.c
$(HC) -o pointer pointer_c.o Pointer.hs -#include\"pointer.h\"\
$(HCFLAGS) C2HS.o
sizeof: C2HS.o Sizeof.chs sizeof.h sizeof.c
$(C2HS) $(C2HSFLAGS) sizeof.h Sizeof.chs
$(HC) -c -o Sizeof.o Sizeof.hs -#include\"sizeof.h\" $(HCFLAGS)
$(CC) -o sizeof_c.o -c sizeof.c
$(HC) -o sizeof sizeof_c.o Sizeof.o $(HCFLAGS) C2HS.o
structs: C2HS.o Structs.chs structs.h structs.c
$(C2HS) $(C2HSFLAGS) structs.h Structs.chs
$(HC) -c -o Structs.o Structs.hs -#include\"structs.h\" $(HCFLAGS)
$(CC) -o structs_c.o -c structs.c
$(HC) -o structs structs_c.o Structs.o $(HCFLAGS) C2HS.o
marsh: C2HS.o Marsh.chs marsh.h
$(C2HS) $(C2HSFLAGS) marsh.h Marsh.chs
$(HC) -o marsh Marsh.hs -#include\"marsh.h\" $(HCFLAGS) C2HS.o
cpp: C2HS.o Cpp.chs cpp.h
$(C2HS) $(C2HSFLAGS) Cpp.chs
$(HC) -c -o Cpp.o Cpp.hs -#include\"Cpp.h\" $(HCFLAGS) C2HS.o
# runs
.PHONY: tests simple.run calls.build enums.run pointer.run structs.run\
marsh.run cpp.build
tests: simple.run enums.run pointer.run structs.run marsh.run\
cpp.build buggy
buggy: calls.build sizeof.run
simple.run: simple
@echo "---=== Output of \`simple'":
@./simple
@echo "---=== End of Output"
calls.build: calls
@echo "---=== Binding for \`calls'":
@cat Calls.hs
@echo "---=== End of Binding"
enums.run: enums
@echo "---=== Output for \`enums'":
@./enums
@echo "---=== End of Output"
pointer.run: pointer
@echo "---=== Output for \`pointer'":
@./pointer
@echo "---=== End of Output"
sizeof.run: sizeof
@echo "---=== Output for \`sizeof'":
@./sizeof || \
echo "!!! sizeof FAILED: Maybe related to bug #10"
@echo "---=== End of Output"
structs.run: structs
@echo "---=== Output for \`structs'":
@./structs > structs.out
@cat structs.out
@diff structs.out structs.expect
@echo "---=== End of Output (diff ok)"
marsh.run: marsh
@echo "---=== Output for \`marsh'":
@./marsh
@echo "---=== End of Output"
cpp.build: cpp
@echo "---=== Binding for \`cpp'":
@cat Cpp.hs
@echo "---=== End of Binding"
# misc
clean:
-rm -f *.o *.hi *.hs *.out $(PRGMS)