- if(!options.nostdinc) {
- /* setup pic16 include directory */
- pic16incDirsSet = appendStrSet(dataDirsSet, NULL, pic16incDir);
- mergeSets(&includeDirsSet, pic16incDirsSet);
- }
-
- if(!options.nostdlib) {
- /* setup pic16 library directory */
- pic16libDirsSet = appendStrSet(dataDirsSet, NULL, pic16libDir);
- mergeSets(&libDirsSet, pic16libDirsSet);
-
- if(!pic16_options.nodefaultlibs) {
- /* now add the library for the device */
- sprintf(devlib, "%s.lib", pic16->name[2]);
- addSet(&libFilesSet, Safe_strdup(devlib));
- }
+
+ if(!options.nostdinc) {
+ /* setup pic16 include directory */
+ pic16incDirsSet = appendStrSet(dataDirsSet, NULL, pic16incDir);
+ includeDirsSet = pic16incDirsSet;
+// mergeSets(&includeDirsSet, pic16incDirsSet);
+ }
+ /* pic16 port should not search to the SDCC standard include directories,
+ * so add here the deleted include dirs that user has issued in command line */
+ mergeSets(&pic16incDirsSet, userIncDirsSet);
+
+ if(!options.nostdlib) {
+ /* setup pic16 library directory */
+ pic16libDirsSet = appendStrSet(dataDirsSet, NULL, pic16libDir);
+ libDirsSet = pic16libDirsSet;
+// mergeSets(&libDirsSet, pic16libDirsSet);
+ }
+
+ if(!pic16_options.nodefaultlibs) {
+ /* now add the library for the device */
+ sprintf(devlib, "%s.lib", pic16->name[2]);
+ addSet(&libFilesSet, Safe_strdup(devlib));
+
+ /* add the internal SDCC library */
+ addSet(&libFilesSet, Safe_strdup( "libsdcc.lib" ));
+ }
+}
+
+extern set *linkOptionsSet;
+char *msprintf(hTab *pvals, const char *pformat, ...);
+int my_system(const char *cmd);
+
+/* custom function to link objects */
+static void _pic16_linkEdit(void)
+{
+ hTab *linkValues=NULL;
+ char lfrm[256];
+ char *lcmd;
+ char temp[128];
+ set *tSet=NULL;
+ int ret;
+
+ /*
+ * link command format:
+ * {linker} {incdirs} {lflags} -o {outfile} {spec_ofiles} {ofiles} {libs}
+ *
+ */
+
+ sprintf(lfrm, "{linker} {incdirs} {lflags} -o {outfile} {user_ofile} {spec_ofiles} {ofiles} {libs}");
+
+ shash_add(&linkValues, "linker", "gplink");
+
+ mergeSets(&tSet, libDirsSet);
+ mergeSets(&tSet, libPathsSet);
+
+ shash_add(&linkValues, "incdirs", joinStrSet( appendStrSet(tSet, "-I\"", "\"")));
+ shash_add(&linkValues, "lflags", joinStrSet(linkOptionsSet));
+
+ shash_add(&linkValues, "outfile", dstFileName);
+
+ if(fullSrcFileName) {
+ sprintf(temp, "%s.o", dstFileName);
+// addSetHead(&relFilesSet, Safe_strdup(temp));
+ shash_add(&linkValues, "user_ofile", temp);