-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
67 lines (49 loc) · 1.38 KB
/
Copy pathmakefile
File metadata and controls
67 lines (49 loc) · 1.38 KB
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
# Makefile for the hd program.
#
# hd is a command line program to hex-dump a file.
#
PLATFORM := $(shell uname)
ifeq ($(PLATFORM), Darwin)
# BREW_HOME_DIR=`brew --prefix`
# CPP := $(shell /bin/ls -1 $(BREW_HOME_DIR)/bin/g++* | sed 's/@//g' | sed 's/^.*g++/g++/g')
CPP := clang++
else
CPP := g++
endif
CPP_FLAGS = -c -Wall -pedantic --std=c++20
ifdef DEBUG
CPP_FLAGS += -g2 -O0 -DDEBUG -D_DEBUG
OBJDIR := $(PLATFORM)_objd
else
CPP_FLAGS += -O3 -DNDEBUG -DRELEASE
OBJDIR := $(PLATFORM)_objn
endif
ifeq ($(PLATFORM),Linux)
CPP_FLAGS += -DLINUX -D_LINUX -D__LINUX__
endif
.DEFAULT : all
all : $(OBJDIR)/hd
.PHONY : clean
dep : $(DEP_FILES)
-include $(OBJ_FILES:.o=.d)
CPP_SRC_FILES := hd.cpp
OBJ_LIST := $(CPP_SRC_FILES:.cpp=.o) $(C_SRC_FILES:.c=.o)
OBJ_FILES := $(addprefix $(OBJDIR)/, $(OBJ_LIST))
DEP_FILES := $(OBJ_FILES:.o=.d)
$(OBJDIR)/hd : $(OBJ_FILES) makefile
@if [ ! -d $(@D) ] ; then mkdir -p $(@D) ; fi
$(CPP) -o $@ $(OBJ_FILES)
ifndef DEBUG
strip $(OBJDIR)/hd
endif
$(OBJDIR)/%.o : %.cpp makefile $(OBJDIR)/%.d
@if [ ! -d $(@D) ] ; then mkdir -p $(@D) ; fi
$(CPP) $(CPP_FLAGS) -o $@ $<
$(OBJDIR)/%.d : %.cpp makefile
@if [ ! -d $(@D) ] ; then mkdir -p $(@D) ; fi
@echo "Generating dependencies for $<"
@$(CPP) $(CPP_FLAGS) -MM -MT $@ $< > $(@:.o=.d)
clean:
rm -rf $(PLATFORM)_obj[dn] hd hd.dSYM
install: $(OBJDIR)/hd
cp $(OBJDIR)/hd ~/bin