[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-commit] [2216] This is avr-libc-1.7.1.
From: |
Joerg Wunsch |
Subject: |
[avr-libc-commit] [2216] This is avr-libc-1.7.1. |
Date: |
Wed, 16 Feb 2011 21:36:52 +0000 |
Revision: 2216
http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2216
Author: joerg_wunsch
Date: 2011-02-16 21:36:51 +0000 (Wed, 16 Feb 2011)
Log Message:
-----------
This is avr-libc-1.7.1.
Added Paths:
-----------
tags/avr-libc-1_7_1-release/
tags/avr-libc-1_7_1-release/ChangeLog
tags/avr-libc-1_7_1-release/NEWS
tags/avr-libc-1_7_1-release/README
tags/avr-libc-1_7_1-release/configure.ac
Removed Paths:
-------------
tags/avr-libc-1_7_1-release/ChangeLog
tags/avr-libc-1_7_1-release/NEWS
tags/avr-libc-1_7_1-release/README
tags/avr-libc-1_7_1-release/configure.ac
Deleted: tags/avr-libc-1_7_1-release/ChangeLog
===================================================================
--- trunk/avr-libc/ChangeLog 2011-02-16 08:44:23 UTC (rev 2213)
+++ tags/avr-libc-1_7_1-release/ChangeLog 2011-02-16 21:36:51 UTC (rev
2216)
@@ -1,55 +0,0 @@
-2011-02-16 Anitha Boyapati <address@hidden>
-
- * include/avr/power.h: Changes to power_all_enable()/disable() for
- Xmega A and D family
-
-2011-02-14 Anitha Boyapati <address@hidden>
-
- Thanks to Praveen Kaushik <address@hidden> for the device
- support.
- * configure.ac: Support for ATMega16HVB RevB, ATMega32HVB RevB.
- * devtools/gen-avr-lib-tree.sh: Same.
- * doc/api/main_page.dox: Same.
- * doc/api/using-tools.dox: Same.
- * include/avr/eeprom.h: Same.
- * include/avr/io.h: Same.
- * include/avr/iom16hvb.h: Header file regenerated.
- * include/avr/iom16hvbrevb.h: Added newly.
- * include/avr/iom32hvb.h: Header file regenerated.
- * include/avr/iom32hvbrevb.h: Added newly.
- * include/avr/Makefile.am: Support for atmega16HVB RevB,
- ATMega32HVB RevB.
- * include/avr/power.h: Same.
- * include/avr/sleep.h: Same.
- * include/avr/wdt.h: Same.
-
-2011-02-14 Anitha Boyapati <address@hidden>
-
- Thanks to Usha Gupta <address@hidden> for the device
- support.
- * include/avr/io.h: Support for AVR Tiny84a
- * include/avr/iotn84a.h: Same.
- * include/avr/Makefile.am: Same.
-
-2011-02-14 Anitha Boyapati <address@hidden>
-
- Fix for #bug31873
- * include/avr/power.h: Modifications to power_aes_enable/disable()
- power_all_enable/disable() functions for Xmega devices.
-
-2011-02-11 Anitha Boyapati <address@hidden>
-
- Thanks to Praveen Kaushik <address@hidden> for
- the fix for #bug31990.
- * include/avr/io90pwm81.h: PRPSC0 is renamed to PRPSCR in sync
- with device XML file.
- * include/avr/power.h: power_psc0_enable()/disable() have been
- renamed to power_pscr_enable()/disable(). Documentation changes
- to include PWM81 are also done.
-
-
-
-2011-02-09 Joerg Wunsch <address@hidden>
-
- * include/avr/iom8x.h (_VECTORS_SIZE): fix wrong vector table size
- for ATmega168A devices.
Copied: tags/avr-libc-1_7_1-release/ChangeLog (from rev 2215,
trunk/avr-libc/ChangeLog)
===================================================================
--- tags/avr-libc-1_7_1-release/ChangeLog (rev 0)
+++ tags/avr-libc-1_7_1-release/ChangeLog 2011-02-16 21:36:51 UTC (rev
2216)
@@ -0,0 +1,59 @@
+2011-02-16 Joerg Wunsch <address@hidden>
+
+ Released avr-libc-1.7.1.
+
+2011-02-16 Anitha Boyapati <address@hidden>
+
+ * include/avr/power.h: Changes to power_all_enable()/disable() for
+ Xmega A and D family
+
+2011-02-14 Anitha Boyapati <address@hidden>
+
+ Thanks to Praveen Kaushik <address@hidden> for the device
+ support.
+ * configure.ac: Support for ATMega16HVB RevB, ATMega32HVB RevB.
+ * devtools/gen-avr-lib-tree.sh: Same.
+ * doc/api/main_page.dox: Same.
+ * doc/api/using-tools.dox: Same.
+ * include/avr/eeprom.h: Same.
+ * include/avr/io.h: Same.
+ * include/avr/iom16hvb.h: Header file regenerated.
+ * include/avr/iom16hvbrevb.h: Added newly.
+ * include/avr/iom32hvb.h: Header file regenerated.
+ * include/avr/iom32hvbrevb.h: Added newly.
+ * include/avr/Makefile.am: Support for atmega16HVB RevB,
+ ATMega32HVB RevB.
+ * include/avr/power.h: Same.
+ * include/avr/sleep.h: Same.
+ * include/avr/wdt.h: Same.
+
+2011-02-14 Anitha Boyapati <address@hidden>
+
+ Thanks to Usha Gupta <address@hidden> for the device
+ support.
+ * include/avr/io.h: Support for AVR Tiny84a
+ * include/avr/iotn84a.h: Same.
+ * include/avr/Makefile.am: Same.
+
+2011-02-14 Anitha Boyapati <address@hidden>
+
+ Fix for #bug31873
+ * include/avr/power.h: Modifications to power_aes_enable/disable()
+ power_all_enable/disable() functions for Xmega devices.
+
+2011-02-11 Anitha Boyapati <address@hidden>
+
+ Thanks to Praveen Kaushik <address@hidden> for
+ the fix for #bug31990.
+ * include/avr/io90pwm81.h: PRPSC0 is renamed to PRPSCR in sync
+ with device XML file.
+ * include/avr/power.h: power_psc0_enable()/disable() have been
+ renamed to power_pscr_enable()/disable(). Documentation changes
+ to include PWM81 are also done.
+
+
+
+2011-02-09 Joerg Wunsch <address@hidden>
+
+ * include/avr/iom8x.h (_VECTORS_SIZE): fix wrong vector table size
+ for ATmega168A devices.
Deleted: tags/avr-libc-1_7_1-release/NEWS
===================================================================
--- trunk/avr-libc/NEWS 2011-02-16 08:44:23 UTC (rev 2213)
+++ tags/avr-libc-1_7_1-release/NEWS 2011-02-16 21:36:51 UTC (rev 2216)
@@ -1,1139 +0,0 @@
-*** Changes since avr-libc-1.7.0:
-
-* Bugs fixed:
-
- [Atmel: #11793] XMEGA A devices: 4096-cycle DAC refresh interval setting has
wrong name
- [Atmel: #12314] Hi-Res(CTRLA) and AWex (FDEMASK)
- [Atmel: #12536] Remove CALCTRL in xmega header files.
- [no-id] Fix wrong vector table size for ATmega168A devices.
- [#29235] power.h - warning: comma at end of enumerator list
- [#30783] Missing prototype in power.h
- [#31270] Stale link to Philips (now NXP) I2C specification/users manual
-
-* New devices supported:
-
- ATTiny84a
- ATMega16HVB RevB
- ATMega32HVB RevB
-
-* Contributed Patches:
-
-* Other changes:
-
-
-*** Changes in avr-libc-1.7.0:
-
-* Bugs fixed:
- [Atmel: #7159] the memory location of tccr0b is mixed with tccr0a for
tiny48/88
- [no-id] Fix CLKPCE bit value to be 7.
- [no-id] inlining failed in call to '_delay_ms': function body not available
- [no-id] malloc() could allocate memory beyond the limits of heap
- [no-id] xmega header file updates.
- [no-id] Enable ATmega128RFA1 in <avr/power.h>
- [no-id] longjmp() writes to EIND register, it is forbidden by AVR-GCC's API
- [no-id] Define _VECTORS_SIZE in iom3000.h
- [no-id] Redefine __tmp_reg__ and __zer_reg__ for AVR TINY.
- [AVR Tools: #9724] Error in ATtiny13A include file, PRR register
- [sourceforge.net: #1836849] Multiplication does not work for AT90USB162
- [sourceforge.net: #1883630] ATmegaXX4 - USART0 and USART1 additional bits
aliases
- [sourceforge.net: #1910885] Typo in io90pwm3b.h
- [sourceforge.net: #1913681] Missing INT3 define in io90pwm3b.h
- [sourceforge.net: #1957780] New 'FUSES-support' gives error in c++ files
- [sourceforge.net: #1969436] Wrong flash size for ATmega32U4
- [sourceforge.net: #2010688] ATtiny48 SPSR register bits
- [sourceforge.net: #2012448] ATmega6450 USART Interrupts
- [sourceforge.net: #2016128] Incorrect ATMega32[c1|m1] Header Entries
- [sourceforge.net: #2018957] Wrong SPM_PAGESIZE for mega1284P
- [sourceforge.net: #2033993] User manual: data symbol spec incorrect
- [sourceforge.net: #2305703] iom162.h ASSR bitdef, typo?
- [sourceforge.net: #2411516] Error/Bug in the iotn88.h file
- [sourceforge.net: #2420567] ATmega329P missing in sleep.h
- [sourceforge.net: #2693898] ATmega32U6 missing in power.h
- [sourceforge.net: #2738926] avr/eeprom.h EEGET and EEPUT
- [sourceforge.net: #2812125] ATmega16U4 missing in power.h
- [sourceforge.net: #2913419] Misspelled Structure Element - xmega
- [#3485] Using float arithmetic without linking with -lm result in incorrect
code
- [#19079] sscanf %s eats 1 char too much
- [#19494] sfr_defs.h documentation: Remove references to deprecated macros.
- [#21410] Incorrect use of 16-bit eeprom addresses in devices with 8-Bit
address registers
- [#21621] Allow autoconf 2.61
- [#21622] Support building in a subdirectory
- [#21623] boot.h: Use the "z" register constraint
- [#21869] Multiple defines in iotn2313.h
- [#21872] __floatunsisf/undisf incorrectly named
- [#21905] scanf: float conversion ignores the suppression symbol
- [#21906] scanf: float conversion, wrong width count in case of sign or
exponent
- [#21931] Wrong fuses defined for the ATMEGA88/168
- [#21935] Typo in avr-ar example avr-as should be avr-ar
- [#21995] pgm_read_xxxx() does not use enhanced LPM instruction
- [#21958] UBRR0/UBRR1 SFR is redefined for ATmegaXX8p and atmega1284p devices
- [#21962] PSYNC1_0 a PSYNC1_1 bits not defined for AT90PWM3B and AT90PWM316
devices
- [#21986] Typo in iotn13.h
- [#22016] Typo in iotn2313.h: SIG_OUTPUT_COPMARE0A
- [#22119] Misleading statement in FAQ
- [#22153] setjmp.o is wrong in libc.a (1.6.1) for avr's with SPH
- [#22240] Add EEPROM Page Size to header files
- [#22276] wdt_reset fails with devices with large WDTCSR addresses
- [#22377] Wrong XRAMEND for some recent ioXXX.h header files.
- [#22387] Missing EIMSK and __EEPROM_REG_LOCATIONS__ in iom168p.h
- [#22390] Unclear note about function pointers
- [#22447] Summary of iom?8p.h header updates needed
- [#22493] Typo in iom1284p.h.
- [#22540] Adding signature bytes to header files
- [#22548] Missing IVCE and IVSEL in iom328p.h
- [#22568] Missing EEPROM_REG_LOCATIONS in iom328p.h
- [#22572] Documentation FAQ example proposal
- [#22642] AT90USB162 and AT90USB82 not supported in <avr/power.h>
- [#22643] math.h c99 incompability
- [#22666] io90pwm3b.h errors
- [#22785] ATMega644P Support Missing from avr/include/avr/sleep.h
- [#22828] eeprom_write_block(): incompatibility in args order
- [#22834] ATmega164P/324P/644P/1284P lack BODS/BODSE bits in MCUCR
- [#22870] Error in wdt.h and ATmega164P
- [#22877] Fuse information wrong for xmega devices.
- [#22878] eeprom_*_word/dword/block cause hang in ATmega256x
- [#23004] Watchdog enable docu only generated for Xmega series
- [#23032] Define PORTxn, PINxn, DDxn bit names in iomxx4.h.
- [#23166] atmega328p does not have SPMEN
- [#23261] AT90USB162 and AT90USB82 missing power_all_[enable,disable]() in
power.h
- [#23409] Provide an implementation for strtok()
- [#23546] FAQ documentation symbol seems wrong
- [#23554] Wrong bit values in iom32u4.h
- [#23677] Request for cbrt() and strdup to be added to libc
- [#23703] eeprom write functions optimisation
- [#23774] Using some defines from avr/fuse.h produces warning
- [#23850] ATMega8 does not have MCUSR defined
- [#23871] clock_prescale_set() not available for ATmega32U4
- [#23959] Small typo in deprecated documentation
- [#23969] eeprom_read_byte() throws interrupt EE_READY although EERIE is
cleared, controller resets
- [#24207] Example in inttypes.h is wrong
- [#24446] _attribute_ should be __attribute__ (with double underscores)
- [#24762] 1.6.3 wdt.h compile-time bug
- [#24890] Small error in libm source fp_rempio2.S
- [#25048] eeprom.h will not compile as c++ code.
- [#25120] pgm_read_*_far() functions cause incorrect usage of the Z pointer
for RAM access in ATxmega series
- [#25131] Incorrect definition of default lfuse bits for ATTiny2313
- [#25261] TWIHSR spelling deviates from XML file in AVR Studio 4.15
- [#25535] Nonexistent bit definitions in iotn88.h/iotn48.h AREFD REFS1 RWWSB
SM2
- [#25645] xmega header files broken #defines
- [#25723] Realloc corrupts free list when growing into the next free item
- [#25846] include/avr/power.h:628:1: error: missing binary operator before
token "defined"
- [#25925] <avr/boot.h> cannot be included on Xmega devices
- [#25929] boot.h Fuse read not compatible with Tiny48/88.
- [#25930] New IO-Headerfiles missing PXn Portpindefinitions
- [#26188] Wrong or missing definition of SIGNATURE_X in iom644.h and others
- [#26284] boot_lock_fuse_bits_get does not compile under gcc 4.3.X
- [#26308] WDE defined as WDE3 in io90pwm3b.h and io90pwm2b.h
- [#26767] XMEGA GPIO register name discrepancy
- [#26809] Some common math constants missing in math.h
- [#26840] Missing #define in iom32m1.h
- [#26876] include io.h into fuse.h
- [#27201] _WORDREGISTER in xmega headers does not work in C99 mode
- [#27235] malloc: Several things go wrong
- [#27242] realloc: serious error when size shrinks
- [#27243] malloc: small error in comment
- [#27367] RAMSTART missing in elder device header files
- [#27434] Arguments of macros must be protected in parentheses
- [#28575] Minor bug in iousb162.h - missing FUSE_ prefixes
- [#28688] using_tools.dox fails to build due to extra underscore
- [#28756] Bug in AVR libc 1.6.7 (power.h for 8-bit AVR)
- [#28812] iotn48.h TWS# bits off by one
- [#28584] iocanxx.h Add word definitions to iocanxx.h
- [#28627] power.h ATMEGA32U2 clock_prescale_set() not available
- [#28901] Xmega header files with missing definitions for GPIO_t and CPU_t
- [#28574] Xmega D ADC struct missing registers
- [#28582] XMEGA A3B, RTC32 not properly supported
- [#28921] pointer to function > 128k flash
- [#29502] literal error in iox128a1.h
- [#29653] PUD bit missing for at90usb82
- [#29950] ATtiny167 SPM_PAGESIZE Discrepancy
- [#30018] Errors in include files
- [#30085] memcpy_P on XMega does not clr NVM.CMD before copy
- [#30104] power.h - Missing "power_usart1_/enable/disable()" functions for
ATmega644
- [#30148] XMEGA register discrepancy
- [#30600] Missing processor spec - wdt.h include file
- [#30597] Missing definition for ATmega16/32/64m1/c1
- [#30475] SPM_PAGESIZE is incorrect in io90pwm3b.h and io90pwm2b.h
- [#30552] Missing definition ADCW
- [#30569] ATmega16U4/32U4 wrong bit definition
- [#30669] Improve comment in stdiodemo
- [#30735] bug in example twitest
- [#31086] ATTINY88 RAMEND value not set to correct value in iotn88.h
- [#30363] _delay_xx() functions in <util/delay.h> are broken
- [#31990] PRPSC0 used in power.h for AT90PWM81 instead of PRPSCR
- [#31873] power_aes_enable/disable() are commented in power.h for xmega
devices
-
-* Other changes:
-
- - Added 'avr35' architecture. Now 'MOVW' and 'LPM Rx, Z[+]' instructions
- supported for AT90USB82 and AT90USB162 devices. GCC 4.3 or above is
- necessary to use this.
-
- - Function vfscanf() is rewriten. The float point version is optimized
- considerably: the expense of a stack was cut by half, and the size of
- function has decreased approximately on 1KB. Opportunities of standard
- and minimal versions are expanded, and their size has remained at a
- former level.
-
- Briefly:
- . Restrictions of a float point format are eliminated.
- . Conversion '%[' is present in standart version now.
- . The minimal version differs from standard only absence of '%[' conv.
- . The 'hh' type qualifier is added ('char *', C99).
- . The maximal field width is increased up to 255 (65535 in float
version).
- . All known bugs are fixed.
-
- New vfscanf() concedes old in:
- . The size of the minimal and standard versions has increased for old
- branches of compiler (less 4.1) and ancient chips (without MOVW).
- . The maximum quantity of conversions now is limited (255).
-
- - EEPROM functions are rewriten. Now they are pure asm functions. The
- reading of long word or block is speed up. New functions for 32-bit
- words and floats are added. The group of 'update' (burn only different
- bytes) functions is added. A set of Avr-libc bugs are fixed.
-
- - Added support for XMEGA architectures.
-
- - The Postscript documentation build has been removed in favour of
- building only the PDF (and HTML and man page) versions. PDF offers
- the same printing quality as postscript at a smaller file size.
- This also works around a bug in doxygen 1.5.7 where it appears to
- be no longer possible to set GENERATE_HTML = NO.
-
- - A sleeping BOD API was added to <avr/sleep.h>. This allows you to disable
- the Brown Out Detector (BOD) before going to sleep, thereby reducing
- power even further.
-
- - The note about signbit() implementation is removed from documenatation.
- The reason is that the GCC can replace it with inline code and the
- nonzero value is unpredictable in such case.
-
- - Signature API added in <avr/signature.h>.
-
- - All functions are now placed in the .text.avr-libc section, and the
- floating point functions are placed in the .text.avr-libc.fplib section.
This
- allows the user the ability to relocate all avr-libc routines to a
different
- address using a custom linker script.
-
- - The port/pin assignments of the HD44780 LCD controller in the
- stdiodemo example can now be distributed across more than a single
- AVR port. The only remaining requirement is that all data bits
- are assigned to a single port in ascending order.
-
- - Added support for avrtiny10 architecture, to support the ATtiny10 Family.
-
- - Added new headerfile: <avr/cpufunc.h>; currently contains _NOP() and
- _MemoryBarrier().
-
- - The twidemo can now optionally address 24C32 and larger EEPROMs
- that require 16-bit word addressing.
-
- - Add a "memory barrier" to the cli() and sei() macros.
-
-
-* New devices supported:
-
- + ATxmega64D3
- + ATxmega128D3
- + ATxmega256D3
- + ATxmega192A3
- + ATxmega128A1
- + ATxmega64A1
- + ATmega32M1
- + ATmega32C1
- + ATmega32U4
- + ATtiny167
- + ATtiny13A
- + ATmega32U6
- + AT90SCR100
- + ATtiny87
- + ATxmega32A4
- + ATmega16M1
- + ATmega64C1
- + ATmega64M1
- + ATA6289
- + AT90PWM81
- + ATmega128RFA1
- + ATxmega32D4
- + ATxmega16A4
- + ATxmega16D4
- + ATmega16U4
- + ATmega8U2
- + ATmega16U2
- + ATmega32U2
- + ATxmega192D3
- + ATtiny2313A
- + ATtiny4313
- + ATtiny24A
- + ATtiny44A
- + ATtiny261A
- + ATtiny461A
- + ATtiny861A
- + ATmega644PA
- + ATmega88PA
- + ATmega16A
- + ATmega64HVE
- + ATmega169PA
- + ATmega649P
- + ATmega324PA
- + ATmega16HVA2
- + ATmega16HVB
- + ATmega48A
- + ATmega88A
- + ATmega168A
- + ATmega328
- + ATmega164A
- + ATmega324A
- + ATmega644A
- + ATmega165A
- + ATmega169A
- + ATmega645A
- + ATmega6450A
- + ATmega649A
- + ATmega6490A
- + ATmega6490P
- + ATmega645P
- + ATmega6450P
- + ATmega329PA
- + ATxmega128A1U
- + ATxmega64A1U
- + ATtiny4
- + ATtiny5
- + ATtiny9
- + ATtiny10
- + ATtiny20
- + ATtiny40
- + ATtiny84A
- + ATmega325A
- + ATmega3250A
- + ATmega329A
- + ATmega3290A
- + M3000
-
-* Optimized functions:
-
- eeprom_read_block
- eeprom_read_dword
- eeprom_read_word
- eeprom_write_block
- eeprom_write_dword
- eeprom_write_word
- strtod
- setjmp
- sqrt (and callers: acos, asin and hypot)
- sin, cos, tan: minor in space
- strlcat, strlcat_P
- strlcpy, strlcpy_P
- strtok, strtok_r
-
-* Contributed Patches:
-
- [#6194] Twitest updated to handle larger EEPROM devices
- [#6352] Far pointer library
- [#6500] Reentrant code faq
- [#6517] Pgmspace with float support
- [#6555] malloc improvement
- [#6649] sqrt.S in libm changes
- [#6690] Shorten calculation of dallas 1-wire crc
- [#6718] Optimize the EEPROM functions
- [#6720] FAQ update. Add EEPROM section, baud rate section. Correct spelling.
- [#6791] Minor fixes to stdio.h documentation
- [#6878] eewr_byte.S update for patch #6718
- [#6891] Add XMega software reset to the FAQ section on software reset
- [#6895] Improved malloc behaviour when expanding used area
- [#6897] Allow <util/setbaud.h> to be used with assembler source
-
-* New functions:
-
- cbrt
- eeprom_read_dword
- eeprom_read_float
- eeprom_update_block
- eeprom_update_byte
- eeprom_update_dword
- eeprom_update_float
- eeprom_update_word
- eeprom_write_dword
- eeprom_write_float
- memccpy_P
- strdup
- strtok
- strtok_P
- strtok_rP
- strlen_PF
- strnlen_PF
- memcpy_PF
- strcpy_PF
- strncpy_PF
- strcat_PF
- strlcat_PF
- strncat_PF
- strcmp_PF
- strncmp_PF
- strcasecmp_PF
- strncasecmp_PF
- strstr_PF
- strlcpy_PF
- memcmp_PF
-
-
-*** Changes in avr-libc-1.6.0:
-
-* Main changes from avr-libc 1.4 to 1.6:
-
- + The fplib/math library is completely rewritten. Now features of the IEEE
- 754 standard are supported all: negative zero, subnormals, Infs and NaNs.
- It concerns both to base operations (arithmetic, comparison...), and to
- all functions. Speed of performance is increased, sometimes considerably.
- A number of mistakes (not reflected in the Bugs) which led severe losses
- of accuracy for some arguments is corrected. A number of new functions is
- added. It is necessary to note, that the new library concedes old under
- the charge of flash memory a little.
-
- Incompatibilities:
-
- - Conversion from float to long (make similar to GCC/x86): in case if
- overflow was or if input is NaN return 0x80000000 for signed result and
- return 0 for unsigned result. Negative input (not too big in absolute
- value) is permissible for cast to unsigned long, for example: (unsigned
- long)(-1.0) returns ULONG_MAX.
-
- - The signbit() function: return 1 as nonzero value (make similar to
- builtin GCC).
-
- - Make frexp() similar to GCC/x86 in case of nonfinite arg: write 0 by
- exponent pointer. Early Avr-libc's frexp() skips exponent storing in this
- case. Make the NULL a legal address to skip a storing.
-
- + Functions of numbers to ascii conversion are completely rewritten:
- dtostre(), dtostrf() and printf() family. They more do not use float point
- operations. Speed of int/float to ascii has increased in some times. For
- printf() the stack usage is reduced.
-
- + Test suite is added to the Avr-libc project.
-
- + A few new util's headers: util/atomic.h, util/setbaud.h .
-
-* Bugs fixed:
-
- [no-id] iscntrl() return true for some values from 0x80 to 0xff.
- [no-id] Fix the examples installation for non-doc builds.
- [no-id] Fix the spelling of the OCR1A/B registers in ATtinyX4 devices.
- [no-id] LED1/2 don't work in the largedemo on an ATmega16.
- [no-id] Not defined SPM_PAGESIZE for ATtinyX4/X5/X61 and ATtiny2313 devices.
- [no-id] Typo in iomxx0_1.h: PRUSART3.
- [no-id] Make include/avr/sfr_defs.h -Wundef safe.
- [no-id] Make include/avr/eeprom.h -Wundef safe.
- [no-id] Fix the timing of the HD44780 driver in the stdiodemo.
- [no-id] Fix the sleep mode definitions for the ATtiny2313.
- [no-id] Exclude 64-bit types for -mint8.
- [no-id] Make documentation build work with doxygen 1.5.x
- [#1929] -Inf not detected
- [#11511] NaN not generated correctly by division library
- [#11820] dtostre: wrong output with percision =3
- [#13330] NaN is recognized not always
- [#15161] util/delay.h misses inline keyword (regression)
- [#15193] incorrect definition of IVSEL bit in MCUCR register
- [#15266] Function ldexp incorrectly processes overflow and underflow cases.
- [#15494] Compile warning and errors if compiler flag -Wundef flag specified
- [#15512] Bootloader macros not interrupt safe.
- [#15519] AT90CAN* processors incorrectly identified as "AT90S family"
- [#15522] Typo in iotn2313.h vector table
- [#15559] Wrong macro for boot_page_write(address) and ATmega128
- [#15574] unneeded compatibility break
- [#15595] GPIOR0 misspelled for ATtiny25/45/85
- [#15732] interrupt.h: ISR() incompatibility with gcc 3.4.5
- [#15890] missing /devtools/gen-avr-lib-tree.sh
- [#16039] Names in Pxy (i.e. PA0) style of ports pins for some devices are
- not defined.
- [#16125] HD44780 data bit assignment restrictive
- [#16260] _crc16_update lacks C equivalent
- [#16411] Add the 'used' attribute to all interrupt service routine macros.
- [#16434] EMPTY_INTERRUPT has no misspelled vector checking
- [#16441] eeprom.h should use __asm__
- [#16868] depricated.h: outp() arguments order misprint
- [#17068] wdt.h file: __AVR_ATmeg324P__ spelling mistake
- [#17470] Add API for CLKPR register.
- [#17551] Update documentation to point to issues with gcc4.1
- [#17591] /avr-libc/libm/fplib/fp_split.S error return will fail for
- 3-Byte PC devices
- [#17608] Add ISR_ALIAS() to avr/interrupt.h
- [#18115] online documentation typo/bug avr/boot.h
- [#18373] Bugs in Inline ASM documentacion
- [#18385] SPM_PAGESIZE wrong value for ATmega164p and ATmega324p
- [#18509] strtod.S crashes due to stack problem with atmega 2560
- [#18662] rand() keeps returning the same value if seeded with 0
- [#18686] AT90USB**** devices are absent in interrupt-verctor-names table
- [#18688] vfscanf and vfprintf don't use malloc
- [#18726] the dtostrf function description is missing in AVR-Libc's webpage
- [#18903] ATmega644 register definitions for SPI and PRR (datasheet vs.
- iom*.h)
- [#18915] PWM1X Bit missing for ATtiny261/461/861
- [#18964] USART definitions *wrong* in iocanxx.h
- [#18994] minor optimization possible to stdlib functions isspace(),
- isprint(), and islower()
- [#19009] Make <util/delay.h> issue a warning when optimizations are turned
off
- [#19050] gcrt1.S should call main rather than jumping to it
- [#19060] PCMSKx registers transposed in header for attinyX61
- [#19445] _malloc_heap_end does not follow _heap_end on m2561
- [#19495] <avr/interrupts.h> documentation: fix inclusion of cli and sei
macros
- [#19496] Add documentation: how to build toolchain for Windows.
- [#19650] avr-libc: wrong named bit in SFR of AT90PWMx
- [#19666] AT90PWMx: Another patch for the include file (missing SFR)
- [#19669] Need function to read signature row
- [#19686] alloc declaration missing
- [#19841] Error building 1.4 HEAD: undefined reference to 'exit'
- [#20248] FAQ#3: clarify which registers are safe to be used
- [#20276] power.h missing ATmega644Ppower_XXX_[en/dis]able() macros
- [#20435] Bit name definitions for AT90PWM3
- [#20530] Bug in sample code for early wdt disable
- [#20650] Missing description of AVR specific C-preprocessor macros
- [#20682] Bad bit name in avr/io2313.h - Sugestion
- [#20843] Mega 2561 library
- [#21174] assembly error with targets at90s1200, attiny11, attiny12,
- and attiny28
- [#21183] Fix Program Space example code.
- [#21204] iotnx61.h PRR bits incorrect
- [#21228] Missing 3rd clause in BSD license in documentation pages
- [#21299] Duplicate register address in iotn48.h.
- [#21411] Typographical error in 'iotn13.h'
- [#21432] Incorrect timer interrupt handler names for ATtiny45
- [#21434] Bit name definitions for AT90CANxxx
- [#21444] Undocument -minit-stack
- [#21484] Documentation build for avr/version.h does not susbstitute autoconf
- macros
- [#21749] AT90PWM316: _VECTORS_SIZE should be 128
- [#21691] iomx8.h-> IVSEL and IVCE should not be available for ATmega48
- [#21743] AT90PWM316 missing PSOC1 bit definitions
- [#21626] Incorrect Bit Definition for ADC14 and ADC15 Digital Input Disable
- [#21521] incorrect bit definitions in iotnx61.h
- [#21840] RAMEND wrong for ATmega48P/88P/168P
-
-* Other changes:
-
- - New Power Management API in <avr/power.h>. This provides C language
- macros to manipulate the Power Reduction Register(s) and the System Clock
- Prescaler register across multiple processors.
-
- [patch #4611] sleep.h sleep_mode() not interrupt safe
-
- - The simple demo has been modernized a bit. Documentation now
- generally refers to the ATmega8 rather than the AT90S2313, and
- the #ifdef spaghetti has been moved out into iocompat.h.
-
- - A new demo project ("largedemo") has been added. It extends
- the simple demo by adding some controls, and thereby touches
- a good number of avr-libc concepts. It has originally been
- written for the ATmega16, but can also be run on an ATmega8
- or a member of the ATmegaX8 family, as well as on an ATtiny2313.
-
- - Another demo project ("stdiodemo") has been added. It
- demonstrates the setup of the standard IO facilities using
- a practical small application.
-
- - The demo projects now install their source code as part of
- the documentation tree.
-
- - The simple demo has been ported to ATmega8515, ATmega8535,
- ATmega164P, ATmega165, ATmega169, ATmega324P, ATmega325,
- ATmega3250, ATmega329, ATmega3290, ATmega640, ATmega644,
- ATmega644P, ATmega645, ATmega6450, ATmega649, ATmega6490,
- ATmega1280, ATmega1281, ATtiny2313, ATtiny24, ATtiny25, ATtiny26,
- ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85,
- ATtiny861.
-
- - More overhaul of the demo documentation, don't use the "squid"
- cable for the largedemo as it is not part of the STK500.
-
- - Integrate a copy of the license file into the documentation.
-
- - Include an alphabetical index of all globals (functions,
- macros, types, variables) into the documentation.
-
- - Added 'avr25' architecture. Now 'MOVW' and 'LPM Rx, Z[+]' instructions
- supported for AT86RF401, ATtiny13, ATtiny2313, ATtiny24, ATtiny25,
- ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85 and
- ATtiny861 devices. GCC 4.2 or above is necessary to use this.
-
- - Add the benchmark page.
-
- [patch #5756] New atomic.h header file (added as <util/atomic.h>)
-
- [patch #5343] Add a util/setbaud.h "helper" file
-
- [patch #6236] Improving _delay_us and _delay_ms
-
- [patch #5644] New interrupt.h header file
-
-* New devices supported:
-
- + ATtiny24
- + ATtiny261
- + ATtiny44
- + ATtiny461
- + ATtiny84
- + ATtiny861
- + ATmega406
- + ATmega169 Rev. F
- + AT90USB82
- + AT90USB162
- + AT90USB646
- + AT90USB647
- + AT90USB1286
- + AT90USB1287
- + ATmega48P
- + ATmega88P
- + ATmega164P (renamed from ATmega164)
- + ATmega168P
- + ATmega324P (renamed from ATmega324)
- + ATmega328P
- + ATmega644P
- + ATmega1284P
- + ATmega165P
- + ATmega169P
- + ATmega2560 [patch #4461]
- + ATmega2561 [patch #4461]
- + ATmega325P
- + ATmega3250P
- + ATmega329P
- + ATmega3290P
- + AT90PWM1
- + ATmega8HVA
- + ATmega16HVA
- + ATmega32HVB
- + AT90PWM216
- + AT90PWM316
- + ATtiny43U
- + ATtiny48
- + ATtiny88
- + AT90PWM2B
- + AT90PWM3B
-
-* New functions:
-
- strstr_P (Contributed by Werner Boellmann)
- round
- lround
- lrint
-
-* Optimized functions:
-
- dtostre
-
-*** Changes in avr-libc-1.4.0:
-
-* Major API changes:
-
- - The INTERRUPT() macro has been deprecated, and it will be
- removed in a future version. Use __attribute__((interrupt))
- explicitly if this functionality is really needed.
-
- - A new ISR() macro has been added, and is now the preferred
- for to introduce an interrupt service routine. It is
- equivalent to the old SIGNAL() macro, which might become
- deprecated in a future version.
-
- - A new header file, <compat/deprecated.h> has been established.
- Its purpose is to collect deprecated items from older versions of
- the library, starting out with the enable_external_int(),
- timer_enable_int(), and INTERRUPT() macros/functions, as well as
- the old obsoleted inp/outp/sbi/cbi macros.
-
- - A new include file subdirectory named "util/" has been created.
- The files <compat/twi.h>, <avr/crc16.h>, <avr/delay.h>, and
- <avr/parity.h> have been moved into the new util/ subdirectory.
-
- - A new set of interrupt vector names has been added, closely
- matching the names given in the datasheet, and more compatible to
- other compilers available for the AVR platform. The table of
- interrupt vector names in the documentation is now automatically
- generated, and explicitly mentions the MCU type for each vector
- name.
-
- - The standard IO facilities API has been enhanced
-
- . The backend functions put and get that are passed to fdevopen()
- during the setup of a stream now take the stream itself as an
- additional argument.
- By defining the macro __STDIO_FDEVOPEN_COMPAT_12 before
- including <stdio.h>, an fdevopen() function prototype will be
- declared that is backwards-compatible with avr-libc version
- 1.2 and before.
- . It is possible to tie user data to a stream using
- fdev_set_udata(), and to retrieve them using fdev_get_udata().
- Together with the additional argument to the backend functions,
- these functions can now e.g. keep track of internal user state,
- or distinguish two different devices using the same backend
- function.
- . The get backend function can now return _FDEV_EOF to indicate an
- end-of-file condition, in addition to _FDEV_ERR for an error
- condition. This will affect the internal state that can be
- queried using the standard feof() and ferror() functions.
- . A new macro fdev_setup_stream() is provided to setup a
- user-supplied stream without the need to call fdevopen(), and thus
- without requiring malloc(). A similar macro FDEV_SETUP_STREAM()
- exists that can be used to initialized a FILE object. The
- floating-point implementations of vfscanf() and vfprintf() now
- allocate their conversion buffer on the stack, so they do not need
- malloc() anymore either.
-
- - An API has been added to track the library version number. See the
- documentation of the new header file <avr/version.h>.
-
-* Bugs fixed:
-
- [#3573] Make local symbols in .S files truely local
- [#12324] overview: boot_page_write_safe, etc.
- [#12333] Standard requires libstdc to define vprintf and vscanf
- [#12495] about Busy-wait delay loops(document)
- [#12496] about set_sleep_mode() and tiny26/tiny2313
- [#12735] No support for AT94K devices in sleep.h
- [#12739] Gcc assumes that target libc provides ffs function
- [#12775] Possible Bug in sscanf on string end
- [#13340] Math lib documentation/lib mismatch
- [#13557] small typo in avr-libc-user-manual-1.2.3
- [#14224] _delay_ms() not inlining if called more than once in a unit
- [#14241] 'eeprom_is_ready' is not compiled with ATmega48
- [#14262] avr-libc documentation error about .init sections
- [#14266] use __extension__ in avr-libc header files
- [#14327] wdt_disable() missing a cli
- [#14378] EEPROM library d'not support at86rf401 device
- [#14380] configure/make work only in source directory
- [#14433] Improve documentation of <avr/delay.h>
- [#14486] some macros from boot.h doesn't compile correctly
- [#14503] strnlen_P is wrong with classic AVRs
- [#14798] several IO registers definition issue in header files
- [#14852] fp pow function broken for negative x
-
-* Other changes:
-
- [patch #3592] speedup tanh function in libm
- [patch #3750] Allow passing user data to stdio fdevopen() get and
- put methods. (This is part of the API changes
- mentioned above.)
- [patch #3780] <assert.h> header
- [patch #3781] add dummy fflush() to <stdio.h>
- [patch #3782] modernize <stdint.h>
- [patch #3912] Fix ctype.S linker error due to asm branches out
- of range
- [patch #3925] Dallas iButton 8-bit CRC
- [patch #4087] C99 conformal headers stdint.h and inttypes.h
- [patch #4505] Unified interrupt vector names in header files
- [patch #4557] Adds to the fplib usage of MUL instruction
- in group avr4; avr5 devices
- [patch #4608] rpm spec file update
- [patch #4622] unify doc file location in rpms
-
- - Update the build system to recent versions of autoconf/automake;
- the old "doconf" and "domake" scripts are gone now, "reconf" has
- been renamed to "bootstrap".
- - Update the documentation system to doxygen >= 1.4.1.
- - Major overhaul of the documentation, new layout of the HTML pages,
- several clarifications and additions.
- - Add support for the following new devices (depending on the ability
- of the compiler/binutils to handle them):
- . AT90CAN32/64
- . AT90PWM2(B)/3(B)
- . ATmega329/3290/649/6490
- . ATtiny25/45/85
- . ATmega164/324/644
- . ATmega640/1280/1281
- - The library is now compiled with -Os for avr3 and avr5 MCUs (i.e.
- for those with > 8 KB of ROM); used to be -O3 before.
-
-* New string functions. Contributed by Dmitry Xmelkov.
-
- ffs
- ffsl
- ffsll
- _FFS (macro)
-
-* Optimized functions.
-
- misc/itoa
- misc/ltoa
- misc/utoa
- misc/ultoa
- stdlib/longjmp
- string/memchr
- string/memccpy
- string/strchr
- string/strrchr
- string/strsep
- string/strstr
-
-*** Changes since avr-libc-1.2.4:
-
-* Bugs fixed:
-
- [no-id] EEPROM handling not working for AT90CAN128 ATmega48 ATmega88
- ATmega165 ATmega168 ATmega169 ATmega325 ATmega3250 ATmega645
- ATmega6450
- [#12646] strtod returns error for valid input (patch#4137)
- [#13341] Remove ADHSM bit from header files.
-
-* Other improvements:
-
- [patch#4189] Document replacement for sbi/cbi instructions
-
-* boot.h: implement boot_lock_fuse_bits_get() plus macros for the
- respective addresses (low/high/ext fuse, lock bits)
-
-
-*** Changes since avr-libc-1.2.3:
-
-* Bugs fixed:
-
- [no-id] Work around a bug in gas that made the weak symbol __stack
- fixed inside gcrt1.S (since the assembler already inserted
- its value).
- [no-id] Modify the doxygen build system to cope with artefacts from
- recent versions of doxygen and (pdfelatex-based) LaTeX.
- [#12033] macros.inc need to be protected from multiple inclusion.
- [#12040] overview: sbi in FAQ
- [#12134] ADC register name definitions
- [#12422] Add new bit definitions for LCDCCR register in iom169.h.
- [#12448] Fix bit definition for SJW0 in iocan128.h
- [#12785] Fix documenation for log10() function in math.h.
- [#12955] Signal name misprints: SIG_COMPERATOR in iom169.h,
- SIG_EPROM_READY in iotn26.h
- [#12993] Signal "__EICR" redefined warning ATmega8
- [#13290] avr/io.h EEAR def is flawed for the Mega48
- [#13327] Fix bit definition for UCSZ02 in iom325.h, iom3250.h,
- iom645.h, iom6450.h
- [#13678] The _wdt_write(value) macro in wdt.h doesn't work with
- the ATmega325.(also with ATmega3250, ATmega645, ATmega6450,
- ATmega165).
-
-* demo.c extended for ATmega16
-
-*** Changes since avr-libc-1.2.2:
-
-* Bugs fixed:
-
- [#11987] sscanf parsing problem : leading zero ignored in %u
-
-*** Changes since avr-libc-1.2.1:
-
-* Bugs fixed:
-
- [#11805] Fix call to __fp_cosinus in sin().
- [#11817] Replace SYSCLK with F_CPU in twitest example.
- [#11868] realloc doesn't work correctly on block at end of freelist
- when growing
- [#11898] Change optimisation level for building printf libraries to -Os.
-
-
-*** Changes since avr-libc-1.2.0:
-
-* Bugs fixed:
-
- [no-id] Prefix all internal global symbols in libm with __fp_ so
- they do not collide with the application namespace.
- [#4101] setjmp/longjmp destroy changes in global registers.
- [#11479] Add missing pin definitions for iotn16.h.
- [#11486] Put the port bit defintions back in for mega16.
- [#11494] strtol() return wrong value in the underflow case
- [#11505] Remove doxygen comment about the deprecated inp/outp items.
- [#11510] Abstract the change enable bit in wdt.h for mega32.
- [#11522] Rewrite wdt_disable() to match datasheet algorithm.
- [#11684] realloc overwrites first to bytes of memory block when shrinking
- [patch #3618] Optimization strtol(), a little (related to bug #11494).
- [#11732] Update doc/examples/progmem.c to use the latest API.
-
-* Extend stdio and pmstring APIs:
-
-Implement patch #3516: printf: Handling of argument strings from
-program memory
-
-The %S format can now be used to print strings that are located in
-program-space memory (aka. ROM).
-
-As a prerequisite for this, the function strnlen_P() has been added
-which is similar to strnlen() except that it takes a pointer to a
-program-space string.
-
-*** Changes in avr-libc-1.2:
-
-* Bugs fixed:
-
- [no-id] Fix TICIE1 value in usb header files.
- [no-id] Fix bug introduced in fix for bug #7802 (missing parens).
- [no-id] Move ATtiny2313 and ATtiny13 from avr4 to avr2 (by now).
- [#2143] malloc() routines chunk smaller than requested
- [#5454] Inline functions results in undefined reference when optimize level 0
- is used.
- [#5799] error(?) in iom162.h
- [#2233] Documentation issues with inline asm
- [#6352] Sleep mode for ATmega162, ATmega161, and ATmega8515
- [#7469] "Problem" by using the library function "boot_lock_bits_set"
- [#7556] printf and friends improperly handle non-null terminated strings when
- a %s argument has a precision.
- [#7802] vfscanf problem with unsigned long (patch #2554)
- [#7989] dtostrf() destroys string pointer registers?
- [#8119] _wdt_write macro in wdt.h doesn't work with ATmega169
- [#8391] Fuse mask in boot.h wrong?
- NOTE: boot_lock_bits_set() was broken. Please see the new
- documentation for examples of how the new version works.
- [#8452] some SFR and bit names in iom169.h are incorrect
- NOTE: Where possible, the old names are retained to avoid breaking
- existing code, but the OCR1A and OCR1B names where just plain wrong
- so they have been changed and the incorrect names (OCRA1 and OCRB1)
- are undefined.
- [#8649] sfr_defs.h: missed _SFR_BYTE() in bit_is_set/clear
- [#9345] Zero-Padding on vfprintf
- [#10150] Update release versions compatible with avr-libc and instructions.
- [#10489] Sleep mode for atmega48/88/168 family
- [#10733] Fix bit identifer ADFR to ADATE in mega64.
- [#10828] Fix licenses on files to have same BSD license.
- [#11242] Add the EEARH register definition for the mega48.
- [#11275] fdevopen() should document its use of malloc()
- [#11315] Add USART* signal names to match datasheet for mega32 and mega16.
- [#11405] Add USART* signal names to match datasheet for mega128.
- [#11418] Add PRR register and bit definitions for mega169.
- [#11425] sleep.h missing semicolon
-
-* Remove deprecated items:
- + obsolete headers from the base include directory (moved to the avr/
- subdirectory long ago)
- + deprecated macros and functions from
- . <avr/eeprom.h> (eeprom_rb, eeprom_rw, eeprom_wb),
- . <avr/io.h> (cbi, sbi, inb, outb, inw, outw, inp, outp, BV),
- . <avr/pgmspace.h> (PRG_RDB).
- + . <avr/timer.h> removed completely.
-
-* Moved header files:
-
- + <avr/ina90.h> moved to <compat/ina90.h>
- + <avr/twi.h> moved to <compat/twi.h>
-
-* New devices supported:
-
- + ATmega165
- + ATmega325
- + ATmega3250
- + ATmega645
- + ATmega6450
- + ATmega48
- + ATmega88
- + ATmega168
- + ATtiny13
- + ATtiny2313
- + AT90CAN128
-
-* Pin names for ports are now consistent for all devices.
-
-* dtostrf() now uses movw where possible
-
-* realloc() has been implemented.
-
-* Extend pgmspace API.
-
-The pgmspace API has had the following macros added to allow accessing of
-unsigned 32-bit values:
-
- pgm_read_dword_near
- pgm_read_dword_far
- pgm_read_dword
-
-* Change boot API.
-
-The boot API internals have changed such that it is not compatible with the
-1.0.x API.
-
-These macros have been changed so that they no longer wait for SPM and EEPROM
-operations to complete. It turns out that doing those checks all the time is
-not needed and tends to bloat the code. Removing the checks allows you to
-write more compact code (see the example in avr/boot.h).
-
- boot_page_fill
- boot_page_erase
- boot_page_write
- boot_rww_enable
- boot_lock_bits_set
-
-If you want the old behaviour (1.0.x compatible), use these new macros:
-
- boot_page_fill_safe
- boot_page_erase_safe
- boot_page_write_safe
- boot_rww_enable_safe
- boot_lock_bits_set_safe
-
-* Extend eeprom API.
-
-New macro:
- eeprom_busy_wait
-
-* Extend crc16 API.
-
-New functions:
- _crc_xmodem_update
- _crc_ccitt_update
-
-* Extend stdio API.
-
-New functions:
- vfprintf_P
- vfscanf_P
- vsprintf
- vsprintf_P
- vsnprintf
- vsnprintf_P
-
-* Extend malloc API.
-
-Implement realloc().
-
-* Extend delay API (<avr/delay.h>).
-
-Implement inline functions for specifying delays in microseconds, or
-milliseconds directly (based on the macro F_CPU specifying the CPU
-clock frequency).
-
-* Documentation changes:
-
- + Use newer Doxygen.
- + Many fixes and added documentation.
- + Unix-style man pages are generated now when doc generation has been
- enabled in ./configure
-
-* Optimize slightly strtol and strtoul functions.
-
-* Unified copyright.
-
-All of the avr-libc files are now distributed under a single license.
-All of the authors of the files agreed to this step. The new license
-is a 3-clause simplified ``BSD-style'' license which is believed to be
-fully compatible with the GPL on one hand, yet imposes as minimal
-restrictions as possible for any kind of commercial use in
-applications based on avr-libc.
-
-To build the documentation, doxygen-1.3.4 or newer is strongly recommended.
-
-*** Changes in avr-libc-1.0:
-
-* Move source to cvs repositiory at http://savannah.gnu.org/projects/avr-libc
-
-Anonymous cvs access to the source is now available. There is also a mailing
-list set up for discussion of development of avr-libc.
-
-* License changes.
-
-All the files in the project now are covered by a modified BSD license. This
-allows royalty free use of the library in commerical products. All of the
-public domain files in the project have been switched to the new license and
-copyright given to the contributors of the files.
-
-There were some files taken from GNU GPL'd projects which were removed from
-avr-libc to simplify the licensing. The removed files only supplied alternate
-implementations, so nothing was lost by their removal.
-
-* Requires latest binutils and gcc
-
-Marek did some fairly major work with binutils and gcc to make adding support
-for new devices easier. His changes in those tools required changes to
-avr-libc which make it incompatible with older versions of binutils and gcc.
-Gcc versions >= 3.3 and binutils versions >= 2.13 are required.
-
-* New malloc implementation.
-
-Joerg Wunsch has supplied an improved malloc implementation which is less
-prone to fragmentation.
-
-* Documentation!
-
-Joerg Wunsch and Ted Roth and have been working on using the doxygen program to
-embed documentation comments into source code. Additionally, Harald Kipp's
-inline asm cookbook and Rich Neswold's Avr Tools document have been merged into
-the user manual. The goal is to have a single place for all the documentation
-a user would need to get started developing for AVR microcontrollers using
-the GNU development tool chain.
-
-The latest documentation is available online at
- http://www.freesoftware.fsf.org/avr-libc/
-
-* I/O registers accessible directly in C expressions
-
-You can now do this in your code:
- PORTA |= 0x02;
-
-See the "Special Function Registers" documentation for details. This method is
-preferred over the use of the deprecated inp(), inb(), inw(), outp(), outb()
-and outw() functions.
-
-* New devices supported
-
-mega128
-mega169
-mega16
-mega32
-mega64 [untested]
-mega8515 [untested]
-mega8535 [untested]
-tiny26
-76c711
-43usb320
-43usb355
-86rf401
-
-* Improved trigonometrical functions:
-
-Reiner Patommel provided complete rewrites for asin(), atan() and atan2()
-that feature a better (for some argument ranges even much better)
-accuracy than the previous versions. Note that since acos() uses asin(),
-it also benefits from this.
-
-* Incompatibilities with previous version.
-
-The arguments for outb()/outw() have been reversed.
- (value,port) -> (port,value)
-
-* New pgmspace.h API.
-
-Changed function names and added new functions to read the Program Space
-FLASH. Added new functions to read 16-bit (word) values. The new API should
-also clear up problems with reading data from devices with > 64K of FLASH.
-
-The API now includes:
-pgm_read_byte (maps to the *_near function below)
-pgm_read_word (maps to the *_near function below)
-pgm_read_byte_near
-pgm_read_word_near
-pgm_read_byte_far
-pgm_read_word_far
-
-
-* New bootloader support API.
-
-#include <avr/boot.h>
-
-This provides bootloader support functions to those processors that have
-builtin bootloader support.
-
-* inb / outb / inw / outw / cbi / sbi macros are deprecated.
-
-* New string functions and optimized string functions.
-
-strlcpy (optimized)
-strlcat (optimized)
-strsep (new)
-strtok_r (new)
-strlcat_P (new)
-strlcpy_P (new)
-strncat_P (new)
-
-Contributed by Reiner Patommel with some work on strlcpy, strlcat by
-Eric Weddington.
-
-* New eeprom functions by Artur Lipowski <address@hidden>
-
-eeprom_write_word
-eeprom_write_block
-
-
-*** Changes up to avr-libc-20020203:
-
-See the ChangeLog file up to 2002-02-03 for details.
-
Copied: tags/avr-libc-1_7_1-release/NEWS (from rev 2215, trunk/avr-libc/NEWS)
===================================================================
--- tags/avr-libc-1_7_1-release/NEWS (rev 0)
+++ tags/avr-libc-1_7_1-release/NEWS 2011-02-16 21:36:51 UTC (rev 2216)
@@ -0,0 +1,1139 @@
+*** Changes in avr-libc-1.7.1:
+
+* Bugs fixed:
+
+ [Atmel: #11793] XMEGA A devices: 4096-cycle DAC refresh interval setting has
wrong name
+ [Atmel: #12314] Hi-Res(CTRLA) and AWex (FDEMASK)
+ [Atmel: #12536] Remove CALCTRL in xmega header files.
+ [no-id] Fix wrong vector table size for ATmega168A devices.
+ [#29235] power.h - warning: comma at end of enumerator list
+ [#30783] Missing prototype in power.h
+ [#31270] Stale link to Philips (now NXP) I2C specification/users manual
+
+* New devices supported:
+
+ ATTiny84a
+ ATMega16HVB RevB
+ ATMega32HVB RevB
+
+* Contributed Patches:
+
+* Other changes:
+
+
+*** Changes in avr-libc-1.7.0:
+
+* Bugs fixed:
+ [Atmel: #7159] the memory location of tccr0b is mixed with tccr0a for
tiny48/88
+ [no-id] Fix CLKPCE bit value to be 7.
+ [no-id] inlining failed in call to '_delay_ms': function body not available
+ [no-id] malloc() could allocate memory beyond the limits of heap
+ [no-id] xmega header file updates.
+ [no-id] Enable ATmega128RFA1 in <avr/power.h>
+ [no-id] longjmp() writes to EIND register, it is forbidden by AVR-GCC's API
+ [no-id] Define _VECTORS_SIZE in iom3000.h
+ [no-id] Redefine __tmp_reg__ and __zer_reg__ for AVR TINY.
+ [AVR Tools: #9724] Error in ATtiny13A include file, PRR register
+ [sourceforge.net: #1836849] Multiplication does not work for AT90USB162
+ [sourceforge.net: #1883630] ATmegaXX4 - USART0 and USART1 additional bits
aliases
+ [sourceforge.net: #1910885] Typo in io90pwm3b.h
+ [sourceforge.net: #1913681] Missing INT3 define in io90pwm3b.h
+ [sourceforge.net: #1957780] New 'FUSES-support' gives error in c++ files
+ [sourceforge.net: #1969436] Wrong flash size for ATmega32U4
+ [sourceforge.net: #2010688] ATtiny48 SPSR register bits
+ [sourceforge.net: #2012448] ATmega6450 USART Interrupts
+ [sourceforge.net: #2016128] Incorrect ATMega32[c1|m1] Header Entries
+ [sourceforge.net: #2018957] Wrong SPM_PAGESIZE for mega1284P
+ [sourceforge.net: #2033993] User manual: data symbol spec incorrect
+ [sourceforge.net: #2305703] iom162.h ASSR bitdef, typo?
+ [sourceforge.net: #2411516] Error/Bug in the iotn88.h file
+ [sourceforge.net: #2420567] ATmega329P missing in sleep.h
+ [sourceforge.net: #2693898] ATmega32U6 missing in power.h
+ [sourceforge.net: #2738926] avr/eeprom.h EEGET and EEPUT
+ [sourceforge.net: #2812125] ATmega16U4 missing in power.h
+ [sourceforge.net: #2913419] Misspelled Structure Element - xmega
+ [#3485] Using float arithmetic without linking with -lm result in incorrect
code
+ [#19079] sscanf %s eats 1 char too much
+ [#19494] sfr_defs.h documentation: Remove references to deprecated macros.
+ [#21410] Incorrect use of 16-bit eeprom addresses in devices with 8-Bit
address registers
+ [#21621] Allow autoconf 2.61
+ [#21622] Support building in a subdirectory
+ [#21623] boot.h: Use the "z" register constraint
+ [#21869] Multiple defines in iotn2313.h
+ [#21872] __floatunsisf/undisf incorrectly named
+ [#21905] scanf: float conversion ignores the suppression symbol
+ [#21906] scanf: float conversion, wrong width count in case of sign or
exponent
+ [#21931] Wrong fuses defined for the ATMEGA88/168
+ [#21935] Typo in avr-ar example avr-as should be avr-ar
+ [#21995] pgm_read_xxxx() does not use enhanced LPM instruction
+ [#21958] UBRR0/UBRR1 SFR is redefined for ATmegaXX8p and atmega1284p devices
+ [#21962] PSYNC1_0 a PSYNC1_1 bits not defined for AT90PWM3B and AT90PWM316
devices
+ [#21986] Typo in iotn13.h
+ [#22016] Typo in iotn2313.h: SIG_OUTPUT_COPMARE0A
+ [#22119] Misleading statement in FAQ
+ [#22153] setjmp.o is wrong in libc.a (1.6.1) for avr's with SPH
+ [#22240] Add EEPROM Page Size to header files
+ [#22276] wdt_reset fails with devices with large WDTCSR addresses
+ [#22377] Wrong XRAMEND for some recent ioXXX.h header files.
+ [#22387] Missing EIMSK and __EEPROM_REG_LOCATIONS__ in iom168p.h
+ [#22390] Unclear note about function pointers
+ [#22447] Summary of iom?8p.h header updates needed
+ [#22493] Typo in iom1284p.h.
+ [#22540] Adding signature bytes to header files
+ [#22548] Missing IVCE and IVSEL in iom328p.h
+ [#22568] Missing EEPROM_REG_LOCATIONS in iom328p.h
+ [#22572] Documentation FAQ example proposal
+ [#22642] AT90USB162 and AT90USB82 not supported in <avr/power.h>
+ [#22643] math.h c99 incompability
+ [#22666] io90pwm3b.h errors
+ [#22785] ATMega644P Support Missing from avr/include/avr/sleep.h
+ [#22828] eeprom_write_block(): incompatibility in args order
+ [#22834] ATmega164P/324P/644P/1284P lack BODS/BODSE bits in MCUCR
+ [#22870] Error in wdt.h and ATmega164P
+ [#22877] Fuse information wrong for xmega devices.
+ [#22878] eeprom_*_word/dword/block cause hang in ATmega256x
+ [#23004] Watchdog enable docu only generated for Xmega series
+ [#23032] Define PORTxn, PINxn, DDxn bit names in iomxx4.h.
+ [#23166] atmega328p does not have SPMEN
+ [#23261] AT90USB162 and AT90USB82 missing power_all_[enable,disable]() in
power.h
+ [#23409] Provide an implementation for strtok()
+ [#23546] FAQ documentation symbol seems wrong
+ [#23554] Wrong bit values in iom32u4.h
+ [#23677] Request for cbrt() and strdup to be added to libc
+ [#23703] eeprom write functions optimisation
+ [#23774] Using some defines from avr/fuse.h produces warning
+ [#23850] ATMega8 does not have MCUSR defined
+ [#23871] clock_prescale_set() not available for ATmega32U4
+ [#23959] Small typo in deprecated documentation
+ [#23969] eeprom_read_byte() throws interrupt EE_READY although EERIE is
cleared, controller resets
+ [#24207] Example in inttypes.h is wrong
+ [#24446] _attribute_ should be __attribute__ (with double underscores)
+ [#24762] 1.6.3 wdt.h compile-time bug
+ [#24890] Small error in libm source fp_rempio2.S
+ [#25048] eeprom.h will not compile as c++ code.
+ [#25120] pgm_read_*_far() functions cause incorrect usage of the Z pointer
for RAM access in ATxmega series
+ [#25131] Incorrect definition of default lfuse bits for ATTiny2313
+ [#25261] TWIHSR spelling deviates from XML file in AVR Studio 4.15
+ [#25535] Nonexistent bit definitions in iotn88.h/iotn48.h AREFD REFS1 RWWSB
SM2
+ [#25645] xmega header files broken #defines
+ [#25723] Realloc corrupts free list when growing into the next free item
+ [#25846] include/avr/power.h:628:1: error: missing binary operator before
token "defined"
+ [#25925] <avr/boot.h> cannot be included on Xmega devices
+ [#25929] boot.h Fuse read not compatible with Tiny48/88.
+ [#25930] New IO-Headerfiles missing PXn Portpindefinitions
+ [#26188] Wrong or missing definition of SIGNATURE_X in iom644.h and others
+ [#26284] boot_lock_fuse_bits_get does not compile under gcc 4.3.X
+ [#26308] WDE defined as WDE3 in io90pwm3b.h and io90pwm2b.h
+ [#26767] XMEGA GPIO register name discrepancy
+ [#26809] Some common math constants missing in math.h
+ [#26840] Missing #define in iom32m1.h
+ [#26876] include io.h into fuse.h
+ [#27201] _WORDREGISTER in xmega headers does not work in C99 mode
+ [#27235] malloc: Several things go wrong
+ [#27242] realloc: serious error when size shrinks
+ [#27243] malloc: small error in comment
+ [#27367] RAMSTART missing in elder device header files
+ [#27434] Arguments of macros must be protected in parentheses
+ [#28575] Minor bug in iousb162.h - missing FUSE_ prefixes
+ [#28688] using_tools.dox fails to build due to extra underscore
+ [#28756] Bug in AVR libc 1.6.7 (power.h for 8-bit AVR)
+ [#28812] iotn48.h TWS# bits off by one
+ [#28584] iocanxx.h Add word definitions to iocanxx.h
+ [#28627] power.h ATMEGA32U2 clock_prescale_set() not available
+ [#28901] Xmega header files with missing definitions for GPIO_t and CPU_t
+ [#28574] Xmega D ADC struct missing registers
+ [#28582] XMEGA A3B, RTC32 not properly supported
+ [#28921] pointer to function > 128k flash
+ [#29502] literal error in iox128a1.h
+ [#29653] PUD bit missing for at90usb82
+ [#29950] ATtiny167 SPM_PAGESIZE Discrepancy
+ [#30018] Errors in include files
+ [#30085] memcpy_P on XMega does not clr NVM.CMD before copy
+ [#30104] power.h - Missing "power_usart1_/enable/disable()" functions for
ATmega644
+ [#30148] XMEGA register discrepancy
+ [#30600] Missing processor spec - wdt.h include file
+ [#30597] Missing definition for ATmega16/32/64m1/c1
+ [#30475] SPM_PAGESIZE is incorrect in io90pwm3b.h and io90pwm2b.h
+ [#30552] Missing definition ADCW
+ [#30569] ATmega16U4/32U4 wrong bit definition
+ [#30669] Improve comment in stdiodemo
+ [#30735] bug in example twitest
+ [#31086] ATTINY88 RAMEND value not set to correct value in iotn88.h
+ [#30363] _delay_xx() functions in <util/delay.h> are broken
+ [#31990] PRPSC0 used in power.h for AT90PWM81 instead of PRPSCR
+ [#31873] power_aes_enable/disable() are commented in power.h for xmega
devices
+
+* Other changes:
+
+ - Added 'avr35' architecture. Now 'MOVW' and 'LPM Rx, Z[+]' instructions
+ supported for AT90USB82 and AT90USB162 devices. GCC 4.3 or above is
+ necessary to use this.
+
+ - Function vfscanf() is rewriten. The float point version is optimized
+ considerably: the expense of a stack was cut by half, and the size of
+ function has decreased approximately on 1KB. Opportunities of standard
+ and minimal versions are expanded, and their size has remained at a
+ former level.
+
+ Briefly:
+ . Restrictions of a float point format are eliminated.
+ . Conversion '%[' is present in standart version now.
+ . The minimal version differs from standard only absence of '%[' conv.
+ . The 'hh' type qualifier is added ('char *', C99).
+ . The maximal field width is increased up to 255 (65535 in float
version).
+ . All known bugs are fixed.
+
+ New vfscanf() concedes old in:
+ . The size of the minimal and standard versions has increased for old
+ branches of compiler (less 4.1) and ancient chips (without MOVW).
+ . The maximum quantity of conversions now is limited (255).
+
+ - EEPROM functions are rewriten. Now they are pure asm functions. The
+ reading of long word or block is speed up. New functions for 32-bit
+ words and floats are added. The group of 'update' (burn only different
+ bytes) functions is added. A set of Avr-libc bugs are fixed.
+
+ - Added support for XMEGA architectures.
+
+ - The Postscript documentation build has been removed in favour of
+ building only the PDF (and HTML and man page) versions. PDF offers
+ the same printing quality as postscript at a smaller file size.
+ This also works around a bug in doxygen 1.5.7 where it appears to
+ be no longer possible to set GENERATE_HTML = NO.
+
+ - A sleeping BOD API was added to <avr/sleep.h>. This allows you to disable
+ the Brown Out Detector (BOD) before going to sleep, thereby reducing
+ power even further.
+
+ - The note about signbit() implementation is removed from documenatation.
+ The reason is that the GCC can replace it with inline code and the
+ nonzero value is unpredictable in such case.
+
+ - Signature API added in <avr/signature.h>.
+
+ - All functions are now placed in the .text.avr-libc section, and the
+ floating point functions are placed in the .text.avr-libc.fplib section.
This
+ allows the user the ability to relocate all avr-libc routines to a
different
+ address using a custom linker script.
+
+ - The port/pin assignments of the HD44780 LCD controller in the
+ stdiodemo example can now be distributed across more than a single
+ AVR port. The only remaining requirement is that all data bits
+ are assigned to a single port in ascending order.
+
+ - Added support for avrtiny10 architecture, to support the ATtiny10 Family.
+
+ - Added new headerfile: <avr/cpufunc.h>; currently contains _NOP() and
+ _MemoryBarrier().
+
+ - The twidemo can now optionally address 24C32 and larger EEPROMs
+ that require 16-bit word addressing.
+
+ - Add a "memory barrier" to the cli() and sei() macros.
+
+
+* New devices supported:
+
+ + ATxmega64D3
+ + ATxmega128D3
+ + ATxmega256D3
+ + ATxmega192A3
+ + ATxmega128A1
+ + ATxmega64A1
+ + ATmega32M1
+ + ATmega32C1
+ + ATmega32U4
+ + ATtiny167
+ + ATtiny13A
+ + ATmega32U6
+ + AT90SCR100
+ + ATtiny87
+ + ATxmega32A4
+ + ATmega16M1
+ + ATmega64C1
+ + ATmega64M1
+ + ATA6289
+ + AT90PWM81
+ + ATmega128RFA1
+ + ATxmega32D4
+ + ATxmega16A4
+ + ATxmega16D4
+ + ATmega16U4
+ + ATmega8U2
+ + ATmega16U2
+ + ATmega32U2
+ + ATxmega192D3
+ + ATtiny2313A
+ + ATtiny4313
+ + ATtiny24A
+ + ATtiny44A
+ + ATtiny261A
+ + ATtiny461A
+ + ATtiny861A
+ + ATmega644PA
+ + ATmega88PA
+ + ATmega16A
+ + ATmega64HVE
+ + ATmega169PA
+ + ATmega649P
+ + ATmega324PA
+ + ATmega16HVA2
+ + ATmega16HVB
+ + ATmega48A
+ + ATmega88A
+ + ATmega168A
+ + ATmega328
+ + ATmega164A
+ + ATmega324A
+ + ATmega644A
+ + ATmega165A
+ + ATmega169A
+ + ATmega645A
+ + ATmega6450A
+ + ATmega649A
+ + ATmega6490A
+ + ATmega6490P
+ + ATmega645P
+ + ATmega6450P
+ + ATmega329PA
+ + ATxmega128A1U
+ + ATxmega64A1U
+ + ATtiny4
+ + ATtiny5
+ + ATtiny9
+ + ATtiny10
+ + ATtiny20
+ + ATtiny40
+ + ATtiny84A
+ + ATmega325A
+ + ATmega3250A
+ + ATmega329A
+ + ATmega3290A
+ + M3000
+
+* Optimized functions:
+
+ eeprom_read_block
+ eeprom_read_dword
+ eeprom_read_word
+ eeprom_write_block
+ eeprom_write_dword
+ eeprom_write_word
+ strtod
+ setjmp
+ sqrt (and callers: acos, asin and hypot)
+ sin, cos, tan: minor in space
+ strlcat, strlcat_P
+ strlcpy, strlcpy_P
+ strtok, strtok_r
+
+* Contributed Patches:
+
+ [#6194] Twitest updated to handle larger EEPROM devices
+ [#6352] Far pointer library
+ [#6500] Reentrant code faq
+ [#6517] Pgmspace with float support
+ [#6555] malloc improvement
+ [#6649] sqrt.S in libm changes
+ [#6690] Shorten calculation of dallas 1-wire crc
+ [#6718] Optimize the EEPROM functions
+ [#6720] FAQ update. Add EEPROM section, baud rate section. Correct spelling.
+ [#6791] Minor fixes to stdio.h documentation
+ [#6878] eewr_byte.S update for patch #6718
+ [#6891] Add XMega software reset to the FAQ section on software reset
+ [#6895] Improved malloc behaviour when expanding used area
+ [#6897] Allow <util/setbaud.h> to be used with assembler source
+
+* New functions:
+
+ cbrt
+ eeprom_read_dword
+ eeprom_read_float
+ eeprom_update_block
+ eeprom_update_byte
+ eeprom_update_dword
+ eeprom_update_float
+ eeprom_update_word
+ eeprom_write_dword
+ eeprom_write_float
+ memccpy_P
+ strdup
+ strtok
+ strtok_P
+ strtok_rP
+ strlen_PF
+ strnlen_PF
+ memcpy_PF
+ strcpy_PF
+ strncpy_PF
+ strcat_PF
+ strlcat_PF
+ strncat_PF
+ strcmp_PF
+ strncmp_PF
+ strcasecmp_PF
+ strncasecmp_PF
+ strstr_PF
+ strlcpy_PF
+ memcmp_PF
+
+
+*** Changes in avr-libc-1.6.0:
+
+* Main changes from avr-libc 1.4 to 1.6:
+
+ + The fplib/math library is completely rewritten. Now features of the IEEE
+ 754 standard are supported all: negative zero, subnormals, Infs and NaNs.
+ It concerns both to base operations (arithmetic, comparison...), and to
+ all functions. Speed of performance is increased, sometimes considerably.
+ A number of mistakes (not reflected in the Bugs) which led severe losses
+ of accuracy for some arguments is corrected. A number of new functions is
+ added. It is necessary to note, that the new library concedes old under
+ the charge of flash memory a little.
+
+ Incompatibilities:
+
+ - Conversion from float to long (make similar to GCC/x86): in case if
+ overflow was or if input is NaN return 0x80000000 for signed result and
+ return 0 for unsigned result. Negative input (not too big in absolute
+ value) is permissible for cast to unsigned long, for example: (unsigned
+ long)(-1.0) returns ULONG_MAX.
+
+ - The signbit() function: return 1 as nonzero value (make similar to
+ builtin GCC).
+
+ - Make frexp() similar to GCC/x86 in case of nonfinite arg: write 0 by
+ exponent pointer. Early Avr-libc's frexp() skips exponent storing in this
+ case. Make the NULL a legal address to skip a storing.
+
+ + Functions of numbers to ascii conversion are completely rewritten:
+ dtostre(), dtostrf() and printf() family. They more do not use float point
+ operations. Speed of int/float to ascii has increased in some times. For
+ printf() the stack usage is reduced.
+
+ + Test suite is added to the Avr-libc project.
+
+ + A few new util's headers: util/atomic.h, util/setbaud.h .
+
+* Bugs fixed:
+
+ [no-id] iscntrl() return true for some values from 0x80 to 0xff.
+ [no-id] Fix the examples installation for non-doc builds.
+ [no-id] Fix the spelling of the OCR1A/B registers in ATtinyX4 devices.
+ [no-id] LED1/2 don't work in the largedemo on an ATmega16.
+ [no-id] Not defined SPM_PAGESIZE for ATtinyX4/X5/X61 and ATtiny2313 devices.
+ [no-id] Typo in iomxx0_1.h: PRUSART3.
+ [no-id] Make include/avr/sfr_defs.h -Wundef safe.
+ [no-id] Make include/avr/eeprom.h -Wundef safe.
+ [no-id] Fix the timing of the HD44780 driver in the stdiodemo.
+ [no-id] Fix the sleep mode definitions for the ATtiny2313.
+ [no-id] Exclude 64-bit types for -mint8.
+ [no-id] Make documentation build work with doxygen 1.5.x
+ [#1929] -Inf not detected
+ [#11511] NaN not generated correctly by division library
+ [#11820] dtostre: wrong output with percision =3
+ [#13330] NaN is recognized not always
+ [#15161] util/delay.h misses inline keyword (regression)
+ [#15193] incorrect definition of IVSEL bit in MCUCR register
+ [#15266] Function ldexp incorrectly processes overflow and underflow cases.
+ [#15494] Compile warning and errors if compiler flag -Wundef flag specified
+ [#15512] Bootloader macros not interrupt safe.
+ [#15519] AT90CAN* processors incorrectly identified as "AT90S family"
+ [#15522] Typo in iotn2313.h vector table
+ [#15559] Wrong macro for boot_page_write(address) and ATmega128
+ [#15574] unneeded compatibility break
+ [#15595] GPIOR0 misspelled for ATtiny25/45/85
+ [#15732] interrupt.h: ISR() incompatibility with gcc 3.4.5
+ [#15890] missing /devtools/gen-avr-lib-tree.sh
+ [#16039] Names in Pxy (i.e. PA0) style of ports pins for some devices are
+ not defined.
+ [#16125] HD44780 data bit assignment restrictive
+ [#16260] _crc16_update lacks C equivalent
+ [#16411] Add the 'used' attribute to all interrupt service routine macros.
+ [#16434] EMPTY_INTERRUPT has no misspelled vector checking
+ [#16441] eeprom.h should use __asm__
+ [#16868] depricated.h: outp() arguments order misprint
+ [#17068] wdt.h file: __AVR_ATmeg324P__ spelling mistake
+ [#17470] Add API for CLKPR register.
+ [#17551] Update documentation to point to issues with gcc4.1
+ [#17591] /avr-libc/libm/fplib/fp_split.S error return will fail for
+ 3-Byte PC devices
+ [#17608] Add ISR_ALIAS() to avr/interrupt.h
+ [#18115] online documentation typo/bug avr/boot.h
+ [#18373] Bugs in Inline ASM documentacion
+ [#18385] SPM_PAGESIZE wrong value for ATmega164p and ATmega324p
+ [#18509] strtod.S crashes due to stack problem with atmega 2560
+ [#18662] rand() keeps returning the same value if seeded with 0
+ [#18686] AT90USB**** devices are absent in interrupt-verctor-names table
+ [#18688] vfscanf and vfprintf don't use malloc
+ [#18726] the dtostrf function description is missing in AVR-Libc's webpage
+ [#18903] ATmega644 register definitions for SPI and PRR (datasheet vs.
+ iom*.h)
+ [#18915] PWM1X Bit missing for ATtiny261/461/861
+ [#18964] USART definitions *wrong* in iocanxx.h
+ [#18994] minor optimization possible to stdlib functions isspace(),
+ isprint(), and islower()
+ [#19009] Make <util/delay.h> issue a warning when optimizations are turned
off
+ [#19050] gcrt1.S should call main rather than jumping to it
+ [#19060] PCMSKx registers transposed in header for attinyX61
+ [#19445] _malloc_heap_end does not follow _heap_end on m2561
+ [#19495] <avr/interrupts.h> documentation: fix inclusion of cli and sei
macros
+ [#19496] Add documentation: how to build toolchain for Windows.
+ [#19650] avr-libc: wrong named bit in SFR of AT90PWMx
+ [#19666] AT90PWMx: Another patch for the include file (missing SFR)
+ [#19669] Need function to read signature row
+ [#19686] alloc declaration missing
+ [#19841] Error building 1.4 HEAD: undefined reference to 'exit'
+ [#20248] FAQ#3: clarify which registers are safe to be used
+ [#20276] power.h missing ATmega644Ppower_XXX_[en/dis]able() macros
+ [#20435] Bit name definitions for AT90PWM3
+ [#20530] Bug in sample code for early wdt disable
+ [#20650] Missing description of AVR specific C-preprocessor macros
+ [#20682] Bad bit name in avr/io2313.h - Sugestion
+ [#20843] Mega 2561 library
+ [#21174] assembly error with targets at90s1200, attiny11, attiny12,
+ and attiny28
+ [#21183] Fix Program Space example code.
+ [#21204] iotnx61.h PRR bits incorrect
+ [#21228] Missing 3rd clause in BSD license in documentation pages
+ [#21299] Duplicate register address in iotn48.h.
+ [#21411] Typographical error in 'iotn13.h'
+ [#21432] Incorrect timer interrupt handler names for ATtiny45
+ [#21434] Bit name definitions for AT90CANxxx
+ [#21444] Undocument -minit-stack
+ [#21484] Documentation build for avr/version.h does not susbstitute autoconf
+ macros
+ [#21749] AT90PWM316: _VECTORS_SIZE should be 128
+ [#21691] iomx8.h-> IVSEL and IVCE should not be available for ATmega48
+ [#21743] AT90PWM316 missing PSOC1 bit definitions
+ [#21626] Incorrect Bit Definition for ADC14 and ADC15 Digital Input Disable
+ [#21521] incorrect bit definitions in iotnx61.h
+ [#21840] RAMEND wrong for ATmega48P/88P/168P
+
+* Other changes:
+
+ - New Power Management API in <avr/power.h>. This provides C language
+ macros to manipulate the Power Reduction Register(s) and the System Clock
+ Prescaler register across multiple processors.
+
+ [patch #4611] sleep.h sleep_mode() not interrupt safe
+
+ - The simple demo has been modernized a bit. Documentation now
+ generally refers to the ATmega8 rather than the AT90S2313, and
+ the #ifdef spaghetti has been moved out into iocompat.h.
+
+ - A new demo project ("largedemo") has been added. It extends
+ the simple demo by adding some controls, and thereby touches
+ a good number of avr-libc concepts. It has originally been
+ written for the ATmega16, but can also be run on an ATmega8
+ or a member of the ATmegaX8 family, as well as on an ATtiny2313.
+
+ - Another demo project ("stdiodemo") has been added. It
+ demonstrates the setup of the standard IO facilities using
+ a practical small application.
+
+ - The demo projects now install their source code as part of
+ the documentation tree.
+
+ - The simple demo has been ported to ATmega8515, ATmega8535,
+ ATmega164P, ATmega165, ATmega169, ATmega324P, ATmega325,
+ ATmega3250, ATmega329, ATmega3290, ATmega640, ATmega644,
+ ATmega644P, ATmega645, ATmega6450, ATmega649, ATmega6490,
+ ATmega1280, ATmega1281, ATtiny2313, ATtiny24, ATtiny25, ATtiny26,
+ ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85,
+ ATtiny861.
+
+ - More overhaul of the demo documentation, don't use the "squid"
+ cable for the largedemo as it is not part of the STK500.
+
+ - Integrate a copy of the license file into the documentation.
+
+ - Include an alphabetical index of all globals (functions,
+ macros, types, variables) into the documentation.
+
+ - Added 'avr25' architecture. Now 'MOVW' and 'LPM Rx, Z[+]' instructions
+ supported for AT86RF401, ATtiny13, ATtiny2313, ATtiny24, ATtiny25,
+ ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85 and
+ ATtiny861 devices. GCC 4.2 or above is necessary to use this.
+
+ - Add the benchmark page.
+
+ [patch #5756] New atomic.h header file (added as <util/atomic.h>)
+
+ [patch #5343] Add a util/setbaud.h "helper" file
+
+ [patch #6236] Improving _delay_us and _delay_ms
+
+ [patch #5644] New interrupt.h header file
+
+* New devices supported:
+
+ + ATtiny24
+ + ATtiny261
+ + ATtiny44
+ + ATtiny461
+ + ATtiny84
+ + ATtiny861
+ + ATmega406
+ + ATmega169 Rev. F
+ + AT90USB82
+ + AT90USB162
+ + AT90USB646
+ + AT90USB647
+ + AT90USB1286
+ + AT90USB1287
+ + ATmega48P
+ + ATmega88P
+ + ATmega164P (renamed from ATmega164)
+ + ATmega168P
+ + ATmega324P (renamed from ATmega324)
+ + ATmega328P
+ + ATmega644P
+ + ATmega1284P
+ + ATmega165P
+ + ATmega169P
+ + ATmega2560 [patch #4461]
+ + ATmega2561 [patch #4461]
+ + ATmega325P
+ + ATmega3250P
+ + ATmega329P
+ + ATmega3290P
+ + AT90PWM1
+ + ATmega8HVA
+ + ATmega16HVA
+ + ATmega32HVB
+ + AT90PWM216
+ + AT90PWM316
+ + ATtiny43U
+ + ATtiny48
+ + ATtiny88
+ + AT90PWM2B
+ + AT90PWM3B
+
+* New functions:
+
+ strstr_P (Contributed by Werner Boellmann)
+ round
+ lround
+ lrint
+
+* Optimized functions:
+
+ dtostre
+
+*** Changes in avr-libc-1.4.0:
+
+* Major API changes:
+
+ - The INTERRUPT() macro has been deprecated, and it will be
+ removed in a future version. Use __attribute__((interrupt))
+ explicitly if this functionality is really needed.
+
+ - A new ISR() macro has been added, and is now the preferred
+ for to introduce an interrupt service routine. It is
+ equivalent to the old SIGNAL() macro, which might become
+ deprecated in a future version.
+
+ - A new header file, <compat/deprecated.h> has been established.
+ Its purpose is to collect deprecated items from older versions of
+ the library, starting out with the enable_external_int(),
+ timer_enable_int(), and INTERRUPT() macros/functions, as well as
+ the old obsoleted inp/outp/sbi/cbi macros.
+
+ - A new include file subdirectory named "util/" has been created.
+ The files <compat/twi.h>, <avr/crc16.h>, <avr/delay.h>, and
+ <avr/parity.h> have been moved into the new util/ subdirectory.
+
+ - A new set of interrupt vector names has been added, closely
+ matching the names given in the datasheet, and more compatible to
+ other compilers available for the AVR platform. The table of
+ interrupt vector names in the documentation is now automatically
+ generated, and explicitly mentions the MCU type for each vector
+ name.
+
+ - The standard IO facilities API has been enhanced
+
+ . The backend functions put and get that are passed to fdevopen()
+ during the setup of a stream now take the stream itself as an
+ additional argument.
+ By defining the macro __STDIO_FDEVOPEN_COMPAT_12 before
+ including <stdio.h>, an fdevopen() function prototype will be
+ declared that is backwards-compatible with avr-libc version
+ 1.2 and before.
+ . It is possible to tie user data to a stream using
+ fdev_set_udata(), and to retrieve them using fdev_get_udata().
+ Together with the additional argument to the backend functions,
+ these functions can now e.g. keep track of internal user state,
+ or distinguish two different devices using the same backend
+ function.
+ . The get backend function can now return _FDEV_EOF to indicate an
+ end-of-file condition, in addition to _FDEV_ERR for an error
+ condition. This will affect the internal state that can be
+ queried using the standard feof() and ferror() functions.
+ . A new macro fdev_setup_stream() is provided to setup a
+ user-supplied stream without the need to call fdevopen(), and thus
+ without requiring malloc(). A similar macro FDEV_SETUP_STREAM()
+ exists that can be used to initialized a FILE object. The
+ floating-point implementations of vfscanf() and vfprintf() now
+ allocate their conversion buffer on the stack, so they do not need
+ malloc() anymore either.
+
+ - An API has been added to track the library version number. See the
+ documentation of the new header file <avr/version.h>.
+
+* Bugs fixed:
+
+ [#3573] Make local symbols in .S files truely local
+ [#12324] overview: boot_page_write_safe, etc.
+ [#12333] Standard requires libstdc to define vprintf and vscanf
+ [#12495] about Busy-wait delay loops(document)
+ [#12496] about set_sleep_mode() and tiny26/tiny2313
+ [#12735] No support for AT94K devices in sleep.h
+ [#12739] Gcc assumes that target libc provides ffs function
+ [#12775] Possible Bug in sscanf on string end
+ [#13340] Math lib documentation/lib mismatch
+ [#13557] small typo in avr-libc-user-manual-1.2.3
+ [#14224] _delay_ms() not inlining if called more than once in a unit
+ [#14241] 'eeprom_is_ready' is not compiled with ATmega48
+ [#14262] avr-libc documentation error about .init sections
+ [#14266] use __extension__ in avr-libc header files
+ [#14327] wdt_disable() missing a cli
+ [#14378] EEPROM library d'not support at86rf401 device
+ [#14380] configure/make work only in source directory
+ [#14433] Improve documentation of <avr/delay.h>
+ [#14486] some macros from boot.h doesn't compile correctly
+ [#14503] strnlen_P is wrong with classic AVRs
+ [#14798] several IO registers definition issue in header files
+ [#14852] fp pow function broken for negative x
+
+* Other changes:
+
+ [patch #3592] speedup tanh function in libm
+ [patch #3750] Allow passing user data to stdio fdevopen() get and
+ put methods. (This is part of the API changes
+ mentioned above.)
+ [patch #3780] <assert.h> header
+ [patch #3781] add dummy fflush() to <stdio.h>
+ [patch #3782] modernize <stdint.h>
+ [patch #3912] Fix ctype.S linker error due to asm branches out
+ of range
+ [patch #3925] Dallas iButton 8-bit CRC
+ [patch #4087] C99 conformal headers stdint.h and inttypes.h
+ [patch #4505] Unified interrupt vector names in header files
+ [patch #4557] Adds to the fplib usage of MUL instruction
+ in group avr4; avr5 devices
+ [patch #4608] rpm spec file update
+ [patch #4622] unify doc file location in rpms
+
+ - Update the build system to recent versions of autoconf/automake;
+ the old "doconf" and "domake" scripts are gone now, "reconf" has
+ been renamed to "bootstrap".
+ - Update the documentation system to doxygen >= 1.4.1.
+ - Major overhaul of the documentation, new layout of the HTML pages,
+ several clarifications and additions.
+ - Add support for the following new devices (depending on the ability
+ of the compiler/binutils to handle them):
+ . AT90CAN32/64
+ . AT90PWM2(B)/3(B)
+ . ATmega329/3290/649/6490
+ . ATtiny25/45/85
+ . ATmega164/324/644
+ . ATmega640/1280/1281
+ - The library is now compiled with -Os for avr3 and avr5 MCUs (i.e.
+ for those with > 8 KB of ROM); used to be -O3 before.
+
+* New string functions. Contributed by Dmitry Xmelkov.
+
+ ffs
+ ffsl
+ ffsll
+ _FFS (macro)
+
+* Optimized functions.
+
+ misc/itoa
+ misc/ltoa
+ misc/utoa
+ misc/ultoa
+ stdlib/longjmp
+ string/memchr
+ string/memccpy
+ string/strchr
+ string/strrchr
+ string/strsep
+ string/strstr
+
+*** Changes since avr-libc-1.2.4:
+
+* Bugs fixed:
+
+ [no-id] EEPROM handling not working for AT90CAN128 ATmega48 ATmega88
+ ATmega165 ATmega168 ATmega169 ATmega325 ATmega3250 ATmega645
+ ATmega6450
+ [#12646] strtod returns error for valid input (patch#4137)
+ [#13341] Remove ADHSM bit from header files.
+
+* Other improvements:
+
+ [patch#4189] Document replacement for sbi/cbi instructions
+
+* boot.h: implement boot_lock_fuse_bits_get() plus macros for the
+ respective addresses (low/high/ext fuse, lock bits)
+
+
+*** Changes since avr-libc-1.2.3:
+
+* Bugs fixed:
+
+ [no-id] Work around a bug in gas that made the weak symbol __stack
+ fixed inside gcrt1.S (since the assembler already inserted
+ its value).
+ [no-id] Modify the doxygen build system to cope with artefacts from
+ recent versions of doxygen and (pdfelatex-based) LaTeX.
+ [#12033] macros.inc need to be protected from multiple inclusion.
+ [#12040] overview: sbi in FAQ
+ [#12134] ADC register name definitions
+ [#12422] Add new bit definitions for LCDCCR register in iom169.h.
+ [#12448] Fix bit definition for SJW0 in iocan128.h
+ [#12785] Fix documenation for log10() function in math.h.
+ [#12955] Signal name misprints: SIG_COMPERATOR in iom169.h,
+ SIG_EPROM_READY in iotn26.h
+ [#12993] Signal "__EICR" redefined warning ATmega8
+ [#13290] avr/io.h EEAR def is flawed for the Mega48
+ [#13327] Fix bit definition for UCSZ02 in iom325.h, iom3250.h,
+ iom645.h, iom6450.h
+ [#13678] The _wdt_write(value) macro in wdt.h doesn't work with
+ the ATmega325.(also with ATmega3250, ATmega645, ATmega6450,
+ ATmega165).
+
+* demo.c extended for ATmega16
+
+*** Changes since avr-libc-1.2.2:
+
+* Bugs fixed:
+
+ [#11987] sscanf parsing problem : leading zero ignored in %u
+
+*** Changes since avr-libc-1.2.1:
+
+* Bugs fixed:
+
+ [#11805] Fix call to __fp_cosinus in sin().
+ [#11817] Replace SYSCLK with F_CPU in twitest example.
+ [#11868] realloc doesn't work correctly on block at end of freelist
+ when growing
+ [#11898] Change optimisation level for building printf libraries to -Os.
+
+
+*** Changes since avr-libc-1.2.0:
+
+* Bugs fixed:
+
+ [no-id] Prefix all internal global symbols in libm with __fp_ so
+ they do not collide with the application namespace.
+ [#4101] setjmp/longjmp destroy changes in global registers.
+ [#11479] Add missing pin definitions for iotn16.h.
+ [#11486] Put the port bit defintions back in for mega16.
+ [#11494] strtol() return wrong value in the underflow case
+ [#11505] Remove doxygen comment about the deprecated inp/outp items.
+ [#11510] Abstract the change enable bit in wdt.h for mega32.
+ [#11522] Rewrite wdt_disable() to match datasheet algorithm.
+ [#11684] realloc overwrites first to bytes of memory block when shrinking
+ [patch #3618] Optimization strtol(), a little (related to bug #11494).
+ [#11732] Update doc/examples/progmem.c to use the latest API.
+
+* Extend stdio and pmstring APIs:
+
+Implement patch #3516: printf: Handling of argument strings from
+program memory
+
+The %S format can now be used to print strings that are located in
+program-space memory (aka. ROM).
+
+As a prerequisite for this, the function strnlen_P() has been added
+which is similar to strnlen() except that it takes a pointer to a
+program-space string.
+
+*** Changes in avr-libc-1.2:
+
+* Bugs fixed:
+
+ [no-id] Fix TICIE1 value in usb header files.
+ [no-id] Fix bug introduced in fix for bug #7802 (missing parens).
+ [no-id] Move ATtiny2313 and ATtiny13 from avr4 to avr2 (by now).
+ [#2143] malloc() routines chunk smaller than requested
+ [#5454] Inline functions results in undefined reference when optimize level 0
+ is used.
+ [#5799] error(?) in iom162.h
+ [#2233] Documentation issues with inline asm
+ [#6352] Sleep mode for ATmega162, ATmega161, and ATmega8515
+ [#7469] "Problem" by using the library function "boot_lock_bits_set"
+ [#7556] printf and friends improperly handle non-null terminated strings when
+ a %s argument has a precision.
+ [#7802] vfscanf problem with unsigned long (patch #2554)
+ [#7989] dtostrf() destroys string pointer registers?
+ [#8119] _wdt_write macro in wdt.h doesn't work with ATmega169
+ [#8391] Fuse mask in boot.h wrong?
+ NOTE: boot_lock_bits_set() was broken. Please see the new
+ documentation for examples of how the new version works.
+ [#8452] some SFR and bit names in iom169.h are incorrect
+ NOTE: Where possible, the old names are retained to avoid breaking
+ existing code, but the OCR1A and OCR1B names where just plain wrong
+ so they have been changed and the incorrect names (OCRA1 and OCRB1)
+ are undefined.
+ [#8649] sfr_defs.h: missed _SFR_BYTE() in bit_is_set/clear
+ [#9345] Zero-Padding on vfprintf
+ [#10150] Update release versions compatible with avr-libc and instructions.
+ [#10489] Sleep mode for atmega48/88/168 family
+ [#10733] Fix bit identifer ADFR to ADATE in mega64.
+ [#10828] Fix licenses on files to have same BSD license.
+ [#11242] Add the EEARH register definition for the mega48.
+ [#11275] fdevopen() should document its use of malloc()
+ [#11315] Add USART* signal names to match datasheet for mega32 and mega16.
+ [#11405] Add USART* signal names to match datasheet for mega128.
+ [#11418] Add PRR register and bit definitions for mega169.
+ [#11425] sleep.h missing semicolon
+
+* Remove deprecated items:
+ + obsolete headers from the base include directory (moved to the avr/
+ subdirectory long ago)
+ + deprecated macros and functions from
+ . <avr/eeprom.h> (eeprom_rb, eeprom_rw, eeprom_wb),
+ . <avr/io.h> (cbi, sbi, inb, outb, inw, outw, inp, outp, BV),
+ . <avr/pgmspace.h> (PRG_RDB).
+ + . <avr/timer.h> removed completely.
+
+* Moved header files:
+
+ + <avr/ina90.h> moved to <compat/ina90.h>
+ + <avr/twi.h> moved to <compat/twi.h>
+
+* New devices supported:
+
+ + ATmega165
+ + ATmega325
+ + ATmega3250
+ + ATmega645
+ + ATmega6450
+ + ATmega48
+ + ATmega88
+ + ATmega168
+ + ATtiny13
+ + ATtiny2313
+ + AT90CAN128
+
+* Pin names for ports are now consistent for all devices.
+
+* dtostrf() now uses movw where possible
+
+* realloc() has been implemented.
+
+* Extend pgmspace API.
+
+The pgmspace API has had the following macros added to allow accessing of
+unsigned 32-bit values:
+
+ pgm_read_dword_near
+ pgm_read_dword_far
+ pgm_read_dword
+
+* Change boot API.
+
+The boot API internals have changed such that it is not compatible with the
+1.0.x API.
+
+These macros have been changed so that they no longer wait for SPM and EEPROM
+operations to complete. It turns out that doing those checks all the time is
+not needed and tends to bloat the code. Removing the checks allows you to
+write more compact code (see the example in avr/boot.h).
+
+ boot_page_fill
+ boot_page_erase
+ boot_page_write
+ boot_rww_enable
+ boot_lock_bits_set
+
+If you want the old behaviour (1.0.x compatible), use these new macros:
+
+ boot_page_fill_safe
+ boot_page_erase_safe
+ boot_page_write_safe
+ boot_rww_enable_safe
+ boot_lock_bits_set_safe
+
+* Extend eeprom API.
+
+New macro:
+ eeprom_busy_wait
+
+* Extend crc16 API.
+
+New functions:
+ _crc_xmodem_update
+ _crc_ccitt_update
+
+* Extend stdio API.
+
+New functions:
+ vfprintf_P
+ vfscanf_P
+ vsprintf
+ vsprintf_P
+ vsnprintf
+ vsnprintf_P
+
+* Extend malloc API.
+
+Implement realloc().
+
+* Extend delay API (<avr/delay.h>).
+
+Implement inline functions for specifying delays in microseconds, or
+milliseconds directly (based on the macro F_CPU specifying the CPU
+clock frequency).
+
+* Documentation changes:
+
+ + Use newer Doxygen.
+ + Many fixes and added documentation.
+ + Unix-style man pages are generated now when doc generation has been
+ enabled in ./configure
+
+* Optimize slightly strtol and strtoul functions.
+
+* Unified copyright.
+
+All of the avr-libc files are now distributed under a single license.
+All of the authors of the files agreed to this step. The new license
+is a 3-clause simplified ``BSD-style'' license which is believed to be
+fully compatible with the GPL on one hand, yet imposes as minimal
+restrictions as possible for any kind of commercial use in
+applications based on avr-libc.
+
+To build the documentation, doxygen-1.3.4 or newer is strongly recommended.
+
+*** Changes in avr-libc-1.0:
+
+* Move source to cvs repositiory at http://savannah.gnu.org/projects/avr-libc
+
+Anonymous cvs access to the source is now available. There is also a mailing
+list set up for discussion of development of avr-libc.
+
+* License changes.
+
+All the files in the project now are covered by a modified BSD license. This
+allows royalty free use of the library in commerical products. All of the
+public domain files in the project have been switched to the new license and
+copyright given to the contributors of the files.
+
+There were some files taken from GNU GPL'd projects which were removed from
+avr-libc to simplify the licensing. The removed files only supplied alternate
+implementations, so nothing was lost by their removal.
+
+* Requires latest binutils and gcc
+
+Marek did some fairly major work with binutils and gcc to make adding support
+for new devices easier. His changes in those tools required changes to
+avr-libc which make it incompatible with older versions of binutils and gcc.
+Gcc versions >= 3.3 and binutils versions >= 2.13 are required.
+
+* New malloc implementation.
+
+Joerg Wunsch has supplied an improved malloc implementation which is less
+prone to fragmentation.
+
+* Documentation!
+
+Joerg Wunsch and Ted Roth and have been working on using the doxygen program to
+embed documentation comments into source code. Additionally, Harald Kipp's
+inline asm cookbook and Rich Neswold's Avr Tools document have been merged into
+the user manual. The goal is to have a single place for all the documentation
+a user would need to get started developing for AVR microcontrollers using
+the GNU development tool chain.
+
+The latest documentation is available online at
+ http://www.freesoftware.fsf.org/avr-libc/
+
+* I/O registers accessible directly in C expressions
+
+You can now do this in your code:
+ PORTA |= 0x02;
+
+See the "Special Function Registers" documentation for details. This method is
+preferred over the use of the deprecated inp(), inb(), inw(), outp(), outb()
+and outw() functions.
+
+* New devices supported
+
+mega128
+mega169
+mega16
+mega32
+mega64 [untested]
+mega8515 [untested]
+mega8535 [untested]
+tiny26
+76c711
+43usb320
+43usb355
+86rf401
+
+* Improved trigonometrical functions:
+
+Reiner Patommel provided complete rewrites for asin(), atan() and atan2()
+that feature a better (for some argument ranges even much better)
+accuracy than the previous versions. Note that since acos() uses asin(),
+it also benefits from this.
+
+* Incompatibilities with previous version.
+
+The arguments for outb()/outw() have been reversed.
+ (value,port) -> (port,value)
+
+* New pgmspace.h API.
+
+Changed function names and added new functions to read the Program Space
+FLASH. Added new functions to read 16-bit (word) values. The new API should
+also clear up problems with reading data from devices with > 64K of FLASH.
+
+The API now includes:
+pgm_read_byte (maps to the *_near function below)
+pgm_read_word (maps to the *_near function below)
+pgm_read_byte_near
+pgm_read_word_near
+pgm_read_byte_far
+pgm_read_word_far
+
+
+* New bootloader support API.
+
+#include <avr/boot.h>
+
+This provides bootloader support functions to those processors that have
+builtin bootloader support.
+
+* inb / outb / inw / outw / cbi / sbi macros are deprecated.
+
+* New string functions and optimized string functions.
+
+strlcpy (optimized)
+strlcat (optimized)
+strsep (new)
+strtok_r (new)
+strlcat_P (new)
+strlcpy_P (new)
+strncat_P (new)
+
+Contributed by Reiner Patommel with some work on strlcpy, strlcat by
+Eric Weddington.
+
+* New eeprom functions by Artur Lipowski <address@hidden>
+
+eeprom_write_word
+eeprom_write_block
+
+
+*** Changes up to avr-libc-20020203:
+
+See the ChangeLog file up to 2002-02-03 for details.
+
Deleted: tags/avr-libc-1_7_1-release/README
===================================================================
--- trunk/avr-libc/README 2011-02-16 08:44:23 UTC (rev 2213)
+++ tags/avr-libc-1_7_1-release/README 2011-02-16 21:36:51 UTC (rev 2216)
@@ -1,14 +0,0 @@
-This is avr-libc. It is a C library implementation for use with GNU GCC and
GNU binutils for development of programs for Atmel's AVR microcontrollers.
-
-The current branch (1.3), requires the following versions of gcc and binutils:
-
- Tool Minimal Version Preferred Version
- =========== =============== =================
- binutils 2.13 2.16
- gcc 3.3 Latest 3.4.x
-
-For details on installing and using AVR Libc, see the users manual in the
-doc/api directory or online at:
-
- http://savannah.nongnu.org/projects/avr-libc/
-
Copied: tags/avr-libc-1_7_1-release/README (from rev 2214,
trunk/avr-libc/README)
===================================================================
--- tags/avr-libc-1_7_1-release/README (rev 0)
+++ tags/avr-libc-1_7_1-release/README 2011-02-16 21:36:51 UTC (rev 2216)
@@ -0,0 +1,14 @@
+This is avr-libc. It is a C library implementation for use with GNU GCC and
GNU binutils for development of programs for Atmel's AVR microcontrollers.
+
+The current branch (1.3), requires the following versions of gcc and binutils:
+
+ Tool Minimal Version Preferred Version
+ =========== =============== =================
+ binutils 2.13 Latest
+ gcc 3.3 Latest 3.4.x
+
+For details on installing and using AVR Libc, see the users manual in the
+doc/api directory or online at:
+
+ http://savannah.nongnu.org/projects/avr-libc/
+
Deleted: tags/avr-libc-1_7_1-release/configure.ac
===================================================================
--- trunk/avr-libc/configure.ac 2011-02-16 08:44:23 UTC (rev 2213)
+++ tags/avr-libc-1_7_1-release/configure.ac 2011-02-16 21:36:51 UTC (rev
2216)
@@ -1,1324 +0,0 @@
-# -*- Autoconf -*-
-#
-# Copyright (c) 2004, Theodore A. Roth
-# Copyright (c) 2005,2006,2007,2009 Anatoly Sokolov
-# Copyright (c) 2005,2008 Joerg Wunsch
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of the copyright holders nor the names of
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# $Id$
-#
-# Process this file with autoconf to produce a configure script.
-#
-
-dnl library versioning -- modify these on releases
-dnl macro name value description
-m4_define([avr_libc_major], [1])dnl major version
-m4_define([avr_libc_minor], [7])dnl minor version
-m4_define([avr_libc_revision], [1])dnl revision (dot-dot version)
-m4_define([avr_libc_reldate], [20100616])dnl release date
-dnl end of library versioning data
-
-dnl odd minor number marks a development branch, append date to version there
-m4_define([avr_libc_version],
- avr_libc_major.avr_libc_minor.avr_libc_revision)dnl
-m4_define([avr_libc_version_numeric],
- m4_eval(10000 * avr_libc_major + dnl
- 100 * avr_libc_minor + dnl
- avr_libc_revision))dnl
-
-AC_INIT(avr-libc, avr_libc_version, address@hidden)
-
-AC_PREREQ(2.59)
-AC_REVISION($Revision$)
-
-AC_CONFIG_SRCDIR([doc/examples/demo/demo.c])
-AC_CONFIG_HEADER([config.h])
-
-dnl substitute M4 macros into shell variables
-AVR_LIBC_MAJOR=avr_libc_major
-AVR_LIBC_MINOR=avr_libc_minor
-AVR_LIBC_REVISION=avr_libc_revision
-AVR_LIBC_RELDATE=avr_libc_reldate
-AVR_LIBC_VERSION=avr_libc_version
-AVR_LIBC_VERSION_NUMERIC=avr_libc_version_numeric
-dnl ...and trigger Makefile.in substitutions
-AC_SUBST(AVR_LIBC_MAJOR)
-AC_SUBST(AVR_LIBC_MINOR)
-AC_SUBST(AVR_LIBC_REVISION)
-AC_SUBST(AVR_LIBC_RELDATE)
-AC_SUBST(AVR_LIBC_VERSION)
-AC_SUBST(AVR_LIBC_VERSION_NUMERIC)
-
-AC_CANONICAL_BUILD
-AC_CANONICAL_HOST
-
-# See if the user specified '--build=`../config.guess` --host=avr' when
-# running ../configure.
-
-AC_MSG_CHECKING([if configuring for cross compile])
-if test "x${build_alias}" = "x${host_alias}"; then
- if test "x${build_alias}" = "x" ; then
- build_alias='`./config.guess`'
- fi
- AC_MSG_RESULT(no)
- AC_MSG_WARN()
- AC_MSG_WARN(AVR-LIBC must be built using an avr cross-compiler.)
- AC_MSG_WARN(Try configuring with:)
- AC_MSG_WARN("$0 --build=$build_alias --host=avr")
- AC_MSG_WARN()
- AC_MSG_ERROR(aborting configure)
-else
- AC_MSG_RESULT([yes])
-fi
-
-AC_MSG_CHECKING([if target host is avr])
-case "$host" in
- avr* )
- AC_MSG_RESULT([yes])
- ;;
- * )
- AC_MSG_RESULT(no)
- AC_MSG_WARN()
- AC_MSG_WARN(Avr-libc must be built using an avr cross-compiler.)
- AC_MSG_WARN(Try configuring with:)
- AC_MSG_WARN("$0 --build=$build --host=avr")
- AC_MSG_WARN()
- AC_MSG_ERROR(aborting configure)
- ;;
-esac
-
-## TODO: Write a check for GNU Make
-
-dnl The default check whether the C compiler can create an executable
-dnl is inappropriate for us as it requires an existing library.
-AC_NO_EXECUTABLES
-
-dnl Minimum version of Automake is 1.8.
-dnl We don't want the gzip distribution tarball anymore.
-AM_INIT_AUTOMAKE([1.8 dist-bzip2 no-dist-gzip])
-
-# We don't want touse the cflags from the environment since we need control
-# of this when we're building the libs.
-CFLAGS=""
-
-
-dnl This fix is from Newlib in config/override.m4.
-dnl Fix 2.64 cross compile detection for AVR by not trying to compile fopen.
-m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.64],
- [m4_foreach([_GCC_LANG], [C, C++, Fortran, Fortran 77],
- [m4_define([_AC_LANG_IO_PROGRAM(]_GCC_LANG[)],
m4_defn([AC_LANG_PROGRAM(]_GCC_LANG[)]))])])
-
-
-# Checks for programs.
-
-AC_PROG_CC
-AC_CHECK_TOOL(AS, as, as)
-AM_PROG_AS
-AC_PROG_RANLIB
-AC_CHECK_TOOL(AR, ar, ar)
-
-# Make sure that we found the right avr cross-compiler.
-
-case "${CC}" in
- *avr-gcc*) ;;
- *) AC_MSG_ERROR(Wrong C compiler found; check the PATH!) ;;
-esac
-case "${AS}" in
- *avr-as*) ;;
- *) AC_MSG_ERROR(Wrong assembler found; check the PATH!) ;;
-esac
-case "${AR}" in
- *avr-ar*) ;;
- *) AC_MSG_ERROR(Wrong archiver found; check the PATH!) ;;
-esac
-case "${RANLIB}" in
- *avr-ranlib*) ;;
- *) AC_MSG_ERROR(Wrong ranlib found; check the PATH!) ;;
-esac
-
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-
-dnl TODO: Check for various tools used to build the documentation. If anything
-dnl is missing, don't build the docs by default.
-
-dnl Disable building of dox by default since it they may not build properly on
-dnl all systems. This isn't optimal, but how do we work around the user not
-dnl having fig2dev and still build all the formats?
-
-AC_ARG_ENABLE(doc,
-[ --enable-doc build all doc formats (disabled is default)],
-[case "${enableval}" in
- yes) enable_doc=yes ;;
- no) enable_doc=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for global doc option) ;;
- esac], [enable_doc=no])dnl
-dnl Various documentation options. By default, we enable all of them,
-dnl i. e. HTML, Postscript, PDF, and Unix-style man pages.
-AC_ARG_ENABLE(html-doc,
-[ --enable-html-doc build HTML documentation (default)],
-[case "${enableval}" in
- yes) html_doc=yes ;;
- no) html_doc=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for html-doc option) ;;
- esac], [html_doc=yes])dnl
-
-AC_ARG_ENABLE(pdf-doc,
-[ --enable-pdf-doc build PDF documentation (default)],
-[case "${enableval}" in
- yes) pdf_doc=yes ;;
- no) pdf_doc=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for pdf-doc option) ;;
- esac], [pdf_doc=yes])dnl
-
-dnl Man pages are currently not tunable; they'll be built whenever
-dnl the HTML documentation is built. However, it can be configured
-dnl whether the result is about to be installed or not.
-AC_ARG_ENABLE(man-doc,
-[ --enable-man-doc build Unix-style manual pages (default)],
-[case "${enableval}" in
- yes) man_doc=yes ;;
- no) man_doc=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for man-doc option) ;;
- esac], [man_doc=yes])dnl
-
-AC_ARG_ENABLE(versioned-doc,
-[ --enable-versioned-doc install docs in directory with version name
(default)],
-[case "${enableval}" in
- yes) versioned_doc=yes ;;
- no) versioned_doc=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for versioned-doc option) ;;
- esac], [versioned_doc=yes])dnl
-
-dnl troth/2002-07-12: The CHECK_DOXYGEN macro should be moved to a config
-dnl dir. I put it here until I figure out how to integrate the config dir.
-
-dnl
-dnl @synopsis CHECK_DOXYGEN
-dnl
-dnl This macro checks if doxygen is installed on the build system
-dnl
-dnl @version Id: check_doxygen.m4,v 1.2 2002/02/10 23:22:40 troth Exp
-dnl @author Theodore A. Roth <address@hidden>
-dnl
-AC_DEFUN([CHECK_DOXYGEN],[dnl
-dnl
-AC_MSG_CHECKING([for doxygen])
-dox_ver=`doxygen --version 2>/dev/null`
-if test "x$dox_ver" = "x"; then
- AC_MSG_RESULT(no)
-else
- # FIXME: should also check for dox_ver >= 1.4.1
- AC_MSG_RESULT(yes)
- if test "$pdf_doc" = "yes"; then
- AC_MSG_NOTICE([Enabling PDF docs])
- TARGET_DOX_PDF=dox-pdf
- INSTALL_DOX_PDF=install-dox-pdf
- fi
- if test "$html_doc" = "yes"; then
- AC_MSG_NOTICE([Enabling HTML docs])
- TARGET_DOX_HTML=dox-html
- INSTALL_DOX_HTML=install-dox-html
- fi
-dnl The creation of man pages is a side-effect of the HTML
-dnl generation, so a different target is only needed for installation.
- if test "$man_doc" = "yes"; then
- AC_MSG_NOTICE([Enabling man pages])
- TARGET_DOX_HTML=dox-html
- INSTALL_DOX_MAN=install-dox-man
- fi
-fi
-dnl
-AC_SUBST(TARGET_DOX_PDF)
-AC_SUBST(TARGET_DOX_HTML)
-AC_SUBST(INSTALL_DOX_PDF)
-AC_SUBST(INSTALL_DOX_HTML)
-AC_SUBST(INSTALL_DOX_MAN)
-])dnl
-
-CHECK_DOXYGEN
-
-dnl
-dnl @synopsis CHECK_PNG_UTILS
-dnl
-dnl This macro checks if pngtopnm and pnmtopng are installed. If they are not
-dnl installed we just fake it with "cat".
-dnl
-dnl We use these in the dox to insert transparency into the png images as such:
-dnl
-dnl $ pngtopnm foo.png > tmp.pnm
-dnl $ pnmtopng -transparent white tmp.pnm > foo.png
-dnl
-dnl @version
-dnl @author Theodore A. Roth <address@hidden> and Eric B. Weddington
<address@hidden>
-dnl
-AC_DEFUN([CHECK_PNG_UTILS],[dnl
-dnl
-AC_MSG_CHECKING([for pngtopnm])
-has_pngtopnm=`pngtopnm --version 2>&1 | grep -c -i Version`
-if test "$has_pngtopnm" = "1"; then
- AC_MSG_RESULT(yes)
- PNGTOPNM="pngtopnm"
-else
- AC_MSG_RESULT(no)
- PNGTOPNM="cat"
-fi
-dnl
-AC_MSG_CHECKING([for pnmtopng])
-has_pnmtopng=`pnmtopng --version 2>&1 | grep -c -i Version`
-if test "$has_pnmtopng" = "1"; then
- AC_MSG_RESULT(yes)
- PNMTOPNG="pnmtopng"
-else
- AC_MSG_RESULT(no)
- PNMTOPNG="cat"
- PNGTOPNM="cat"
-fi
-AC_SUBST(PNGTOPNM)
-AC_SUBST(PNMTOPNG)
-])dnl
-
-CHECK_PNG_UTILS
-
-if test "$versioned_doc" = "yes"; then
- DOC_INST_DIR='${DESTDIR}${datadir}/doc/avr-libc-$(VERSION)'
- AVR_LIBC_USER_MANUAL="avr-libc-user-manual-${VERSION}"
-else
- DOC_INST_DIR='${DESTDIR}${datadir}/doc/avr-libc'
- AVR_LIBC_USER_MANUAL="avr-libc-user-manual"
-fi
-
-dnl We only want to build the docs if the user has passed
-dnl "--enable-doc" to configure.
-if test "$enable_doc" = "yes"; then
- DOCSDIR='api'
-else
- DOCSDIR=''
-fi
-
-AC_SUBST(DOCSDIR)
-AC_SUBST(AVR_LIBC_USER_MANUAL)
-AC_SUBST(DOC_INST_DIR)
-
-FNO_JUMP_TABLES=""
-AC_SUBST(FNO_JUMP_TABLES)
-
-HAS_DELAY_CYCLES=0
-AC_SUBST(HAS_DELAY_CYCLES)
-
-AC_DEFUN(
- CHECK_MNO_TABLEJUMP,
- [
- old_CC=${CC}
- old_CFLAGS=${CFLAGS}
- CFLAGS="-mno-tablejump"
- CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
- AC_MSG_CHECKING(whether ${CC} supports -mno-tablejump)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE([],[])],
- [has_mno_tablejump=yes],
- [has_mno_tablejump=no]
- )
- if test "x$has_mno_tablejump" = "xyes"
- then
- FNO_JUMP_TABLES="-mno-tablejump"
- fi
- AC_MSG_RESULT($has_mno_tablejump)
- CC=${old_CC}
- CFLAGS=${old_CFLAGS}
- ]
-)
-
-AC_DEFUN(
- CHECK_FNO_JUMP_TABLES,
- [
- old_CC=${CC}
- old_CFLAGS=${CFLAGS}
- CFLAGS="-fno-jump-tables"
- CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
- AC_MSG_CHECKING(whether ${CC} supports -fno-jump-tables)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE([],[])],
- [has_fno_jump_tables=yes],
- [has_fno_jump_tables=no]
- )
- if test "x$has_fno_jump_tables" = "xyes"
- then
- FNO_JUMP_TABLES="-fno-jump-tables"
- fi
- AC_MSG_RESULT($has_fno_jump_tables)
- CC=${old_CC}
- CFLAGS=${old_CFLAGS}
- ]
-)
-
-AC_DEFUN(
- CHECK_BUILTIN_DELAY_CYCLES,
- [
- CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
- AC_MSG_CHECKING(whether ${CC} supports __builtin_avr_delay_cycles)
- echo "extern void __builtin_avr_delay_cycles(unsigned long);\
- int main(void) { __builtin_avr_delay_cycles(42); return 0; }" |\
- ${CC} -S -xc -o- - |\
- grep __builtin_avr_delay_cycles >/dev/null
- if test "$?" != "0"
- then
- HAS_DELAY_CYCLES=1
- has_delay_cycles="yes"
- else
- has_delay_cycles="no"
- fi
- AC_MSG_RESULT($has_delay_cycles)
- CC=${old_CC}
- ]
-)
-
-CHECK_MNO_TABLEJUMP
-CHECK_FNO_JUMP_TABLES
-CHECK_BUILTIN_DELAY_CYCLES
-
-dnl Some devices are only handled by newer version of gcc. This macro lets us
-dnl probe to see if the installed avr-gcc supports a questionable device.
-AC_DEFUN(
- CHECK_AVR_DEVICE,
- [
- old_CC=${CC}
- old_CFLAGS=${CFLAGS}
- CFLAGS="-mmcu=$1"
- CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
- AC_MSG_CHECKING(if ${CC} has support for $1)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE([],[])],
- [has_dev_support=yes],
- [has_dev_support=no]
- )
- if test "x$has_dev_support" = "xyes"
- then
- HAS_$1=yes
- fi
- AC_MSG_RESULT($has_dev_support)
- CC=${old_CC}
- CFLAGS=${old_CFLAGS}
- ]
-)
-
-
-# avr1
-AM_CONDITIONAL(HAS_avr1, true)
-AM_CONDITIONAL(HAS_at90s1200, true)
-AM_CONDITIONAL(HAS_attiny11, true)
-AM_CONDITIONAL(HAS_attiny12, true)
-AM_CONDITIONAL(HAS_attiny15, true)
-AM_CONDITIONAL(HAS_attiny28, true)
-
-
-# avr2
-AM_CONDITIONAL(HAS_avr2, true)
-AM_CONDITIONAL(HAS_at90s2313, true)
-AM_CONDITIONAL(HAS_at90s2323, true)
-AM_CONDITIONAL(HAS_at90s2333, true)
-AM_CONDITIONAL(HAS_at90s2343, true)
-AM_CONDITIONAL(HAS_at90s4414, true)
-AM_CONDITIONAL(HAS_at90s4433, true)
-AM_CONDITIONAL(HAS_at90s4434, true)
-AM_CONDITIONAL(HAS_at90s8515, true)
-AM_CONDITIONAL(HAS_at90c8534, true)
-AM_CONDITIONAL(HAS_at90s8535, true)
-AM_CONDITIONAL(HAS_attiny22, true)
-AM_CONDITIONAL(HAS_attiny26, true)
-
-
-#avr25
-CHECK_AVR_DEVICE(avr25)
-AM_CONDITIONAL(HAS_avr25, test "x$HAS_avr25" = "xyes")
-
-CHECK_AVR_DEVICE(ata6289)
-AM_CONDITIONAL(HAS_ata6289, test "x$HAS_ata6289" = "xyes")
-
-CHECK_AVR_DEVICE(attiny13)
-AM_CONDITIONAL(HAS_attiny13, test "x$HAS_attiny13" = "xyes")
-
-CHECK_AVR_DEVICE(attiny13a)
-AM_CONDITIONAL(HAS_attiny13a, test "x$HAS_attiny13a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny2313)
-AM_CONDITIONAL(HAS_attiny2313, test "x$HAS_attiny2313" = "xyes")
-
-CHECK_AVR_DEVICE(attiny2313a)
-AM_CONDITIONAL(HAS_attiny2313a, test "x$HAS_attiny2313a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny24)
-AM_CONDITIONAL(HAS_attiny24, test "x$HAS_attiny24" = "xyes")
-
-CHECK_AVR_DEVICE(attiny24a)
-AM_CONDITIONAL(HAS_attiny24a, test "x$HAS_attiny24a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny25)
-AM_CONDITIONAL(HAS_attiny25, test "x$HAS_attiny25" = "xyes")
-
-CHECK_AVR_DEVICE(attiny261)
-AM_CONDITIONAL(HAS_attiny261, test "x$HAS_attiny261" = "xyes")
-
-CHECK_AVR_DEVICE(attiny261a)
-AM_CONDITIONAL(HAS_attiny261a, test "x$HAS_attiny261a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny43u)
-AM_CONDITIONAL(HAS_attiny43u, test "x$HAS_attiny43u" = "xyes")
-
-CHECK_AVR_DEVICE(attiny4313)
-AM_CONDITIONAL(HAS_attiny4313, test "x$HAS_attiny4313" = "xyes")
-
-CHECK_AVR_DEVICE(attiny44)
-AM_CONDITIONAL(HAS_attiny44, test "x$HAS_attiny44" = "xyes")
-
-CHECK_AVR_DEVICE(attiny44a)
-AM_CONDITIONAL(HAS_attiny44a, test "x$HAS_attiny44a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny45)
-AM_CONDITIONAL(HAS_attiny45, test "x$HAS_attiny45" = "xyes")
-
-CHECK_AVR_DEVICE(attiny461)
-AM_CONDITIONAL(HAS_attiny461, test "x$HAS_attiny461" = "xyes")
-
-CHECK_AVR_DEVICE(attiny461a)
-AM_CONDITIONAL(HAS_attiny461a, test "x$HAS_attiny461a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny48)
-AM_CONDITIONAL(HAS_attiny48, test "x$HAS_attiny48" = "xyes")
-
-CHECK_AVR_DEVICE(attiny84)
-AM_CONDITIONAL(HAS_attiny84, test "x$HAS_attiny84" = "xyes")
-
-CHECK_AVR_DEVICE(attiny84a)
-AM_CONDITIONAL(HAS_attiny84a, test "x$HAS_attiny84a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny85)
-AM_CONDITIONAL(HAS_attiny85, test "x$HAS_attiny85" = "xyes")
-
-CHECK_AVR_DEVICE(attiny861)
-AM_CONDITIONAL(HAS_attiny861, test "x$HAS_attiny861" = "xyes")
-
-CHECK_AVR_DEVICE(attiny861a)
-AM_CONDITIONAL(HAS_attiny861a, test "x$HAS_attiny861a" = "xyes")
-
-CHECK_AVR_DEVICE(attiny87)
-AM_CONDITIONAL(HAS_attiny87, test "x$HAS_attiny87" = "xyes")
-
-CHECK_AVR_DEVICE(attiny88)
-AM_CONDITIONAL(HAS_attiny88, test "x$HAS_attiny88" = "xyes")
-
-CHECK_AVR_DEVICE(at86rf401)
-AM_CONDITIONAL(HAS_at86rf401, test "x$HAS_at86rf401" = "xyes")
-
-
-# avr3
-AM_CONDITIONAL(HAS_avr3, true)
-AM_CONDITIONAL(HAS_at43usb320, true)
-AM_CONDITIONAL(HAS_at43usb355, true)
-AM_CONDITIONAL(HAS_at76c711, true)
-
-#avr31
-CHECK_AVR_DEVICE(avr31)
-AM_CONDITIONAL(HAS_avr31, test "x$HAS_avr31" = "xyes")
-
-AM_CONDITIONAL(HAS_atmega103, true)
-
-
-#avr35
-CHECK_AVR_DEVICE(avr35)
-AM_CONDITIONAL(HAS_avr35, test "x$HAS_avr35" = "xyes")
-
-CHECK_AVR_DEVICE(at90usb82)
-AM_CONDITIONAL(HAS_at90usb82, test "x$HAS_at90usb82" = "xyes")
-
-CHECK_AVR_DEVICE(at90usb162)
-AM_CONDITIONAL(HAS_at90usb162, test "x$HAS_at90usb162" = "xyes")
-
-CHECK_AVR_DEVICE(atmega8u2)
-AM_CONDITIONAL(HAS_atmega8u2, test "x$HAS_atmega8u2" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16u2)
-AM_CONDITIONAL(HAS_atmega16u2, test "x$HAS_atmega16u2" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32u2)
-AM_CONDITIONAL(HAS_atmega32u2, test "x$HAS_atmega32u2" = "xyes")
-
-CHECK_AVR_DEVICE(attiny167)
-AM_CONDITIONAL(HAS_attiny167, test "x$HAS_attiny167" = "xyes")
-
-
-# avr4
-AM_CONDITIONAL(HAS_avr4, true)
-AM_CONDITIONAL(HAS_atmega8, true)
-AM_CONDITIONAL(HAS_atmega8515, true)
-AM_CONDITIONAL(HAS_atmega8535, true)
-
-CHECK_AVR_DEVICE(atmega48)
-AM_CONDITIONAL(HAS_atmega48, test "x$HAS_atmega48" = "xyes")
-
-CHECK_AVR_DEVICE(atmega48a)
-AM_CONDITIONAL(HAS_atmega48a, test "x$HAS_atmega48a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega48p)
-AM_CONDITIONAL(HAS_atmega48p, test "x$HAS_atmega48p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega88)
-AM_CONDITIONAL(HAS_atmega88, test "x$HAS_atmega88" = "xyes")
-
-CHECK_AVR_DEVICE(atmega88a)
-AM_CONDITIONAL(HAS_atmega88a, test "x$HAS_atmega88a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega88p)
-AM_CONDITIONAL(HAS_atmega88p, test "x$HAS_atmega88p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega88pa)
-AM_CONDITIONAL(HAS_atmega88pa, test "x$HAS_atmega88pa" = "xyes")
-
-CHECK_AVR_DEVICE(atmega8hva)
-AM_CONDITIONAL(HAS_atmega8hva, test "x$HAS_atmega8hva" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm1)
-AM_CONDITIONAL(HAS_at90pwm1, test "x$HAS_at90pwm1" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm2)
-AM_CONDITIONAL(HAS_at90pwm2, test "x$HAS_at90pwm2" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm2b)
-AM_CONDITIONAL(HAS_at90pwm2b, test "x$HAS_at90pwm2b" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm3)
-AM_CONDITIONAL(HAS_at90pwm3, test "x$HAS_at90pwm3" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm3b)
-AM_CONDITIONAL(HAS_at90pwm3b, test "x$HAS_at90pwm3b" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm81)
-AM_CONDITIONAL(HAS_at90pwm81, test "x$HAS_at90pwm81" = "xyes")
-
-
-# avr5
-AM_CONDITIONAL(HAS_avr5, true)
-
-CHECK_AVR_DEVICE(at90can32)
-AM_CONDITIONAL(HAS_at90can32, test "x$HAS_at90can32" = "xyes")
-
-CHECK_AVR_DEVICE(at90can64)
-AM_CONDITIONAL(HAS_at90can64, test "x$HAS_at90can64" = "xyes")
-
-CHECK_AVR_DEVICE(at90scr100)
-AM_CONDITIONAL(HAS_at90scr100, test "x$HAS_at90scr100" = "xyes")
-
-CHECK_AVR_DEVICE(at90usb646)
-AM_CONDITIONAL(HAS_at90usb646, test "x$HAS_at90usb646" = "xyes")
-
-CHECK_AVR_DEVICE(at90usb647)
-AM_CONDITIONAL(HAS_at90usb647, test "x$HAS_at90usb647" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm316)
-AM_CONDITIONAL(HAS_at90pwm316, test "x$HAS_at90pwm316" = "xyes")
-
-CHECK_AVR_DEVICE(at90pwm216)
-AM_CONDITIONAL(HAS_at90pwm216, test "x$HAS_at90pwm216" = "xyes")
-
-CHECK_AVR_DEVICE(at94k)
-AM_CONDITIONAL(HAS_at94k, test "x$HAS_at94k" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16)
-AM_CONDITIONAL(HAS_atmega16, test "x$HAS_atmega16" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16a)
-AM_CONDITIONAL(HAS_atmega16a, test "x$HAS_atmega16a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega161)
-AM_CONDITIONAL(HAS_atmega161, test "x$HAS_atmega161" = "xyes")
-
-CHECK_AVR_DEVICE(atmega162)
-AM_CONDITIONAL(HAS_atmega162, test "x$HAS_atmega162" = "xyes")
-
-CHECK_AVR_DEVICE(atmega163)
-AM_CONDITIONAL(HAS_atmega163, test "x$HAS_atmega163" = "xyes")
-
-CHECK_AVR_DEVICE(atmega164a)
-AM_CONDITIONAL(HAS_atmega164a, test "x$HAS_atmega164a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega164p)
-AM_CONDITIONAL(HAS_atmega164p, test "x$HAS_atmega164p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega165)
-AM_CONDITIONAL(HAS_atmega165, test "x$HAS_atmega165" = "xyes")
-
-CHECK_AVR_DEVICE(atmega165a)
-AM_CONDITIONAL(HAS_atmega165a, test "x$HAS_atmega165a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega165p)
-AM_CONDITIONAL(HAS_atmega165p, test "x$HAS_atmega165p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega168)
-AM_CONDITIONAL(HAS_atmega168, test "x$HAS_atmega168" = "xyes")
-
-CHECK_AVR_DEVICE(atmega168a)
-AM_CONDITIONAL(HAS_atmega168a, test "x$HAS_atmega168a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega168p)
-AM_CONDITIONAL(HAS_atmega168p, test "x$HAS_atmega168p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega169)
-AM_CONDITIONAL(HAS_atmega169, test "x$HAS_atmega169" = "xyes")
-
-CHECK_AVR_DEVICE(atmega169a)
-AM_CONDITIONAL(HAS_atmega169a, test "x$HAS_atmega169a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega169p)
-AM_CONDITIONAL(HAS_atmega169p, test "x$HAS_atmega169p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega169pa)
-AM_CONDITIONAL(HAS_atmega169pa, test "x$HAS_atmega169pa" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16hva)
-AM_CONDITIONAL(HAS_atmega16hva, test "x$HAS_atmega16hva" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16hva2)
-AM_CONDITIONAL(HAS_atmega16hva2, test "x$HAS_atmega16hva2" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16hvb)
-AM_CONDITIONAL(HAS_atmega16hvb, test "x$HAS_atmega16hvb" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16hvbrevb)
-AM_CONDITIONAL(HAS_atmega16hvbrevb, test "x$HAS_atmega16hvbrevb" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16m1)
-AM_CONDITIONAL(HAS_atmega16m1, test "x$HAS_atmega16m1" = "xyes")
-
-CHECK_AVR_DEVICE(atmega16u4)
-AM_CONDITIONAL(HAS_atmega16u4, test "x$HAS_atmega16u4" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32)
-AM_CONDITIONAL(HAS_atmega32, test "x$HAS_atmega32" = "xyes")
-
-CHECK_AVR_DEVICE(atmega323)
-AM_CONDITIONAL(HAS_atmega323, test "x$HAS_atmega323" = "xyes")
-
-CHECK_AVR_DEVICE(atmega324a)
-AM_CONDITIONAL(HAS_atmega324a, test "x$HAS_atmega324a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega324p)
-AM_CONDITIONAL(HAS_atmega324p, test "x$HAS_atmega324p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega324pa)
-AM_CONDITIONAL(HAS_atmega324pa, test "x$HAS_atmega324pa" = "xyes")
-
-CHECK_AVR_DEVICE(atmega325)
-AM_CONDITIONAL(HAS_atmega325, test "x$HAS_atmega325" = "xyes")
-
-CHECK_AVR_DEVICE(atmega325a)
-AM_CONDITIONAL(HAS_atmega325a, test "x$HAS_atmega325a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega325p)
-AM_CONDITIONAL(HAS_atmega325p, test "x$HAS_atmega325p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega3250)
-AM_CONDITIONAL(HAS_atmega3250, test "x$HAS_atmega3250" = "xyes")
-
-CHECK_AVR_DEVICE(atmega3250a)
-AM_CONDITIONAL(HAS_atmega3250a, test "x$HAS_atmega3250a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega3250p)
-AM_CONDITIONAL(HAS_atmega3250p, test "x$HAS_atmega3250p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega328)
-AM_CONDITIONAL(HAS_atmega328, test "x$HAS_atmega328" = "xyes")
-
-CHECK_AVR_DEVICE(atmega328p)
-AM_CONDITIONAL(HAS_atmega328p, test "x$HAS_atmega328p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega329)
-AM_CONDITIONAL(HAS_atmega329, test "x$HAS_atmega329" = "xyes")
-
-CHECK_AVR_DEVICE(atmega329a)
-AM_CONDITIONAL(HAS_atmega329a, test "x$HAS_atmega329a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega329p)
-AM_CONDITIONAL(HAS_atmega329p, test "x$HAS_atmega329p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega329pa)
-AM_CONDITIONAL(HAS_atmega329pa, test "x$HAS_atmega329pa" = "xyes")
-
-CHECK_AVR_DEVICE(atmega3290)
-AM_CONDITIONAL(HAS_atmega3290, test "x$HAS_atmega3290" = "xyes")
-
-CHECK_AVR_DEVICE(atmega3290a)
-AM_CONDITIONAL(HAS_atmega3290a, test "x$HAS_atmega3290a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega3290p)
-AM_CONDITIONAL(HAS_atmega3290p, test "x$HAS_atmega3290p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32c1)
-AM_CONDITIONAL(HAS_atmega32c1, test "x$HAS_atmega32c1" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32hvb)
-AM_CONDITIONAL(HAS_atmega32hvb, test "x$HAS_atmega32hvb" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32hvbrevb)
-AM_CONDITIONAL(HAS_atmega32hvbrevb, test "x$HAS_atmega32hvbrevb" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32m1)
-AM_CONDITIONAL(HAS_atmega32m1, test "x$HAS_atmega32m1" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32u4)
-AM_CONDITIONAL(HAS_atmega32u4, test "x$HAS_atmega32u4" = "xyes")
-
-CHECK_AVR_DEVICE(atmega32u6)
-AM_CONDITIONAL(HAS_atmega32u6, test "x$HAS_atmega32u6" = "xyes")
-
-CHECK_AVR_DEVICE(atmega406)
-AM_CONDITIONAL(HAS_atmega406, test "x$HAS_atmega406" = "xyes")
-
-CHECK_AVR_DEVICE(atmega64)
-AM_CONDITIONAL(HAS_atmega64, test "x$HAS_atmega64" = "xyes")
-
-CHECK_AVR_DEVICE(atmega640)
-AM_CONDITIONAL(HAS_atmega640, test "x$HAS_atmega640" = "xyes")
-
-CHECK_AVR_DEVICE(atmega644)
-AM_CONDITIONAL(HAS_atmega644, test "x$HAS_atmega644" = "xyes")
-
-CHECK_AVR_DEVICE(atmega644a)
-AM_CONDITIONAL(HAS_atmega644a, test "x$HAS_atmega644a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega644p)
-AM_CONDITIONAL(HAS_atmega644p, test "x$HAS_atmega644p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega644pa)
-AM_CONDITIONAL(HAS_atmega644pa, test "x$HAS_atmega644pa" = "xyes")
-
-CHECK_AVR_DEVICE(atmega645)
-AM_CONDITIONAL(HAS_atmega645, test "x$HAS_atmega645" = "xyes")
-
-CHECK_AVR_DEVICE(atmega645a)
-AM_CONDITIONAL(HAS_atmega645a, test "x$HAS_atmega645a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega645p)
-AM_CONDITIONAL(HAS_atmega645p, test "x$HAS_atmega645p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega6450)
-AM_CONDITIONAL(HAS_atmega6450, test "x$HAS_atmega6450" = "xyes")
-
-CHECK_AVR_DEVICE(atmega6450a)
-AM_CONDITIONAL(HAS_atmega6450a, test "x$HAS_atmega6450a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega6450p)
-AM_CONDITIONAL(HAS_atmega6450p, test "x$HAS_atmega6450p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega649)
-AM_CONDITIONAL(HAS_atmega649, test "x$HAS_atmega649" = "xyes")
-
-CHECK_AVR_DEVICE(atmega649a)
-AM_CONDITIONAL(HAS_atmega649a, test "x$HAS_atmega649a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega649p)
-AM_CONDITIONAL(HAS_atmega649p, test "x$HAS_atmega649p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega6490)
-AM_CONDITIONAL(HAS_atmega6490, test "x$HAS_atmega6490" = "xyes")
-
-CHECK_AVR_DEVICE(atmega6490a)
-AM_CONDITIONAL(HAS_atmega6490a, test "x$HAS_atmega6490a" = "xyes")
-
-CHECK_AVR_DEVICE(atmega6490p)
-AM_CONDITIONAL(HAS_atmega6490p, test "x$HAS_atmega6490p" = "xyes")
-
-CHECK_AVR_DEVICE(atmega64c1)
-AM_CONDITIONAL(HAS_atmega64c1, test "x$HAS_atmega64c1" = "xyes")
-
-CHECK_AVR_DEVICE(atmega64hve)
-AM_CONDITIONAL(HAS_atmega64hve, test "x$HAS_atmega64hve" = "xyes")
-
-CHECK_AVR_DEVICE(atmega64m1)
-AM_CONDITIONAL(HAS_atmega64m1, test "x$HAS_atmega64m1" = "xyes")
-
-CHECK_AVR_DEVICE(atmega128rfa1)
-AM_CONDITIONAL(HAS_atmega128rfa1, test "x$HAS_atmega128rfa1" = "xyes")
-
-CHECK_AVR_DEVICE(m3000)
-AM_CONDITIONAL(HAS_m3000, test "x$HAS_m3000" = "xyes")
-
-
-
-#avr51
-CHECK_AVR_DEVICE(avr51)
-AM_CONDITIONAL(HAS_avr51, test "x$HAS_avr51" = "xyes")
-
-AM_CONDITIONAL(HAS_atmega128, true)
-
-CHECK_AVR_DEVICE(atmega1280)
-AM_CONDITIONAL(HAS_atmega1280, test "x$HAS_atmega1280" = "xyes")
-
-CHECK_AVR_DEVICE(atmega1281)
-AM_CONDITIONAL(HAS_atmega1281, test "x$HAS_atmega1281" = "xyes")
-
-CHECK_AVR_DEVICE(atmega1284p)
-AM_CONDITIONAL(HAS_atmega1284p, test "x$HAS_atmega1284p" = "xyes")
-
-CHECK_AVR_DEVICE(at90can128)
-AM_CONDITIONAL(HAS_at90can128, test "x$HAS_at90can128" = "xyes")
-
-CHECK_AVR_DEVICE(at90usb1286)
-AM_CONDITIONAL(HAS_at90usb1286, test "x$HAS_at90usb1286" = "xyes")
-
-CHECK_AVR_DEVICE(at90usb1287)
-AM_CONDITIONAL(HAS_at90usb1287, test "x$HAS_at90usb1287" = "xyes")
-
-
-# avr6
-CHECK_AVR_DEVICE(avr6)
-AM_CONDITIONAL(HAS_avr6, test "x$HAS_avr6" = "xyes")
-
-CHECK_AVR_DEVICE(atmega2560)
-AM_CONDITIONAL(HAS_atmega2560, test "x$HAS_atmega2560" = "xyes")
-
-CHECK_AVR_DEVICE(atmega2561)
-AM_CONDITIONAL(HAS_atmega2561, test "x$HAS_atmega2561" = "xyes")
-
-
-# avrxmega2
-CHECK_AVR_DEVICE(avrxmega2)
-AM_CONDITIONAL(HAS_avrxmega2, test "x$HAS_avrxmega2" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega16a4)
-AM_CONDITIONAL(HAS_atxmega16a4, test "x$HAS_atxmega16a4" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega16d4)
-AM_CONDITIONAL(HAS_atxmega16d4, test "x$HAS_atxmega16d4" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega32a4)
-AM_CONDITIONAL(HAS_atxmega32a4, test "x$HAS_atxmega32a4" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega32d4)
-AM_CONDITIONAL(HAS_atxmega32d4, test "x$HAS_atxmega32d4" = "xyes")
-
-
-# avrxmega4
-CHECK_AVR_DEVICE(avrxmega4)
-AM_CONDITIONAL(HAS_avrxmega4, test "x$HAS_avrxmega4" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega64a3)
-AM_CONDITIONAL(HAS_atxmega64a3, test "x$HAS_atxmega64a3" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega64d3)
-AM_CONDITIONAL(HAS_atxmega64d3, test "x$HAS_atxmega64d3" = "xyes")
-
-
-# avrxmega5
-CHECK_AVR_DEVICE(avrxmega5)
-AM_CONDITIONAL(HAS_avrxmega5, test "x$HAS_avrxmega5" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega64a1)
-AM_CONDITIONAL(HAS_atxmega64a1, test "x$HAS_atxmega64a1" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega64a1u)
-AM_CONDITIONAL(HAS_atxmega64a1u, test "x$HAS_atxmega64a1u" = "xyes")
-
-
-# avrxmega6
-CHECK_AVR_DEVICE(avrxmega6)
-AM_CONDITIONAL(HAS_avrxmega6, test "x$HAS_avrxmega6" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega128a3)
-AM_CONDITIONAL(HAS_atxmega128a3, test "x$HAS_atxmega128a3" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega128d3)
-AM_CONDITIONAL(HAS_atxmega128d3, test "x$HAS_atxmega128d3" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega192a3)
-AM_CONDITIONAL(HAS_atxmega192a3, test "x$HAS_atxmega192a3" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega192d3)
-AM_CONDITIONAL(HAS_atxmega192d3, test "x$HAS_atxmega192d3" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega256a3)
-AM_CONDITIONAL(HAS_atxmega256a3, test "x$HAS_atxmega256a3" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega256a3b)
-AM_CONDITIONAL(HAS_atxmega256a3b, test "x$HAS_atxmega256a3b" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega256d3)
-AM_CONDITIONAL(HAS_atxmega256d3, test "x$HAS_atxmega256d3" = "xyes")
-
-
-# avrxmega7
-CHECK_AVR_DEVICE(avrxmega7)
-AM_CONDITIONAL(HAS_avrxmega7, test "x$HAS_avrxmega7" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega128a1)
-AM_CONDITIONAL(HAS_atxmega128a1, test "x$HAS_atxmega128a1" = "xyes")
-
-CHECK_AVR_DEVICE(atxmega128a1u)
-AM_CONDITIONAL(HAS_atxmega128a1u, test "x$HAS_atxmega128a1u" = "xyes")
-
-
-# avrtiny10
-CHECK_AVR_DEVICE(avrtiny10)
-AM_CONDITIONAL(HAS_avrtiny10, test "x$HAS_avrtiny10" = "xyes")
-
-CHECK_AVR_DEVICE(attiny4)
-AM_CONDITIONAL(HAS_attiny4, test "x$HAS_attiny4" = "xyes")
-
-CHECK_AVR_DEVICE(attiny5)
-AM_CONDITIONAL(HAS_attiny5, test "x$HAS_attiny5" = "xyes")
-
-CHECK_AVR_DEVICE(attiny9)
-AM_CONDITIONAL(HAS_attiny9, test "x$HAS_attiny9" = "xyes")
-
-CHECK_AVR_DEVICE(attiny10)
-AM_CONDITIONAL(HAS_attiny10, test "x$HAS_attiny10" = "xyes")
-
-CHECK_AVR_DEVICE(attiny20)
-AM_CONDITIONAL(HAS_attiny20, test "x$HAS_attiny20" = "xyes")
-
-CHECK_AVR_DEVICE(attiny40)
-AM_CONDITIONAL(HAS_attiny40, test "x$HAS_attiny40" = "xyes")
-
-
-
-
-# Generate all files from *.in sources.
-
-AC_CONFIG_FILES([
- Makefile
- avr-libc.spec
- avr/Makefile
- avr/lib/Makefile
- common/Makefile
- crt1/Makefile
- doc/Makefile
- doc/api/Makefile
- doc/examples/Makefile
- include/Makefile
- include/avr/Makefile
- include/avr/builtins.h
- include/compat/Makefile
- include/util/Makefile
- include/util/delay.h
- libc/Makefile
- libc/misc/Makefile
- libc/pmstring/Makefile
- libc/stdio/Makefile
- libc/stdlib/Makefile
- libc/string/Makefile
- libm/Makefile
- libm/fplib/Makefile
- scripts/Makefile
- devtools/Makefile
-])
-
-#avr1 and avr2
-AC_CONFIG_FILES([
- avr/lib/avr2/Makefile
- avr/lib/avr2/at90s1200/Makefile
- avr/lib/avr2/at90s2313/Makefile
- avr/lib/avr2/at90s2323/Makefile
- avr/lib/avr2/at90s2333/Makefile
- avr/lib/avr2/at90s2343/Makefile
- avr/lib/avr2/at90s4414/Makefile
- avr/lib/avr2/at90s4433/Makefile
- avr/lib/avr2/at90s4434/Makefile
- avr/lib/avr2/at90s8515/Makefile
- avr/lib/avr2/at90c8534/Makefile
- avr/lib/avr2/at90s8535/Makefile
- avr/lib/avr2/attiny11/Makefile
- avr/lib/avr2/attiny12/Makefile
- avr/lib/avr2/attiny13/Makefile
- avr/lib/avr2/attiny15/Makefile
- avr/lib/avr2/attiny22/Makefile
- avr/lib/avr2/attiny24/Makefile
- avr/lib/avr2/attiny25/Makefile
- avr/lib/avr2/attiny26/Makefile
- avr/lib/avr2/attiny261/Makefile
- avr/lib/avr2/attiny28/Makefile
- avr/lib/avr2/attiny44/Makefile
- avr/lib/avr2/attiny45/Makefile
- avr/lib/avr2/attiny461/Makefile
- avr/lib/avr2/attiny84/Makefile
- avr/lib/avr2/attiny85/Makefile
- avr/lib/avr2/attiny861/Makefile
- avr/lib/avr2/attiny2313/Makefile
- avr/lib/avr2/at86rf401/Makefile
-])
-
-#avr25
-AC_CONFIG_FILES([
- avr/lib/avr25/Makefile
- avr/lib/avr25/at86rf401/Makefile
- avr/lib/avr25/ata6289/Makefile
- avr/lib/avr25/attiny13/Makefile
- avr/lib/avr25/attiny13a/Makefile
- avr/lib/avr25/attiny2313/Makefile
- avr/lib/avr25/attiny2313a/Makefile
- avr/lib/avr25/attiny24/Makefile
- avr/lib/avr25/attiny24a/Makefile
- avr/lib/avr25/attiny25/Makefile
- avr/lib/avr25/attiny261/Makefile
- avr/lib/avr25/attiny261a/Makefile
- avr/lib/avr25/attiny4313/Makefile
- avr/lib/avr25/attiny43u/Makefile
- avr/lib/avr25/attiny44/Makefile
- avr/lib/avr25/attiny44a/Makefile
- avr/lib/avr25/attiny45/Makefile
- avr/lib/avr25/attiny461/Makefile
- avr/lib/avr25/attiny461a/Makefile
- avr/lib/avr25/attiny48/Makefile
- avr/lib/avr25/attiny84/Makefile
- avr/lib/avr25/attiny84a/Makefile
- avr/lib/avr25/attiny85/Makefile
- avr/lib/avr25/attiny861/Makefile
- avr/lib/avr25/attiny861a/Makefile
- avr/lib/avr25/attiny87/Makefile
- avr/lib/avr25/attiny88/Makefile
-])
-
-#avr3
-AC_CONFIG_FILES([
- avr/lib/avr3/Makefile
- avr/lib/avr3/atmega103/Makefile
- avr/lib/avr3/at43usb320/Makefile
- avr/lib/avr3/at43usb355/Makefile
- avr/lib/avr3/at76c711/Makefile
- avr/lib/avr3/at90usb82/Makefile
- avr/lib/avr3/at90usb162/Makefile
-])
-
-#avr31
-AC_CONFIG_FILES([
- avr/lib/avr31/Makefile
- avr/lib/avr31/atmega103/Makefile
- avr/lib/avr31/at43usb320/Makefile
-])
-
-#avr35
-AC_CONFIG_FILES([
- avr/lib/avr35/Makefile
- avr/lib/avr35/at90usb82/Makefile
- avr/lib/avr35/at90usb162/Makefile
- avr/lib/avr35/atmega8u2/Makefile
- avr/lib/avr35/atmega16u2/Makefile
- avr/lib/avr35/atmega32u2/Makefile
- avr/lib/avr35/attiny167/Makefile
-])
-
-#avr4
-AC_CONFIG_FILES([
- avr/lib/avr4/Makefile
- avr/lib/avr4/atmega48/Makefile
- avr/lib/avr4/atmega48a/Makefile
- avr/lib/avr4/atmega48p/Makefile
- avr/lib/avr4/atmega8/Makefile
- avr/lib/avr4/atmega88/Makefile
- avr/lib/avr4/atmega88a/Makefile
- avr/lib/avr4/atmega88p/Makefile
- avr/lib/avr4/atmega88pa/Makefile
- avr/lib/avr4/atmega8515/Makefile
- avr/lib/avr4/atmega8535/Makefile
- avr/lib/avr4/atmega8hva/Makefile
- avr/lib/avr4/at90pwm1/Makefile
- avr/lib/avr4/at90pwm2/Makefile
- avr/lib/avr4/at90pwm2b/Makefile
- avr/lib/avr4/at90pwm3/Makefile
- avr/lib/avr4/at90pwm3b/Makefile
- avr/lib/avr4/at90pwm81/Makefile
-])
-
-#avr5
-AC_CONFIG_FILES([
- avr/lib/avr5/Makefile
- avr/lib/avr5/at90can32/Makefile
- avr/lib/avr5/at90can64/Makefile
- avr/lib/avr5/at90can128/Makefile
- avr/lib/avr5/at90pwm216/Makefile
- avr/lib/avr5/at90pwm316/Makefile
- avr/lib/avr5/at90scr100/Makefile
- avr/lib/avr5/at90usb646/Makefile
- avr/lib/avr5/at90usb647/Makefile
- avr/lib/avr5/at90usb1286/Makefile
- avr/lib/avr5/at90usb1287/Makefile
- avr/lib/avr5/at94k/Makefile
- avr/lib/avr5/atmega16/Makefile
- avr/lib/avr5/atmega16a/Makefile
- avr/lib/avr5/atmega161/Makefile
- avr/lib/avr5/atmega162/Makefile
- avr/lib/avr5/atmega163/Makefile
- avr/lib/avr5/atmega164a/Makefile
- avr/lib/avr5/atmega164p/Makefile
- avr/lib/avr5/atmega165/Makefile
- avr/lib/avr5/atmega165a/Makefile
- avr/lib/avr5/atmega165p/Makefile
- avr/lib/avr5/atmega168/Makefile
- avr/lib/avr5/atmega168a/Makefile
- avr/lib/avr5/atmega168p/Makefile
- avr/lib/avr5/atmega169/Makefile
- avr/lib/avr5/atmega169a/Makefile
- avr/lib/avr5/atmega169p/Makefile
- avr/lib/avr5/atmega169pa/Makefile
- avr/lib/avr5/atmega16hva/Makefile
- avr/lib/avr5/atmega16hva2/Makefile
- avr/lib/avr5/atmega16hvb/Makefile
- avr/lib/avr5/atmega16hvbrevb/Makefile
- avr/lib/avr5/atmega16m1/Makefile
- avr/lib/avr5/atmega16u4/Makefile
- avr/lib/avr5/atmega32/Makefile
- avr/lib/avr5/atmega323/Makefile
- avr/lib/avr5/atmega324a/Makefile
- avr/lib/avr5/atmega324p/Makefile
- avr/lib/avr5/atmega324pa/Makefile
- avr/lib/avr5/atmega325/Makefile
- avr/lib/avr5/atmega325a/Makefile
- avr/lib/avr5/atmega325p/Makefile
- avr/lib/avr5/atmega3250/Makefile
- avr/lib/avr5/atmega3250a/Makefile
- avr/lib/avr5/atmega3250p/Makefile
- avr/lib/avr5/atmega328/Makefile
- avr/lib/avr5/atmega328p/Makefile
- avr/lib/avr5/atmega329/Makefile
- avr/lib/avr5/atmega329a/Makefile
- avr/lib/avr5/atmega329p/Makefile
- avr/lib/avr5/atmega329pa/Makefile
- avr/lib/avr5/atmega3290/Makefile
- avr/lib/avr5/atmega3290a/Makefile
- avr/lib/avr5/atmega3290p/Makefile
- avr/lib/avr5/atmega32c1/Makefile
- avr/lib/avr5/atmega32hvb/Makefile
- avr/lib/avr5/atmega32hvbrevb/Makefile
- avr/lib/avr5/atmega32m1/Makefile
- avr/lib/avr5/atmega32u4/Makefile
- avr/lib/avr5/atmega32u6/Makefile
- avr/lib/avr5/atmega406/Makefile
- avr/lib/avr5/atmega64/Makefile
- avr/lib/avr5/atmega640/Makefile
- avr/lib/avr5/atmega644/Makefile
- avr/lib/avr5/atmega644a/Makefile
- avr/lib/avr5/atmega644p/Makefile
- avr/lib/avr5/atmega644pa/Makefile
- avr/lib/avr5/atmega645/Makefile
- avr/lib/avr5/atmega645a/Makefile
- avr/lib/avr5/atmega645p/Makefile
- avr/lib/avr5/atmega6450/Makefile
- avr/lib/avr5/atmega6450a/Makefile
- avr/lib/avr5/atmega6450p/Makefile
- avr/lib/avr5/atmega649/Makefile
- avr/lib/avr5/atmega649a/Makefile
- avr/lib/avr5/atmega649p/Makefile
- avr/lib/avr5/atmega6490/Makefile
- avr/lib/avr5/atmega6490a/Makefile
- avr/lib/avr5/atmega6490p/Makefile
- avr/lib/avr5/atmega64c1/Makefile
- avr/lib/avr5/atmega64hve/Makefile
- avr/lib/avr5/atmega64m1/Makefile
- avr/lib/avr5/atmega128/Makefile
- avr/lib/avr5/atmega1280/Makefile
- avr/lib/avr5/atmega1281/Makefile
- avr/lib/avr5/atmega1284p/Makefile
- avr/lib/avr5/atmega128rfa1/Makefile
- avr/lib/avr5/m3000/Makefile
-])
-
-#avr51
-AC_CONFIG_FILES([
- avr/lib/avr51/Makefile
- avr/lib/avr51/atmega128/Makefile
- avr/lib/avr51/atmega1280/Makefile
- avr/lib/avr51/atmega1281/Makefile
- avr/lib/avr51/atmega1284p/Makefile
- avr/lib/avr51/atmega128rfa1/Makefile
- avr/lib/avr51/at90can128/Makefile
- avr/lib/avr51/at90usb1286/Makefile
- avr/lib/avr51/at90usb1287/Makefile
-])
-
-#avr6
-AC_CONFIG_FILES([
- avr/lib/avr6/Makefile
- avr/lib/avr6/atmega2560/Makefile
- avr/lib/avr6/atmega2561/Makefile
-])
-
-# avrxmega2
-AC_CONFIG_FILES([
- avr/lib/avrxmega2/Makefile
- avr/lib/avrxmega2/atxmega16a4/Makefile
- avr/lib/avrxmega2/atxmega16d4/Makefile
- avr/lib/avrxmega2/atxmega32a4/Makefile
- avr/lib/avrxmega2/atxmega32d4/Makefile
-])
-
-# avrxmega4
-AC_CONFIG_FILES([
- avr/lib/avrxmega4/Makefile
- avr/lib/avrxmega4/atxmega64a3/Makefile
- avr/lib/avrxmega4/atxmega64d3/Makefile
-])
-
-# avrxmega5
-AC_CONFIG_FILES([
- avr/lib/avrxmega5/Makefile
- avr/lib/avrxmega5/atxmega64a1/Makefile
- avr/lib/avrxmega5/atxmega64a1u/Makefile
-])
-
-# avrxmega6
-AC_CONFIG_FILES([
- avr/lib/avrxmega6/Makefile
- avr/lib/avrxmega6/atxmega128a3/Makefile
- avr/lib/avrxmega6/atxmega128d3/Makefile
- avr/lib/avrxmega6/atxmega192a3/Makefile
- avr/lib/avrxmega6/atxmega192d3/Makefile
- avr/lib/avrxmega6/atxmega256a3/Makefile
- avr/lib/avrxmega6/atxmega256a3b/Makefile
- avr/lib/avrxmega6/atxmega256d3/Makefile
-])
-
-# avrxmega7
-AC_CONFIG_FILES([
- avr/lib/avrxmega7/Makefile
- avr/lib/avrxmega7/atxmega128a1/Makefile
- avr/lib/avrxmega7/atxmega128a1u/Makefile
-])
-
-
-# avrtiny10
-AC_CONFIG_FILES([
- avr/lib/avrtiny10/Makefile
- avr/lib/avrtiny10/attiny4/Makefile
- avr/lib/avrtiny10/attiny5/Makefile
- avr/lib/avrtiny10/attiny9/Makefile
- avr/lib/avrtiny10/attiny10/Makefile
- avr/lib/avrtiny10/attiny20/Makefile
- avr/lib/avrtiny10/attiny40/Makefile
-])
-
-
-AC_OUTPUT
Copied: tags/avr-libc-1_7_1-release/configure.ac (from rev 2214,
trunk/avr-libc/configure.ac)
===================================================================
--- tags/avr-libc-1_7_1-release/configure.ac (rev 0)
+++ tags/avr-libc-1_7_1-release/configure.ac 2011-02-16 21:36:51 UTC (rev
2216)
@@ -0,0 +1,1324 @@
+# -*- Autoconf -*-
+#
+# Copyright (c) 2004, Theodore A. Roth
+# Copyright (c) 2005,2006,2007,2009 Anatoly Sokolov
+# Copyright (c) 2005,2008 Joerg Wunsch
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of the copyright holders nor the names of
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $Id$
+#
+# Process this file with autoconf to produce a configure script.
+#
+
+dnl library versioning -- modify these on releases
+dnl macro name value description
+m4_define([avr_libc_major], [1])dnl major version
+m4_define([avr_libc_minor], [7])dnl minor version
+m4_define([avr_libc_revision], [1])dnl revision (dot-dot version)
+m4_define([avr_libc_reldate], [20110216])dnl release date
+dnl end of library versioning data
+
+dnl odd minor number marks a development branch, append date to version there
+m4_define([avr_libc_version],
+ avr_libc_major.avr_libc_minor.avr_libc_revision)dnl
+m4_define([avr_libc_version_numeric],
+ m4_eval(10000 * avr_libc_major + dnl
+ 100 * avr_libc_minor + dnl
+ avr_libc_revision))dnl
+
+AC_INIT(avr-libc, avr_libc_version, address@hidden)
+
+AC_PREREQ(2.59)
+AC_REVISION($Revision$)
+
+AC_CONFIG_SRCDIR([doc/examples/demo/demo.c])
+AC_CONFIG_HEADER([config.h])
+
+dnl substitute M4 macros into shell variables
+AVR_LIBC_MAJOR=avr_libc_major
+AVR_LIBC_MINOR=avr_libc_minor
+AVR_LIBC_REVISION=avr_libc_revision
+AVR_LIBC_RELDATE=avr_libc_reldate
+AVR_LIBC_VERSION=avr_libc_version
+AVR_LIBC_VERSION_NUMERIC=avr_libc_version_numeric
+dnl ...and trigger Makefile.in substitutions
+AC_SUBST(AVR_LIBC_MAJOR)
+AC_SUBST(AVR_LIBC_MINOR)
+AC_SUBST(AVR_LIBC_REVISION)
+AC_SUBST(AVR_LIBC_RELDATE)
+AC_SUBST(AVR_LIBC_VERSION)
+AC_SUBST(AVR_LIBC_VERSION_NUMERIC)
+
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+
+# See if the user specified '--build=`../config.guess` --host=avr' when
+# running ../configure.
+
+AC_MSG_CHECKING([if configuring for cross compile])
+if test "x${build_alias}" = "x${host_alias}"; then
+ if test "x${build_alias}" = "x" ; then
+ build_alias='`./config.guess`'
+ fi
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN()
+ AC_MSG_WARN(AVR-LIBC must be built using an avr cross-compiler.)
+ AC_MSG_WARN(Try configuring with:)
+ AC_MSG_WARN("$0 --build=$build_alias --host=avr")
+ AC_MSG_WARN()
+ AC_MSG_ERROR(aborting configure)
+else
+ AC_MSG_RESULT([yes])
+fi
+
+AC_MSG_CHECKING([if target host is avr])
+case "$host" in
+ avr* )
+ AC_MSG_RESULT([yes])
+ ;;
+ * )
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN()
+ AC_MSG_WARN(Avr-libc must be built using an avr cross-compiler.)
+ AC_MSG_WARN(Try configuring with:)
+ AC_MSG_WARN("$0 --build=$build --host=avr")
+ AC_MSG_WARN()
+ AC_MSG_ERROR(aborting configure)
+ ;;
+esac
+
+## TODO: Write a check for GNU Make
+
+dnl The default check whether the C compiler can create an executable
+dnl is inappropriate for us as it requires an existing library.
+AC_NO_EXECUTABLES
+
+dnl Minimum version of Automake is 1.8.
+dnl We don't want the gzip distribution tarball anymore.
+AM_INIT_AUTOMAKE([1.8 dist-bzip2 no-dist-gzip])
+
+# We don't want touse the cflags from the environment since we need control
+# of this when we're building the libs.
+CFLAGS=""
+
+
+dnl This fix is from Newlib in config/override.m4.
+dnl Fix 2.64 cross compile detection for AVR by not trying to compile fopen.
+m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.64],
+ [m4_foreach([_GCC_LANG], [C, C++, Fortran, Fortran 77],
+ [m4_define([_AC_LANG_IO_PROGRAM(]_GCC_LANG[)],
m4_defn([AC_LANG_PROGRAM(]_GCC_LANG[)]))])])
+
+
+# Checks for programs.
+
+AC_PROG_CC
+AC_CHECK_TOOL(AS, as, as)
+AM_PROG_AS
+AC_PROG_RANLIB
+AC_CHECK_TOOL(AR, ar, ar)
+
+# Make sure that we found the right avr cross-compiler.
+
+case "${CC}" in
+ *avr-gcc*) ;;
+ *) AC_MSG_ERROR(Wrong C compiler found; check the PATH!) ;;
+esac
+case "${AS}" in
+ *avr-as*) ;;
+ *) AC_MSG_ERROR(Wrong assembler found; check the PATH!) ;;
+esac
+case "${AR}" in
+ *avr-ar*) ;;
+ *) AC_MSG_ERROR(Wrong archiver found; check the PATH!) ;;
+esac
+case "${RANLIB}" in
+ *avr-ranlib*) ;;
+ *) AC_MSG_ERROR(Wrong ranlib found; check the PATH!) ;;
+esac
+
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+
+dnl TODO: Check for various tools used to build the documentation. If anything
+dnl is missing, don't build the docs by default.
+
+dnl Disable building of dox by default since it they may not build properly on
+dnl all systems. This isn't optimal, but how do we work around the user not
+dnl having fig2dev and still build all the formats?
+
+AC_ARG_ENABLE(doc,
+[ --enable-doc build all doc formats (disabled is default)],
+[case "${enableval}" in
+ yes) enable_doc=yes ;;
+ no) enable_doc=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for global doc option) ;;
+ esac], [enable_doc=no])dnl
+dnl Various documentation options. By default, we enable all of them,
+dnl i. e. HTML, Postscript, PDF, and Unix-style man pages.
+AC_ARG_ENABLE(html-doc,
+[ --enable-html-doc build HTML documentation (default)],
+[case "${enableval}" in
+ yes) html_doc=yes ;;
+ no) html_doc=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for html-doc option) ;;
+ esac], [html_doc=yes])dnl
+
+AC_ARG_ENABLE(pdf-doc,
+[ --enable-pdf-doc build PDF documentation (default)],
+[case "${enableval}" in
+ yes) pdf_doc=yes ;;
+ no) pdf_doc=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for pdf-doc option) ;;
+ esac], [pdf_doc=yes])dnl
+
+dnl Man pages are currently not tunable; they'll be built whenever
+dnl the HTML documentation is built. However, it can be configured
+dnl whether the result is about to be installed or not.
+AC_ARG_ENABLE(man-doc,
+[ --enable-man-doc build Unix-style manual pages (default)],
+[case "${enableval}" in
+ yes) man_doc=yes ;;
+ no) man_doc=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for man-doc option) ;;
+ esac], [man_doc=yes])dnl
+
+AC_ARG_ENABLE(versioned-doc,
+[ --enable-versioned-doc install docs in directory with version name
(default)],
+[case "${enableval}" in
+ yes) versioned_doc=yes ;;
+ no) versioned_doc=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for versioned-doc option) ;;
+ esac], [versioned_doc=yes])dnl
+
+dnl troth/2002-07-12: The CHECK_DOXYGEN macro should be moved to a config
+dnl dir. I put it here until I figure out how to integrate the config dir.
+
+dnl
+dnl @synopsis CHECK_DOXYGEN
+dnl
+dnl This macro checks if doxygen is installed on the build system
+dnl
+dnl @version Id: check_doxygen.m4,v 1.2 2002/02/10 23:22:40 troth Exp
+dnl @author Theodore A. Roth <address@hidden>
+dnl
+AC_DEFUN([CHECK_DOXYGEN],[dnl
+dnl
+AC_MSG_CHECKING([for doxygen])
+dox_ver=`doxygen --version 2>/dev/null`
+if test "x$dox_ver" = "x"; then
+ AC_MSG_RESULT(no)
+else
+ # FIXME: should also check for dox_ver >= 1.4.1
+ AC_MSG_RESULT(yes)
+ if test "$pdf_doc" = "yes"; then
+ AC_MSG_NOTICE([Enabling PDF docs])
+ TARGET_DOX_PDF=dox-pdf
+ INSTALL_DOX_PDF=install-dox-pdf
+ fi
+ if test "$html_doc" = "yes"; then
+ AC_MSG_NOTICE([Enabling HTML docs])
+ TARGET_DOX_HTML=dox-html
+ INSTALL_DOX_HTML=install-dox-html
+ fi
+dnl The creation of man pages is a side-effect of the HTML
+dnl generation, so a different target is only needed for installation.
+ if test "$man_doc" = "yes"; then
+ AC_MSG_NOTICE([Enabling man pages])
+ TARGET_DOX_HTML=dox-html
+ INSTALL_DOX_MAN=install-dox-man
+ fi
+fi
+dnl
+AC_SUBST(TARGET_DOX_PDF)
+AC_SUBST(TARGET_DOX_HTML)
+AC_SUBST(INSTALL_DOX_PDF)
+AC_SUBST(INSTALL_DOX_HTML)
+AC_SUBST(INSTALL_DOX_MAN)
+])dnl
+
+CHECK_DOXYGEN
+
+dnl
+dnl @synopsis CHECK_PNG_UTILS
+dnl
+dnl This macro checks if pngtopnm and pnmtopng are installed. If they are not
+dnl installed we just fake it with "cat".
+dnl
+dnl We use these in the dox to insert transparency into the png images as such:
+dnl
+dnl $ pngtopnm foo.png > tmp.pnm
+dnl $ pnmtopng -transparent white tmp.pnm > foo.png
+dnl
+dnl @version
+dnl @author Theodore A. Roth <address@hidden> and Eric B. Weddington
<address@hidden>
+dnl
+AC_DEFUN([CHECK_PNG_UTILS],[dnl
+dnl
+AC_MSG_CHECKING([for pngtopnm])
+has_pngtopnm=`pngtopnm --version 2>&1 | grep -c -i Version`
+if test "$has_pngtopnm" = "1"; then
+ AC_MSG_RESULT(yes)
+ PNGTOPNM="pngtopnm"
+else
+ AC_MSG_RESULT(no)
+ PNGTOPNM="cat"
+fi
+dnl
+AC_MSG_CHECKING([for pnmtopng])
+has_pnmtopng=`pnmtopng --version 2>&1 | grep -c -i Version`
+if test "$has_pnmtopng" = "1"; then
+ AC_MSG_RESULT(yes)
+ PNMTOPNG="pnmtopng"
+else
+ AC_MSG_RESULT(no)
+ PNMTOPNG="cat"
+ PNGTOPNM="cat"
+fi
+AC_SUBST(PNGTOPNM)
+AC_SUBST(PNMTOPNG)
+])dnl
+
+CHECK_PNG_UTILS
+
+if test "$versioned_doc" = "yes"; then
+ DOC_INST_DIR='${DESTDIR}${datadir}/doc/avr-libc-$(VERSION)'
+ AVR_LIBC_USER_MANUAL="avr-libc-user-manual-${VERSION}"
+else
+ DOC_INST_DIR='${DESTDIR}${datadir}/doc/avr-libc'
+ AVR_LIBC_USER_MANUAL="avr-libc-user-manual"
+fi
+
+dnl We only want to build the docs if the user has passed
+dnl "--enable-doc" to configure.
+if test "$enable_doc" = "yes"; then
+ DOCSDIR='api'
+else
+ DOCSDIR=''
+fi
+
+AC_SUBST(DOCSDIR)
+AC_SUBST(AVR_LIBC_USER_MANUAL)
+AC_SUBST(DOC_INST_DIR)
+
+FNO_JUMP_TABLES=""
+AC_SUBST(FNO_JUMP_TABLES)
+
+HAS_DELAY_CYCLES=0
+AC_SUBST(HAS_DELAY_CYCLES)
+
+AC_DEFUN(
+ CHECK_MNO_TABLEJUMP,
+ [
+ old_CC=${CC}
+ old_CFLAGS=${CFLAGS}
+ CFLAGS="-mno-tablejump"
+ CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
+ AC_MSG_CHECKING(whether ${CC} supports -mno-tablejump)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([],[])],
+ [has_mno_tablejump=yes],
+ [has_mno_tablejump=no]
+ )
+ if test "x$has_mno_tablejump" = "xyes"
+ then
+ FNO_JUMP_TABLES="-mno-tablejump"
+ fi
+ AC_MSG_RESULT($has_mno_tablejump)
+ CC=${old_CC}
+ CFLAGS=${old_CFLAGS}
+ ]
+)
+
+AC_DEFUN(
+ CHECK_FNO_JUMP_TABLES,
+ [
+ old_CC=${CC}
+ old_CFLAGS=${CFLAGS}
+ CFLAGS="-fno-jump-tables"
+ CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
+ AC_MSG_CHECKING(whether ${CC} supports -fno-jump-tables)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([],[])],
+ [has_fno_jump_tables=yes],
+ [has_fno_jump_tables=no]
+ )
+ if test "x$has_fno_jump_tables" = "xyes"
+ then
+ FNO_JUMP_TABLES="-fno-jump-tables"
+ fi
+ AC_MSG_RESULT($has_fno_jump_tables)
+ CC=${old_CC}
+ CFLAGS=${old_CFLAGS}
+ ]
+)
+
+AC_DEFUN(
+ CHECK_BUILTIN_DELAY_CYCLES,
+ [
+ CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
+ AC_MSG_CHECKING(whether ${CC} supports __builtin_avr_delay_cycles)
+ echo "extern void __builtin_avr_delay_cycles(unsigned long);\
+ int main(void) { __builtin_avr_delay_cycles(42); return 0; }" |\
+ ${CC} -S -xc -o- - |\
+ grep __builtin_avr_delay_cycles >/dev/null
+ if test "$?" != "0"
+ then
+ HAS_DELAY_CYCLES=1
+ has_delay_cycles="yes"
+ else
+ has_delay_cycles="no"
+ fi
+ AC_MSG_RESULT($has_delay_cycles)
+ CC=${old_CC}
+ ]
+)
+
+CHECK_MNO_TABLEJUMP
+CHECK_FNO_JUMP_TABLES
+CHECK_BUILTIN_DELAY_CYCLES
+
+dnl Some devices are only handled by newer version of gcc. This macro lets us
+dnl probe to see if the installed avr-gcc supports a questionable device.
+AC_DEFUN(
+ CHECK_AVR_DEVICE,
+ [
+ old_CC=${CC}
+ old_CFLAGS=${CFLAGS}
+ CFLAGS="-mmcu=$1"
+ CC=`echo "${CC}" | sed 's/-mmcu=avr.//'`
+ AC_MSG_CHECKING(if ${CC} has support for $1)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([],[])],
+ [has_dev_support=yes],
+ [has_dev_support=no]
+ )
+ if test "x$has_dev_support" = "xyes"
+ then
+ HAS_$1=yes
+ fi
+ AC_MSG_RESULT($has_dev_support)
+ CC=${old_CC}
+ CFLAGS=${old_CFLAGS}
+ ]
+)
+
+
+# avr1
+AM_CONDITIONAL(HAS_avr1, true)
+AM_CONDITIONAL(HAS_at90s1200, true)
+AM_CONDITIONAL(HAS_attiny11, true)
+AM_CONDITIONAL(HAS_attiny12, true)
+AM_CONDITIONAL(HAS_attiny15, true)
+AM_CONDITIONAL(HAS_attiny28, true)
+
+
+# avr2
+AM_CONDITIONAL(HAS_avr2, true)
+AM_CONDITIONAL(HAS_at90s2313, true)
+AM_CONDITIONAL(HAS_at90s2323, true)
+AM_CONDITIONAL(HAS_at90s2333, true)
+AM_CONDITIONAL(HAS_at90s2343, true)
+AM_CONDITIONAL(HAS_at90s4414, true)
+AM_CONDITIONAL(HAS_at90s4433, true)
+AM_CONDITIONAL(HAS_at90s4434, true)
+AM_CONDITIONAL(HAS_at90s8515, true)
+AM_CONDITIONAL(HAS_at90c8534, true)
+AM_CONDITIONAL(HAS_at90s8535, true)
+AM_CONDITIONAL(HAS_attiny22, true)
+AM_CONDITIONAL(HAS_attiny26, true)
+
+
+#avr25
+CHECK_AVR_DEVICE(avr25)
+AM_CONDITIONAL(HAS_avr25, test "x$HAS_avr25" = "xyes")
+
+CHECK_AVR_DEVICE(ata6289)
+AM_CONDITIONAL(HAS_ata6289, test "x$HAS_ata6289" = "xyes")
+
+CHECK_AVR_DEVICE(attiny13)
+AM_CONDITIONAL(HAS_attiny13, test "x$HAS_attiny13" = "xyes")
+
+CHECK_AVR_DEVICE(attiny13a)
+AM_CONDITIONAL(HAS_attiny13a, test "x$HAS_attiny13a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny2313)
+AM_CONDITIONAL(HAS_attiny2313, test "x$HAS_attiny2313" = "xyes")
+
+CHECK_AVR_DEVICE(attiny2313a)
+AM_CONDITIONAL(HAS_attiny2313a, test "x$HAS_attiny2313a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny24)
+AM_CONDITIONAL(HAS_attiny24, test "x$HAS_attiny24" = "xyes")
+
+CHECK_AVR_DEVICE(attiny24a)
+AM_CONDITIONAL(HAS_attiny24a, test "x$HAS_attiny24a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny25)
+AM_CONDITIONAL(HAS_attiny25, test "x$HAS_attiny25" = "xyes")
+
+CHECK_AVR_DEVICE(attiny261)
+AM_CONDITIONAL(HAS_attiny261, test "x$HAS_attiny261" = "xyes")
+
+CHECK_AVR_DEVICE(attiny261a)
+AM_CONDITIONAL(HAS_attiny261a, test "x$HAS_attiny261a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny43u)
+AM_CONDITIONAL(HAS_attiny43u, test "x$HAS_attiny43u" = "xyes")
+
+CHECK_AVR_DEVICE(attiny4313)
+AM_CONDITIONAL(HAS_attiny4313, test "x$HAS_attiny4313" = "xyes")
+
+CHECK_AVR_DEVICE(attiny44)
+AM_CONDITIONAL(HAS_attiny44, test "x$HAS_attiny44" = "xyes")
+
+CHECK_AVR_DEVICE(attiny44a)
+AM_CONDITIONAL(HAS_attiny44a, test "x$HAS_attiny44a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny45)
+AM_CONDITIONAL(HAS_attiny45, test "x$HAS_attiny45" = "xyes")
+
+CHECK_AVR_DEVICE(attiny461)
+AM_CONDITIONAL(HAS_attiny461, test "x$HAS_attiny461" = "xyes")
+
+CHECK_AVR_DEVICE(attiny461a)
+AM_CONDITIONAL(HAS_attiny461a, test "x$HAS_attiny461a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny48)
+AM_CONDITIONAL(HAS_attiny48, test "x$HAS_attiny48" = "xyes")
+
+CHECK_AVR_DEVICE(attiny84)
+AM_CONDITIONAL(HAS_attiny84, test "x$HAS_attiny84" = "xyes")
+
+CHECK_AVR_DEVICE(attiny84a)
+AM_CONDITIONAL(HAS_attiny84a, test "x$HAS_attiny84a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny85)
+AM_CONDITIONAL(HAS_attiny85, test "x$HAS_attiny85" = "xyes")
+
+CHECK_AVR_DEVICE(attiny861)
+AM_CONDITIONAL(HAS_attiny861, test "x$HAS_attiny861" = "xyes")
+
+CHECK_AVR_DEVICE(attiny861a)
+AM_CONDITIONAL(HAS_attiny861a, test "x$HAS_attiny861a" = "xyes")
+
+CHECK_AVR_DEVICE(attiny87)
+AM_CONDITIONAL(HAS_attiny87, test "x$HAS_attiny87" = "xyes")
+
+CHECK_AVR_DEVICE(attiny88)
+AM_CONDITIONAL(HAS_attiny88, test "x$HAS_attiny88" = "xyes")
+
+CHECK_AVR_DEVICE(at86rf401)
+AM_CONDITIONAL(HAS_at86rf401, test "x$HAS_at86rf401" = "xyes")
+
+
+# avr3
+AM_CONDITIONAL(HAS_avr3, true)
+AM_CONDITIONAL(HAS_at43usb320, true)
+AM_CONDITIONAL(HAS_at43usb355, true)
+AM_CONDITIONAL(HAS_at76c711, true)
+
+#avr31
+CHECK_AVR_DEVICE(avr31)
+AM_CONDITIONAL(HAS_avr31, test "x$HAS_avr31" = "xyes")
+
+AM_CONDITIONAL(HAS_atmega103, true)
+
+
+#avr35
+CHECK_AVR_DEVICE(avr35)
+AM_CONDITIONAL(HAS_avr35, test "x$HAS_avr35" = "xyes")
+
+CHECK_AVR_DEVICE(at90usb82)
+AM_CONDITIONAL(HAS_at90usb82, test "x$HAS_at90usb82" = "xyes")
+
+CHECK_AVR_DEVICE(at90usb162)
+AM_CONDITIONAL(HAS_at90usb162, test "x$HAS_at90usb162" = "xyes")
+
+CHECK_AVR_DEVICE(atmega8u2)
+AM_CONDITIONAL(HAS_atmega8u2, test "x$HAS_atmega8u2" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16u2)
+AM_CONDITIONAL(HAS_atmega16u2, test "x$HAS_atmega16u2" = "xyes")
+
+CHECK_AVR_DEVICE(atmega32u2)
+AM_CONDITIONAL(HAS_atmega32u2, test "x$HAS_atmega32u2" = "xyes")
+
+CHECK_AVR_DEVICE(attiny167)
+AM_CONDITIONAL(HAS_attiny167, test "x$HAS_attiny167" = "xyes")
+
+
+# avr4
+AM_CONDITIONAL(HAS_avr4, true)
+AM_CONDITIONAL(HAS_atmega8, true)
+AM_CONDITIONAL(HAS_atmega8515, true)
+AM_CONDITIONAL(HAS_atmega8535, true)
+
+CHECK_AVR_DEVICE(atmega48)
+AM_CONDITIONAL(HAS_atmega48, test "x$HAS_atmega48" = "xyes")
+
+CHECK_AVR_DEVICE(atmega48a)
+AM_CONDITIONAL(HAS_atmega48a, test "x$HAS_atmega48a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega48p)
+AM_CONDITIONAL(HAS_atmega48p, test "x$HAS_atmega48p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega88)
+AM_CONDITIONAL(HAS_atmega88, test "x$HAS_atmega88" = "xyes")
+
+CHECK_AVR_DEVICE(atmega88a)
+AM_CONDITIONAL(HAS_atmega88a, test "x$HAS_atmega88a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega88p)
+AM_CONDITIONAL(HAS_atmega88p, test "x$HAS_atmega88p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega88pa)
+AM_CONDITIONAL(HAS_atmega88pa, test "x$HAS_atmega88pa" = "xyes")
+
+CHECK_AVR_DEVICE(atmega8hva)
+AM_CONDITIONAL(HAS_atmega8hva, test "x$HAS_atmega8hva" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm1)
+AM_CONDITIONAL(HAS_at90pwm1, test "x$HAS_at90pwm1" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm2)
+AM_CONDITIONAL(HAS_at90pwm2, test "x$HAS_at90pwm2" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm2b)
+AM_CONDITIONAL(HAS_at90pwm2b, test "x$HAS_at90pwm2b" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm3)
+AM_CONDITIONAL(HAS_at90pwm3, test "x$HAS_at90pwm3" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm3b)
+AM_CONDITIONAL(HAS_at90pwm3b, test "x$HAS_at90pwm3b" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm81)
+AM_CONDITIONAL(HAS_at90pwm81, test "x$HAS_at90pwm81" = "xyes")
+
+
+# avr5
+AM_CONDITIONAL(HAS_avr5, true)
+
+CHECK_AVR_DEVICE(at90can32)
+AM_CONDITIONAL(HAS_at90can32, test "x$HAS_at90can32" = "xyes")
+
+CHECK_AVR_DEVICE(at90can64)
+AM_CONDITIONAL(HAS_at90can64, test "x$HAS_at90can64" = "xyes")
+
+CHECK_AVR_DEVICE(at90scr100)
+AM_CONDITIONAL(HAS_at90scr100, test "x$HAS_at90scr100" = "xyes")
+
+CHECK_AVR_DEVICE(at90usb646)
+AM_CONDITIONAL(HAS_at90usb646, test "x$HAS_at90usb646" = "xyes")
+
+CHECK_AVR_DEVICE(at90usb647)
+AM_CONDITIONAL(HAS_at90usb647, test "x$HAS_at90usb647" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm316)
+AM_CONDITIONAL(HAS_at90pwm316, test "x$HAS_at90pwm316" = "xyes")
+
+CHECK_AVR_DEVICE(at90pwm216)
+AM_CONDITIONAL(HAS_at90pwm216, test "x$HAS_at90pwm216" = "xyes")
+
+CHECK_AVR_DEVICE(at94k)
+AM_CONDITIONAL(HAS_at94k, test "x$HAS_at94k" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16)
+AM_CONDITIONAL(HAS_atmega16, test "x$HAS_atmega16" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16a)
+AM_CONDITIONAL(HAS_atmega16a, test "x$HAS_atmega16a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega161)
+AM_CONDITIONAL(HAS_atmega161, test "x$HAS_atmega161" = "xyes")
+
+CHECK_AVR_DEVICE(atmega162)
+AM_CONDITIONAL(HAS_atmega162, test "x$HAS_atmega162" = "xyes")
+
+CHECK_AVR_DEVICE(atmega163)
+AM_CONDITIONAL(HAS_atmega163, test "x$HAS_atmega163" = "xyes")
+
+CHECK_AVR_DEVICE(atmega164a)
+AM_CONDITIONAL(HAS_atmega164a, test "x$HAS_atmega164a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega164p)
+AM_CONDITIONAL(HAS_atmega164p, test "x$HAS_atmega164p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega165)
+AM_CONDITIONAL(HAS_atmega165, test "x$HAS_atmega165" = "xyes")
+
+CHECK_AVR_DEVICE(atmega165a)
+AM_CONDITIONAL(HAS_atmega165a, test "x$HAS_atmega165a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega165p)
+AM_CONDITIONAL(HAS_atmega165p, test "x$HAS_atmega165p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega168)
+AM_CONDITIONAL(HAS_atmega168, test "x$HAS_atmega168" = "xyes")
+
+CHECK_AVR_DEVICE(atmega168a)
+AM_CONDITIONAL(HAS_atmega168a, test "x$HAS_atmega168a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega168p)
+AM_CONDITIONAL(HAS_atmega168p, test "x$HAS_atmega168p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega169)
+AM_CONDITIONAL(HAS_atmega169, test "x$HAS_atmega169" = "xyes")
+
+CHECK_AVR_DEVICE(atmega169a)
+AM_CONDITIONAL(HAS_atmega169a, test "x$HAS_atmega169a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega169p)
+AM_CONDITIONAL(HAS_atmega169p, test "x$HAS_atmega169p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega169pa)
+AM_CONDITIONAL(HAS_atmega169pa, test "x$HAS_atmega169pa" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16hva)
+AM_CONDITIONAL(HAS_atmega16hva, test "x$HAS_atmega16hva" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16hva2)
+AM_CONDITIONAL(HAS_atmega16hva2, test "x$HAS_atmega16hva2" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16hvb)
+AM_CONDITIONAL(HAS_atmega16hvb, test "x$HAS_atmega16hvb" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16hvbrevb)
+AM_CONDITIONAL(HAS_atmega16hvbrevb, test "x$HAS_atmega16hvbrevb" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16m1)
+AM_CONDITIONAL(HAS_atmega16m1, test "x$HAS_atmega16m1" = "xyes")
+
+CHECK_AVR_DEVICE(atmega16u4)
+AM_CONDITIONAL(HAS_atmega16u4, test "x$HAS_atmega16u4" = "xyes")
+
+CHECK_AVR_DEVICE(atmega32)
+AM_CONDITIONAL(HAS_atmega32, test "x$HAS_atmega32" = "xyes")
+
+CHECK_AVR_DEVICE(atmega323)
+AM_CONDITIONAL(HAS_atmega323, test "x$HAS_atmega323" = "xyes")
+
+CHECK_AVR_DEVICE(atmega324a)
+AM_CONDITIONAL(HAS_atmega324a, test "x$HAS_atmega324a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega324p)
+AM_CONDITIONAL(HAS_atmega324p, test "x$HAS_atmega324p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega324pa)
+AM_CONDITIONAL(HAS_atmega324pa, test "x$HAS_atmega324pa" = "xyes")
+
+CHECK_AVR_DEVICE(atmega325)
+AM_CONDITIONAL(HAS_atmega325, test "x$HAS_atmega325" = "xyes")
+
+CHECK_AVR_DEVICE(atmega325a)
+AM_CONDITIONAL(HAS_atmega325a, test "x$HAS_atmega325a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega325p)
+AM_CONDITIONAL(HAS_atmega325p, test "x$HAS_atmega325p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega3250)
+AM_CONDITIONAL(HAS_atmega3250, test "x$HAS_atmega3250" = "xyes")
+
+CHECK_AVR_DEVICE(atmega3250a)
+AM_CONDITIONAL(HAS_atmega3250a, test "x$HAS_atmega3250a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega3250p)
+AM_CONDITIONAL(HAS_atmega3250p, test "x$HAS_atmega3250p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega328)
+AM_CONDITIONAL(HAS_atmega328, test "x$HAS_atmega328" = "xyes")
+
+CHECK_AVR_DEVICE(atmega328p)
+AM_CONDITIONAL(HAS_atmega328p, test "x$HAS_atmega328p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega329)
+AM_CONDITIONAL(HAS_atmega329, test "x$HAS_atmega329" = "xyes")
+
+CHECK_AVR_DEVICE(atmega329a)
+AM_CONDITIONAL(HAS_atmega329a, test "x$HAS_atmega329a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega329p)
+AM_CONDITIONAL(HAS_atmega329p, test "x$HAS_atmega329p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega329pa)
+AM_CONDITIONAL(HAS_atmega329pa, test "x$HAS_atmega329pa" = "xyes")
+
+CHECK_AVR_DEVICE(atmega3290)
+AM_CONDITIONAL(HAS_atmega3290, test "x$HAS_atmega3290" = "xyes")
+
+CHECK_AVR_DEVICE(atmega3290a)
+AM_CONDITIONAL(HAS_atmega3290a, test "x$HAS_atmega3290a" = "xyes")
+
+CHECK_AVR_DEVICE(atmega3290p)
+AM_CONDITIONAL(HAS_atmega3290p, test "x$HAS_atmega3290p" = "xyes")
+
+CHECK_AVR_DEVICE(atmega32c1)
@@ Diff output truncated at 153600 characters. @@
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-libc-commit] [2216] This is avr-libc-1.7.1.,
Joerg Wunsch <=