)]}'
{
  "commit": "a6b3a194f0381c5aef9346d39b02eb058111d2a2",
  "tree": "8fe8ec30c4deae4f758acb963f28bb99efe6eb3b",
  "parents": [
    "d42f53b5baafe01caa48477e204b63e065660117"
  ],
  "author": {
    "name": "Laslo Hunhold",
    "email": "dev@frign.de",
    "time": "Sat Oct 08 10:40:03 2022 +0200"
  },
  "committer": {
    "name": "Laslo Hunhold",
    "email": "dev@frign.de",
    "time": "Sat Oct 08 10:46:31 2022 +0200"
  },
  "message": "Enhance build-system to perfectly support OpenBSD and macOS\n\nStudying the source material on OpenBSD[0], it is written that\n\n\tQuite a few ports need tweaks to build shared libraries correctly\n\tanyways. Remember that building shared libraries should be done with\n\n\t\t$ cc -shared -fpic|-fPIC -o libfoo.so.4.5 obj1 obj2\n\n\tTrying to rename the library after the fact to adjust the version\n\tnumber does not work: ELF libraries use some extra magic to set the\n\tlibrary internal name, so you must link it with the correct version\n\tthe first time.\n\nThus, it is necessary to directly compile into $(SONAME), which is\nchanged to in this commit.\n\nThe magic flags for macOS were taken from [1]. It sets up the linker\nsuch that it automatically respects semantic versioning and will load\nany library with a smaller compatible version (e.g. same minor-version).\n\nAdditionally, both OpenBSD and macOS have smarter linkers than Linux\nand don\u0027t need symlinks from varying versions to work right. Thus a\nflag SOSYMLINK was added to enable toggling this from the config.mk.\n\nFor convenience, the best-practices for each platform are added to\nthe config.mk in a commented-out form, saving everybody some time.\n\n[0]:https://www.openbsd.org/faq/ports/specialtopics.html#SharedLibs\n[1]:https://begriffs.com/posts/2021-07-04-shared-libraries.html#linking\n\nSigned-off-by: Laslo Hunhold \u003cdev@frign.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "755a4e1ad0b1993e803a9a506632a50be0b1aa07",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "a4ded5b2ae48d344dbbd650e6654d15ca61d9f4e",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "cc8a903d957af5d03e5d4bdb033093d762e52c47",
      "old_mode": 33188,
      "old_path": "config.mk",
      "new_id": "32829c37a9450c6a90b89dc1d39c31b4eac9abb4",
      "new_mode": 33188,
      "new_path": "config.mk"
    }
  ]
}
