Restricción del comportamiento de GNU-Make a POSIX Make

12

¿Hay alguna forma conocida de hacer que Linux makerechace el uso no intencionado de GNU-Make extensiones específicas en Makefile al editar o usar el Makefile de otros en Linux? Quiero decir, ¿restringir GNU-Make para que se comporte como se makeespecifica en POSIX y rechazar cualquier extensión específica de GNU-Make?

El .POSIXobjetivo especial no es suficiente, de acuerdo con " 4.9 Nombres de objetivos integrados especiales (gnu.org) ". La página del manual no menciona una opción de línea de comando para esto.

Usar otra makeutilidad puede ser una opción.

- Actualización 2018-10-19 -

Todavía no he encontrado una respuesta directa a mi pregunta, pero aquí hay al menos un documento sobre este problema, un documento que no existía en el momento en que tenía esta pregunta:  un tutorial sobre Makefiles portátiles (nullprogram.com) .

Hibou57
fuente
Mirando esta lista , no está claro que haya o haya habido una estricta marca POSIX solo, por lo que quizás tenga más sentido comenzar con la makeque estaba destinada para usarse con el "Makefile del otro" en cuestión. También ha dicho que el " .POSIXobjetivo de GNU " no es suficiente, según " su lectura de alguna documentación, pero no ha demostrado esto con un caso real, lo cual es un poco problemático XY .
Ricitos
@goldilocks, la X se trata de verificar una restricción a la que me gustaría apegarme (para editar y modificar) debido a la falta de dominio de las especificidades de GNU-Make y para ayudarme a ser consciente de la presencia de algunas especificidades (cuando las hay). La verificación ocular es propensa a errores, no se puede mecanizar, y prefiero evitar los filtros grep / sed / awk caseros propensos a errores para verificar y llamar mi atención.
Hibou57
Tampoco soy un asistente de maquillaje, pero ¿no sería mejor preguntar sobre eso directamente? (Si es así, Stack Overflow podría ser un mejor lugar para ello.)
Ricitos
Puede que tengas razón. Por cierto, después de publicarlo, eliminé por primera vez y luego volví a borrar esta pregunta (no estaba seguro del lugar). Más tarde, puedo volver a preguntar sobre Stack Overflow como usted sugiere. Gracias por tu preocupación.
Hibou57

Respuestas:

6

Estoy bastante seguro de que no hay forma de desactivar las extensiones de creación de GNU. El .POSIXobjetivo mejora la compatibilidad, pero no deshabilita extensiones compatibles como funciones, objetivos de puntos propietarios, %patrones en objetivos, etc.

No conozco ninguna implementación de marca que se adhiera a las características de POSIX. Por ejemplo, MINIX, Solaris, OpenBSD tienen sus propias extensiones. Al menos podría intentar construir sus programas con estas cuatro implementaciones (suponiendo que sus programas se construyan en todas estas plataformas), lo que le dará una garantía de portabilidad bastante buena en la práctica. Agregue Windows con la makeutilidad de Visual Studio, más un puerto de algunas herramientas de shell Unix, si puede usar un sistema operativo no libre (creo que hay una versión gratuita de VS que sería suficiente).

Gilles 'SO- deja de ser malvado'
fuente
3
En Debian Linux, estoy usando pmakepara probar la portabilidad de mis archivos MAKE. Afirma que es sabor de NetBSD. (En versiones más recientes de Debian lo es bmake.)
Palec