summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Scheller <github@loowis.durge.org>2014-04-16 22:10:33 +0100
committerAndrew Scheller <github@loowis.durge.org>2014-04-16 22:16:28 +0100
commit70a7d7a94397cbe01fd5457e34f3d3368300f2ac (patch)
tree50ffda62cc15f607d543e76aaf0c23a614dd5618
parenta1c67206c88fe0c0712c99d6181cff9b99b07b33 (diff)
build directory can now be renamed
The autogenerated header files have been moved about, and an extra include dir has been added, which means you can give a custom BUILD=newbuilddir option to make, and everything "just works" Also tidied up the way the different Makefiles build their include- directory flags
-rw-r--r--bare-arm/Makefile6
-rw-r--r--py/mkrules.mk8
-rw-r--r--py/py.mk20
-rw-r--r--py/qstr.c1
-rw-r--r--py/qstr.h1
-rw-r--r--stm/Makefile17
-rw-r--r--stmhal/Makefile11
-rw-r--r--teensy/Makefile8
-rw-r--r--unix-cpy/Makefile6
-rw-r--r--unix/Makefile6
-rw-r--r--windows/Makefile6
11 files changed, 64 insertions, 26 deletions
diff --git a/bare-arm/Makefile b/bare-arm/Makefile
index 0e9f1f7c3..ace508ebd 100644
--- a/bare-arm/Makefile
+++ b/bare-arm/Makefile
@@ -8,8 +8,12 @@ include ../py/py.mk
CROSS_COMPILE = arm-none-eabi-
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
+
CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
-CFLAGS = -I. -I$(PY_SRC) -Wall -Werror -ansi -std=gnu99 $(CFLAGS_CORTEX_M4) $(COPT)
+CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 $(CFLAGS_CORTEX_M4) $(COPT)
#Debugging/Optimization
ifeq ($(DEBUG), 1)
diff --git a/py/mkrules.mk b/py/mkrules.mk
index 08ba8fc41..63a98a8ec 100644
--- a/py/mkrules.mk
+++ b/py/mkrules.mk
@@ -59,10 +59,16 @@ $(BUILD)/%.pp: %.c
# object directories (but only for existance), and the object directories
# will be created if they don't exist.
OBJ_DIRS = $(sort $(dir $(OBJ)))
-$(OBJ): $(PY_BUILD)/qstrdefs.generated.h | $(OBJ_DIRS)
+$(OBJ): $(HEADER_PY_BUILD)/qstrdefs.generated.h | $(OBJ_DIRS)
$(OBJ_DIRS):
$(MKDIR) -p $@
+$(HEADER_BUILD):
+ $(MKDIR) -p $@
+
+$(HEADER_PY_BUILD):
+ $(MKDIR) -p $@
+
ifneq ($(PROG),)
# Build a standalone executable (unix and unix-cpy do this)
diff --git a/py/py.mk b/py/py.mk
index 5d02c95fa..c86f84910 100644
--- a/py/py.mk
+++ b/py/py.mk
@@ -1,8 +1,13 @@
# where py object files go (they have a name prefix to prevent filename clashes)
PY_BUILD = $(BUILD)/py
-# file containing qstr defs for the core Python bit
+# where autogenerated header files go
+HEADER_BUILD = $(BUILD)/includes/build
+
+# where autogenerated py header files go
+HEADER_PY_BUILD = $(HEADER_BUILD)/py
+# file containing qstr defs for the core Python bit
PY_QSTR_DEFS = $(PY_SRC)/qstrdefs.h
# py object files
@@ -98,26 +103,25 @@ PY_O = $(addprefix $(PY_BUILD)/, $(PY_O_BASENAME))
FORCE:
.PHONY: FORCE
-$(PY_BUILD)/py-version.h: FORCE
+$(HEADER_PY_BUILD)/py-version.h: FORCE
$(Q)$(PY_SRC)/py-version.sh > $@.tmp
$(Q)if [ -f "$@" ] && cmp -s $@ $@.tmp; then rm $@.tmp; else echo "Generating $@"; mv $@.tmp $@; fi
# qstr data
-# Adding an order only dependency on $(PY_BUILD) causes $(PY_BUILD) to get
+# Adding an order only dependency on $(HEADER_PY_BUILD) causes $(HEADER_PY_BUILD) to get
# created before we run the script to generate the .h
-$(PY_BUILD)/qstrdefs.generated.h: | $(PY_BUILD)/
-$(PY_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/makeqstrdata.py mpconfigport.h $(PY_SRC)/mpconfig.h
+$(HEADER_PY_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/makeqstrdata.py mpconfigport.h $(PY_SRC)/mpconfig.h | $(HEADER_PY_BUILD)
$(ECHO) "makeqstrdata $(PY_QSTR_DEFS) $(QSTR_DEFS)"
- $(CPP) $(CFLAGS) $(PY_QSTR_DEFS) -o $(PY_BUILD)/qstrdefs.preprocessed.h
- $(Q)$(PYTHON) $(PY_SRC)/makeqstrdata.py $(PY_BUILD)/qstrdefs.preprocessed.h $(QSTR_DEFS) > $@
+ $(CPP) $(CFLAGS) $(PY_QSTR_DEFS) -o $(HEADER_PY_BUILD)/qstrdefs.preprocessed.h
+ $(Q)$(PYTHON) $(PY_SRC)/makeqstrdata.py $(HEADER_PY_BUILD)/qstrdefs.preprocessed.h $(QSTR_DEFS) > $@
# We don't know which source files actually need the generated.h (since
# it is #included from str.h). The compiler generated dependencies will cause
# the right .o's to get recompiled if the generated.h file changes. Adding
# an order-only dependendency to all of the .o's will cause the generated .h
# to get built before we try to compile any of them.
-$(PY_O): | $(PY_BUILD)/qstrdefs.generated.h $(PY_BUILD)/py-version.h
+$(PY_O): | $(HEADER_PY_BUILD)/qstrdefs.generated.h $(HEADER_PY_BUILD)/py-version.h
# emitters
diff --git a/py/qstr.c b/py/qstr.c
index 990ff3772..2b14065fa 100644
--- a/py/qstr.c
+++ b/py/qstr.c
@@ -60,7 +60,6 @@ const static qstr_pool_t const_pool = {
(const byte*) "\0\0\0\0", // invalid/no qstr has empty data
(const byte*) "\0\0\0\0", // empty qstr
#define Q(id, str) str,
-// TODO having 'build/' here is a bit of a hack, should take config variable from Makefile
#include "build/py/qstrdefs.generated.h"
#undef Q
},
diff --git a/py/qstr.h b/py/qstr.h
index 994c41808..6bcb1707f 100644
--- a/py/qstr.h
+++ b/py/qstr.h
@@ -8,7 +8,6 @@ enum {
MP_QSTR_NULL = 0, // indicates invalid/no qstr
MP_QSTR_ = 1, // the empty qstr
#define Q(id, str) MP_QSTR_##id,
-// TODO having 'build/py.' here is a bit of a hack, should take config variable from Makefile
#include "build/py/qstrdefs.generated.h"
#undef Q
MP_QSTR_number_of,
diff --git a/stm/Makefile b/stm/Makefile
index 25c79a27b..384ecd630 100644
--- a/stm/Makefile
+++ b/stm/Makefile
@@ -17,12 +17,19 @@ DFU=../tools/dfu.py
CROSS_COMPILE = arm-none-eabi-
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
+INC += -I$(CMSIS_DIR)
+INC += -I$(STMPERIPH_DIR)
+INC += -I$(STMUSB_DIR)
+INC += -I$(STMUSBD_DIR)
+INC += -I$(STMUSBH_DIR)
+INC += -I$(FATFS_DIR)
+#INC += -I$(CC3K_DIR)
+
CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
-CFLAGS = -I. -I$(PY_SRC) -I$(CMSIS_DIR) -I$(STMPERIPH_DIR) -I$(STMUSB_DIR) -Wall -Werror -ansi -std=gnu99 $(CFLAGS_CORTEX_M4) $(COPT)
-CFLAGS += -I$(STMUSBD_DIR)
-CFLAGS += -I$(STMUSBH_DIR)
-CFLAGS += -I$(FATFS_DIR)
-#CFLAGS += -I$(CC3K_DIR)
+CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 $(CFLAGS_CORTEX_M4) $(COPT)
BOARD ?= PYBOARD4
ifeq ($(wildcard boards/$(BOARD)/.),)
diff --git a/stmhal/Makefile b/stmhal/Makefile
index f0d132520..aa4f4f3e8 100644
--- a/stmhal/Makefile
+++ b/stmhal/Makefile
@@ -18,6 +18,7 @@ CROSS_COMPILE = arm-none-eabi-
INC = -I.
INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
INC += -I$(CMSIS_DIR)/inc
INC += -I$(CMSIS_DIR)/devinc
INC += -I$(HAL_DIR)/inc
@@ -208,28 +209,28 @@ BOARD_PINS = boards/$(BOARD)/pins.csv
AF_FILE = boards/stm32f4xx-af.csv
PREFIX_FILE = boards/stm32f4xx-prefix.c
GEN_PINS_SRC = $(BUILD)/pins_$(BOARD).c
-GEN_PINS_HDR = $(BUILD)/pins.h
+GEN_PINS_HDR = $(HEADER_BUILD)/pins.h
INSERT_USB_IDS = ../tools/insert-usb-ids.py
FILE2H = ../tools/file2h.py
USB_IDS_FILE = usbd_desc_cdc_msc.c
CDCINF_TEMPLATE = pybcdc.inf_template
-GEN_CDCINF_FILE = $(BUILD)/pybcdc.inf
-GEN_CDCINF_HEADER = $(BUILD)/pybcdc_inf.h
+GEN_CDCINF_FILE = $(HEADER_BUILD)/pybcdc.inf
+GEN_CDCINF_HEADER = $(HEADER_BUILD)/pybcdc_inf.h
# Making OBJ use an order-only depenedency on the generated pins.h file
# has the side effect of making the pins.h file before we actually compile
# any of the objects. The normal dependency generation will deal with the
# case when pins.h is modified. But when it doesn't exist, we don't know
# which source files might need it.
-$(OBJ): | $(BUILD)/pins.h
+$(OBJ): | $(HEADER_BUILD)/pins.h
$(BUILD)/main.o: $(GEN_CDCINF_HEADER)
# Use a pattern rule here so that make will only call make-pins.py once to make
# both pins_$(BOARD).c and pins.h
-$(BUILD)/%_$(BOARD).c $(BUILD)/%.h: boards/$(BOARD)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE)
+$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h: boards/$(BOARD)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE)
$(ECHO) "Create $@"
$(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE) --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) > $(GEN_PINS_SRC)
diff --git a/teensy/Makefile b/teensy/Makefile
index 5630103e3..bd01f7e2b 100644
--- a/teensy/Makefile
+++ b/teensy/Makefile
@@ -17,7 +17,13 @@ CROSS_COMPILE = $(COMPILER_PATH)/arm-none-eabi-
CFLAGS_TEENSY = -DF_CPU=96000000 -DUSB_SERIAL -D__MK20DX256__
CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -fsingle-precision-constant -Wdouble-promotion $(CFLAGS_TEENSY)
-CFLAGS = -I. -I$(PY_SRC) -I$(CORE_PATH) -Wall -ansi -std=gnu99 $(CFLAGS_CORTEX_M4)
+
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
+INC += -I$(CORE_PATH)
+
+CFLAGS = $(INC) -Wall -ansi -std=gnu99 $(CFLAGS_CORTEX_M4)
LDFLAGS = -nostdlib -T mk20dx256.ld
LIBS = -L $(COMPILER_PATH)/../lib/gcc/arm-none-eabi/4.7.2/thumb2 -lgcc
diff --git a/unix-cpy/Makefile b/unix-cpy/Makefile
index 985ef1585..8db8c2069 100644
--- a/unix-cpy/Makefile
+++ b/unix-cpy/Makefile
@@ -6,8 +6,12 @@ PROG = cpy
# include py core make definitions
include ../py/py.mk
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
+
# compiler settings
-CFLAGS = -I. -I$(PY_SRC) -Wall -Werror -ansi -std=gnu99 -DUNIX
+CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 -DUNIX
LDFLAGS = -lm
# Debugging/Optimization
diff --git a/unix/Makefile b/unix/Makefile
index 07a75f7ad..64483d90d 100644
--- a/unix/Makefile
+++ b/unix/Makefile
@@ -10,8 +10,12 @@ QSTR_DEFS = qstrdefsport.h
# include py core make definitions
include ../py/py.mk
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
+
# compiler settings
-CFLAGS = -I. -I$(PY_SRC) -Wall -Werror -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT)
+CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT)
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
diff --git a/windows/Makefile b/windows/Makefile
index 9bea574b6..ad4c82c12 100644
--- a/windows/Makefile
+++ b/windows/Makefile
@@ -9,8 +9,12 @@ QSTR_DEFS = ../unix/qstrdefsport.h
# include py core make definitions
include ../py/py.mk
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I$(BUILD)/includes
+
# compiler settings
-CFLAGS = -I. -I$(PY_SRC) -Wall -Werror -ansi -std=gnu99 -DUNIX
+CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 -DUNIX
LDFLAGS = -lm
# Debugging/Optimization