-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
executable file
·146 lines (118 loc) · 5.11 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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#---------------------------------------------------------------------------
# Licencia GPLv3
#
# Este archivo es parte de libWiiEsp. Copyright (C) 2011 Ezequiel Vázquez de la Calle
#
# libWiiEsp es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de la
# Licencia Pública General GNU publicada por la Fundación para el Software Libre, ya sea la versión 3
# de la Licencia, o (a su elección) cualquier versión posterior.
#
# libWiiEsp se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA; ni siquiera
# la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de
# la Licencia Pública General GNU para obtener una información más detallada.
#
# Debería haber recibido una copia de la Licencia Pública General GNU junto a libWiiEsp. En caso
# contrario, consulte <http://www.gnu.org/licenses/>.
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Parte configurable
#---------------------------------------------------------------------------
# Información sobre bibliotecas externas
LOCALLIBS = freetype tinyxml
EXTRA = -I$(CURDIR)/lib/freetype/include
# Directorios de fuentes, cabeceras, dependencias, documentacion y objeto
BUILD = build
DEPSDIR = $(BUILD)
DOC = doc
HEADS = include
SOURCE = src
# Número de la versión
VERSION = 0.9.2
#---------------------------------------------------------------------------
# Parte estática
#---------------------------------------------------------------------------
# Limpiar las reglas implícitas
.SUFFIXES:
# Incluir las reglas básicas para Wii
include $(DEVKITPPC)/wii_rules
# Generar listas con todos los ficheros de la biblioteca (cabeceras, fuentes y objetos)
HEADERS = $(notdir $(wildcard $(HEADS)/*.h))
CPPFILES = $(notdir $(wildcard $(SOURCE)/*.cpp))
OFILES = $(CPPFILES:.cpp=.o)
OBJS = $(addprefix $(CURDIR)/$(BUILD)/,$(OFILES))
# Variables para la compilación
INCLUDE = $(foreach dir,$(LOCALLIBS),-I$(CURDIR)/lib/$(dir)) -I$(CURDIR)/$(HEADS) -I$(LIBOGC_INC) $(EXTRA)
LIBPATHS = -L$(LIBOGC_LIB) -L$(CURDIR)/$(BUILD)
VPATH = $(CURDIR)/$(HEADS)$(foreach dir,$(LOCALLIBS),:$(CURDIR)/lib/$(dir))
OUTPUT = $(BUILD)/libwiiesp
LD = $(CXX)
# Flags para la compilación
CFLAGS = -g -ansi -Wall $(MACHDEP) $(INCLUDE) -std=c++0x
CXXFLAGS = $(CFLAGS)
OPTIONS = -MMD -MP -MF
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
#---------------------------------------------------------------------------
.PHONY: all $(BUILD) libs $(LOCALLIBS) doc dist install uninstall clean doc-clean
all: $(BUILD) libs $(OUTPUT).a
$(BUILD):
@[ -d $(BUILD) ] || mkdir -p $(BUILD)
libs: $(LOCALLIBS)
@echo
$(LOCALLIBS):
@echo
@echo Compilando $@ ...
@$(MAKE) --no-print-directory --silent -C lib/$@
@mv lib/$@/*.a $(CURDIR)/$(BUILD)
@echo $@ ... OK!
$(CURDIR)/$(BUILD)/%.o: $(CURDIR)/$(SOURCE)/%.cpp
@echo Procesando $(notdir $<) ...
@$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
doc:
@cd $(DOC)/doxygen ; doxygen ; cd $(CURDIR)
@$(MAKE) --no-print-directory -C $(DOC)/manual
@$(MAKE) --no-print-directory -C $(DOC)/memoria
dist: all
@echo Empaquetando libWiiEsp-$(VERSION).tar.gz
@mkdir devkitPPC libogc libogc/include libogc/lib libogc/lib/wii
@cp -u $(CURDIR)/lib/tinyxml/*.h libogc/include
@cp -ur $(CURDIR)/lib/freetype/include/* libogc/include
@cp -u $(CURDIR)/$(HEADS)/*.h libogc/include
@cp -u $(BUILD)/*.a libogc/lib/wii
@cp -u libwiiesp.mk devkitPPC/libwiiesp_rules
@tar -czf libWiiEsp-$(VERSION).tar.gz --exclude=*.svn* devkitPPC libogc AUTHOR LICENSE
@$(RM) -rf devkitPPC libogc libogc/include libogc/lib libogc/lib/wii
@$(MAKE) --no-print-directory clean
@echo libWiiEsp-$(VERSION).tar.gz ... OK!
install: all
@echo
@cp -u $(CURDIR)/lib/tinyxml/*.h $(LIBOGC_INC)
@rsync -ah --exclude="*.svn*" $(CURDIR)/lib/freetype/include/* $(LIBOGC_INC)
@cp -u $(CURDIR)/$(HEADS)/*.h $(LIBOGC_INC)
@cp -u $(BUILD)/*.a $(LIBOGC_LIB)
@cp -u libwiiesp.mk $(DEVKITPPC)/libwiiesp_rules
@echo Instalando libWiiEsp ... OK!
uninstall:
@$(RM) -rf $(LIBOGC_INC)/tinystr.h $(LIBOGC_INC)/tinyxml.h $(LIBOGC_INC)/ft2build.h $(LIBOGC_INC)/freetype
@$(RM) -rf $(LIBOGC_LIB)/libtinyxml.a $(LIBOGC_LIB)/libfreetype.a $(LIBOGC_LIB)/libwiiesp.a
@for file in $(HEADERS); do $(RM) $(LIBOGC_INC)/$$file ; done
@$(RM) -rf $(DEVKITPPC)/libwiiesp_rules
@echo Desinstalando libWiiEsp ... OK!
clean:
@for dir in $(LOCALLIBS); do $(MAKE) clean --no-print-directory -C lib/$$dir; done
@$(RM) -fr $(BUILD) $(OUTPUT).a *~ $(SOURCE)/*~ $(CURDIR)/$(HEADS)/*~
@echo Limpiando libWiiEsp ... OK!
doc-clean:
@$(RM) -fr $(DOC)/doxygen/html $(DOC)/doxygen/latex $(DOC)/doxygen/warnings.log
@$(MAKE) clean-all --no-print-directory -C $(DOC)/manual
@$(MAKE) clean-all --no-print-directory -C $(DOC)/memoria
@echo Limpiando documentacion ... OK!
#---------------------------------------------------------------------------
DEPENDS := $(OBJS:.o=.d)
$(OUTPUT).a: $(OBJS)
@echo
@echo Empaquetando libWiiEsp ...
@$(AR) -rc $@ $^
@$(RM) -f *.d
@$(RM) $(CURDIR)/$(SOURCE)/-g
@echo libWiiEsp ... OK!
-include $(DEPENDS)