Je ne sais pas exactement comment différent ou similaire votre éditeur de liens personnalisé est à l'éditeur de liens GNU ld, mais vous dites que votre toolchain est similaire ou basé sur GCC. GNU ld vous permet de spécifier un script d'éditeur de liens sur la ligne de commande en utilisant --script=scriptfile
ou une option similaire. Les scripts ld peuvent INCLUDE
autres fichiers de script (ou fragments de script). Ainsi, vous pouvez mettre vos trucs communs dans common.link.config
(par exemple) et ont deux scripts de configuration éditeur de liens distincts qui ressemblent à ce qui suit:
/* option1.link.config */
INCLUDE common.link.config
/* stuff specific to option1 follows */
...
Sans surprise, le script pour l'option 2 pourrait ressembler à:
/* option2.link.config */
INCLUDE common.link.config
/* stuff specific to option2 follows */
...
Ensuite, au lieu de passer une 'condition' via la ligne de commande de l'éditeur de liens, spécifiez option1.link.config
ou option2.link.config
comme script de configuration de l'éditeur de liens. Si vous n'utilisez pas de script parce que l'éditeur de liens de la chaîne contient un script par défaut approprié, vous pouvez vider ce script par défaut en utilisant ld -verbose
et le modifier comme point de départ pour vos scripts personnalisés.
Est-ce quelque chose que vous pourriez résoudre plus facilement avec votre système de construction (par exemple votre fichier makefile)? –
Je n'utilise pas l'idée de guerrier de code et ne fais pas de mécanisme de moteur! –
Juste votre système de construction semble * tellement * personnalisé, que faire une personnalisation de plus n'est pas une grosse affaire ... –