List Archive

Thread

Thread Index

Message

From: Dieter Baron <dillo%nih.at@localhost>
To: Peter Bohning <peter.bohning%gmx.com@localhost>
Subject: Re: mingw errors 1.3.0 1.4.0
Date: Fri, 5 Jan 2018 18:04:40 +0100



On 05.01.2018, at 17:29 , Peter Bohning <peter.bohning%gmx.com@localhost> wrote:

I don't know why I'm compiling Cmake either.  But certainly it should be just as easy to compile something from distributed source with a working development environment as it should be to download binary files that may or may not be appropriate.  Regardless of whether something like cmake is a reasonable solution to development for multiple platforms, certainly a compiler knows more of what platform it's on than do binary files.
 
Your experience aside,

You should not disregard my 25 years of experience developing portable Unix software this easily. I know what I’m talking about. 

No, you missed my point.  There should be, and are to some degree, standards such that the implementation differences among Unix variants should be irrelevant to development.
 
Yes, there are various standards, and for each requirement in them, there is a Unix variant that does not implement it fully.

Again, like I said, why not just have two different files, a handful of defines so that it would work on both mingw and *nix.  That's basically all this autoconf/cmake stuff does anyway.  So, somehow, you kind of missed my point.  I mean I understand, years ago I wanted to use whatever little package things and this and that, as if it was more official.  But with cmake particularly, it seems like a useless fad.

Treating all Unix variants as one system is a fundamental misconception. Each variant, and even each version of the same platform, differ in some way.

Now tell me, how do I know which defines to set, which functions are available, if I only have Makefiles? Who sets these defines, so they fit the current platform? 

Figuring out how to set these defines is *exactly* what autoconf/cmake are doing, but if you skip them, how do they get set? Statically in the Makefiles? Based on what? Who maintains which defines should be set for which version of which Unix variant?

I’ve seen projects that tried to maintain such a list, and they all failed, because it’s nearly impossible to get right in all cases. It’s much more robust, much easier and much less maintenance work to use a tool that lets the compiler figure it out.

clearly cmake is less than perfect given the difficulties I have on a relatively standard setup, and I think my point still stands that it's potentially unnecessary.

Let me make it abundantly clear: a tool like cmake is *essential* for portability on Unix.

I would also prefer a solution that didn’t require installing third party software, but sadly, I don’t know of any that works well across Unix and Windows. (Makefiles do not fit this requirement: they don’t work well on either platform, let alone on both.)

Until a better tool comes along, we will stick with cmake.

I will probably mess with that some more... and if I get lazy then I will try to find binary packages for cmake, I guess... but I'm sure there will be more problems after that.  None of this stuff ever works.

Strangely, I have heard from multiple Windows users successfully building libzip using cmake. To be fair, I’m not sure if any of them used mingw.

So to restate this as clearly as I can: My 25 years of experience developing portable Unix software convinced me that a tool like autoconf/cmake is the only way to maintain portability. Your proposed solution seems to completely miss the messy complexity that is Unix portability.

yours,
dillo

 
Sent: Thursday, January 04, 2018 at 1:41 PM
From: "Benjamin Eikel" <benjamin%eikel.org@localhost>
To: "Peter Bohning" <peter.bohning%gmx.com@localhost>
Cc: libzip-discuss%nih.at@localhost
Subject: Re: mingw errors 1.3.0 1.4.0
Dear Peter,

Am Donnerstag, 4. Januar 2018, 19:22:20 CET schrieb Peter Bohning:
> Sorry. Didn't mean to sound hostile, I'm mostly just sarcastic. I've just
> been doing this stuff for so many years and nothing ever changes. I know
> most people use autoconf, I've always kind of wondered why. It goes
> through and checks for all these types and sizes and which functions are
> supported... I don't really understand why POSIX compliance isn't... I
> don't know, more complete and supported by the government or something...
> most of the setups and operating systems are basically the same, I don't
> get why this is all such a mess.
> But here... there's like 10 different types here, right? Wouldn't it be
> easier to put them in separate files, and have a windows and a *nix
> compile? I mean that's basically all there is now: windows and *nix... I'm
> not even saying anything about libzip here, this whole thing just seems
> crazy to me... this is 2018... are you telling me I have to compile this
> whole other cmake thing, which also won't compile on my mingw, just to
> define like ten different types for libzip? And that's the same problem
> with autoconf... it's like you sit there waiting for it to run through
> configure and all these types, and the actual program uses a handful of
> them...
> I would like the application I wrote to be easy for people to compile and
> install... if I didn't, I would write my own makefile for libzip, quite
> frankly, and just define the types as necessary.
> I don't know what to do and I don't really have time to deal with it. cmake
> won't compile. I guess it doesn't matter. I'm not getting paid for my
> application, why go through this hassle. Yeah I guess maybe I'll write my
> own makefile for libzip, it can't be more trouble than getting cmake to
> compile.

I followed this mailing thread and I cannot understand why you are trying to
compile CMake at all. Lubomir already told you that you can download [1] a
pre-built CMake binary release for Windows. You can choose from a Windows
win64-x64 [2] or win32-x86 [3] Installer, or the ZIP files on CMake's download
page.
Furthermore, concerning your other remarks about CMake: from my experience as
a software developer as well as as a user building free software from source,
CMake is a very helpful (build a project for the IDE of your choice), flexible
(use different compilers, find libraries on many platforms), and user friendly
(usable on command line as well as with Qt GUI) tool.

Kind regards
Benjamin

[1] https://cmake.org/download/
[2] https://cmake.org/files/v3.10/cmake-3.10.1-win64-x64.msi
[3] https://cmake.org/files/v3.10/cmake-3.10.1-win32-x86.msi

> Sent: Thursday, January 04, 2018 at 8:06 AM
> From: "Dieter Baron" <dillo%nih.at@localhost>
> To: "Peter Bohning" <peter.bohning%gmx.com@localhost>
> Cc: "libzip mailing list" <libzip-discuss%nih.at@localhost>
> Subject: Re: mingw errors 1.3.0 1.4.0
> hi,
>
> On 04.01.2018, at 03:04 , Peter Bohning <peter.bohning%gmx.com@localhost> wrote:
>
> And libzip is not that complicated. What does it need cmake for anyway?
> Just for fun? Just to stay trendy?
> We need to check which functions and types the platform libzip is compiled
> on supports. There are two common tools to do this: autoconf/automake and
> cmake. Since we want to support Windows and autoconf needs sh(1) (which is
> not available on Windows), cmake is our only practical option.
> BTW, I would really appreciate it if you could tone it down a little; you
> come across as rather aggressive.
> yours,
> dillo
>
 

Made by MHonArc.