modula3 / cm3

Critical Mass Modula-3
http://modula3.github.io/cm3/
Other
139 stars 25 forks source link

Cygwin gcc new issues (threads related) #1055

Closed jpgpng closed 2 years ago

jpgpng commented 2 years ago

As we already known it's the Cygwin's version of cmake that caused problems in https://github.com/modula3/cm3/issues/1054 we now try using the same procedure as https://github.com/modula3/cm3/issues/1054 to build with Cygwin gcc, except the environment variables will be like this:

set CC=x86_64-pc-cygwin-gcc
set CXX=x86_64-pc-cygwin-g++

and the target will be AMD64_CYGWIN instead of AMD64_MINGW.

cmake told us that the variables COMCTL32, IPHLPAPI and WS2_32 are set to NOTFOUND.

First I tried to pass -DCMAKE_PREFIX_PATH=C:/cygwin64/lib/w32api but it doesn't work. So finally I have to edit bootstrap.cmake directly and make dirty hacks like this:

# Find required system libraries for Windows builds.
if(WIN32)
   #find_library(COMCTL32 comctl32 REQUIRED)
   #find_library(IPHLPAPI iphlpapi REQUIRED)
   #find_library(WS2_32   ws2_32   REQUIRED)
   set(COMCTL32 "C:/cygwin64/lib/w32api/libcomctl32.a")
   set(IPHLPAPI "C:/cygwin64/lib/w32api/libiphlpapi.a")
   set(WS2_32 "C:/cygwin64/lib/w32api/libws2_32.a")
   set(win32_libs "${COMCTL32}" "${IPHLPAPI}" "${WS2_32}" Threads)
endif()

The hacks worked. Except we are still in linking errors. Now it's something about threads. I suggest you try this procedure and figure it out yourself @VictorMiasnikov as I will not try any further. I instead want to drop the AMD64_CYGWIN target. @jaykrell Do you agree with me about dropping AMD64_CYGWIN?

VictorMiasnikov commented 2 years ago

} Do you agree with me about dropping AMD64_CYGWIN?

Cm3 AMD64_CYGWIN is useful.

I do not agree kill it.

( There is again "smartphone style")

06.09.2022, 07:55, "jpgpng" @.***>: As we already known it's the Cygwin's version of cmake that caused problems in #1054 we now try using the same procedure as #1054 to build with Cygwin gcc, except the environment variables will be like this: set CC=x86_64-pc-cygwin-gcc set CXX=x86_64-pc-cygwin-g++

and the target will be AMD64_CYGWIN instead of AMD64_MINGW. cmake told us that the variables COMCTL32, IPHLPAPI and WS2_32 are set to NOTFOUND. First I tried to pass -DCMAKE_PREFIX_PATH=C:/cygwin64/lib/w32api but it doesn't work. So finally I have to edit >bootstrap.cmake directly and make dirty hacks like this:

Find required system libraries for Windows builds.

if(WIN32)

find_library(COMCTL32 comctl32 REQUIRED)

find_library(IPHLPAPI iphlpapi REQUIRED)

find_library(WS2_32 ws2_32 REQUIRED)

set(COMCTL32 "C:/cygwin64/lib/w32api/libcomctl32.a") set(IPHLPAPI "C:/cygwin64/lib/w32api/libiphlpapi.a") set(WS2_32 "C:/cygwin64/lib/w32api/libws2_32.a") set(win32_libs "${COMCTL32}" "${IPHLPAPI}" "${WS2_32}" Threads) endif()

The hacks worked. Except we are still in linking errors. Now it's something about threads. I suggest you try this procedure and figure it out yourself @VictorMiasnikov as I will not try any further. I instead want to drop the AMD64_CYGWIN target. @jaykrell Do you agree with me about dropping AMD64_CYGWIN?

jpgpng commented 2 years ago

Cm3 AMD64_CYGWIN is useful I do not agree kill it( There is again "smartphone style")

Then please help with the new linking issues. It's something about threads. I don't know anything about cm3's code so it's up to you. I think going with cmake like me is better than edit manually and build one by one like you are doing on https://github.com/modula3/cm3/issues/1052

VictorMiasnikov commented 2 years ago

Cm3 AMD64_CYGWIN is useful I do not agree kill it( There is again "smartphone style")

Then please help with the new linking issues. It's something about threads. I don't know anything about cm3's code so it's up to you. I think going with cmake like me is better than edit manually and build one by one like you are doing on #1052

One sec . . .

It looks like Github "kill" my Message N2 . . .

VictorMiasnikov commented 2 years ago

As we already known it's the Cygwin's version of cmake that caused problems in #1054 we now try using the same procedure as #1054 to build with Cygwin gcc, except the environment variables will be like this:

set CC=x86_64-pc-cygwin-gcc
set CXX=x86_64-pc-cygwin-g++

and the target will be AMD64_CYGWIN instead of AMD64_MINGW.

cmake told us that the variables COMCTL32, IPHLPAPI and WS2_32 are set to NOTFOUND.

First I tried to pass -DCMAKE_PREFIX_PATH=C:/cygwin64/lib/w32api but it doesn't work. So finally I have to edit bootstrap.cmake directly and make dirty hacks like this:

# Find required system libraries for Windows builds.
if(WIN32)
   #find_library(COMCTL32 comctl32 REQUIRED)
   #find_library(IPHLPAPI iphlpapi REQUIRED)
   #find_library(WS2_32   ws2_32   REQUIRED)
   set(COMCTL32 "C:/cygwin64/lib/w32api/libcomctl32.a")
   set(IPHLPAPI "C:/cygwin64/lib/w32api/libiphlpapi.a")
   set(WS2_32 "C:/cygwin64/lib/w32api/libws2_32.a")
   set(win32_libs "${COMCTL32}" "${IPHLPAPI}" "${WS2_32}" Threads)
endif()

The hacks worked. Except we are still in linking errors. Now it's something about threads. I suggest you try this procedure and figure it out yourself @VictorMiasnikov as I will not try any further. I instead want to drop the AMD64_CYGWIN target. @jaykrell Do you agree with me about dropping AMD64_CYGWIN?

Part 1:

"Cmake .py" is alternative.

Then it works - it is good.

If it doesn't work then use "boot1.py --} make --} boot2.py" "methodology".

Part 2:

Cm3 AMD64_CYGWIN is useful. I do not agree kill it.

Then please help with the new linking issues. It's something about threads. I don't know anything about cm3's code so it's up to you. I think going with cmake like me is better than edit manually and build one by one like you are doing on #1052

I.e. "Cmake .py" is better . . . Ok: I try test this way

jpgpng commented 2 years ago

The only thing I know is the cmake based build script and I will always prefer it as cmake doesn't need any kind of posix environment like autotools. But this issue is about Cygwin, a posix environment, so if autotools works better then just use it.