extern compilation