fix install
[maximus:emndl.git] / Makefile
1 #
2 #    emndl -- exponentially transformed Mandelbrot Set renderer
3 #    Copyright (C) 2011  Claude Heiland-Allen <claudiusmaximus@goto10.org>
4 #
5 #    This program is free software: you can redistribute it and/or modify
6 #    it under the terms of the GNU General Public License as published by
7 #    the Free Software Foundation, either version 3 of the License, or
8 #    (at your option) any later version.
9 #
10 #    This program is distributed in the hope that it will be useful,
11 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #    GNU General Public License for more details.
14 #
15 #    You should have received a copy of the GNU General Public License
16 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #
18
19 # standard paths/tools
20 prefix = /usr/local
21 exec_prefix = $(prefix)
22 bindir = $(exec_prefix)/bin
23 INSTALL = install
24 INSTALL_PROGRAM = $(INSTALL)
25
26 # tools
27 CC = gcc
28 CXX = g++
29 GHC = ghc
30
31 # flags
32 OFLAGS = -O3 -march=native -Wall -pedantic -s -D_FILE_OFFSET_BITS=64 -fopenmp
33 CFLAGS = -std=c99
34 CXXFLAGS =
35 GHCFLAGS = -O3 -Wall -threaded -rtsopts -fspec-constr-count=50
36 LIBS = -lm -lqd
37 EXES = emndl_colourize emndl_downscale emndl_equalize emndl_finalize emndl_initialize emndl_iterate emndl_parse emndl_ppmtoy4m emndl_pretty emndl_randomize emndl_unwarp
38 OBJS = emndl_autotune emndl_autotune.hi emndl_autotune.o Complex.hi Complex.o GridScan.hi GridScan.o MuAtom.hi MuAtom.o Number.hi Number.o
39
40 # build
41 all: $(EXES)
42
43 # clean
44 clean:
45         -rm -f $(EXES) $(OBJS)
46
47 # install
48 install:
49         $(INSTALL) -d $(DESTDIR)$(bindir)
50         $(MAKE) install-bin
51         $(MAKE) install-sh
52
53 install-strip:
54         $(INSTALL) -d $(DESTDIR)$(bindir)
55         $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install-bin
56         $(MAKE) install-sh
57
58 install-bin:
59         $(INSTALL_PROGRAM) $(EXES) $(DESTDIR)$(bindir)
60
61 install-sh:
62         $(INSTALL_PROGRAM) emndl.sh $(DESTDIR)$(bindir)
63
64 # Haskell executables
65 emndl_autotune: emndl_autotune.hs Complex.hs GridScan.hs MuAtom.hs Number.hs Roots.hs
66         $(GHC) $(GHCFLAGS) --make emndl_autotune.hs
67
68 # C executables
69 %: %.c
70         $(CC) $(CFLAGS) $(OFLAGS) -o $@ $< $(LIBS)
71
72 # C++ executables
73 %: %.cc
74         $(CXX) $(CXXFLAGS) $(OFLAGS) -o $@ $< $(LIBS)
75
76 # additional dependencies
77 emndl_finalize: emndl_finalize.cc emndl.h
78 emndl_initialize: emndl_initialize.cc emndl.h
79 emndl_iterate: emndl_iterate.cc emndl.h
80
81 # meta
82 .SUFFIXES:
83 .PHONY: all clean install install-strip install-bin install-sh