# Makefile for CLISP module syscalls

srcdir = .
CC = gcc
# __EXTENSIONS__ is necessary so that the Solaris headers declare confstr().
# _REENTRANT is necessary so that the Solaris headers declare lgamma_r().
CPPFLAGS = -I/usr/pkg/include -I/usr/include -D__EXTENSIONS__ -D_REENTRANT
CFLAGS = -O2 -I/usr/pkg/include -I/usr/include
CLISP = /usr/pkg/bin/clisp -norc -q
CLISP_CFLAGS= -O2 -fno-builtin-calloc -fno-builtin-malloc -fno-builtin-memalign -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/glib-2.0 -I/usr/pkg/include/gio-unix-2.0 -I/usr/pkg/lib/glib-2.0/include -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -O2 -DENABLE_UNICODE -DDYNAMIC_FFI -DDYNAMIC_MODULES -I. -fPIC
CLISP_LIBDIR = /usr/pkg/lib/clisp/
CLISP_LINKKIT = /usr/pkg/lib/clisp/linkkit

LN = ln
LN_S = ln -s

MAKE = make

SHELL = /bin/sh

GENERATED = calls.o bogomips.o posix.fas libgnu_sc.a preload.lisp
DISTRIBFILES = link.sh Makefile $(GENERATED) \
	$(srcdir)/posix.lisp $(srcdir)/README
distribdir =

# default target: make the module
clisp-module : $(GENERATED)

.PHONY : am--refresh clisp-module clisp-module-distrib clean distclean force

# no $(CPPFLAGS) $(CFLAGS) to avoid all optimizations
bogomips.o : $(srcdir)/bogomips.c
	$(CC) $(CPPFLAGS) $(CFLAGS) $(CLISP_CFLAGS) -c $(srcdir)/bogomips.c -o bogomips.o

posix.fas: $(srcdir)/posix.lisp
	$(CLISP) -c $(srcdir)/posix.lisp -o ./

calls.m.c: $(srcdir)/calls.c
	$(CLISP) -C $(CLISP_LINKKIT)/modprep $(srcdir)/calls.c ./

calls.o : calls.m.c config.h gllib
	$(CC) $(CPPFLAGS) $(CFLAGS) $(CLISP_CFLAGS) -I$(CLISP_LINKKIT) \
		-Igllib -I$(srcdir)/gllib -c calls.m.c -o calls.o

preload.lisp : $(srcdir)/preload.lisp
	$(LN_S) $(srcdir)/preload.lisp .

am--refresh :

# syscalls relies on src/gllib, so we must also include files in the build dir
gllib libgnu_sc.a : force
	rm -f libgnu_sc.a
	mkdir -p gllib
	test -f gllib/Makefile || sh config.status gllib/Makefile depfiles
	cd gllib; \
	  $(MAKE) srcdir="." \
		ACLOCAL_M4="./Makefile.am" \
		CFLAGS="$(CFLAGS) $(CLISP_CFLAGS) -I$(CLISP_LIBDIR)"; \
	  $(LN) libgnu.a ../libgnu_sc.a

# Make a module distribution into $(distribdir)
clisp-module-distrib : clisp-module force
	$(LN) $(DISTRIBFILES) $(distribdir)

clean : force
	rm -f core *.o *.a *.m.c *.fas *.lib

distclean : clean

force :

