pmake для cygwin

17 Oct 2008


...

Задача: получить 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

Добавляем man:

> cp make.1 pmake.1 
> gzip pmake.1
> mv pmake.1.gz /usr/share/man/man1

удаляем ненужное:

> cd ..
> rm -rf  pmake