diff --git a/Makefile-common b/Makefile-common index 8b8fe6e..edd1508 100644 --- a/Makefile-common +++ b/Makefile-common @@ -32,7 +32,13 @@ ############################################################################## BUILDDIR = build -CFLAGS += -save-temps=obj +USER_CONFIG ?= config.h + +ifneq ($(USER_CONFIG),config.h) +BUILDDIR := $(BUILDDIR)/$(USER_CONFIG:.h=) +endif + +CFLAGS += -save-temps=obj -DUSER_CONFIG='"$(USER_CONFIG)"' CC = $(TOOLCHAIN)gcc OBJDUMP = $(TOOLCHAIN)objdump diff --git a/analog.c b/analog.c index 00924b9..59cfb5f 100644 --- a/analog.c +++ b/analog.c @@ -19,7 +19,7 @@ #else static const uint8_t analog_mask = 0 #endif -#include "config.h" +#include "config_wrapper.h" ; #undef DEFINE_TEMP_SENSOR @@ -30,7 +30,7 @@ static volatile uint16_t adc_result[NUM_TEMP_SENSORS] __attribute__ ((__section_ ((type == TT_THERMISTOR) || (type == TT_AD595)) ? (pin ## _ADC) : 255, static uint8_t adc_channel[NUM_TEMP_SENSORS] = { - #include "config.h" + #include "config_wrapper.h" }; #undef DEFINE_TEMP_SENSOR diff --git a/analog.h b/analog.h index 1c0083b..deaaf2c 100644 --- a/analog.h +++ b/analog.h @@ -13,7 +13,7 @@ #define REFERENCE_2V56 192 #endif -#include "config.h" +#include "config_wrapper.h" #ifndef REFERENCE #warning define REFERENCE as one of diff --git a/attic/accel_clock/dda.h b/attic/accel_clock/dda.h index 76963ac..eea60a0 100644 --- a/attic/accel_clock/dda.h +++ b/attic/accel_clock/dda.h @@ -3,7 +3,7 @@ #include -#include "config.h" +#include "config_wrapper.h" #ifdef ACCELERATION_REPRAP #ifdef ACCELERATION_RAMPING diff --git a/config_wrapper.h b/config_wrapper.h new file mode 100644 index 0000000..c3c848f --- /dev/null +++ b/config_wrapper.h @@ -0,0 +1,12 @@ +/* + * This wrapper config header is used to allow makefiles and test scripts to + * replace or augment the user's 'config.h' file in a controlled manner. A + * makefile may add CFLAGS+=-DUSER_CONFIG=alternate_config.h to cause Teacup + * to build with a different config header. + */ + +#ifndef USER_CONFIG +#define USER_CONFIG "config.h" +#endif + +#include USER_CONFIG diff --git a/dda.h b/dda.h index fffabdf..8d4d2fc 100644 --- a/dda.h +++ b/dda.h @@ -3,7 +3,7 @@ #include -#include "config.h" +#include "config_wrapper.h" #ifdef ACCELERATION_REPRAP #ifdef ACCELERATION_RAMPING diff --git a/dda_lookahead.h b/dda_lookahead.h index dd25927..a104145 100644 --- a/dda_lookahead.h +++ b/dda_lookahead.h @@ -2,7 +2,7 @@ #define DDA_LOOKAHEAD_H_ #include -#include "config.h" +#include "config_wrapper.h" #include "dda.h" #ifndef ACCELERATION_RAMPING diff --git a/dda_maths.h b/dda_maths.h index 901e648..0f25bf7 100644 --- a/dda_maths.h +++ b/dda_maths.h @@ -3,7 +3,7 @@ #include -#include "config.h" +#include "config_wrapper.h" // return rounded result of multiplicand * multiplier / divisor // this version is with quotient and remainder precalculated elsewhere diff --git a/dda_queue.c b/dda_queue.c index 25a06a8..e737132 100644 --- a/dda_queue.c +++ b/dda_queue.c @@ -9,7 +9,7 @@ #include #endif -#include "config.h" +#include "config_wrapper.h" #include "timer.h" #include "serial.h" #include "sermsg.h" diff --git a/extruder/analog.c b/extruder/analog.c index 2487e3c..1ffa108 100644 --- a/extruder/analog.c +++ b/extruder/analog.c @@ -13,7 +13,7 @@ //! automagically generate analog_mask from DEFINE_TEMP_SENSOR entries in config.h #define DEFINE_TEMP_SENSOR(name, type, pin, additional) | (((type == TT_THERMISTOR) || (type == TT_AD595)) ? 1 << (pin) : 0) static const uint8_t analog_mask = 0 -#include "config.h" +#include "config_wrapper.h" ; #undef DEFINE_TEMP_SENSOR diff --git a/extruder/analog.h b/extruder/analog.h index ba7396e..6c927ae 100644 --- a/extruder/analog.h +++ b/extruder/analog.h @@ -12,7 +12,7 @@ #define REFERENCE_2V56 192 #endif -#include "config.h" +#include "config_wrapper.h" #ifndef REFERENCE #warning define REFERENCE as one of diff --git a/extruder/extruder.c b/extruder/extruder.c index 58d903d..b874710 100644 --- a/extruder/extruder.c +++ b/extruder/extruder.c @@ -5,7 +5,7 @@ #include "intercom.h" #include "analog.h" -#include "config.h" +#include "config_wrapper.h" #include "watchdog.h" #include "heater.h" #include "temp.h" diff --git a/extruder/heater.c b/extruder/heater.c index 4572ae2..14725cc 100644 --- a/extruder/heater.c +++ b/extruder/heater.c @@ -31,7 +31,7 @@ typedef struct { #define DEFINE_HEATER(name, pin) { &(pin ## _WPORT), pin ## _PIN, (pin ## _PWM) }, static const heater_definition_t heaters[NUM_HEATERS] = { - #include "config.h" + #include "config_wrapper.h" }; #undef DEFINE_HEATER diff --git a/extruder/heater.h b/extruder/heater.h index 61486e6..8805692 100644 --- a/extruder/heater.h +++ b/extruder/heater.h @@ -1,7 +1,7 @@ #ifndef _HEATER_H #define _HEATER_H -#include "config.h" +#include "config_wrapper.h" #include #include "temp.h" @@ -12,7 +12,7 @@ #define DEFINE_HEATER(name, pin) HEATER_ ## name, typedef enum { - #include "config.h" + #include "config_wrapper.h" NUM_HEATERS, HEATER_noheater } heater_t; diff --git a/extruder/intercom.c b/extruder/intercom.c index 6bcfe35..8482218 100644 --- a/extruder/intercom.c +++ b/extruder/intercom.c @@ -7,7 +7,7 @@ #include #include -#include "config.h" +#include "config_wrapper.h" #include "delay.h" #if (defined TEMP_INTERCOM) || (defined EXTRUDER) diff --git a/extruder/intercom.h b/extruder/intercom.h index 0b754b8..c8e7329 100644 --- a/extruder/intercom.h +++ b/extruder/intercom.h @@ -2,7 +2,7 @@ #define _INTERCOM_H #include -#include "config.h" +#include "config_wrapper.h" #ifdef HOST #define enable_transmit() do { WRITE(TX_ENABLE_PIN,1); UCSR1B &=~MASK(RXEN1); } while(0) diff --git a/extruder/temp.c b/extruder/temp.c index 1349509..395e835 100644 --- a/extruder/temp.c +++ b/extruder/temp.c @@ -51,7 +51,7 @@ typedef struct { #define DEFINE_TEMP_SENSOR(name, type, pin, additional) { (type), (pin), (HEATER_ ## name), (additional) }, static const temp_sensor_definition_t temp_sensors[NUM_TEMP_SENSORS] = { - #include "config.h" + #include "config_wrapper.h" }; #undef DEFINE_TEMP_SENSOR diff --git a/extruder/temp.h b/extruder/temp.h index 68d1afe..8e13a77 100644 --- a/extruder/temp.h +++ b/extruder/temp.h @@ -1,7 +1,7 @@ #ifndef _TEMP_H #define _TEMP_H -#include "config.h" +#include "config_wrapper.h" #include /* @@ -15,7 +15,7 @@ we still need to specify which analog pins we use in machine.h for the analog se #undef DEFINE_TEMP_SENSOR #define DEFINE_TEMP_SENSOR(name, type, pin, additional) TEMP_SENSOR_ ## name, typedef enum { - #include "config.h" + #include "config_wrapper.h" NUM_TEMP_SENSORS, TEMP_SENSOR_none } temp_sensor_t; diff --git a/extruder/timer.c b/extruder/timer.c index 308c467..0c2420c 100644 --- a/extruder/timer.c +++ b/extruder/timer.c @@ -13,7 +13,7 @@ #include #include "arduino.h" -#include "config.h" +#include "config_wrapper.h" #ifdef HOST #include "dda_queue.h" diff --git a/extruder/watchdog.h b/extruder/watchdog.h index bac43c9..f03ab16 100644 --- a/extruder/watchdog.h +++ b/extruder/watchdog.h @@ -1,7 +1,7 @@ #ifndef _WATCHDOG_H #define _WATCHDOG_H -#include "config.h" +#include "config_wrapper.h" #ifdef USE_WATCHDOG diff --git a/gcode_process.c b/gcode_process.c index 0b69934..21c3a5e 100644 --- a/gcode_process.c +++ b/gcode_process.c @@ -24,7 +24,7 @@ #include "pinio.h" #include "debug.h" #include "clock.h" -#include "config.h" +#include "config_wrapper.h" #include "home.h" /// the current tool diff --git a/heater.c b/heater.c index ab1a911..e8fa5e3 100644 --- a/heater.c +++ b/heater.c @@ -32,7 +32,7 @@ typedef struct { pwm ? (pin ## _PWM) : NULL}, static const heater_definition_t heaters[NUM_HEATERS] = { - #include "config.h" + #include "config_wrapper.h" }; #undef DEFINE_HEATER @@ -271,7 +271,7 @@ void heater_init() { do { #undef DEFINE_HEATER #define DEFINE_HEATER(name, pin, pwm) WRITE(pin, 0); SET_OUTPUT(pin); - #include "config.h" + #include "config_wrapper.h" #undef DEFINE_HEATER } while (0); } diff --git a/heater.h b/heater.h index cf60645..a6f8746 100644 --- a/heater.h +++ b/heater.h @@ -1,7 +1,7 @@ #ifndef _HEATER_H #define _HEATER_H -#include "config.h" +#include "config_wrapper.h" #include #include "simulator.h" #include "temp.h" @@ -10,7 +10,7 @@ #define DEFINE_HEATER(name, pin, pwm) HEATER_ ## name, typedef enum { - #include "config.h" + #include "config_wrapper.h" NUM_HEATERS, HEATER_noheater } heater_t; diff --git a/intercom.c b/intercom.c index be4494f..25b83ac 100644 --- a/intercom.c +++ b/intercom.c @@ -10,7 +10,7 @@ #endif #include "memory_barrier.h" -#include "config.h" +#include "config_wrapper.h" #include "delay.h" #if (defined TEMP_INTERCOM) || (defined EXTRUDER) diff --git a/intercom.h b/intercom.h index 6dab15a..6cff494 100644 --- a/intercom.h +++ b/intercom.h @@ -2,7 +2,7 @@ #define _INTERCOM_H #include -#include "config.h" +#include "config_wrapper.h" #ifndef enable_transmit #ifdef MOTHERBOARD diff --git a/mendel.c b/mendel.c index 0cca0a0..399f44f 100644 --- a/mendel.c +++ b/mendel.c @@ -29,7 +29,7 @@ #include #endif -#include "config.h" +#include "config_wrapper.h" #include "fuses.h" #include "serial.h" diff --git a/pinio.h b/pinio.h index dbb0f2b..028fe80 100644 --- a/pinio.h +++ b/pinio.h @@ -5,7 +5,7 @@ #ifndef _PINIO_H #define _PINIO_H -#include "config.h" +#include "config_wrapper.h" #ifdef SIMULATOR #include "simulator.h" diff --git a/serial.h b/serial.h index 87ef694..99c7177 100644 --- a/serial.h +++ b/serial.h @@ -1,7 +1,7 @@ #ifndef _SERIAL_H #define _SERIAL_H -#include "config.h" +#include "config_wrapper.h" #include #ifndef SIMULATOR #include diff --git a/temp.c b/temp.c index 82eb960..e7e42f3 100644 --- a/temp.c +++ b/temp.c @@ -57,7 +57,7 @@ typedef struct { #endif static const temp_sensor_definition_t temp_sensors[NUM_TEMP_SENSORS] = { - #include "config.h" + #include "config_wrapper.h" }; #undef DEFINE_TEMP_SENSOR diff --git a/temp.h b/temp.h index 68d1afe..8e13a77 100644 --- a/temp.h +++ b/temp.h @@ -1,7 +1,7 @@ #ifndef _TEMP_H #define _TEMP_H -#include "config.h" +#include "config_wrapper.h" #include /* @@ -15,7 +15,7 @@ we still need to specify which analog pins we use in machine.h for the analog se #undef DEFINE_TEMP_SENSOR #define DEFINE_TEMP_SENSOR(name, type, pin, additional) TEMP_SENSOR_ ## name, typedef enum { - #include "config.h" + #include "config_wrapper.h" NUM_TEMP_SENSORS, TEMP_SENSOR_none } temp_sensor_t; diff --git a/timer.c b/timer.c index 72d5932..18f061a 100644 --- a/timer.c +++ b/timer.c @@ -16,7 +16,7 @@ #include "memory_barrier.h" #include "arduino.h" -#include "config.h" +#include "config_wrapper.h" #ifdef MOTHERBOARD #include "dda_queue.h" diff --git a/usb_serial.c b/usb_serial.c index 53ccef8..8c6bfc8 100644 --- a/usb_serial.c +++ b/usb_serial.c @@ -31,7 +31,7 @@ // Version 1.7: fix usb_serial_set_control // 2012-10-17: Import to Teacup firmware -#include "config.h" +#include "config_wrapper.h" #include "simulator.h" /* protect this file from Arduino IDE */ diff --git a/watchdog.h b/watchdog.h index bac43c9..f03ab16 100644 --- a/watchdog.h +++ b/watchdog.h @@ -1,7 +1,7 @@ #ifndef _WATCHDOG_H #define _WATCHDOG_H -#include "config.h" +#include "config_wrapper.h" #ifdef USE_WATCHDOG