summaryrefslogtreecommitdiff
path: root/GNUmakefile
blob: 01e691072b62d0428a2785c688e0b0b6214a22ef (plain)
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
#makeAll.sh
SHELL=/bin/sh
prefix=/usr/local

OS=$(shell uname || uname -s)
ARCH=$(shell arch || uname -m)

all: lib

ifndef DC
    ifneq ($(strip $(shell which dmd 2>/dev/null)),)
        DC=dmd
    else ifneq ($(strip $(shell which ldc 2>/dev/null)),)
        DC=ldc
    else
        DC=gdc
    endif
endif

ifeq ("$(DC)","gdc")
    DCFLAGS=-O2
    LINKERFLAG=-Xlinker
    UNITTESTFLAG=-funittest
    DDOCFLAGS=-fdoc-file=$@
    output=-o $@
else
    DCFLAGS=-O
    LINKERFLAG=-L
    UNITTESTFLAG=-unittest
    DDOCFLAGS=-o- -Df$@
    output=-of$@
endif

ifeq ("$(OS)","Linux")
    LDFLAGS+=$(LINKERFLAG)-ldl
endif

ifeq ("$(ARCH)", "x86_64") 
    DCFLAGS+=-m64
    LDFLAGS+=-m64
endif 

AR=ar
RANLIB=ranlib

QUANTUMDEPTH = $(lastword $(shell MagickCore-config --version))
MAGICKVERSION = $(subst .,,$(firstword $(shell MagickCore-config --version)))

ifneq ("$(QUANTUMDEPTH)","Q16")
    DCFLAGS+= -version=$(subst Q,Quantum,$(QUANTUMDEPTH))
endif

ifneq ("$(MAGICKVERSION)","672")
    DCFLAGS+= -version=MagickCore_$(MAGICKVERSION)
endif

#######################################################################

LIBNAME_DMAGICK = libDMagick.a
SOURCES_DMAGICK = $(sort $(wildcard dmagick/*.d)) \
                  $(sort $(wildcard dmagick/c/*.d))

OBJECTS_DMAGICK = $(patsubst %.d,%.o,$(SOURCES_DMAGICK))
DOCS_DMAGICK    = $(patsubst dmagick/%.d,docs/%.html,$(SOURCES_DMAGICK))

#######################################################################

lib: $(LIBNAME_DMAGICK)

$(LIBNAME_DMAGICK): $(OBJECTS_DMAGICK)
	$(AR) rcs $@ $^
	$(RANLIB) $@

#######################################################################

%.o : %.d
	$(DC) $(DCFLAGS) -c $< $(output)

#######################################################################

/tmp/stubmain.d:
	$(shell echo "void main(){}" > /tmp/stubmain.d)

unittest: /tmp/stubmain.d $(SOURCES_DMAGICK)
	$(DC) $(DCFLAGS) $(UNITTESTFLAG) $(LINKERFLAG)-lMagickCore $^ $(output)
	./$@

#######################################################################

html: docs
docs: $(DOCS_DMAGICK)

#######################################################################

docs/%.html : dmagick/%.d
	$(DC) $(DCFLAGS) $< $(DDOCFLAGS) 

#######################################################################

install: lib
	install -d $(DESTDIR)$(prefix)/include/d
	(echo $(SOURCES_DMAGICK) | xargs tar c) | (cd $(DESTDIR)$(prefix)/include/d; tar xv)
	install -d $(DESTDIR)$(prefix)/lib
	install -m 644 $(LIBNAME_DMAGICK) $(DESTDIR)$(prefix)/lib
	
uninstall:
	rm -rf $(DESTDIR)$(prefix)/include/d/dmagick
	rm -f $(DESTDIR)$(prefix)/lib/$(LIBNAME_DMAGICK)

clean:
	-rm -rf $(LIBNAME_DMAGICK) $(OBJECTS_DMAGICK) unittest.o unittest docs