# Makefile for compiling, testing, and installing Mathomatic under any UNIX like OS.
# Currently uses gcc only options in CFLAGS, just remove them for other C compilers.
VERSION = `cat VERSION`
CFLAGS += -Wuninitialized -Wshadow -Wformat -Wparentheses -Wcast-align # gcc specific flags
CFLAGS += -O -DUNIX -DVERSION=\"$(VERSION)\" # general cc flags
LDFLAGS += # The default linker flags.
LIBS += -lm # The default libraries to link.
# "make READLINE=1" to include readline support:
CFLAGS += $(READLINE:1=-DREADLINE)
LIBS += $(READLINE:1=-lreadline -lncurses)
# Install directories:
prefix ?= /usr/local
bindir ?= $(prefix)/bin
mandir ?= $(prefix)/man
docdir ?= $(prefix)/share/doc
AOUT = mathomatic # The name of the executable to create.
TARGETS = $(AOUT) doc/manpage.html
OBJECTS = main.o globals.o am.o solve.o help.o parse.o cmds.o simplify.o \
factor.o super.o unfactor.o poly.o diff.o integrate.o \
complex.o complex_lib.o list.o gcd.o factor_int.o
MAN1 = mathomatic.1
DOCS = VERSION AUTHORS COPYING README.txt changes.txt mathomatic.ico
all: $(TARGETS)
@echo Make completed.
check test:
@echo Testing Mathomatic...
@cd tests && time ../$(AOUT) -t all 0<&- >test.out && diff -u all.out test.out
@rm tests/test.out
@echo All tests passed.
baseline:
@cd tests && ../$(AOUT) -t all 0<&- >all.out
@rm -f tests/test.out
@echo File tests/all.out updated with current test output.
$(OBJECTS): includes.h am.h externs.h complex.h proto.h VERSION
$(AOUT): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $(AOUT)
doc/manpage.html: mathomatic.1
groff -Thtml -man mathomatic.1 >doc/manpage.html
install:
install -d $(bindir)
install -d $(mandir)/man1
install -d $(docdir)/mathomatic
install -d $(docdir)/mathomatic/html
install -d $(docdir)/mathomatic/m4
install -d $(docdir)/mathomatic/tests
install -d $(docdir)/mathomatic/factorial
install -d $(prefix)/share/applications
install -d $(prefix)/share/pixmaps
install -m 0755 $(AOUT) $(bindir)
install -m 0644 $(MAN1) $(mandir)/man1
install -m 0644 $(DOCS) $(docdir)/mathomatic
install -m 0644 doc/* $(docdir)/mathomatic/html
install -m 0644 m4/* $(docdir)/mathomatic/m4
install -m 0644 tests/* $(docdir)/mathomatic/tests
install -m 0644 factorial/* $(docdir)/mathomatic/factorial
install -m 0644 mathomatic.desktop $(prefix)/share/applications
install -m 0644 mathomatic.png $(prefix)/share/pixmaps
@echo Install completed.
uninstall:
rm -f $(bindir)/$(AOUT)
cd $(mandir)/man1 && rm -f $(MAN1)
rm -rf $(docdir)/mathomatic
rm -f $(prefix)/share/applications/mathomatic.desktop
rm -f $(prefix)/share/pixmaps/mathomatic.png
@echo Uninstall completed.
clean:
rm -f *.o *.a
rm -f lib/*.o lib/*.a
flush: clean
rm -f $(AOUT)
rm -f mathomatic_secure
syntax highlighted by Code2HTML, v. 0.9.1