mirror of
https://github.com/mfillpot/mathomatic.git
synced 2026-01-09 04:59:37 +00:00
93 lines
2.9 KiB
Makefile
93 lines
2.9 KiB
Makefile
# Makefile for the Mathomatic symbolic math library and its test program.
|
|
# See file README.txt for instructions.
|
|
|
|
SHELL = /bin/sh # from http://www.gnu.org/prep/standards/
|
|
CC ?= gcc # C compiler to use
|
|
INSTALL ?= install # installer to use
|
|
INSTALL_PROGRAM ?= $(INSTALL) # command to install executable program files
|
|
INSTALL_DATA ?= $(INSTALL) -m 0644 # command to install data files
|
|
|
|
VERSION = `cat ../VERSION`
|
|
OPTFLAGS ?= -g -O3 -Wall -Wshadow -Wno-char-subscripts -Wno-unused-variable # gcc specific flags; can be removed
|
|
CFLAGS ?= $(OPTFLAGS)
|
|
CFLAGS += -fexceptions -DLIBRARY -DVERSION=\"$(VERSION)\" # necessary C compiler flags
|
|
LDLIBS += -lm # system libraries to link
|
|
|
|
# Install directories follow; installs everything in $(DESTDIR)/usr/local by default.
|
|
prefix ?= /usr/local
|
|
mandir ?= $(prefix)/share/man
|
|
libdir ?= $(prefix)/lib
|
|
includedir ?= $(prefix)/include
|
|
|
|
AOUT = testmain # The name of the library test executable file to create.
|
|
LIB = libmathomatic.a # The name of the symbolic math library file to create.
|
|
HEADERS = mathomatic.h
|
|
|
|
MATHOMATIC_OBJECTS += 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
|
|
|
|
# man pages to automatically make and install:
|
|
MAN3 = matho_init.3 matho_clear.3 matho_parse.3 matho_process.3
|
|
|
|
.PHONY: all install uninstall clean distclean maintainer-clean flush lib manpages
|
|
|
|
all: lib $(AOUT)
|
|
|
|
lib: $(LIB) $(MAN3)
|
|
|
|
$(LIB): lib.o $(MATHOMATIC_OBJECTS)
|
|
$(AR) cr $(LIB) $+
|
|
-ranlib $(LIB)
|
|
@echo
|
|
@echo Symbolic math library $(LIB) created.
|
|
@echo
|
|
|
|
lib.o $(MATHOMATIC_OBJECTS): $(HEADERS) ../includes.h ../license.h ../standard.h ../am.h ../externs.h ../blt.h ../complex.h ../proto.h ../altproto.h ../VERSION
|
|
|
|
$(MATHOMATIC_OBJECTS): %.o: ../%.c
|
|
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
|
|
|
|
$(AOUT): testmain.o $(LIB)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $+ $(LDLIBS) -o $(AOUT)
|
|
@echo
|
|
@echo ./$(AOUT) created.
|
|
|
|
example: example.o $(LIB)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $+ $(LDLIBS) -o example
|
|
@echo
|
|
@echo ./example created.
|
|
|
|
# Generate the library man pages, if not already made.
|
|
# Requires the very latest version of txt2man.
|
|
manpages $(MAN3): lib.c
|
|
src2man -r "Mathomatic" -v "Symbolic Math Library" $+
|
|
|
|
install:
|
|
$(INSTALL) -d $(DESTDIR)$(libdir)
|
|
$(INSTALL) -d $(DESTDIR)$(includedir)
|
|
$(INSTALL) -d $(DESTDIR)$(mandir)/man3
|
|
$(INSTALL_DATA) $(LIB) $(DESTDIR)$(libdir)
|
|
$(INSTALL_DATA) $(HEADERS) $(DESTDIR)$(includedir)
|
|
$(INSTALL_DATA) $(MAN3) $(DESTDIR)$(mandir)/man3
|
|
@echo
|
|
@echo Mathomatic Symbolic Math Library installed.
|
|
|
|
uninstall:
|
|
cd $(DESTDIR)$(mandir)/man3 && rm -f $(MAN3)
|
|
cd $(DESTDIR)$(includedir) && rm -f $(HEADERS)
|
|
rm -f $(DESTDIR)$(libdir)/$(LIB)
|
|
@echo
|
|
@echo Symbolic Math Library uninstall completed.
|
|
|
|
clean:
|
|
rm -f *.o
|
|
|
|
distclean flush: clean
|
|
rm -f $(AOUT) example
|
|
rm -f *.a
|
|
rm -f *.exe
|
|
|
|
maintainer-clean: distclean
|
|
rm -f $(MAN3)
|