INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
+
all: lib ginsh
echo "now type make install"
lib:
cd src; ${MAKE} all
+
+# Target for making the GiNaC interactive shell (ginsh):
+ginsh:
+ if [ "${shared}" ]; then ${MAKE} sharedginsh; else ${MAKE} staticginsh; fi
+
+sharedginsh: src/libginac.la
+ cd ginsh; ${MAKE} sharedginsh
+
+staticginsh: src/.libs/libginac.a
+ cd ginsh; ${MAKE} staticginsh
+
+
# Target for running a test-suite across the library:
check:
- if [ "${shared}" ]; then \
- ${MAKE} sharedcheck; \
- else \
- ${MAKE} staticcheck; \
- fi
+ if [ "${shared}" ]; then ${MAKE} sharedcheck; else ${MAKE} staticcheck; fi
sharedcheck: src/libginac.la
cd check; ${MAKE} sharedcheck
staticcheck: src/.libs/libginac.a
cd check; ${MAKE} staticcheck
-# Target for making the Ginac INteractive SHell ginsh:
-ginsh:
- cd ginsh; ${MAKE} all
# Targets for installation in install directories. The user-visible target
# `install' determines which one to call (static lib only or both shared and
# static lib).
-install:
+install:
@ if [ "${shared}" ]; then \
${MAKE} shlibinst; \
else \
${MAKE} libinst; \
fi
${INSTALL} -d ${includedir}
- ${INSTALL_DATA} include/* ${includedir}/
+ ${INSTALL_DATA} include/*.h ${includedir}/
cd ginsh; ${MAKE} install
cd doc; ${MAKE} install
-shlibinst: libginac.la
- ${INSTALL} -d ${libdir}
- ${LIBTOOL} install libginac.la ${libdir}/libginac.la
+shlibinst: src/libginac.la installdirs
+ ${LIBTOOL} install src/libginac.la ${libdir}/libginac.la
${LIBTOOL} -n --finish ${libdir}
-libinst: .libs/libginac.a
- ${INSTALL} -d ${libdir}
- ${INSTALL_DATA} .libs/libginac.a ${libdir}/libginac.a
+libinst: src/.libs/libginac.a installdirs
+ ${INSTALL_DATA} src/.libs/libginac.a ${libdir}/libginac.a
+
+installdirs:
+ ./mkinstalldirs ${libdir} ${includedir}
+
# Targets for cleaning up. (clean deletes files created by built, distclean
# deletes files created by configuration, uninstall removes all files related
cd ginsh; ${MAKE} uninstall
cd doc; ${MAKE} uninstall
+
# Convenient targets for those who wish to extend on the documentation:
doc:
cd doc; ${MAKE} all
tutorial:
cd doc; ${MAKE} tutorial
+
# Special dummy targets:
-.PHONY: clean distclean all install uninstall check ginsh doc
+.PHONY: clean distclean all install installdirs uninstall check ginsh doc
.SUFFIXES: .o .lo .cpp
.SILENT: all check sharedcheck staticcheck doc reference tutorial
-# This is the prototype Makefile for ginsh.
-SHELL = /bin/sh
+# This is the prototype Makefile for the GiNaC interactive shell (ginsh).
# Not every make knows what CXX is, so we inherit it together with some other
# values from configure which checks it anyways:
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
-OBJECTS=y.tab.o @LEX_OUTPUT_ROOT@.o ../src/*.o
+OBJECTS=y.tab.o @LEX_OUTPUT_ROOT@.o
-all: depend ginsh
+all:
+ echo "Please call it with 'make ginsh' from top-level Makefile."
+ echo "Alternatively, you can use this Makefile's targets {shared|static} ginsh"
+ echo "depending on your personal preferences and which lib you built."
-ginsh: ${OBJECTS}
- ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJECTS} ${LIBS} -o ginsh
+sharedginsh: depend ${OBJECTS}
+ ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJECTS} ${LIBS} -Wl,--rpath -Wl,../src/.libs -L../src/.libs -lginac -o ginsh
+
+staticginsh: depend ${OBJECTS}
+ ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJECTS} ${LIBS} ../src/.libs/libginac.a -o ginsh
# Targets for installation in install directories.
install: ginsh installdirs
-${INSTALL_DATA} ginsh.1 ${man1dir}/ginsh.1
installdirs:
- ${SHELL} mkinstalldirs ${bindir} ${man1dir}
+ ../mkinstalldirs ${bindir} ${man1dir}
# Targets for cleaning up. (clean deletes files created by built, distclean
# deletes files created by configuration, uninstall removes all files related