OSDN Git Service

Fixed typo.
[mhash384/mhash384.git] / Makefile
1 #############################################################################
2 # BUILD OPTIONS
3 #############################################################################
4
5 PLUSPLUS ?= 0
6 STATIC   ?= 0
7 CPU_TYPE ?= native
8
9
10 #############################################################################
11 # CONFIGURATION
12 #############################################################################
13
14 ISO_DATE := $(shell date "+%Y-%m-%d")
15 CM_FLAGS := -Iinclude
16 RL_FLAGS := -DNDEBUG -O3 -march=$(CPU_TYPE)
17 DB_FLAGS := -g
18 PD_FLAGS := --from markdown --to html5 --toc -N --standalone
19
20 ifeq ($(PLUSPLUS),1)
21   CXX := g++
22   SRC := $(wildcard src/*.cpp)
23 else
24   CXX := gcc
25   SRC := $(wildcard src/*.c)
26 endif
27
28 ifdef ARCH
29   CM_FLAGS += $(if $(filter x64,$(ARCH)),-m64,-m32)
30 else
31   ARCH := $(if $(findstring x86_64,$(shell $(CXX) -v 2>&1 | grep "Target:")),x64,x86)
32 endif
33
34 ifeq ($(STATIC),1)
35   CM_FLAGS += -static
36 endif
37
38 ifeq ($(OS),Windows_NT)
39   OSTYPE := mingw
40   SUFFIX := .exe
41 else
42   OSTYPE := linux
43   SUFFIX :=
44 endif
45
46 DOC := README.html COPYING.txt
47 BIN := bin/mhash_384.$(ARCH)$(SUFFIX)
48 DBG := $(BIN).dbg
49 OUT := out/mhash_384.$(ISO_DATE).$(OSTYPE)-$(ARCH).tar.gz
50
51
52 #############################################################################
53 # MAKE RULES
54 #############################################################################
55
56 .PHONY: all clean
57
58 all: $(OUT)
59
60 $(OUT): $(BIN) $(DBG) $(DOC)
61         mkdir -p $(dir $@)
62         rm -fv $@
63         tar -czf $@ $(DOC) -C $(dir $(BIN)) $(notdir $(BIN))
64
65 $(BIN): $(SRC)
66         mkdir -p $(dir $@)
67         $(CXX) $(CM_FLAGS) $(RL_FLAGS) -o $@ $^
68         strip -s $@
69
70 $(DBG): $(SRC)
71         mkdir -p $(dir $@)
72         $(CXX) $(CM_FLAGS) $(DB_FLAGS) -o $@ $^
73
74 %.html: %.md
75         pandoc $(PD_FLAGS) --output $@ $^
76
77 clean:
78         rm -fv $(BIN) $(DBG) $(word 1,$(DOC)) $(OUT)