Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Nov 2017 20:57:07 -0700
From:      Adam Weinberger <adamw@adamw.org>
To:        blubee blubeeme <gurenchan@gmail.com>
Cc:        FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: a project with custom makefile
Message-ID:  <0F82F594-2D9B-48A2-99B0-909A6105D96D@adamw.org>
In-Reply-To: <CALM2mE=Ma=sGE=0N_Bzri8vwECW%2Bq%2BcvxiLvfGPBPoimo%2Bm5Tw@mail.gmail.com>
References:  <CALM2mEmzY8uNpbjfP5DUTd1YEMxbtjyA0zaz%2Bhkd9UM6jZHuzQ@mail.gmail.com> <90470926-1E50-4CD9-A797-9D013B9B68D5@adamw.org> <CALM2mE=Ma=sGE=0N_Bzri8vwECW%2Bq%2BcvxiLvfGPBPoimo%2Bm5Tw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> On 24 Nov, 2017, at 20:42, blubee blubeeme <gurenchan@gmail.com> =
wrote:
>=20
> I apologize for not being clear, I can get really long winded and try =
to control myself.
> The project that I want to port is nuklear which is a single header =
gui library: https://github.com/vurtun/nuklear
>=20
> If you look at the source code then demo folder: =
https://github.com/vurtun/nuklear/tree/master/demo
> you'll see there are demos for practically every rendering backend =
from x11 to glfw.
>=20
> I like this because it makes GUI very easy and I can avoid a lot of =
the troubles with bigger packages such as QT, Gnome, etc...
>=20
> Let's look at the simplest project which is demo/x11: =
https://github.com/vurtun/nuklear/tree/master/demo/x11
>=20
> There's the makefile and main.c and the nuklear_xlib.h header.
>=20
> The makefile is very straight forward: =
https://github.com/vurtun/nuklear/blob/master/demo/x11/Makefile
> but it doesn't fit in with the FreeBSD build system or at least I =
don't really get how to make things build smoothly.
>=20
> My current ports makefile looks like this:
>=20
> OPTIONS_DEFINE=3D	x11
>=20
> x11_DESC=3D	Nuklear X11 Demo
>=20
> USE_GITHUB=3D	yes
> GH_ACCOUNT=3D	vurtun
> GH_TAGNAME=3D	36a396f
>=20
> .include <bsd.port.pre.mk>
> do-build:
> .if ${PORT_OPTIONS:Mx11}
> 	@(${DO_MAKE_BUILD} -C ${WRKSRC}/demo/x11/)
> .endif
> .include <bsd.port.post.mk>
>=20
> Initially I was using replace cmd and sed to change parts of the files =
but that got really tedious so I made a patch file:
>=20
> --- demo/x11/Makefile.orig	2017-11-24 21:08:07 UTC
> +++ demo/x11/Makefile
> @@ -1,8 +1,8 @@
>  # Install
> -BIN =3D zahnrad
> +BIN =3D x11-zahnrad
> =20
>  # Flags
> -CFLAGS =3D -std=3Dc89 -pedantic -O2
> +CFLAGS =3D -std=3Dc89 -pedantic -O2 `pkg-config --cflags --libs x11`
> =20
>  SRC =3D main.c
>  OBJ =3D $(SRC:.c=3D.o)
>=20
> That's obviously wrong, maybe I'll have to change the ${WRKSRC} =
depending on the options that's selected
> or
> write a cmake file and get that upstreamed to the developer.
>=20
> I'd think cmake might be a better option since it's easier to maintain =
in the long run.
>=20
> Hope this clarifies what I'm trying to do and I'd still like some =
feedback as to which path the community would recommend; writing a cmake =
file, make many patch files and deal with that possibly breaking in the =
future or some other options that I didn't think about yet?

The error that you gave earlier says that there's no Makefile in =
${WRKSRC}. The default do-install essentially runs "make -C ${WRKSRC} =
install", so without a Makefile, it produces an error.

Writing cmake files seems pretty overkill. Your port appears to build =
just one file. So just make your own do-install: target and install the =
files yourself. There are 5,995 examples of this in the ports tree, and =
the Porter's Handbook has an entire section on installing files.

# Adam


--=20
Adam Weinberger
adamw@adamw.org
https://www.adamw.org




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0F82F594-2D9B-48A2-99B0-909A6105D96D>