Re: CMake on Unix
Timofei Zhakov <[email protected]> Tue, 19 May 2026 15:19:42 +0200
| Newsgroups | gmane.comp.apache.apr.devel |
|---|---|
| Message-ID | <CAPD1kXTzfXaZS88PvQ2LqdpcyVW6xGLe+WPM8xY6xwpXDyRRHg@mail.gmail.com> |
--000000000000856c1806522b8ade Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, May 18, 2026 at 11:20=E2=80=AFPM Branko =C4=8Cibej <[email protected]= g> wrote: > On 18. 5. 26 22:27, Ivan Zhakov wrote: > > On Mon, 18 May 2026 at 21:24, Timofei Zhakov <[email protected]> wrote: > >> On Mon, May 18, 2026 at 5:22=E2=80=AFPM Branko =C4=8Cibej <brane@apache.= org> wrote: >> >>> On 18. 5. 26 17:04, Ivan Zhakov wrote: >>> >>> >> [..] > >> Yes, especially because the Unix and Win32 versions share a lot of thing= s >> in common but sometimes need to do it in a slightly different way. >> >> Also what do you guys think about the fact that Win32 apr.h includes >> windows.h? It seems odd to me. APR promises to eliminate platform >> dependence by wrapping everything into POSIX-ish style API >> > > Cross-platform API. I'm not sure what you mean by POSIX-ish, but APR isn'= t > that. > > I mean that the API is similar. For example, apr_file_open() kind of works almost like fopen(). Not exactly but in my head I have this connection. Okay their signatures are very different and even naming, but I think there is some pattern of doing the same thing but in a slightly more modern way with a bit more control. > without extra unneeded junk and then all high level code essentially has >> GetLastError in the scope. I think if one wants to explicitly use win32 >> API, they should include those headers themselves. >> > > It's a good question. I agree that apr.h should not depend on system > headers like Windows.h. But one reason that Windows error codes are used = in > apr_errno.h. > > > apr.h is a generated, *system-specific* header. Of course it can and > should depend on system headers if it needs them. It also includes > sys/types.h and sys/socket.h and sys/wait.h and os2.h and so on, dependin= g > on the target. That makes perfect sense. > > The question I have is whether we really want it or not. In reality it's always included in every source file. Take svn_wc.h for example: [[[ #include <apr.h> #include <apr_pools.h> #include <apr_tables.h> #include <apr_hash.h> #include <apr_time.h> #include <apr_file_io.h> #include "svn_types.h" #include "svn_string.h" #include "svn_checksum.h" #include "svn_io.h" #include "svn_delta.h" /* for svn_stream_t */ #include "svn_opt.h" #include "svn_ra.h" /* for svn_ra_reporter_t type */ ]]] > Sure, if anyone wants to use the Win32 API or a pure POSIX API or the > Linux API or the macOS API along with APR, they have to include those > headers *before* apr.h. > > -- Brane > > > > --=20 Timofei Zhakov --000000000000856c1806522b8ade Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr">On Mon, May 18, 2026 at 11:20=E2=80=AFPM = Branko =C4=8Cibej <<a href=3D"mailto:[email protected]">[email protected]<= /a>> wrote:</div><div class=3D"gmail_quote gmail_quote_container"><block= quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1= px solid rgb(204,204,204);padding-left:1ex"><u></u> =20 =20 =20 <div> <div>On 18. 5. 26 22:27, Ivan Zhakov wrote:<br> </div> <blockquote type=3D"cite"> =20 <div dir=3D"ltr"> <div dir=3D"ltr">On Mon, 18 May 2026 at 21:24, Timofei Zhakov <<= a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>= > wrote:</div> <div class=3D"gmail_quote"> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8= ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr">On Mon, May 18, 2026 at 5:22=E2=80=AFPM Br= anko =C4=8Cibej <<a href=3D"mailto:[email protected]" target= =3D"_blank">[email protected]</a>> wrote:</div> <div class=3D"gmail_quote"> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px= 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div> <div>On 18. 5. 26 17:04, Ivan Zhakov wrote:<br> </div> =C2=A0</div> </blockquote> </div> </div> </div> </blockquote> <div>[..]=C2=A0</div> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8= ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div class=3D"gmail_quote"> <div>Yes, especially because the Unix and Win32 versions share a lot of things in common but sometimes need to do it in a slightly different way.</d= iv> <div><br> </div> <div>Also what do you guys think about the fact that Win32 apr.h includes windows.h? It seems odd to me. APR promises to eliminate platform dependence by wrapping everything into POSIX-ish style API</div> </div> </div> </div> </blockquote> </div> </div> </blockquote> <br> Cross-platform API. I'm not sure what you mean by POSIX-ish, but AP= R isn't that.<br> <br></div></blockquote><div><br></div><div>I mean that the API is simil= ar. For example, apr_file_open() kind of works almost like fopen(). Not exa= ctly but in my head I have this connection. Okay their signatures are very = different and even naming, but I think there is some pattern of doing the s= ame thing but in a slightly more modern way with a bit more control.</div><= div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0= px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div> <blockquote type=3D"cite"> <div dir=3D"ltr"> <div class=3D"gmail_quote"> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8= ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div class=3D"gmail_quote"> <div>without extra unneeded junk and then all high level code essentially has GetLastError in the scope. I think if one wants to explicitly use win32 API, they should include those headers themselves.</div= > </div> </div> </div> </blockquote> <br> </div> <div class=3D"gmail_quote">It's a good question. I agree that apr.h should not depend on system headers like Windows.h. But one reason that Windows error codes are used in apr_errno.h.</div> </div> </blockquote> <br> apr.h is a generated, <i>system-specific</i> header. Of course it can and should depend on system headers if it needs them. It also includes sys/types.h and sys/socket.h and sys/wait.h and os2.h and so on, depending on the target. That makes perfect sense.<br> <br></div></blockquote><div><br></div><div>The question I have is wheth= er we really want it or not.=C2=A0</div><div><br></div><div>In reality it&#= 39;s always included in every source file. Take svn_wc.h for example:</div>= <div><br></div><div>[[[</div><div>#include <apr.h><br>#include <ap= r_pools.h><br>#include <apr_tables.h><br>#include <apr_hash.h&g= t;<br>#include <apr_time.h><br>#include <apr_file_io.h><br><br>= #include "svn_types.h"<br>#include "svn_string.h"<br>#i= nclude "svn_checksum.h"<br>#include "svn_io.h"<br>#incl= ude "svn_delta.h" =C2=A0 =C2=A0 /* for svn_stream_t */<br>#includ= e "svn_opt.h"<br>#include "svn_ra.h" =C2=A0 =C2=A0 =C2= =A0 =C2=A0/* for svn_ra_reporter_t type */<br>]]]</div><div>=C2=A0</div><bl= ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef= t:1px solid rgb(204,204,204);padding-left:1ex"><div> Sure, if anyone wants to use the Win32 API or a pure POSIX API or the Linux API or the macOS API along with APR, they have to include those headers=C2=A0<i>before</i>=C2=A0apr.h.<br> <br> -- Brane<br> <br> <br> <br> </div> </blockquote></div><div><br clear=3D"all"></div><br><span class=3D"gmail_si= gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d= iv dir=3D"ltr"><div>Timofei Zhakov</div></div></div></div> --000000000000856c1806522b8ade--