From: Kevin M. <du...@ho...> - 2014-10-19 18:40:28
|
Diederick, I have tried compiling freeGLUT 1715 trunk code using the instructions in the ‘README.cmake’ using Open WATCOM v1.9. My observations follow:- a). CMake: nice software. b). You might like to make ‘How to build freeglut with CMake on Windows (MS Visual Studio)’ section of the ‘README.cmake’ more general, as, it appears, CMake supports more than one compiler on the windows platform. c). item 3). of the ‘README.cmake’ is no longer true for the latest version of CMake (3.0.2). The icon placed on the desktop during the installation of CMake is a shortcut to the GUI. d). Here is a listing of the messages produced by ‘CMake’ during the first configure:- ‘The C compiler identification is Watcom 12.90 The CXX compiler identification is Watcom 12.90 Check for working C compiler: C:/WATCOMv1pt9/binnt/wcl386.exe Check for working C compiler: C:/WATCOMv1pt9/binnt/wcl386.exe -- works Detecting C compiler ABI info Detecting C compiler ABI info - failed Check for working CXX compiler: C:/WATCOMv1pt9/binnt/wcl386.exe Check for working CXX compiler: C:/WATCOMv1pt9/binnt/wcl386.exe -- works Detecting CXX compiler ABI info Detecting CXX compiler ABI info - failed Found OpenGL: opengl32 Looking for include file sys/types.h Looking for include file sys/types.h - found Looking for include file unistd.h Looking for include file unistd.h - found Looking for include file sys/time.h Looking for include file sys/time.h - not found Looking for include file stdbool.h Looking for include file stdbool.h - found Looking for include file sys/param.h Looking for include file sys/param.h - not found Looking for include file sys/ioctl.h Looking for include file sys/ioctl.h - not found Looking for include file fcntl.h Looking for include file fcntl.h - found Looking for include file errno.h Looking for include file errno.h - found Looking for include file usbhid.h Looking for include file usbhid.h - not found Looking for gettimeofday Looking for gettimeofday - not found Looking for vfprintf Looking for vfprintf - not found Looking for _doprnt Looking for _doprnt - not found Looking for XParseGeometry Looking for XParseGeometry - not found Looking for include file stdint.h Looking for include file stdint.h - found Looking for include file inttypes.h Looking for include file inttypes.h - found Configuring done’ Observations: i). for this compiler ‘time.h’ is in the ‘/h’ directory not the ‘/h/sys’. I don’t know whether this is significant, but it is why it cannot find it. ii). this compiler does have a ‘vfprintf’ function (it is documented and in the ‘stdio.h’ file) but for some reason the configure does not find it. e). It looks like the present version of CMake does not produce a Open WATCOM v1.9 IDE project file so I used the ‘wmake’ command line build environment on the Makefile generated. All the libraries and executables were generated OK with the following warning messages:- i). ‘..\src\fg_font_data.c(206): Warning! W202: Symbol 'Fixed8x13_Character_XXX' has been defined, but not referenced ..\src\fg_font_data.c(492): Warning! W202: Symbol 'Fixed9x15_Character_XXX' has been defined, but not referenced ..\src\fg_font_data.c(639): Warning! W202: Symbol 'Helvetica10_Character_XXX' has been defined, but not referenced ..\src\fg_font_data.c(910): Warning! W202: Symbol 'Helvetica12_Character_XXX' has been defined, but not referenced etc, etc. for a many font types. In the WATCOM makefile included in freeGLUT 2.8.1, these messages were suppressed by using the ‘-wcd202’(warning 202 disable flag). You could put a pre processor directive in the actual source along the lines:- ‘#if defined(__WATCOMC__) #pragma off(unreferenced) #endif' to suppress them, if you like. ii). ‘..\src\mswin\fg_cursor_mswin.c(146): Warning! W138: No newline at end of file’ ‘..\src\mswin\fg_state_mswin.c(348): Warning! W138: No newline at end of file’ Would you put a newline at the end of these two source files please ? iii). ‘progs\demos\shapes\shapes.c(301): Warning! W201: Unreachable code’ Needs fixing ? iv). for the building of the shared libraries:- ‘Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghBufferData ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghDeleteBuffers ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghGenBuffers ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghVertexAttribPointer ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghBindBuffer ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghEnableVertexAttribArray ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_gl2.c.obj(..\src\fg_gl2.c): redefinition of _fghDisableVertexAttribArray ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghBufferData ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghDeleteBuffers ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghGenBuffers ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghVertexAttribPointer ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghBindBuffer ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghEnableVertexAttribArray ignored Warning! W1027: file CMakeFiles\freeglut.dir\src\fg_window.c.obj(..\src\fg_window.c): redefinition of _fghDisableVertexAttribArray ignored’ and for the static versions of the demos:- ‘Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghBufferData ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghDeleteBuffers ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghGenBuffers ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghVertexAttribPointer ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghBindBuffer ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghEnableVertexAttribArray ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_gl2.c): redefinition of _fghDisableVertexAttribArray ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghBufferData ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghDeleteBuffers ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghGenBuffers ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghVertexAttribPointer ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghBindBuffer ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghEnableVertexAttribArray ignored Warning! W1027: file lib\freeglut_static.lib(..\src\fg_geometry.c): redefinition of _fghDisableVertexAttribArray ignored’. f). All the demos ran OK, except ‘fractals’ and ‘fractals_random’ because ’fractals.dat’ was not placed in the ‘bin’ directory as part of the CMake process. When I copied the file over and re-ran the demos, the window title was corrupted. This seems to be down to the fact that the WATCOM compiler does not recognize ‘a-zA-Z0-9’ in an sscanf format string. In line 246 of ‘fractals.c’: if I replace "%[a-zA-Z0-9!@#$%^&*()+=/\\_-\" ]" with "%[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWZ0123456789!@#$%^&*()+=/\\_\" –]" then the window title is correctly read in. On another note: I’m not sure the fractals algorithm works in ‘fractals’ as they do not seem to be generated as you zoom in. This is not the case with ‘fractals_random’, were they seem to be generated correctly. I don’t think this is a problem with freeGLUT though. g). One final note: it would be a little more user friendly, to those who use compilers that CMake does not generate IDE project files for, if you set up a couple of flags for compiler switches and pre-processor directives that are user defined. Because you define ‘WINVER’ and ‘_WIN32_WINNT’ in ‘CMakeLists.txt’: I cannot then redefine them as compiler switches in the generated ‘CMakeCache.txt’ as wmake treats the redefinition as an error. So, if I want to compile for say windows 7, I must edit ‘CMakeLists.txt’. If I want to add compiler switches; I must edit ‘CMakeCache.txt’. It would be really good if you could, somehow, create two variable names that appear in the same CMake window as ‘CMAKE_BUILD_TYPE’ et.al. that allowed the user to modify, or add to, the compiler switches and pre-processor directives. Not sure whether this is possible, but I thought I would mention it anyway, hope this helps, regards, Kevin. |
From: John T. <nu...@me...> - 2014-10-19 23:22:48
|
On Sun, Oct 19, 2014 at 07:40:11PM +0100, Kevin Morgan wrote: > > Observations: i). for this compiler ‘time.h’ is in the ‘/h’ directory > not the ‘/h/sys’. I don’t know whether this is significant, but it is > why it cannot find it. <time.h> and <sys/time.h> are two different header files. The first one is the standard ISO C header file which contains things like time_t and the time() and clock() functions. The second is a POSIX header file which contains unix-specific time stuff like struct timeval and the gettimeofday() function. Of course the second one doesn't exist on windows regardless of compiler. > ii). this compiler does have a ‘vfprintf’ function (it is documented > and in the ‘stdio.h’ file) but for some reason the configure does not > find it. vfprintf is a standard C89 function. There is no libc without it. I think it's safe to remove that pointless check. Same goes for errno.h which I see checked in the same run of compatibility tests in CMakeLists.txt. If anyone knows why we're checking for standard C stuff, and there's a good reason for it, let me know, otherwise I'll just remove those checks at some point. Unless I completely forget about it :) > e). It looks like the present version of CMake does not produce a Open > WATCOM v1.9 IDE project file so I used the ‘wmake’ command line build > environment on the Makefile generated. All the libraries and > executables were generated OK with the following warning messages:- > ii). ‘..\src\mswin\fg_cursor_mswin.c(146): Warning! W138: No newline > at end of file’ > ‘..\src\mswin\fg_state_mswin.c(348): Warning! W138: No newline > at end of file’ > Would you put a newline at the end of these two source files > please ? Done. > > iii). ‘progs\demos\shapes\shapes.c(301): Warning! W201: Unreachable code’ > Needs fixing ? Done. P.S. Please configure your mail client to wrap text at 72 columns. -- John Tsiombikas http://nuclear.mutantstargoat.com/ |
From: Diederick C. N. <dc...@gm...> - 2014-10-20 00:08:19
|
Hi John, On Mon, Oct 20, 2014 at 7:22 AM, John Tsiombikas <nu...@me...> wrote: > vfprintf is a standard C89 function. There is no libc without it. I > think it's safe to remove that pointless check. Same goes for errno.h > which I see checked in the same run of compatibility tests in > CMakeLists.txt. > > If anyone knows why we're checking for standard C stuff, and there's a > good reason for it, let me know, otherwise I'll just remove those checks > at some point. Unless I completely forget about it :) I just looked at some older revisions, and it seems that for errno.h it was added somewhere in 2005. And very soon after there was a note in the changelog that its overkill to check, but apparently it was never removed. In other words, this is holdover from configure.ac we used to have. If you feel its pointless to check, we should remove it. RC testing will reveal if there are horrible platforms where this dies (even MSVC6 will be fine, right?). As for the redefinition warnings... not quite sure why they happen with this compiler and not others. Is there something nonstandard about how the functions are declared in fg_gl2.h? Kevin, thanks a lot too for the testing and reporting! Thanks and best, Dee |
From: John T. <nu...@me...> - 2014-10-20 15:12:15
|
On Mon, Oct 20, 2014 at 08:08:11AM +0800, Diederick C. Niehorster wrote: > Hi John, > > On Mon, Oct 20, 2014 at 7:22 AM, John Tsiombikas <nu...@me...> wrote: > > vfprintf is a standard C89 function. There is no libc without it. I > > think it's safe to remove that pointless check. Same goes for errno.h > > which I see checked in the same run of compatibility tests in > > CMakeLists.txt. > > > > If anyone knows why we're checking for standard C stuff, and there's a > > good reason for it, let me know, otherwise I'll just remove those checks > > at some point. Unless I completely forget about it :) > > I just looked at some older revisions, and it seems that for errno.h > it was added somewhere in 2005. And very soon after there was a note > in the changelog that its overkill to check, but apparently it was > never removed. In other words, this is holdover from configure.ac we > used to have. If you feel its pointless to check, we should remove it. > RC testing will reveal if there are horrible platforms where this dies > (even MSVC6 will be fine, right?). Thanks for checking the changelog and the repo, I thought it would be something like that... Yes of course, MSVC6 does have errno.h (as does every C89 compiler in the universe :) I'll just remove those then. -- John Tsiombikas http://nuclear.mutantstargoat.com/ |
From: Diederick C. N. <dc...@gm...> - 2014-10-21 00:51:06
|
Hi John, On Mon, Oct 20, 2014 at 11:12 PM, John Tsiombikas <nu...@me...> wrote: > > Thanks for checking the changelog and the repo, I thought it would be > something like that... > Yes of course, MSVC6 does have errno.h (as does every C89 compiler in > the universe :) > I'll just remove those then. > Thanks! Do you have an idea about the redefinition warnings Kevin found? Are we doing something non-standard? Best and thanks!, Dee |
From: John T. <nu...@me...> - 2014-11-04 09:42:04
|
On Tue, Oct 21, 2014 at 08:50:59AM +0800, Diederick C. Niehorster wrote: > > Thanks! Do you have an idea about the redefinition warnings Kevin > found? Are we doing something non-standard? I can't see anything wrong. Looks like the warnings are due to fg_gl2.h, which contains VBO function pointers, being included into multiple source files. That's not a problem in C (it is in C++), the linker just merges them together. -- John Tsiombikas http://nuclear.mutantstargoat.com/ |
From: Diederick C. N. <dc...@gm...> - 2014-11-04 13:51:30
|
Hi John, On Tue, Nov 4, 2014 at 5:41 PM, John Tsiombikas <nu...@me...> wrote: > On Tue, Oct 21, 2014 at 08:50:59AM +0800, Diederick C. Niehorster wrote: >> >> Thanks! Do you have an idea about the redefinition warnings Kevin >> found? Are we doing something non-standard? > > I can't see anything wrong. Looks like the warnings are due to fg_gl2.h, > which contains VBO function pointers, being included into multiple > source files. That's not a problem in C (it is in C++), the linker just > merges them together. Thanks. Wasn't sure about this as i usually work with C++ and have seen plenty of these kinds of warnings there. Lets ignore this then. Best, Dee |