static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
-static const char specfiles_doc_url[] =
- "http://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html";
-
-
-static const char*
-avr_diagnose_devicespecs_error (const char *mcu, const char *filename)
-{
- error ("cannot access device-specs for %qs expected at %qs",
- mcu, filename);
-
- // Inform about natively supported devices and cores.
-
- if (strncmp (mcu, "avr", strlen ("avr")))
- avr_inform_devices ();
-
- avr_inform_core_architectures ();
-
- inform (input_location, "you can provide your own specs files, "
- "see <%s> for details", specfiles_doc_url);
-
- return X_NODEVLIB;
-}
-
/* Implement spec function `device-specs-fileĀ“.
- Compose -specs=<specs-file-name>%s. If everything went well then argv[0]
- is the inflated (absolute) specs directory and argv[1] is a device or
- core name as supplied by -mmcu=*. When building GCC the path might
- be relative. */
+ Validate mcu name given with -mmcu option. Compose
+ -specs=<specs-file-name>%s. If everything went well then argv[0] is the
+ inflated (absolute) first device-specs directory and argv[1] is a device
+ or core name as supplied by -mmcu=*. When building GCC the path might be
+ relative. */
const char*
avr_devicespecs_file (int argc, const char **argv)
{
- char *specfile_name;
const char *mmcu = NULL;
#ifdef DEBUG_SPECS
break;
}
- specfile_name = concat (argv[0], dir_separator_str, "specs-", mmcu, NULL);
-
-#ifdef DEBUG_SPECS
- if (verbose_flag)
- fnotice (stderr, "'%s': mmcu='%s'\n'%s': specfile='%s'\n\n",
- __FUNCTION__, mmcu, __FUNCTION__, specfile_name);
-#endif
-
// Filter out silly -mmcu= arguments like "foo bar".
for (const char *s = mmcu; *s; s++)
return X_NODEVLIB;
}
- if (/* When building / configuring the compiler we might get a relative path
- as supplied by "-B.". Assume that the specs file exists and MCU is
- a core, not a proper device then, i.e. we have "-mmcu=avr*". */
- (0 == strncmp (mmcu, "avr", strlen ("avr"))
- && specfile_name[0] == '.')
- /* vanilla */
- || (IS_ABSOLUTE_PATH (specfile_name)
- && !access (specfile_name, R_OK)))
- {
- return concat ("-specs=device-specs", dir_separator_str, "specs-", mmcu,
- // Use '%s' instead of the expanded specfile_name. This
- // is the easiest way to handle pathes containing spaces.
- "%s",
+ return concat ("-specs=device-specs", dir_separator_str, "specs-",
+ mmcu, "%s"
#if defined (WITH_AVRLIBC)
- " %{mmcu=avr*:" X_NODEVLIB "} %{!mmcu=*:" X_NODEVLIB "}",
+ " %{mmcu=avr*:" X_NODEVLIB "} %{!mmcu=*:" X_NODEVLIB "}",
#else
- " " X_NODEVLIB,
+ " " X_NODEVLIB,
#endif
- NULL);
- }
-
- return avr_diagnose_devicespecs_error (mmcu, specfile_name);
+ NULL);
}