Hello all,
Here are a few explanations (& questions) on some of the above issues.
-re: requiring -debug or -release on the command line
cvicc is built using the same source as the comple.exe utility from Windows. Neither tool reads the workspace .cws file which is where the debug versus release configuration info is stored. The Windows version was envisioned to be a tool used in an automated release build where you would not want to pick up the environments last saved configuration, you would most likely want to specify on the command line which to build.
-re: the -rebuild option
The -rebuild is used to prevent the cvicc from doing a dependency check, possibly because the file dates have changed. A prime use case would be if you used the same physical source tree on a dual boot linux/Windows machine; after you built on Windows and then rebooted into linux, the object files look up to date, but they are Windows format files that cvicc won't recompile which then get passed to the linux linker which has no idea what the object files are and generates link errors.
-re: [Shift][Tab] bug
In general this works, what distribution/window manager are you using?
-re: GetDiskSpace link bug
The toolbox function GetDiskSpace is implemented on top of the Win32 SDK function GetDiskFreeSpaceEx and is located within a ifdef for _NI_mswin32_.
-re: UInt64Type
The definition for this type is in toolbox.h inside a _NI_mswin32 ifdef.
-re: EVENT_PANEL_SIZING
This feature was introduced in CVI 8.1.
-re: other predefined macros
_NI_unix_ is also defined.
-re: SMB file access error
Windows file systems have several more permissions differences from unix file systems. The ability to modify a file is separate from the ability to delete or create a file. When cvicc calls gcc to compile the file it is going to delete the old object file and then try to write a new file. This could be why 'touch'-ing the file succeeds, but compiling it does not.
-re: cvicc and gcc relation
cvicc is implemented as a wrapper that reads the project file, determines which files to compile, uses gcc to compile, determines what things to put in the link, and then used ld to do the final link and create the output binary. You can add addition link libraries to the cvicc with the -llibname option that gets passed to ld. If you want to change the gcc compile options you can edit the file /usr/local/natinst/cvi80/bin/compile.ecc This is a external compiler support (from Windows) file that was customized for linux. The line with COMPFLAGS gets added to the command line that compiles each .c file into a .o file The line with LINKFLAGS get added to the command line that performs the final link.
-re: odd EVENT_PANEL_SIZE and ATTR_HEIGHT behavior
The call to SetPanelAttribute should not be generating a user event. It specifically calls an internal function with NoUserEvent in its name. One possibility I can think for this behavior is that your window manager might be intercepting our size call and changing the size that we are asking for. If this is the case then it would probably send a new size event to the window.
-re: DisplayPanel not bringing window to front
As part of creating and showing the underlying XWindows window we call the X function XRaiseWindow. This function should bring the window to the top of the Z-plane unless something else (like a window manager) asked to do an override on our window and disallow the Z-plane change.
-re: Timer always returns 0
The Timer function is implemented on the system function gettimeofday. The most likely cause of failure for this function is the timezone not being set on the system.
Michael
NI