diff --git a/Makefile b/Makefile index 2ce1a48a1..62a51e587 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,18 @@ -PLATFORM ?= device -DEBUG ?= 1 +include build/config.mak -include Makefile.$(PLATFORM) ifndef USE_LIBA - $(error Makefile.PLATFORM should define USE_LIBA) + $(error platform.mak should define USE_LIBA) endif ifndef EXE - $(error Makefile.PLATFORM should define EXE, the extension for executables) + $(error platform.mak should define EXE, the extension for executables) endif HOSTCC = gcc HOSTCXX = g++ +# Flags - Optimizations +SFLAGS += $(OPTIM_SFLAGS) + # Flags - Header search path SFLAGS += -Ilib -I. @@ -21,12 +22,8 @@ SFLAGS += -Wall # Flags - Header dependency tracking SFLAGS += -MD -MP -# Flags - Optimizations ifeq ($(DEBUG),1) -SFLAGS += -ggdb3 -DDEBUG=1 -O0 -else -SFLAGS += -Os -fdata-sections -ffunction-sections -LDFLAGS += --gc-sections +SFLAGS += -DDEBUG=1 endif # Language-specific flags diff --git a/Makefile.blackbox b/Makefile.blackbox deleted file mode 100644 index 2eb21a1ed..000000000 --- a/Makefile.blackbox +++ /dev/null @@ -1,9 +0,0 @@ -CC=clang -CXX=clang++ -LD=clang++ -SIZE=size - -SFLAGS += -DLIBA_LOG_DYNAMIC_MEMORY - -USE_LIBA=1 -EXE=elf diff --git a/Makefile.device b/Makefile.device deleted file mode 100644 index 887f02fca..000000000 --- a/Makefile.device +++ /dev/null @@ -1,28 +0,0 @@ -TOOLCHAIN=arm-none-eabi -# FIXME decide which one to use. -#COMPILER=llvm - -ifeq ($(COMPILER),llvm) -CC=clang -CXX=clang++ -else -CC=$(TOOLCHAIN)-gcc -CXX=$(TOOLCHAIN)-g++ -endif - -LD=$(TOOLCHAIN)-ld.bfd -GDB=$(TOOLCHAIN)-gdb -OBJCOPY=$(TOOLCHAIN)-objcopy -SIZE=$(TOOLCHAIN)-size - -# Flags - Arch -ifeq ($(COMPILER),llvm) - SFLAGS += -target thumbv7em-unknown-eabi -else - SFLAGS += -mthumb -march=armv7e-m -mfloat-abi=hard -endif -SFLAGS += -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 - -# Platform configuration -USE_LIBA=1 -EXE=elf diff --git a/Makefile.emscripten b/Makefile.emscripten deleted file mode 100644 index 75c5abddb..000000000 --- a/Makefile.emscripten +++ /dev/null @@ -1,9 +0,0 @@ -CC=emcc -CXX=emcc -LD=emcc -LDFLAGS=-s EXPORTED_FUNCTIONS="['_main', '_IonEmscriptenPushEvent']" -Os --shell-file ion/src/emscripten/shell.html -SIZE=size -DEBUG=0 - -USE_LIBA=0 -EXE=html diff --git a/Makefile.simulator b/Makefile.simulator deleted file mode 100644 index 84d775678..000000000 --- a/Makefile.simulator +++ /dev/null @@ -1,7 +0,0 @@ -CC=clang -CXX=clang++ -LD=clang++ -SIZE=size - -USE_LIBA=0 -EXE=elf diff --git a/build/config.mak b/build/config.mak new file mode 100644 index 000000000..10f06af4e --- /dev/null +++ b/build/config.mak @@ -0,0 +1,20 @@ +# You can edit this file to change build settings + +PLATFORM ?= device +VERBOSE ?= 0 +DEBUG ?= 1 +LIBA_LOG_DYNAMIC_MEMORY ?= 0 +ESCHER_LOG_EVENTS ?= 0 +ION_EVENTS ?= keyboard +# Possible values : keyboard, stdin, random, replay + +# Do not edit below this + +ifeq ($(DEBUG),1) +OPTIM_SFLAGS ?= -O0 +else +OPTIM_SFLAGS ?= -Os +endif + +include build/platform.$(PLATFORM).mak +include build/toolchain.$(TOOLCHAIN).mak diff --git a/build/platform.blackbox.mak b/build/platform.blackbox.mak new file mode 100644 index 000000000..58e78ca17 --- /dev/null +++ b/build/platform.blackbox.mak @@ -0,0 +1,3 @@ +TOOLCHAIN ?= afl +USE_LIBA ?= 1 +EXE = bin diff --git a/build/platform.device.mak b/build/platform.device.mak new file mode 100644 index 000000000..0666aabaa --- /dev/null +++ b/build/platform.device.mak @@ -0,0 +1,7 @@ +TOOLCHAIN ?= arm-gcc +ifeq ($(COMPILER),llvm) +# Compatibility with old build system +TOOLCHAIN = arm-llvm +endif +USE_LIBA = 1 +EXE = elf diff --git a/build/platform.emscripten.mak b/build/platform.emscripten.mak new file mode 100644 index 000000000..be4c03822 --- /dev/null +++ b/build/platform.emscripten.mak @@ -0,0 +1,3 @@ +TOOLCHAIN = emscripten +USE_LIBA = 0 +EXE = html diff --git a/build/platform.simulator.mak b/build/platform.simulator.mak new file mode 100644 index 000000000..ad21bb801 --- /dev/null +++ b/build/platform.simulator.mak @@ -0,0 +1,3 @@ +TOOLCHAIN ?= host-clang +USE_LIBA = 0 +EXE = elf diff --git a/build/toolchain.afl.mak b/build/toolchain.afl.mak new file mode 100644 index 000000000..6813024f4 --- /dev/null +++ b/build/toolchain.afl.mak @@ -0,0 +1,3 @@ +CC = afl-clang +CXX = afl-clang++ +LD = afl-clang++ diff --git a/build/toolchain.arm-gcc.mak b/build/toolchain.arm-gcc.mak new file mode 100644 index 000000000..bf3990b77 --- /dev/null +++ b/build/toolchain.arm-gcc.mak @@ -0,0 +1,13 @@ +CC = arm-none-eabi-gcc +CXX = arm-none-eabi-g++ +LD = arm-none-eabi-ld.bfd +GDB = arm-none-eabi-gdb +OBJCOPY = arm-none-eabi-objcopy +SIZE = arm-none-eabi-size +ifeq ($(DEBUG),1) +OPTIM_SFLAGS += -ggdb3 +else +OPTIM_SFLAGS += -fdata-sections -ffunction-sections +LDFLAGS = --gc-sections +endif +SFLAGS = -mthumb -march=armv7e-m -mfloat-abi=hard -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 diff --git a/build/toolchain.arm-llvm.mak b/build/toolchain.arm-llvm.mak new file mode 100644 index 000000000..f1732fb8b --- /dev/null +++ b/build/toolchain.arm-llvm.mak @@ -0,0 +1,4 @@ +include build/toolchain.arm-gcc.mak +CC = clang +CXX = clang++ +SFLAGS = -target thumbv7em-unknown-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 diff --git a/build/toolchain.emscripten.mak b/build/toolchain.emscripten.mak new file mode 100644 index 000000000..56f4a13f4 --- /dev/null +++ b/build/toolchain.emscripten.mak @@ -0,0 +1,5 @@ +CC = emcc +CXX = emcc +LD = emcc +LDFLAGS = -s EXPORTED_FUNCTIONS="['_main', '_IonEmscriptenPushEvent']" -Os --shell-file ion/src/emscripten/shell.html +SIZE = size diff --git a/build/toolchain.host-clang.mak b/build/toolchain.host-clang.mak new file mode 100644 index 000000000..2fe5dda30 --- /dev/null +++ b/build/toolchain.host-clang.mak @@ -0,0 +1,4 @@ +CC = clang +CXX = clang++ +LD = clang++ +GDB = lldb diff --git a/build/toolchain.mingw.mak b/build/toolchain.mingw.mak new file mode 100644 index 000000000..eb588dc90 --- /dev/null +++ b/build/toolchain.mingw.mak @@ -0,0 +1,6 @@ +CC = mingw-w64-x86_64-gcc +CXX = mingw-w64-x86_64-g++ +LD = mingw-w64-x86_64-g++ +SFLAGS = -D_USE_MATH_DEFINES +LDFLAGS = -static -mwindows +EXE = exe diff --git a/escher/Makefile b/escher/Makefile index 0876a12e6..722079189 100644 --- a/escher/Makefile +++ b/escher/Makefile @@ -1,5 +1,9 @@ SFLAGS += -Iescher/include +ifeq ($(ESCHER_LOG_EVENTS),1) +SFLAGS += -DESCHER_LOG_EVENTS=1 +endif + objs += $(addprefix escher/src/,\ alternate_empty_view_controller.o\ app.o\ diff --git a/liba/Makefile b/liba/Makefile index aa2375c09..557451437 100644 --- a/liba/Makefile +++ b/liba/Makefile @@ -1,5 +1,9 @@ SFLAGS += -Iliba/include +ifeq ($(LIBA_LOG_DYNAMIC_MEMORY),1) +SFLAGS += -DLIBA_LOG_DYNAMIC_MEMORY=1 +endif + liba/src/external/sqlite/mem5.o: CFLAGS += -w objs += $(addprefix liba/src/, \