-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
executable file
·112 lines (80 loc) · 2.82 KB
/
Makefile
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
.SUFFIXES:
#.SILENT:
SOURCES := source resource data
INCLUDES := include resource
BUILD := build
TARGET := xcomms
LIBDIRS := $(DEVKITPRO)/libgba
ASFLAGS :=
CXXFLAGS := -O2 -Wall -Wno-multichar -Wunused -fno-rtti -fno-exceptions $(shell fltk-config --cxxflags)
LDFLAGS := -s $(shell fltk-config --ldflags)
UNAME := $(shell uname -s)
ifneq (,$(findstring MINGW,$(UNAME)))
export PATH:=$(PATH):/mingw/bin
PLATFORM := win32
EXE := .exe
EXTRAS := UserPort
LDFLAGS += -lWinmm
endif
BINARIES := $(TARGET)$(EXE)
ifneq (,$(findstring Linux,$(UNAME)))
PLATFORM := linux
EXE :=
BINARIES += $(TARGET)_static
LDFLAGS += -lpthread
endif
#CXX := g++
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
CXXFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cxx)))
ASMFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
ifneq (,$(findstring MINGW,$(UNAME)))
RESOURCEFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.rc)))
endif
ifneq (,$(findstring Linux,$(UNAME)))
export STATIC := $(OUTPUT)_static
endif
export OFILES := $(ASMFILES:.s=.o) $(CXXFILES:.cxx=.o) $(RESOURCEFILES:.rc=.o)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
export DEPENDS := $(OFILES:.o=.d)
.PHONY: $(BUILD) clean
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
clean:
@echo cleaning ...
@rm -fr $(BUILD)
run:
$(OUTPUT)$(EXE)
#---------------------------------------------------------------------------------
dist:
#---------------------------------------------------------------------------------
@tar --exclude=*svn* -cvjf $(OUTPUT)_$(PLATFORM).tar.bz2 docs $(BINARIES) $(EXTRAS)
#---------------------------------------------------------------------------------
else
$(OUTPUT)$(EXE): $(STATIC) $(OFILES)
@echo Linking $(notdir $@)...
$(CXX) $(OFILES) $(LDFLAGS) -o $@
$(STATIC): $(OFILES)
@echo "Linking $(notdir $@)..."
$(CXX) -static $(OFILES) $(LDFLAGS) -o $@
%.o: %.cxx
@echo Compiling $(notdir $<)...
$(CXX) -MMD $(CXXFLAGS) $(INCLUDE) -c $<
%.o: %.s
@echo Compiling $(notdir $<)...
$(CXX) -MMD $(ASFLAGS) -c $< -o $@
%.o: %.rc
@echo Compiling resource $(notdir $<)...
@windres -i $< -o $@
-include $(DEPENDS)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------