Explorar o código

Build out of tree

Streetwalrus Einstein %!s(int64=10) %!d(string=hai) anos
pai
achega
9082769517
Modificáronse 8 ficheiros con 41 adicións e 43 borrados
  1. 1 5
      .gitignore
  2. 7 4
      Makefile
  3. 0 3
      art/.gitignore
  4. 11 10
      art/rules.mk
  5. 15 9
      rules.mk
  6. 0 1
      version/.gitignore
  7. 5 5
      version/rules.mk
  8. 2 6
      version/version.bash

+ 1 - 5
.gitignore

@@ -1,8 +1,4 @@
-*.o
-*.tns
-bin
-*.elf
-*.gdb
+out/
 
 .ycm_extra_conf.pyc
 

+ 7 - 4
Makefile

@@ -23,13 +23,16 @@ ZEHNFLAGS = --name "$(NAME)" --compress
 
 SRCS_C :=
 SRCS_CPP :=
-OBJS = $(SRCS_C:%.c=%.o) $(SRCS_CPP:%.cpp=%.o)
+OBJS = $(BUILT_SRCS_C:%.c=%.o) $(BUILD_SRCS_CPP:%.cpp=%.o)
+OBJS += $(addprefix $(OUT)/,$(SRCS_C:%.c=%.o) $(SRCS_CPP:%.cpp=%.o))
 INCLUDE :=
 BUILT_SRCS :=
+BUILT_SRCS_C :=
+BUILT_SRCS_CPP :=
 
-DISTDIR = bin
-ELF = $(DISTDIR)/$(NAME).elf
-EXE = $(DISTDIR)/$(NAME).tns
+OUT = out
+ELF = $(OUT)/$(NAME).elf
+EXE = $(OUT)/$(NAME).tns
 
 CLEAN_SPEC :=
 

+ 0 - 3
art/.gitignore

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

+ 11 - 10
art/rules.mk

@@ -1,23 +1,24 @@
 art_LOCAL_PATH := $(call whereami)
 
 art_SPRITES := $(wildcard $(art_LOCAL_PATH)/*.png)
-art_SPR_DATA := $(patsubst %.png,%.cspr,$(art_SPRITES))
+art_SPR_DATA := $(addprefix $(OUT)/,$(art_SPRITES:%.png=%.cspr))
+art_SPR_SRC := $(OUT)/$(art_LOCAL_PATH)/sprites.c
+art_SPR_HDR := $(OUT)/$(art_LOCAL_PATH)/sprites.h
 
-SRCS_C += $(art_LOCAL_PATH)/sprites.c
-INCLUDE += $(art_LOCAL_PATH)
-BUILT_SRCS += $(art_LOCAL_PATH)/sprites.h
+BUILT_SRCS_C += $(art_SPR_SRC)
+INCLUDE += $(OUT)/$(art_LOCAL_PATH)
+BUILT_SRCS += $(art_SPR_HDR)
 
-CLEAN_SPEC += $(art_SPR_DATA) $(art_LOCAL_PATH)/sprites.c $(art_LOCAL_PATH)/sprites.h
-
-%.cspr: %.png
-	@echo "Converting : $<"
+$(OUT)/%.cspr: %.png
+	@echo "SPRITE: $@"
+	@mkdir -p $(dir $@)
 	@ConvertImg --format n2dlib $< > $@
 
-$(art_LOCAL_PATH)/sprites.c: $(art_SPR_DATA)
+$(art_SPR_SRC): $(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
+$(art_SPR_HDR): $(art_SPR_SRC)
 	@echo "Making header sprites.h"
 	@cat $< | grep "=" | sed -e "s/ =.*/;/" -e "s/^/extern /" > $@

+ 15 - 9
rules.mk

@@ -4,31 +4,37 @@ all: $(EXE)
 
 include $(wildcard */rules.mk)
 
+$(OUT)/%.o: %.c | $(BUILT_SRCS)
+	@echo "CC: $@"
+	@mkdir -p $(dir $@)
+	@$(CC) $(CFLAGS) -c $< -o $@
+
 %.o: %.c | $(BUILT_SRCS)
 	@echo "CC: $@"
 	@$(CC) $(CFLAGS) -c $< -o $@
 
+$(OUT)/%.o: %.cpp | $(BUILT_SRCS)
+	@echo "CPP: $@"
+	@mkdir -p $(dir $@)
+	@$(CPP) $(CPPFLAGS) -c $< -o $@
+
 %.o: %.cpp | $(BUILT_SRCS)
 	@echo "CPP: $@"
 	@$(CPP) $(CPPFLAGS) -c $< -o $@
 
 $(ELF): $(OBJS)
-	@mkdir -p $(DISTDIR)
+	@mkdir -p $(dir $@)
 	@echo "CCLD: $@"
 	@+$(CC) $(LDFLAGS) $^ -o $(ELF)
 
 $(EXE): $(ELF)
-	@mkdir -p $(DISTDIR)
+	@mkdir -p $(dir $@)
 	@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)
+	@echo "RM: $(OUT)"
+	@rm -rf $(OUT)
 
 format:
 	@echo "Formatting source using clang-format"
@@ -38,7 +44,7 @@ include:
 	@echo -n $(addprefix -I ,$(INCLUDE))
 
 run: all
-	@echo "Sending $(EXE) to calculator"
+	@echo "TILP: $(EXE)"
 	@tilp -ns $(EXE) > /dev/null
 
 .FORCE:

+ 0 - 1
version/.gitignore

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

+ 5 - 5
version/rules.mk

@@ -1,9 +1,9 @@
 version_LOCAL_PATH := $(call whereami)
+version_SRC := $(OUT)/$(version_LOCAL_PATH)/version.c
 
-SRCS_C += $(version_LOCAL_PATH)/version.c
+BUILT_SRCS_C += $(version_SRC)
 INCLUDE += $(version_LOCAL_PATH)
 
-CLEAN_SPEC += $(version_LOCAL_PATH)/version.c
-
-$(version_LOCAL_PATH)/version.c: .FORCE
-	@./$(version_LOCAL_PATH)/version.bash
+$(version_SRC): .FORCE
+	@mkdir -p $(dir $@)
+	@./$(version_LOCAL_PATH)/version.bash $@

+ 2 - 6
version/version.bash

@@ -4,18 +4,14 @@ 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
+diff $1 <(echo "$source") > /dev/null 2>&1
 if [[ $? -ne 0 ]]
   then
   echo "Updating version source"
-  echo "$source" > $DIRNAME/version.c
+  echo "$source" > $1
 fi