)]}'
{
  "commit": "dc4120e76750ed372feab637f299585908431c35",
  "tree": "72be566c46e3f8670291d63cd890b7a24084d7dd",
  "parents": [
    "3293c4f8a0a3cdd817833bcafa3889d71b7ef3ba"
  ],
  "author": {
    "name": "Nathan Rossi",
    "email": "nathan@nathanrossi.com",
    "time": "Wed Jun 19 17:29:30 2019 +1000"
  },
  "committer": {
    "name": "Nathan Rossi",
    "email": "nathan@nathanrossi.com",
    "time": "Wed Jun 19 17:29:30 2019 +1000"
  },
  "message": "libtrellis: Add support for portable execution with trellis database\n\nIn order to execute the ecpmulti, ecppack and ecpunpack programs they\nmust be able to access the trellis database files. These files are\ninstalled alongside the tools in the data directory (normally\n/usr/share). To enable portable execution of these programs such that\nthey can access the database relative to their executables path the\nprograms must be built with the relative path embedded and also be able\nto access the executables path at run time.\n\nSince libtrellis already depends on Boost it makes sense to use the\nBoost dll module. This module provides the \u0027program_location\u0027 function\nwhich can be used with the \u0027boost::filesystem::path\u0027 to build the\nabsolute path to the database at run time. The only downside with the\nuse of the Boost dll module is that a unused component of the included\nsource relies on certain dynamic linker functions which requires linking\nto libdl on some platforms. This however is easily handled by the\nCMAKE_DL_LIBS variable which expands to the correct linker arg on\ntargets that require linking with the dynamic linker.\n\nThe Boost dll module was only added in 1.61. In order to support older\nversions of Boost such as that of Ubuntu 16.04 (1.58), a local\nimplementation of \u0027program_location\u0027 is added which is based on the\n\u0027proc_self_dirname\u0027 implementation from yosys. This version is chosen\ndue to its use in a number of tools similar to libtrellis (e.g.\nicestorm) but also due to its ISC license which matches libtrellis. This\nimplementation is conditionally used if the Boost dll module is\nunavailable.\n\nThe cmake configuration is also changed to generate a relative path from\ndatadir to bindir, this path is then provided during the build as\nTRELLIS_RPATH_DATADIR.\n\nNote: ecppll does not currently use the trellis database\n\nSigned-off-by: Nathan Rossi \u003cnathan@nathanrossi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "267bd58f959eb21e6c8204b1005b0fd7c04bf278",
      "old_mode": 33188,
      "old_path": "libtrellis/CMakeLists.txt",
      "new_id": "9b5be20ba194a01dc1e4a829500c97b857b5f5ea",
      "new_mode": 33188,
      "new_path": "libtrellis/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4063802bbb543cfbab83b78d84480567a99bb269",
      "new_mode": 33188,
      "new_path": "libtrellis/include/DatabasePath.hpp"
    },
    {
      "type": "modify",
      "old_id": "67d79651f912056540b01d1a7cc8d3069b226c55",
      "old_mode": 33188,
      "old_path": "libtrellis/tools/ecpmulti.cpp",
      "new_id": "786243644638a86e424921b203ef69a2d3cd6b48",
      "new_mode": 33188,
      "new_path": "libtrellis/tools/ecpmulti.cpp"
    },
    {
      "type": "modify",
      "old_id": "31a3f2b24c9a6c172ab4c5917ff64fa5ed0506f7",
      "old_mode": 33188,
      "old_path": "libtrellis/tools/ecppack.cpp",
      "new_id": "40ee45e9eeb8fb16a485d47d7cf8eb763e05a723",
      "new_mode": 33188,
      "new_path": "libtrellis/tools/ecppack.cpp"
    },
    {
      "type": "modify",
      "old_id": "68ad3a89c96dfc0a10daee71b5bd25238e37069a",
      "old_mode": 33188,
      "old_path": "libtrellis/tools/ecpunpack.cpp",
      "new_id": "b7b960a6f27978889933a34d7cc550b3b7176bde",
      "new_mode": 33188,
      "new_path": "libtrellis/tools/ecpunpack.cpp"
    }
  ]
}
