defines.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var fs = require('fs');
  2. var os = require('os');
  3. console.log("Extracting DEFINES from Libsodium make file...");
  4. console.log("Detected system architecture " + os.arch());
  5. var libsodium_dir = "./deps/libsodium";
  6. fs.readFile(libsodium_dir + "/Makefile", 'utf8', function (err, make) {
  7. console.log("Libsodium Makefile : " + libsodium_dir + "/Makefile");
  8. if (err) {
  9. console.log("Please run autogen.sh and configure in " + libsodium_dir + " directory first");
  10. return console.log(err);
  11. }
  12. // Extract DEFS
  13. var defs = make.match(/DEFS = ([^\n]+)/);
  14. if (!defs) {
  15. return console.log("No DEFS found in libsodium Makefile");
  16. }
  17. var re = /-D(.*?)(?:(?=\s?-D)|$)/g;
  18. var m;
  19. var d = "";
  20. while ((m = re.exec(defs[1])) != null) {
  21. if (m.index === re.lastIndex) {
  22. re.lastIndex++;
  23. }
  24. // View your result using the m-variable.
  25. d += "\t\t\t\t'" + m[1] + "',\n";
  26. }
  27. d = d.replace(/\\/g, '');
  28. fs.readFile("deps/libsodium.gyp.in", 'utf8', function (err, template) {
  29. console.log("Libsodium GYP template file " + "deps/libsodium.gyp.in");
  30. if (err) {
  31. return console.log(err);
  32. }
  33. var result = template.replace(/{DEFINES}/g, d);
  34. result = result.replace(/{ARCH}/g, "'" + os.arch() + "'");
  35. fs.writeFile("deps/libsodium.gyp", result, 'utf8', function (err) {
  36. if (err) return console.log(err);
  37. console.log("Writing output to GYP file deps/libsodium.gyp");
  38. return true;
  39. });
  40. return true;
  41. });
  42. return true;
  43. });