+ shash_add(&linkValues, "linker", "gplink");
+
+ /* LIBRARY SEARCH DIRS */
+ mergeSets(&tSet, libPathsSet);
+ mergeSets(&tSet, libDirsSet);
+ shash_add(&linkValues, "incdirs", joinStrSet(appendStrSet(tSet, "-I\"", "\"")));
+
+ SNPRINTF (&temp[0], 128, "%cpic\"", DIR_SEPARATOR_CHAR);
+ joinStrSet(appendStrSet(libDirsSet, "-I\"", &temp[0]));
+ shash_add(&linkValues, "sysincdirs", joinStrSet(appendStrSet(libDirsSet, "-I\"", &temp[0])));
+
+ shash_add(&linkValues, "lflags", joinStrSet(linkOptionsSet));
+
+ shash_add(&linkValues, "outfile", fullDstFileName ? fullDstFileName : dstFileName);
+
+ if(fullSrcFileName) {
+ sprintf(temp, "%s.o", fullDstFileName ? fullDstFileName : dstFileName );
+ shash_add(&linkValues, "user_ofile", temp);
+ }
+
+ shash_add(&linkValues, "ofiles", joinStrSet(relFilesSet));
+
+ /* LIBRARIES */
+ procName = processor_base_name();
+ if (!procName) {
+ procName = "16f877";
+ }
+
+ addSet(&libFilesSet, "libsdcc.lib");
+ SNPRINTF(&temp[0], 128, "pic%s.lib", procName);
+ addSet(&libFilesSet, temp);
+ shash_add(&linkValues, "libs", joinStrSet(libFilesSet));
+
+ lcmd = msprintf(linkValues, lfrm);
+
+ ret = my_system( lcmd );
+
+ Safe_free( lcmd );
+
+ if(ret)
+ exit(1);
+}