瀏覽代碼

Merge pull request #3 from WalrusRPG/build_redux

Major repo overhaul
Florian DORMONT 10 年之前
父節點
當前提交
1e8537559f

+ 0 - 5
.gitignore

@@ -3,11 +3,6 @@
 bin
 *.elf
 *.gdb
-art/sprites.c
-art/sprites.h
-art/*.cspr
-src/version.c
-include/version.h
 
 .ycm_extra_conf.pyc
 

+ 21 - 48
Makefile

@@ -2,7 +2,7 @@ NAME = WalrusRPG
 
 DEBUG = FALSE
 
-CFLAGS_COMMON = -Wall -W -marm -fdiagnostics-color=always
+CFLAGS_COMMON = -Wall -W -marm $(addprefix -I,$(INCLUDE))
 
 ifeq ($(DEBUG),FALSE)
 	CFLAGS_COMMON += -Ofast -flto
@@ -21,55 +21,28 @@ LDFLAGS = $(CFLAGS_COMMON) -Wl,--gc-sections
 ZEHN = genzehn
 ZEHNFLAGS = --name "$(NAME)" --compress
 
-SRCDIR = src
-
-SOURCES_C = art/sprites.c src/version.c $(wildcard $(SRCDIR)/*.c)
-SOURCES_CPP = $(wildcard $(SRCDIR)/*.cpp)
-OBJS = $(patsubst %.c,%.o,$(SOURCES_C)) $(patsubst %.cpp,%.o,$(SOURCES_CPP))
-INCLUDE = -I include -I art -I external/tinystl/include
+SRCS_C :=
+SRCS_CPP :=
+OBJS = $(SRCS_C:%.c=%.o) $(SRCS_CPP:%.cpp=%.o)
+INCLUDE :=
+BUILT_SRCS :=
 
 DISTDIR = bin
 ELF = $(DISTDIR)/$(NAME).elf
 EXE = $(DISTDIR)/$(NAME).tns
 
-all: versionning sprites $(EXE)
-
-.PHONY: format clean sprites all run versionning
-
-versionning:
-	@bash versionning.bash
-
-sprites:
-	@$(MAKE) -C art/
-
-art/sprites.c: sprites
-
-%.o: %.c| sprites versionning
-	@echo "CC: $@"
-	@$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
-
-%.o: %.cpp| sprites versionning
-	@echo "CPP: $@"
-	@$(CPP) $(CPPFLAGS) $(INCLUDE) -c $< -o $@
-
-
-$(ELF): $(OBJS) |sprites
-	@mkdir -p $(DISTDIR)
-	@echo "CCLD: $@"
-	@+$(CC) $(LDFLAGS) $^ -o $(ELF)
-
-$(EXE): $(ELF)
-	@mkdir -p $(DISTDIR)
-	@echo "ZEHN: $@"
-	@$(ZEHN) --input $(ELF) --output $(EXE) $(ZEHNFLAGS)
-
-clean:
-	rm -rf $(DISTDIR)
-	rm -f $(OBJS)
-	@$(MAKE) -C art/ clean
-
-format:
-	clang-format -i -style=file src/*.c src/*.cpp include/*.h
-
-run: all
-	tilp -ns $(EXE) > /dev/null
+CLEAN_SPEC :=
+
+# Figure out where we are.
+define whereami
+$(strip \
+  $(eval LOCAL_MODULE_MAKEFILE := $$(lastword $$(MAKEFILE_LIST))) \
+  $(if $(filter $(BUILD_SYSTEM)/% $(OUT_DIR)/%,$(LOCAL_MODULE_MAKEFILE)), \
+    $(error my-dir must be called before including any other makefile.) \
+   , \
+    $(patsubst %/,%,$(dir $(LOCAL_MODULE_MAKEFILE))) \
+   ) \
+ )
+endef
+
+include rules.mk

+ 3 - 0
art/.gitignore

@@ -0,0 +1,3 @@
+*.cspr
+sprites.c
+sprites.h

+ 0 - 20
art/Makefile

@@ -1,20 +0,0 @@
-SPRITES = $(wildcard *.png)
-SPR_DATA = $(patsubst %.png,%.cspr,$(SPRITES))
-
-%.cspr: %.png
-	@echo "Converting : $<"
-	@ConvertImg --format n2dlib $< > $@
-
-all: sprites.c sprites.h
-	
-sprites.c: | $(SPR_DATA)
-	@echo "Catting sprites into sprites.c"
-	@rm -f sprites.c
-	@cat  $(SPR_DATA)  | sed "s/^static uint16_t/unsigned short/" >> sprites.c
-
-sprites.h: sprites.c
-	@echo "Making header sprites.h"
-	@cat sprites.c | grep "=" | sed -e "s/ =.*/;/" -e "s/^/extern /" > sprites.h
-
-clean:
-	rm -f $(SPR_DATA) sprites.c sprites.h

+ 23 - 0
art/rules.mk

@@ -0,0 +1,23 @@
+art_LOCAL_PATH := $(call whereami)
+
+art_SPRITES := $(wildcard $(art_LOCAL_PATH)/*.png)
+art_SPR_DATA := $(patsubst %.png,%.cspr,$(art_SPRITES))
+
+SRCS_C += $(art_LOCAL_PATH)/sprites.c
+INCLUDE += $(art_LOCAL_PATH)
+BUILT_SRCS += $(art_LOCAL_PATH)/sprites.h
+
+CLEAN_SPEC += $(art_SPR_DATA) $(art_LOCAL_PATH)/sprites.c $(art_LOCAL_PATH)/sprites.h
+
+%.cspr: %.png
+	@echo "Converting : $<"
+	@ConvertImg --format n2dlib $< > $@
+
+$(art_LOCAL_PATH)/sprites.c: $(art_SPR_DATA)
+	@echo "Catting sprites into sprites.c"
+	@rm -f $@
+	@cat $^ | sed "s/^static uint16_t/unsigned short/" >> $@
+
+$(art_LOCAL_PATH)/sprites.h: $(art_LOCAL_PATH)/sprites.c
+	@echo "Making header sprites.h"
+	@cat $< | grep "=" | sed -e "s/ =.*/;/" -e "s/^/extern /" > $@

+ 5 - 0
external/rules.mk

@@ -0,0 +1,5 @@
+external_LOCAL_PATH := $(call whereami)
+
+include $(wildcard $(external_LOCAL_PATH)/*/rules.mk)
+
+INCLUDE += $(external_LOCAL_PATH)/tinystl/include

+ 41 - 0
rules.mk

@@ -0,0 +1,41 @@
+.PHONY: format clean all run versionning
+
+all: $(EXE)
+
+include $(wildcard */rules.mk)
+
+%.o: %.c | $(BUILT_SRCS)
+	@echo "CC: $@"
+	@$(CC) $(CFLAGS) -c $< -o $@
+
+%.o: %.cpp | $(BUILT_SRCS)
+	@echo "CPP: $@"
+	@$(CPP) $(CPPFLAGS) -c $< -o $@
+
+$(ELF): $(OBJS)
+	@mkdir -p $(DISTDIR)
+	@echo "CCLD: $@"
+	@+$(CC) $(LDFLAGS) $^ -o $(ELF)
+
+$(EXE): $(ELF)
+	@mkdir -p $(DISTDIR)
+	@echo "ZEHN: $@"
+	@$(ZEHN) --input $(ELF) --output $(EXE) $(ZEHNFLAGS)
+
+clean:
+	@echo "Removing dist"
+	@rm -rf $(DISTDIR)
+	@echo "Removing object files"
+	@rm -f $(OBJS)
+	@echo "Removing other build artifacts"
+	@rm -f $(CLEAN_SPEC)
+
+format:
+	@echo "Formatting source using clang-format"
+	@clang-format -i -style=file $(SRCS_C) $(SRCS_CPP) $(wildcard $(addsuffix /*.h,$(INCLUDE)))
+
+run: all
+	@echo "Sending $(EXE) to calculator"
+	@tilp -ns $(EXE) > /dev/null
+
+.FORCE:

+ 0 - 0
src/Graphics.cpp → src/drivers/Graphics.cpp


+ 0 - 0
include/Graphics.h → src/drivers/Graphics.h


+ 0 - 0
src/Interrupts.cpp → src/drivers/Interrupts.cpp


+ 0 - 0
include/Interrupts.h → src/drivers/Interrupts.h


+ 0 - 0
src/Timers.cpp → src/drivers/Timers.cpp


+ 0 - 0
include/Timers.h → src/drivers/Timers.h


+ 0 - 0
include/State.h → src/engine/State.h


+ 0 - 0
src/StateMachine.cpp → src/engine/StateMachine.cpp


+ 0 - 0
include/StateMachine.h → src/engine/StateMachine.h


+ 0 - 0
src/main.cpp → src/engine/main.cpp


+ 0 - 0
src/Entity.cpp → src/map/Entity.cpp


+ 0 - 0
include/Entity.h → src/map/Entity.h


+ 0 - 0
src/Map.cpp → src/map/Map.cpp


+ 0 - 0
include/Map.h → src/map/Map.h


+ 0 - 0
src/StateMap.cpp → src/map/StateMap.cpp


+ 0 - 0
include/StateMap.h → src/map/StateMap.h


+ 0 - 0
src/Animator.cpp → src/render/Animator.cpp


+ 0 - 0
include/Animator.h → src/render/Animator.h


+ 0 - 0
src/Camera.cpp → src/render/Camera.cpp


+ 0 - 0
include/Camera.h → src/render/Camera.h


+ 0 - 0
src/Pixel.cpp → src/render/Pixel.cpp


+ 0 - 0
include/Pixel.h → src/render/Pixel.h


+ 0 - 0
include/Renderer.h → src/render/Renderer.h


+ 0 - 0
src/SpriteRenderer.cpp → src/render/SpriteRenderer.cpp


+ 0 - 0
include/SpriteRenderer.h → src/render/SpriteRenderer.h


+ 0 - 0
src/Text.cpp → src/render/Text.cpp


+ 0 - 0
include/Text.h → src/render/Text.h


+ 0 - 0
src/TileRenderer.cpp → src/render/TileRenderer.cpp


+ 0 - 0
include/TileRenderer.h → src/render/TileRenderer.h


+ 7 - 0
src/rules.mk

@@ -0,0 +1,7 @@
+src_LOCAL_PATH := $(call whereami)
+
+include $(wildcard $(src_LOCAL_PATH)/*/rules.mk)
+
+SRCS_C += $(wildcard $(src_LOCAL_PATH)/*/*.c)
+SRCS_CPP += $(wildcard $(src_LOCAL_PATH)/*/*.cpp)
+INCLUDE += $(shell find $(src_LOCAL_PATH) -mindepth 1 -maxdepth 1 -type d)

+ 0 - 0
include/Rect.h → src/utility/Rect.h


+ 0 - 0
include/misc.h → src/utility/misc.h


+ 1 - 0
version/.gitignore

@@ -0,0 +1 @@
+version.c

+ 9 - 0
version/rules.mk

@@ -0,0 +1,9 @@
+version_LOCAL_PATH := $(call whereami)
+
+SRCS_C += $(version_LOCAL_PATH)/version.c
+INCLUDE += $(version_LOCAL_PATH)
+
+CLEAN_SPEC += $(version_LOCAL_PATH)/version.c
+
+$(version_LOCAL_PATH)/version.c: .FORCE
+	@./$(version_LOCAL_PATH)/version.bash

+ 21 - 0
version/version.bash

@@ -0,0 +1,21 @@
+#!/bin/bash
+
+COMMIT_NUMBER=$(git describe --always)
+BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
+VERSION="$BRANCH_NAME-$COMMIT_NUMBER"
+
+DIRNAME=$(dirname "$0")
+
+source=$(cat <<EOF
+#include "version.h"
+
+const char git_version[] = "$VERSION";
+EOF
+)
+
+diff $DIRNAME/version.c <(echo "$source") > /dev/null 2>&1
+if [[ $? -ne 0 ]]
+  then
+  echo "Updating version source"
+  echo "$source" > $DIRNAME/version.c
+fi

+ 4 - 0
version/version.h

@@ -0,0 +1,4 @@
+#ifndef INCLUDE_VERSION_H
+#define INCLUDE_VERSION_H
+extern const char git_version[];
+#endif

+ 0 - 33
versionning.bash

@@ -1,33 +0,0 @@
-#!/bin/bash
-
-COMMIT_NUMBER=$(git describe --always)
-BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
-VERSION="$BRANCH_NAME-$COMMIT_NUMBER"
-
-source=$(cat <<EOF
-#include "version.h"
-
-const char git_version[] = "$VERSION";
-EOF
-)
-
-include=$(cat <<EOF
-#ifndef INCLUDE_VERSION_H
-#define INCLUDE_VERSION_H
-extern const char git_version[];
-#endif
-EOF
-)
-
-diff src/version.c <(echo "$source") > /dev/null 2>&1
-if [[ $? -ne 0 ]]
-  then
-  echo "Updating version source"
-  echo "$source" > src/version.c
-fi
-diff include/version.h <(echo "$include") > /dev/null 2>&1
-if [[ $? -ne 0 ]]
-  then
-  echo "Updating version include"
-  echo "$include" > include/version.h
-fi