Restreindre GNU-Make au comportement POSIX Make

12

Existe-t-il un moyen connu de faire en sorte que Linux makerejette l'utilisation involontaire d'extensions spécifiques à GNU-Make dans Makefile lors de l'édition ou de l'utilisation d'autres Makefile sous Linux? Je veux dire, restreindre GNU-Make à se comporter comme makespécifié dans POSIX et rejeter toutes les extensions spécifiques à GNU-Make?

La .POSIXcible spéciale n'est pas suffisante, selon « 4.9 Noms de cibles spéciales intégrées (gnu.org) ». La page de manuel ne mentionne pas d'option de ligne de commande pour cela.

L'utilisation d'un autre makeutilitaire peut être une option.

- Mise à jour 2018-10-19 -

Je n'ai toujours pas trouvé de réponse directe à ma question, mais voici au moins un document sur ce problème, un document qui n'existait pas au moment où j'ai eu cette question:  Un tutoriel sur les Makefiles portables (nullprogram.com) .

Hibou57
la source
En regardant cette liste , il n'est pas clair qu'il existe ou ait jamais existé une marque POSIX stricte - il est donc peut-être plus logique de commencer par celle makequi était destinée à être utilisée avec le "Makefile de l'autre" en question. Vous avez également dit que "la .POSIXcible de GNU n'est pas suffisante, selon" votre lecture de certains documents, mais vous ne l'avez pas démontré avec un cas réel, ce qui est un peu problématique XY .
goldilocks
@goldilocks, le X consiste à vérifier une restriction à laquelle je voudrais rester (pour l'édition et la modification) en raison du manque de maîtrise des spécificités GNU-Make et pour m'aider à être conscient de la présence de certaines spécificités (le cas échéant). La vérification oculaire est sujette aux erreurs, ne peut pas être mécanisée, et je préfère éviter les filtres grep / sed / awk maison sujets aux erreurs pour vérifier et attirer mon attention.
Hibou57
Je ne suis pas non plus un assistant de création, mais ne serait-il pas préférable de poser des questions directement à ce sujet? (Si c'est le cas, Stack Overflow pourrait être un meilleur endroit pour cela.)
goldilocks
Vous pouvez avoir raison. Au fait, après l'avoir posté, j'ai d'abord supprimé puis annulé cette question (je n'étais pas sûr de l'endroit). Je pourrai demander plus tard sur Stack Overflow comme vous le suggérez. Merci pour votre inquiétude.
Hibou57

Réponses:

6

Je suis sûr qu'il n'y a aucun moyen de désactiver les extensions GNU make. La .POSIXcible améliore la compatibilité mais ne désactive pas les extensions compatibles telles que les fonctions, les cibles de points propriétaires, les %modèles de cibles, etc.

Je ne connais aucune implémentation de marque qui colle aux fonctionnalités POSIX. Par exemple, MINIX, Solaris, OpenBSD ont tous leurs propres extensions. Vous pouvez au moins essayer de construire vos programmes avec ces quatre implémentations (en supposant que vos programmes s'appuient sur toutes ces plateformes), ce qui vous donnera une assez bonne assurance de portabilité dans la pratique. Ajoutez Windows avec l' makeutilitaire de Visual Studio, plus un port de certains outils shell Unix, si vous pouvez utiliser un système d'exploitation non libre (je pense qu'il existe une version gratuite de VS qui serait suffisante).

Gilles 'SO- arrête d'être méchant'
la source
3
Sur Debian Linux, j'utilise pmakepour tester la portabilité de mes makefiles. Il prétend qu'il s'agit d'une saveur de NetBSD. (Dans les nouvelles versions de Debian, c'est le cas bmake.)
Palec