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>