Re: [PDCurses] PDCurses 3.9 pkg-config for THE-3.3RC8

2022-04-15 Thread Richard Narron
On Tue, 12 Apr 2022, LM wrote:

> On Mon, Apr 11, 2022 at 6:09 PM Richard Narron  wrote:
>
>   The PDCurses 3.9 package on SLackBuilds.org now creates a pkg-config 
> file
>   for use in building the Hessling editor 3.3RC8.
>
>
> Nice addition.
>
>
>   Ideally this file would be named the same as the library:
>
>   /usr/lib64/pkgconfig/LibXCurses.pc
>
>   And also it would have Libs: for dynamic loading and and Libs.private:
>   for static loading.
>
>   Libs: -lXCurses
>   Libs.private: -l:libXCurses.a  -lXaw -lXmu -lXt -lX11 -lXpm -lSM -lICE
>   -lXext
>
>   More information on creating these files is here:
>
>   https://www.freedesktop.org/wiki/Software/pkg-config/
>
>
>
> I use pkgconf ( https://github.com/pkgconf/pkgconf ) with almost all of my 
> builds and I have scripts similar to
> Slackbuilds (for a variety of operating systems) that generate a .pc file as 
> well.
>
> Here's part of a script for MinGW on Windows:
>
> #!/bin/bash
> ...
> cat > pdcurses.pc << EOF
> prefix=/opt
> exec_prefix=\${prefix}
> libdir=\${exec_prefix}/lib
> includedir=\${prefix}/include
> Name: pdcurses
> Description: Public Domain Curses screen library
> Version: 3.4
> Requires:
> Requires.private:
> Libs: -L\${libdir}  -lpdcurses
> Libs.private:
> Cflags: -I\${includedir}
> EOF 
>
> It gets tricky tracking the different dependent libraries on different 
> operating systems.  None of the X libraries
> are typically used on Windows (unless you're developing for a target like 
> Cygwin).
>
> I investigated naming the pc file something generic like curses.pc so I could 
> switch out curses libraries and use
> either pdcurses or ncurses as desired.  Didn't work out that well so I just 
> use pdcurses.pc.

I discovered that the pkg-config program looks at a global variable,
PKG_CONFIG_PATH, that is searched before the usual spot,
/usr/lib/pkgconfig.

This allowed me to move the code to generate the libpdconfig-x11.pc file
from the PDCurses package build to the THE (The Hessling Editor)
package build.

Rather than make a hereis file, a template pc file is included
with the THE.SlackBuild script called libpdcurses-x11.pc:
---
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/XLIBDIR
includedir=${prefix}/include/xcurses
version=XVERSION

Name: PDCurses
Description: PDCurses ${version} X11 library
Version: ${version}
URL: https://pdcurses.org
Requires.private:
Libs: -lXCurses
Libs.private:  -l:libXCurses.a  -lXaw -lXmu -lXt -lX11 -lXpm -lSM -lICE
-lXext
Cflags:  -DXCURSES -I${includedir} -I/usr/include/X11
---

The THE.SlackBuild bash script uses sed to substitue the XLIBDIR and
XVERSION words before putting the completed template pc file in a newly
created pkgconfig/ directory:

  LIBDIRSUFFIX="64"
  SLKCFLAGS="-O2"
...

  # for XCurses, create pdcurses-x11.pc pkg-config
  XLIBDIR=lib${LIBDIRSUFFIX}
  XVERSION=$(xcurses-config --version)
  mkdir -ppkgconfig
  sed -e "s/XLIBDIR/${XLIBDIR}/" \
  -e "s/XVERSION/${XVERSION}/" \
  <$CWD/libpdcurses-x11.pc \
  >   pkgconfig/libpdcurses-x11.pc

  PKG_CONFIG_PATH=pkgconfig   \
  CFLAGS="$SLKCFLAGS" \
  CXXFLAGS="$SLKCFLAGS" \
  ../configure \
--with-curses=pdcurses-x11 \
...

  make the-x11

So the completed pkgconfig/libpdcurses-x11.pc file looks like this:
---
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib64
includedir=${prefix}/include/xcurses
version=3.9

Name: PDCurses
Description: PDCurses ${version} X11 library
Version: ${version}
URL: https://pdcurses.org
Requires.private:
Libs: -lXCurses
Libs.private:  -l:libXCurses.a  -lXaw -lXmu -lXt -lX11 -lXpm -lSM -lICE
-lXext
Cflags:  -DXCURSES -I${includedir} -I/usr/include/X11
---

I tested this THE bash build script and it worked fine using both PDCurses
3.9 and 3.8.

Regards,
Richard Narron

Re: [PDCurses] PDCurses 3.9 pkg-config for THE-3.3RC8

2022-04-12 Thread LM
On Mon, Apr 11, 2022 at 6:09 PM Richard Narron  wrote:

>
> The PDCurses 3.9 package on SLackBuilds.org now creates a pkg-config file
> for use in building the Hessling editor 3.3RC8.
>

Nice addition.

>
>
> Ideally this file would be named the same as the library:
>
> /usr/lib64/pkgconfig/LibXCurses.pc
>
> And also it would have Libs: for dynamic loading and and Libs.private:
> for static loading.
>
> Libs: -lXCurses
> Libs.private: -l:libXCurses.a  -lXaw -lXmu -lXt -lX11 -lXpm -lSM -lICE
> -lXext
>
> More information on creating these files is here:
>
> https://www.freedesktop.org/wiki/Software/pkg-config/
>
>
>
I use pkgconf ( https://github.com/pkgconf/pkgconf ) with almost all of my
builds and I have scripts similar to Slackbuilds (for a variety of
operating systems) that generate a .pc file as well.

Here's part of a script for MinGW on Windows:

#!/bin/bash
...
cat > pdcurses.pc << EOF
prefix=/opt
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: pdcurses
Description: Public Domain Curses screen library
Version: 3.4
Requires:
Requires.private:
Libs: -L\${libdir}  -lpdcurses
Libs.private:
Cflags: -I\${includedir}
EOF

It gets tricky tracking the different dependent libraries on different
operating systems.  None of the X libraries are typically used on Windows
(unless you're developing for a target like Cygwin).

I investigated naming the pc file something generic like curses.pc so I
could switch out curses libraries and use either pdcurses or ncurses as
desired.  Didn't work out that well so I just use pdcurses.pc.

Sincerely,
Laura
http://www.distasis.com/cpp


[PDCurses] PDCurses 3.9 pkg-config for THE-3.3RC8

2022-04-11 Thread Richard Narron


The PDCurses 3.9 package on SLackBuilds.org now creates a pkg-config file
for use in building the Hessling editor 3.3RC8.

https://slackbuilds.org/repository/15.0/libraries/PDCurses/

Here is the x86_64 version of the file,
/usr/lib64/pkgconfig/libpdcurses-x11.pc

---cut here--
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib64
includedir=${prefix}/include/xcurses
version=3.9

Name: PDCurses
Description: PDCurses ${version} X11 library
Version: ${version}
URL: https://pdcurses.org
Requires.private:
Libs:  -l:libXCurses.a  -lXaw -lXmu -lXt -lX11 -lXpm -lSM -lICE -lXext
Libs.private:
Cflags:  -DXCURSES -I${includedir} -I/usr/include/X11
---cut here--

Ideally this file would be named the same as the library:

/usr/lib64/pkgconfig/LibXCurses.pc

And also it would have Libs: for dynamic loading and and Libs.private:
for static loading.

Libs: -lXCurses
Libs.private: -l:libXCurses.a  -lXaw -lXmu -lXt -lX11 -lXpm -lSM -lICE
-lXext

More information on creating these files is here:

https://www.freedesktop.org/wiki/Software/pkg-config/

Regards,
Richard Narron