While trying to get everything to work with clang, I've stumbled on gprolog.
Here is an update to 1.4.4. It doesn't make it work with clang either, but at least it's newer (I peeked: FreeBSD does compile gprolog with gcc) The most important improvement in the port is doing OpenBSD detection in configure, which allows CFLAGS_MACHINE to contain -fno-pie -nopie, thus leading to glpc working "out of the box" and killing a number of Makefile patches. Okay ? Index: Makefile =================================================================== RCS file: /cvs/ports/lang/gprolog/Makefile,v retrieving revision 1.16 diff -u -p -r1.16 Makefile --- Makefile 8 Jan 2014 11:54:12 -0000 1.16 +++ Makefile 29 May 2017 13:39:39 -0000 @@ -4,8 +4,7 @@ ONLY_FOR_ARCHS= amd64 i386 COMMENT= Prolog compiler -DISTNAME= gprolog-1.3.1 -REVISION= 0 +DISTNAME= gprolog-1.4.4 CATEGORIES= lang HOMEPAGE= http://www.gprolog.org/ @@ -19,7 +18,7 @@ WANTLIB= c m MASTER_SITES= ${MASTER_SITE_GNU:=gprolog/} -AUTOCONF_VERSION= 2.61 +AUTOCONF_VERSION= 2.68 CONFIGURE_STYLE= autoconf dest no-autoheader @@ -31,7 +30,7 @@ CONFIGURE_ARGS+= --with-install-dir='${P --with-examples-dir='${PREFIX}/share/examples/gprolog' \ --with-html-dir='${PREFIX}/share/doc/gprolog/html' \ --with-doc-dir='${PREFIX}/share/doc/gprolog' \ - --with-c-flags="${CFLAGS} -fno-pie -nopie" + --with-c-flags="${CFLAGS}" WRKDIST= ${WRKDIR}/${DISTNAME}/src Index: distinfo =================================================================== RCS file: /cvs/ports/lang/gprolog/distinfo,v retrieving revision 1.5 diff -u -p -r1.5 distinfo --- distinfo 8 Jan 2014 11:54:12 -0000 1.5 +++ distinfo 29 May 2017 13:39:39 -0000 @@ -1,2 +1,2 @@ -SHA256 (gprolog-1.3.1.tar.gz) = PDMVm50jRkegbniHDBSgUY1qKl+F25BjYHd/6z2YwxY= -SIZE (gprolog-1.3.1.tar.gz) = 2949369 +SHA256 (gprolog-1.4.4.tar.gz) = GMDpZEszr9TdPN8p+UwJmtgg1l4MmdpUlbGuQ7TysY4= +SIZE (gprolog-1.4.4.tar.gz) = 3538152 Index: patches/patch-EnginePl_machine_h =================================================================== RCS file: /cvs/ports/lang/gprolog/patches/patch-EnginePl_machine_h,v retrieving revision 1.1 diff -u -p -r1.1 patch-EnginePl_machine_h --- patches/patch-EnginePl_machine_h 8 Jan 2014 11:54:12 -0000 1.1 +++ patches/patch-EnginePl_machine_h 29 May 2017 13:39:39 -0000 @@ -13,9 +13,10 @@ compilation failed *** Error 1 in /tmp_ports/gprolog-1.3.1/gprolog-1.3.1/src (Makefile:47 'all') === ---- EnginePl/machine.h.orig Wed Jan 8 04:11:21 2014 -+++ EnginePl/machine.h Wed Jan 8 04:12:30 2014 -@@ -110,7 +110,7 @@ void M_Check_Magic_Words(void); /* not compiled if not +Index: EnginePl/machine.h +--- EnginePl/machine.h.orig ++++ EnginePl/machine.h +@@ -124,7 +124,7 @@ void M_Check_Magic_Words(void); /* not compiled if not # define M_USED_REGS {"$9", "$10", "$11", "$12", "$13", "$14", 0} /* on M_ix86_darwin : %ebx is used by gcc for pic base */ Index: patches/patch-EnginePl_obj_chain_h =================================================================== RCS file: /cvs/ports/lang/gprolog/patches/patch-EnginePl_obj_chain_h,v retrieving revision 1.1 diff -u -p -r1.1 patch-EnginePl_obj_chain_h --- patches/patch-EnginePl_obj_chain_h 27 Dec 2009 19:30:21 -0000 1.1 +++ patches/patch-EnginePl_obj_chain_h 29 May 2017 13:39:39 -0000 @@ -1,11 +1,13 @@ $OpenBSD: patch-EnginePl_obj_chain_h,v 1.1 2009/12/27 19:30:21 jasper Exp $ ---- EnginePl/obj_chain.h.orig Wed May 9 03:20:35 2007 -+++ EnginePl/obj_chain.h Wed May 9 03:21:54 2007 -@@ -84,6 +84,6 @@ static long obj_chain_start = (long) OBJ_CTOR; +Index: EnginePl/obj_chain.h +--- EnginePl/obj_chain.h.orig ++++ EnginePl/obj_chain.h +@@ -95,7 +95,7 @@ static PlLong obj_chain_start = (PlLong) OBJ_CTOR; --#if defined(_MSC_VER) || defined(M_ix86_darwin) -+#if defined(_MSC_VER) || defined(M_ix86_darwin) || defined(__OpenBSD__) +-#if (defined(_MSC_VER) || defined(M_darwin)) && !defined(OBJ_CHAIN_REVERSE_ORDER) ++#if (defined(_MSC_VER) || defined(M_darwin) || defined(__OpenBSD__)) && !defined(OBJ_CHAIN_REVERSE_ORDER) #define OBJ_CHAIN_REVERSE_ORDER #endif + Index: patches/patch-Fd2C_Makefile_in =================================================================== RCS file: patches/patch-Fd2C_Makefile_in diff -N patches/patch-Fd2C_Makefile_in --- patches/patch-Fd2C_Makefile_in 30 Aug 2012 20:54:59 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-Fd2C_Makefile_in,v 1.2 2012/08/30 20:54:59 pascal Exp $ ---- Fd2C/Makefile.in.orig Fri Jan 23 12:15:03 2009 -+++ Fd2C/Makefile.in Tue Aug 28 16:39:14 2012 -@@ -11,7 +11,7 @@ OBJS = fd2c@OBJ_SUFFIX@ read_file@OBJ_SUFFIX@ par - - - fd2c@EXE_SUFFIX@: $(OBJS) -- $(GPLC) -o fd2c@EXE_SUFFIX@ --no-fd-lib --min-bips $(OBJS) -+ $(GPLC) -L -nopie -o fd2c@EXE_SUFFIX@ --no-fd-lib --min-bips $(OBJS) - - - Index: patches/patch-Ma2Asm_Makefile_in =================================================================== RCS file: /cvs/ports/lang/gprolog/patches/patch-Ma2Asm_Makefile_in,v retrieving revision 1.1 diff -u -p -r1.1 patch-Ma2Asm_Makefile_in --- patches/patch-Ma2Asm_Makefile_in 27 Dec 2009 19:30:21 -0000 1.1 +++ patches/patch-Ma2Asm_Makefile_in 29 May 2017 13:39:39 -0000 @@ -1,6 +1,7 @@ $OpenBSD: patch-Ma2Asm_Makefile_in,v 1.1 2009/12/27 19:30:21 jasper Exp $ ---- Ma2Asm/Makefile.in.orig Thu Jan 4 10:21:48 2007 -+++ Ma2Asm/Makefile.in Fri Jun 13 22:36:35 2008 +Index: Ma2Asm/Makefile.in +--- Ma2Asm/Makefile.in.orig ++++ Ma2Asm/Makefile.in @@ -53,14 +53,14 @@ CHKMA_OBJS=chkma@OBJ_SUFFIX@ chkma_ma@OBJ_SUFFIX@ ../E chkma@OBJ_SUFFIX@: chkma.c @@ -17,4 +18,4 @@ $OpenBSD: patch-Ma2Asm_Makefile_in,v 1.1 + export PL_PATH=$(PWD)/../ ;../TopComp/$(GPLC) -c chkma_ma@ASM_SUFFIX@ chkma@EXE_SUFFIX@: $(CHKMA_OBJS) - $(CC) $(CFLAGS) @CC_EXE_NAME_OPT@chkma@EXE_SUFFIX@ $(CHKMA_OBJS) + $(GPLC) -o chkma@EXE_SUFFIX@ $(CHKMA_OBJS) --no-pl-lib Index: patches/patch-Makefile_in =================================================================== RCS file: /cvs/ports/lang/gprolog/patches/patch-Makefile_in,v retrieving revision 1.1 diff -u -p -r1.1 patch-Makefile_in --- patches/patch-Makefile_in 27 Dec 2009 19:30:21 -0000 1.1 +++ patches/patch-Makefile_in 29 May 2017 13:39:39 -0000 @@ -1,7 +1,8 @@ $OpenBSD: patch-Makefile_in,v 1.1 2009/12/27 19:30:21 jasper Exp $ ---- Makefile.in.orig Thu Jan 4 05:21:49 2007 -+++ Makefile.in Fri Jun 13 19:37:59 2008 -@@ -79,13 +79,13 @@ uninstall: uninstall-links uninstall-html uninstall-do +Index: Makefile.in +--- Makefile.in.orig ++++ Makefile.in +@@ -82,13 +82,13 @@ uninstall: uninstall-links uninstall-html uninstall-do # --- Links --- # install-links: uninstall-links Index: patches/patch-Pl2Wam_Makefile_in =================================================================== RCS file: patches/patch-Pl2Wam_Makefile_in diff -N patches/patch-Pl2Wam_Makefile_in --- patches/patch-Pl2Wam_Makefile_in 30 Aug 2012 20:54:59 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-Pl2Wam_Makefile_in,v 1.2 2012/08/30 20:54:59 pascal Exp $ ---- Pl2Wam/Makefile.in.orig Fri Jan 23 12:15:03 2009 -+++ Pl2Wam/Makefile.in Tue Aug 28 16:39:01 2012 -@@ -19,7 +19,7 @@ WAMS = $(PLS:.pl=.wam) - - pl2wam@EXE_SUFFIX@: $(OBJS) - [ ! -f pl2wam@EXE_SUFFIX@ ] || cp pl2wam@EXE_SUFFIX@ pl2wam0@EXE_SUFFIX@ -- $(GPLC) -o pl2wam@EXE_SUFFIX@ --no-fd-lib --min-bips $(OBJS) -+ $(GPLC) -L -nopie -o pl2wam@EXE_SUFFIX@ --no-fd-lib --min-bips $(OBJS) - - - clean: Index: patches/patch-Pl2Wam_check_boot =================================================================== RCS file: /cvs/ports/lang/gprolog/patches/patch-Pl2Wam_check_boot,v retrieving revision 1.1 diff -u -p -r1.1 patch-Pl2Wam_check_boot --- patches/patch-Pl2Wam_check_boot 27 Dec 2009 19:30:21 -0000 1.1 +++ patches/patch-Pl2Wam_check_boot 29 May 2017 13:39:39 -0000 @@ -1,11 +1,12 @@ $OpenBSD: patch-Pl2Wam_check_boot,v 1.1 2009/12/27 19:30:21 jasper Exp $ ---- Pl2Wam/check_boot.orig Fri Jun 13 19:14:04 2008 -+++ Pl2Wam/check_boot Fri Jun 13 19:13:43 2008 +Index: Pl2Wam/check_boot +--- Pl2Wam/check_boot.orig ++++ Pl2Wam/check_boot @@ -1,6 +1,6 @@ #!/bin/sh do_diff() { -- diff --ignore-space-change -I '^%' -I '^file_name(' $1 $2 || \ -+ gdiff --ignore-space-change -I '^%' -I '^file_name(' $1 $2 || \ +- diff --ignore-space-change -I '^%' -I '^file_name[(]' $1 $2 || \ ++ gdiff --ignore-space-change -I '^%' -I '^file_name[(]' $1 $2 || \ ( echo "difference encountered: $1 <> $2"; exit 1 ) } Index: patches/patch-TopComp_Makefile_in =================================================================== RCS file: patches/patch-TopComp_Makefile_in diff -N patches/patch-TopComp_Makefile_in --- patches/patch-TopComp_Makefile_in 30 Aug 2012 20:54:59 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-TopComp_Makefile_in,v 1.2 2012/08/30 20:54:59 pascal Exp $ ---- TopComp/Makefile.in.orig Fri Jan 23 12:15:03 2009 -+++ TopComp/Makefile.in Tue Aug 28 16:38:33 2012 -@@ -24,7 +24,7 @@ $(HEXGPLC)@EXE_SUFFIX@: hexfilter.c decode_hexa.c - all: $(ALL_EXECS) - - $(TOP_LEVEL)@EXE_SUFFIX@: ../EnginePl/gp_config.h copying.c top_level.c -- $(GPLC) $(TOP_LEVEL_FLAGS) -o $(TOP_LEVEL)@EXE_SUFFIX@ top_level.c -+ $(GPLC) -L -nopie $(TOP_LEVEL_FLAGS) -o $(TOP_LEVEL)@EXE_SUFFIX@ top_level.c - - - Index: patches/patch-configure_in =================================================================== RCS file: patches/patch-configure_in diff -N patches/patch-configure_in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-configure_in 29 May 2017 13:39:39 -0000 @@ -0,0 +1,13 @@ +$OpenBSD$ + +Index: configure.in +--- configure.in.orig ++++ configure.in +@@ -474,6 +474,7 @@ dnl -fomit-frame-pointer does not work on MinGW (teste + powerpc*darwin*) CFLAGS_MACHINE='-mpowerpc -no-cpp-precomp';; + x86_64*solaris*) CFLAGS_MACHINE='-m64';; + x86_64*darwin*) CFLAGS_MACHINE='-march=x86-64 -m64';; ++ *openbsd*) CFLAGS_MACHINE='-fno-pie -nopie';; + esac + + case "$host" in Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/lang/gprolog/pkg/PLIST,v retrieving revision 1.3 diff -u -p -r1.3 PLIST --- pkg/PLIST 27 Dec 2009 19:30:21 -0000 1.3 +++ pkg/PLIST 29 May 2017 13:39:39 -0000 @@ -10,6 +10,7 @@ libdata/gprolog/ libdata/gprolog/COPYING libdata/gprolog/ChangeLog libdata/gprolog/NEWS +libdata/gprolog/README libdata/gprolog/VERSION libdata/gprolog/bin/ @bin libdata/gprolog/bin/fd2c @@ -19,6 +20,7 @@ libdata/gprolog/bin/ @bin libdata/gprolog/bin/ma2asm @bin libdata/gprolog/bin/pl2wam @bin libdata/gprolog/bin/wam2ma +libdata/gprolog/gprolog.ico libdata/gprolog/include/ libdata/gprolog/include/fd_to_c.h libdata/gprolog/include/gprolog.h @@ -34,11 +36,9 @@ libdata/gprolog/lib/liblinedit.a libdata/gprolog/lib/top_level.o share/doc/gprolog/ share/doc/gprolog/compil-scheme.eps -share/doc/gprolog/compil-scheme.gif share/doc/gprolog/compil-scheme.pdf share/doc/gprolog/contents_motif.gif share/doc/gprolog/debug-box.eps -share/doc/gprolog/debug-box.gif share/doc/gprolog/debug-box.pdf share/doc/gprolog/gprolog.chm share/doc/gprolog/gprolog.dvi @@ -125,6 +125,8 @@ share/doc/gprolog/html/gprolog073.html share/doc/gprolog/html/index.html share/doc/gprolog/html/next_motif.gif share/doc/gprolog/html/previous_motif.gif +share/doc/gprolog/logo.eps +share/doc/gprolog/logo.pdf share/examples/gprolog/ share/examples/gprolog/ExamplesC/ share/examples/gprolog/ExamplesC/Makefile @@ -154,6 +156,7 @@ share/examples/gprolog/ExamplesFD/eq10.p share/examples/gprolog/ExamplesFD/eq20.pl share/examples/gprolog/ExamplesFD/five.pl share/examples/gprolog/ExamplesFD/gardner.pl +share/examples/gprolog/ExamplesFD/interval.pl share/examples/gprolog/ExamplesFD/langford.pl share/examples/gprolog/ExamplesFD/magic.pl share/examples/gprolog/ExamplesFD/magsq.pl
