1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
ifeq ($(strip $(THIRDPARTYDIR)),)
override THIRDPARTYDIR = $(abspath $(CURDIR)/../../3rdparty/build)
endif
GRDIR = /usr/local/gr
BINDIR = $(DESTDIR)$(GRDIR)/bin
LIBDIR = $(DESTDIR)$(GRDIR)/lib
INCDIR = $(DESTDIR)$(GRDIR)/include
UNAME := $(shell uname)
GROBJS = gr.o text.o contour.o spline.o gridit.o strlib.o stream.o image.o \
delaunay.o interp2.o md5.o import.o shade.o grforbnd.o \
contourf.o boundary.o mathtex2.o mathtex2_kerning.o mathtex2.tab.o threadpool.o
GSDEFS =
DEFINES = $(GSDEFS) -DGRDIR=\"$(GRDIR)\"
INCLUDES = -I../gks -I$(THIRDPARTYDIR)/include
CC = cc
CFLAGS = $(DEFINES) -O3 -Wall -Wextra -ansi -pedantic -fPIC $(EXTRA_CFLAGS)
AR = ar
RANLIB = ar ts
ifeq ($(UNAME), Darwin)
GR_SHARED_LIBRARY_SUFFIX ?= .dylib
CFLAGS += -mmacosx-version-min=10.15
INSTALL_NAME = -Wl,-install_name,@rpath/libGR${GR_SHARED_LIBRARY_SUFFIX}
LDFLAGS = $(EXTRA_LDFLAGS) -Wl,-rpath,@loader_path/. -mmacosx-version-min=10.15
SOFLAGS = -dynamiclib
else
GR_SHARED_LIBRARY_SUFFIX ?= .so
INSTALL_NAME =
LDFLAGS = $(EXTRA_LDFLAGS) -Wl,-rpath,'$$ORIGIN/.'
SOFLAGS = -shared -Wl,-soname,$@
endif
LIBS = -lpthread -ldl -lc -lm
JPEGLIBS = $(THIRDPARTYDIR)/lib/libjpeg.a
BZ2LIBS = $(THIRDPARTYDIR)/lib/libbz2.a
PNGLIBS = $(THIRDPARTYDIR)/lib/libpng.a
GKSLIBS = ../gks/libGKS.a
FTLIBS = $(THIRDPARTYDIR)/lib/libfreetype.a
ZLIBS = $(THIRDPARTYDIR)/lib/libz.a
QHLIBS = $(THIRDPARTYDIR)/lib/libqhull_r.a
# Only update gr_version.h if it will result in an actual change
GR_VERSION_H_GENERATED := $(shell ../../lib/Version)
GR_VERSION_H_CURRENT := $(shell cat gr_version.h 2>/dev/null || echo "")
ifneq ($(GR_VERSION_H_CURRENT),$(GR_VERSION_H_GENERATED))
GR_VERSION_H_DEPS := .FORCE
else
GR_VERSION_H_DEPS :=
endif
.SUFFIXES:
.SUFFIXES: .c .o
.c.o:
$(CC) -c $(INCLUDES) $(CFLAGS) $<
default:
$(MAKE) -C ../.. Makedefs
$(MAKE) `cat ../../Makedefs`
all: targets
targets: prerequisites libGR.a libGR${GR_SHARED_LIBRARY_SUFFIX} demo libqtgr
prerequisites:
$(MAKE) -C ../../3rdparty/ PREFIX=$(THIRDPARTYDIR)
../gks/libGKS.a:
$(MAKE) -C ../gks libGKS.a
libGR.a: $(GROBJS)
$(AR) crv $@ $?
$(RANLIB) $@
libGR${GR_SHARED_LIBRARY_SUFFIX}: $(GROBJS) $(GKSLIBS)
$(CC) -o $@ $(SOFLAGS) $(GROBJS) $(PNGLIBS) $(GKSLIBS) \
$(FTLIBS) $(JPEGLIBS) $(ZLIBS) $(QHLIBS) $(LIBS) \
$(LDFLAGS) $(INSTALL_NAME)
demo: demo.c libGR.a $(GKSLIBS)
$(CC) -o demo $(INCLUDES) $(CFLAGS) demo.c libGR.a \
$(PNGLIBS) $(GKSLIBS) $(FTLIBS) $(JPEGLIBS) \
$(ZLIBS) $(QHLIBS) $(LIBS) $(LDFLAGS)
libqtgr:
$(MAKE) -C qtgr
gr_version.h: $(GR_VERSION_H_DEPS)
../../lib/Version > $@
@chmod 644 $@
gr.o: gr_version.h
install:
$(MAKE) -C ../gks install
@if [ ! -d $(DESTDIR)$(GRDIR) ]; then mkdir -m 755 $(DESTDIR)$(GRDIR); fi
@if [ ! -d $(BINDIR) ]; then mkdir -m 755 $(BINDIR); fi
@if [ ! -d $(LIBDIR) ]; then mkdir -m 755 $(LIBDIR); fi
cp -p libGR.* $(LIBDIR)
@if [ ! -d $(INCDIR) ]; then mkdir -m 755 $(INCDIR); fi
cp -p gr.h $(INCDIR)
$(MAKE) -C qtgr install
clean:
$(MAKE) -C qtgr clean
$(MAKE) -C ../gks clean
$(MAKE) -C ../gks/plugin clean
$(MAKE) -C ../../3rdparty/ clean
rm -f so_locations demo *.so *.a *.o *.bak *~ gr_version.h *${GR_SHARED_LIBRARY_SUFFIX}
depend:
makedepend -Y -- gr.c text.c contour.c spline.c gridit.c strlib.c stream.c \
image.c delaunay.c interp2.c md5.c import.c shade.c grforbnd.c \
threadpool.c 2> /dev/null
.FORCE:
.PHONY: all targets install clean depend prerequisites .FORCE
# DO NOT DELETE THIS LINE -- make depend depends on it.
gr.o: gr.h text.h spline.h gridit.h contour.h strlib.h stream.h md5.h cm.h
contour.o: gr.h contour.h
contourf.o: gr.h contourf.h
spline.o: spline.h
gridit.o: gridit.h
strlib.o: strlib.h
io.o: gr.h stream.h
image.o: gr.h
delaunay.o: gr.h
interp2.o: gr.h
md5.o: md5.h
import.o: gr.h
shade.o: gr.h
grforbnd.o: gr.h
boundary.o: boundary.h
mathtex2.o: mathtex2.h tempbuffer.inl
mathtex2.tab.o: mathtex2.h
threadpool.o: threadpool.h
|