diff --git a/avrdude/patches/local-config.patch b/avrdude/patches/local-config.patch new file mode 100644 index 0000000..fbbb984 --- /dev/null +++ b/avrdude/patches/local-config.patch @@ -0,0 +1,99 @@ +Index: avrdude-5.11.1/main.c +=================================================================== +--- avrdude-5.11.1.orig/main.c 2012-07-22 10:56:13.864393215 -0300 ++++ avrdude-5.11.1/main.c 2012-07-22 11:10:16.845006009 -0300 +@@ -57,6 +57,8 @@ + #include "update.h" + + ++#define MAX_LOCAL_CFG 10 /* maximum number of local config files */ ++ + /* Get VERSION from ac_cfg.h */ + char * version = VERSION; + +@@ -98,6 +100,7 @@ + " -b Override RS-232 baud rate.\n" + " -B Specify JTAG/STK500v2 bit clock period (us).\n" + " -C Specify location of configuration file.\n" ++ " -L Add project-local configuration file(s).\n" + " -c Specify programmer type.\n" + " -D Disable auto erase for flash memory\n" + " -i ISP Clock Delay [in microseconds]\n" +@@ -271,6 +274,8 @@ + char * partdesc; /* part id */ + char sys_config[PATH_MAX]; /* system wide config file */ + char usr_config[PATH_MAX]; /* per-user config file */ ++ const char *local_cfg[MAX_LOCAL_CFG]; /* project-local config files */ ++ int n_local_cfg = 0; /* number of local config files */ + int cycles; /* erase-rewrite cycles */ + int set_cycles; /* value to set the erase-rewrite cycles to */ + char * e; /* for strtol() error checking */ +@@ -401,7 +406,8 @@ + /* + * process command line arguments + */ +- while ((ch = getopt(argc,argv,"?b:B:c:C:DeE:Fi:np:OP:qstU:uvVx:yY:")) != -1) { ++ while ((ch = getopt(argc,argv,"?b:B:c:C:DeE:Fi:L:np:OP:qstU:uvVx:yY:")) ++ != -1) { + + switch (ch) { + case 'b': /* override default programmer baud rate */ +@@ -456,6 +462,15 @@ + ovsigck = 1; + break; + ++ case 'L': ++ if (n_local_cfg == MAX_LOCAL_CFG) { ++ fprintf(stderr, "%s: too many local config files (%d)\n", ++ progname, MAX_LOCAL_CFG); ++ exit(1); ++ } ++ local_cfg[n_local_cfg++] = optarg; ++ break; ++ + case 'n': + nowrite = 1; + break; +@@ -608,6 +623,20 @@ + } + } + } ++ ++ for (i = 0; i != n_local_cfg; i++) { ++ if (verbose) ++ fprintf(stderr, "%sLocal configuration file #%d is \"%s\"\n", ++ progbuf, i+1, local_cfg[i]); ++ rc = read_config(local_cfg[i]); ++ if (rc) { ++ fprintf(stderr, ++ "%s: error reading local configuration file \"%s\"\n", ++ progname, local_cfg[i]); ++ exit(1); ++ } ++ } ++ + // set bitclock from configuration files unless changed by command line + if (default_bitclock > 0 && bitclock == 0.0) { + bitclock = default_bitclock; +Index: avrdude-5.11.1/avrdude.1 +=================================================================== +--- avrdude-5.11.1.orig/avrdude.1 2012-07-22 11:52:57.387569871 -0300 ++++ avrdude-5.11.1/avrdude.1 2012-07-22 11:59:46.569374592 -0300 +@@ -32,6 +32,7 @@ + .Op Fl B Ar bitclock + .Op Fl c Ar programmer-id + .Op Fl C Ar config-file ++.Op Fl L Ar config-file + .Op Fl D + .Op Fl e + .Oo Fl E Ar exitspec Ns +@@ -467,6 +468,9 @@ + together with + .Fl t + to continue in terminal mode. ++.It Fl L Ar config-file ++Load the specified local config file to complement the ++system and user configuration. This option can be repeated. + .It Fl i Ar delay + For bitbang-type programmers, delay for approximately + .Ar delay diff --git a/avrdude/patches/series b/avrdude/patches/series index 22c9ab7..8deb095 100644 --- a/avrdude/patches/series +++ b/avrdude/patches/series @@ -5,3 +5,4 @@ nanonote-nxuart.patch nanonote-atusb.patch atmega32u2.patch nanonote-icsp.patch +local-config.patch