1OBJECTS= dictionary.o system.o fileaccess.o float.o double.o prefix.o search.o softcore.o stack.o tools.o vm.o primitives.o bit.o lzuncompress.o unix.o utility.o hash.o callback.o word.o extras.o
2HEADERS= ficl.h ficlplatform/unix.h
3#
4# Flags for shared library
5#TARGET= -Dlinux  # riscos MOTO_CPU32
6SHFLAGS = -fPIC
7CFLAGS= -O $(SHFLAGS) -Wall
8CPPFLAGS= $(TARGET) -I.
9CC = cc
10LIB = ar cr
11RANLIB = ranlib
12
13MAJOR = 4
14MINOR = 1.0
15
16ficl: main.o $(HEADERS) libficl.a
17	$(CC) $(CFLAGS) $(LDFLAGS) main.o -o ficl -L. -lficl -lm
18
19lib: libficl.so.$(MAJOR).$(MINOR)
20
21# static library build
22libficl.a: $(OBJECTS)
23	$(LIB) libficl.a $(OBJECTS)
24	$(RANLIB) libficl.a
25
26# shared library build
27libficl.so.$(MAJOR).$(MINOR): $(OBJECTS)
28	$(CC) $(LDFLAGS) -shared -Wl,-soname,libficl.so.$(MAJOR).$(MINOR) \
29	-o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS)
30	ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so
31
32main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR)
33	$(CC) $(CFLAGS) $(LDFLAGS) main.o -o main -L. -lficl -lm
34	ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR)
35
36# depend explicitly to help finding source files in another subdirectory,
37# and repeat commands since gmake doesn't understand otherwise
38ansi.o: ficlplatform/ansi.c $(HEADERS)
39	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
40unix.o: ficlplatform/unix.c $(HEADERS)
41	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
42
43#
44#       generic object code
45#
46.SUFFIXES: .cxx .cc .c .o
47
48.c.o:
49	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
50
51.cxx.o:
52	$(CPP) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
53
54.cc.o:
55	$(CPP) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
56#
57#       generic cleanup code
58#
59clean:
60	rm -f *.o *.a libficl.* ficl
61