Re: CMake on Unix

Branko Čibej <[email protected]> Tue, 19 May 2026 17:01:52 +0200
Newsgroups gmane.comp.apache.apr.devel
Organization The Apache Software Foundation
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------WvltDsRmSVnr72GrSnsK7tSR
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 19. 5. 26 15:19, Timofei Zhakov wrote:
> On Mon, May 18, 2026 at 11:20 PM Branko Čibej <[email protected]> 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 PM Branko Čibej
>>         <[email protected]> wrote:
>>
>>             On 18. 5. 26 17:04, Ivan Zhakov wrote:
>>
>>     [..]
>>
>>         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.
>>
>>         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, depending 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 */
> ]]]


You'll have to be more specific: what exactly is wrong with that? apr.h 
uses symbols defined in windows.h, what else is it supposed to do? I 
really don't understand your objections.

-- Brane

--------------WvltDsRmSVnr72GrSnsK7tSR
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">On 19. 5. 26 15:19, Timofei Zhakov
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAPD1kXTzfXaZS88PvQ2LqdpcyVW6xGLe+WPM8xY6xwpXDyRRHg@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">On Mon, May 18, 2026 at 11:20 PM Branko Čibej
          &lt;<a href="mailto:[email protected]" moz-do-not-send="true"
            class="moz-txt-link-freetext">[email protected]</a>&gt;
          wrote:</div>
        <div class="gmail_quote gmail_quote_container">
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div>
              <div>On 18. 5. 26 22:27, Ivan Zhakov wrote:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div dir="ltr">On Mon, 18 May 2026 at 21:24, Timofei
                    Zhakov &lt;<a href="mailto:[email protected]"
                      target="_blank" moz-do-not-send="true"
                      class="moz-txt-link-freetext">[email protected]</a>&gt;
                    wrote:</div>
                  <div class="gmail_quote">
                    <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                      <div dir="ltr">
                        <div dir="ltr">
                          <div dir="ltr">On Mon, May 18, 2026 at 5:22 PM
                            Branko Čibej &lt;<a
                              href="mailto:[email protected]"
                              target="_blank" moz-do-not-send="true"
                              class="moz-txt-link-freetext">[email protected]</a>&gt;
                            wrote:</div>
                          <div class="gmail_quote">
                            <blockquote class="gmail_quote"
style="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>
                                 </div>
                            </blockquote>
                          </div>
                        </div>
                      </div>
                    </blockquote>
                    <div>[..] </div>
                    <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                      <div dir="ltr">
                        <div dir="ltr">
                          <div class="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.</div>
                            <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 APR isn't that.<br>
              <br>
            </div>
          </blockquote>
          <div><br>
          </div>
          <div>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.</div>
          <div> </div>
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div class="gmail_quote">
                    <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                      <div dir="ltr">
                        <div dir="ltr">
                          <div class="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="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 whether we really want it or not. </div>
          <div><br>
          </div>
          <div>In reality it's always included in every source file.
            Take svn_wc.h for example:</div>
          <div><br>
          </div>
          <div>[[[</div>
          <div>#include &lt;apr.h&gt;<br>
            #include &lt;apr_pools.h&gt;<br>
            #include &lt;apr_tables.h&gt;<br>
            #include &lt;apr_hash.h&gt;<br>
            #include &lt;apr_time.h&gt;<br>
            #include &lt;apr_file_io.h&gt;<br>
            <br>
            #include "svn_types.h"<br>
            #include "svn_string.h"<br>
            #include "svn_checksum.h"<br>
            #include "svn_io.h"<br>
            #include "svn_delta.h"     /* for svn_stream_t */<br>
            #include "svn_opt.h"<br>
            #include "svn_ra.h"        /* for svn_ra_reporter_t type */<br>
            ]]]</div>
        </div>
      </div>
    </blockquote>
    <br>
    <br>
    You'll have to be more specific: what exactly is wrong with that?
    apr.h uses symbols defined in windows.h, what else is it supposed to
    do? I really don't understand your objections.<br>
    <br>
    -- Brane<br>
    <br>
  </body>
</html>

--------------WvltDsRmSVnr72GrSnsK7tSR--