<p>Why the level of indirection?  For example, all the spec files look like</p>
<p>freetype2_spec_download_url:=<a href="http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz" rel="nofollow">http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz</a><br>
freetype2_spec_archive_name:=freetype-2.9.1.tar.gz<br>
freetype2_spec_unpack_dir_name:=freetype-2.9.1<br>
freetype2_spec_product_name_macOS:=libfreetype.6.dylib<br>
freetype2_spec_product_name_linux:=<br>
freetype2_spec_product_name_windows:=libfreetype.dll<br>
freetype2_spec_symlinks_macOS:=libfreetype*.dylib</p>
<p>and are included in a Makefile (in this case Makefile.freetype2) in the following style:<br>
include ../../third-party/freetype2.spec</p>
<h1>plugin definitions</h1>
<p>FREETYPE2URL:=$(freetype2_spec_download_url)<br>
FREETYPE2LIBNAME:=$(freetype2_spec_product_name_macOS)<br>
FREETYPE2DIR:=$(THIRDPARTYDIR)/$(freetype2_spec_unpack_dir_name)<br>
FREETYPE2ARCHIVE:=$(THIRDPARTYCACHEDIR)/$(freetype2_spec_archive_name)<br>
FREETYPE2LIB:=$(THIRDPARTYINSTALLDIR)/$(FREETYPE2LIBNAME)<br>
FREETYPE2SYMLINKS:=$(freetype2_spec_symlinks_macOS)</p>
<p>Why not just have the spec file read</p>
<p>FREETYPE2URL:=<a href="http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz" rel="nofollow">http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz</a><br>
FREETYPE2LIBNAME:=libfreetype.6.dylib<br>
FREETYPE2DIR:=freetype-2.9.1<br>
FREETYPE2ARCHIVE:=freetype-2.9.1.tar.gz<br>
FREETYPE2SYMLINKS:=libfreetype*.dylib</p>
<p>(or better still:<br>
FREETYPE2VER:=freetype-2.9.1<br>
FREETYPE2ARCHIVE:=$(FREETYPE2VER).tar.gz<br>
FREETYPE2URL:=<a href="http://ftp.igh.cnrs.fr/pub/nongnu/freetype/$(FREETYPE2ARCHIVE)" rel="nofollow">http://ftp.igh.cnrs.fr/pub/nongnu/freetype/$(FREETYPE2ARCHIVE)</a><br>
FREETYPE2LIBNAME:=libfreetype.6.dylib<br>
FREETYPE2DIR:=$(FREETYPE2VER)<br>
FREETYPE2SYMLINKS:=libfreetype*.dylib<br>
)<br>
and then use make's ability to redefine macros to include the above more simply as:</p>
<p>include ../../third-party/freetype2.spec</p>
<h1>plugin definitions</h1>
<p>FREETYPE2DIR:=$(THIRDPARTYDIR)/$(FREETYPE2DIR)<br>
FREETYPE2ARCHIVE:=$(THIRDPARTYCACHEDIR)/$(FREETYPE2ARCHIVE)<br>
FREETYPE2LIB:=$(THIRDPARTYINSTALLDIR)/$(FREETYPE2LIB)</p>
<p>What does the extra level of names buy us?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/352#issuecomment-452423273">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AhLyWz9JDITzfPQ7Xoec3qslU01zg4-vks5vBPIggaJpZM4Z1gdD">mute the thread</a>.<img src="https://github.com/notifications/beacon/AhLyWzPrtRQB20Z4Ikp0ZLB0utkewj3gks5vBPIggaJpZM4Z1gdD.gif" height="1" width="1" alt="" /></p>
<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/OpenSmalltalk/opensmalltalk-vm","title":"OpenSmalltalk/opensmalltalk-vm","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/OpenSmalltalk/opensmalltalk-vm"}},"updates":{"snippets":[{"icon":"PERSON","message":"@eliotmiranda in #352: Why the level of indirection?  For example, all the spec files look like\r\n\r\nfreetype2_spec_download_url:=http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz\r\nfreetype2_spec_archive_name:=freetype-2.9.1.tar.gz\r\nfreetype2_spec_unpack_dir_name:=freetype-2.9.1\r\nfreetype2_spec_product_name_macOS:=libfreetype.6.dylib\r\nfreetype2_spec_product_name_linux:=\r\nfreetype2_spec_product_name_windows:=libfreetype.dll\r\nfreetype2_spec_symlinks_macOS:=libfreetype*.dylib\r\n\r\nand are included in a Makefile (in this case Makefile.freetype2) in the following style:\r\ninclude ../../third-party/freetype2.spec\r\n\r\n# plugin definitions\r\nFREETYPE2URL:=$(freetype2_spec_download_url)\r\nFREETYPE2LIBNAME:=$(freetype2_spec_product_name_macOS)\r\nFREETYPE2DIR:=$(THIRDPARTYDIR)/$(freetype2_spec_unpack_dir_name)\r\nFREETYPE2ARCHIVE:=$(THIRDPARTYCACHEDIR)/$(freetype2_spec_archive_name)\r\nFREETYPE2LIB:=$(THIRDPARTYINSTALLDIR)/$(FREETYPE2LIBNAME)\r\nFREETYPE2SYMLINKS:=$(freetype2_spec_symlinks_macOS)\r\n\r\nWhy not just have the spec file read\r\n\r\nFREETYPE2URL:=http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz\r\nFREETYPE2LIBNAME:=libfreetype.6.dylib\r\nFREETYPE2DIR:=freetype-2.9.1\r\nFREETYPE2ARCHIVE:=freetype-2.9.1.tar.gz\r\nFREETYPE2SYMLINKS:=libfreetype*.dylib\r\n\r\n(or better still:\r\nFREETYPE2VER:=freetype-2.9.1\r\nFREETYPE2ARCHIVE:=$(FREETYPE2VER).tar.gz\r\nFREETYPE2URL:=http://ftp.igh.cnrs.fr/pub/nongnu/freetype/$(FREETYPE2ARCHIVE)\r\nFREETYPE2LIBNAME:=libfreetype.6.dylib\r\nFREETYPE2DIR:=$(FREETYPE2VER)\r\nFREETYPE2SYMLINKS:=libfreetype*.dylib\r\n)\r\nand then use make's ability to redefine macros to include the above more simply as:\r\n\r\ninclude ../../third-party/freetype2.spec\r\n\r\n# plugin definitions\r\nFREETYPE2DIR:=$(THIRDPARTYDIR)/$(FREETYPE2DIR)\r\nFREETYPE2ARCHIVE:=$(THIRDPARTYCACHEDIR)/$(FREETYPE2ARCHIVE)\r\nFREETYPE2LIB:=$(THIRDPARTYINSTALLDIR)/$(FREETYPE2LIB)\r\n\r\nWhat does the extra level of names buy us?"}],"action":{"name":"View Pull Request","url":"https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/352#issuecomment-452423273"}}}</script>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/352#issuecomment-452423273",
"url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/352#issuecomment-452423273",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>