Задача: получить pmake под cygwin
Метод: скомпилировать из исходников
http://www.freebsd.org/cgi/man.cgi?query=make&sektion=1 – pmake, man
http://www.freebsd.org/doc/en/books/pmake/ – pmake, tutorial
http://www.cygwin.com/ – cygwin
Берем исходники: http://packages.debian.org/source/lenny/pmake, файл pmake_1.111.orig.tar.gz
На целевой машине (cygwin):
> tar -zxvf pmake_1.111.orig.tar.gz
> cd pmake
> make -f Makefile.boot
util.c:26: error: conflicting types for 'sys_errlist'
/usr/include/sys/errno.h:23: error: previous declaration of 'sys_errlist' was here
util.c:26: error: conflicting types for 'sys_errlist'
/usr/include/sys/errno.h:23: error: previous declaration of 'sys_errlist' was here
Не собирается :(
Подправляем Makefile:
> patch <Makefile.boot.patch
патч:
> cat Makefile.boot.patch
--- pmake/Makefile.boot 2005-07-07 12:16:22.000000000 +0400
+++ pmake-maked/Makefile.boot 2010-01-05 21:00:26.000000000 +0300
@@ -18,7 +18,8 @@
#MAKE_MACHINE_ARCH=hppa
CFLAGS= -DTARGET_MACHINE=\"${MACHINE}\" \
-DTARGET_MACHINE_ARCH=\"${MACHINE_ARCH}\" \
- -DMAKE_MACHINE=\"${MACHINE}\"
+ -DMAKE_MACHINE=\"${MACHINE}\" \
+ -DHAVE_STRERROR=1
LIBS=
OBJ=arch.o buf.o compat.o cond.o dir.o for.o hash.o job.o main.o make.o \
Снова компилируем
> make -f Makefile.boot
– и ура, у нас есть bmake.exe
Помещаем исполняемый файл куда следует:
> cp bmake.exe /bin/pmake.exe
Добавляем man:
> cp make.1 pmake.1
> gzip pmake.1
> mv pmake.1.gz /usr/share/man/man1
удаляем ненужное:
> cd ..
> rm -rf pmake