Compiling Notes for Planimate

From Planimate Knowledge Base
Jump to navigation Jump to search

Build notes for iFlow, PL and IDBase

  • IDBase KB server now is a Win32 Console EXE so it no longer has the GUI or
    table of contents overview. It displays and updates basic status information
    in its console window.


It still uses iFlow (TCP, XML, time and utility stuff) but does not call
iFlowInit.


It does TCP/IP using polled operation now ("select") rather than windows
messages. It uses threads for searching and writing stuff out (all reads
are done by the "main" thread).


Should be much closer to being portable to a Linux build now

  • IDServer only builds with MSVC. SC generates flaky threaded code (maybe
    its the run time library) so I've deleted the IDSERVER project for SC.
  • The idbase server and client builds share many modules. Some modules
    depend on "SERVER" being #defined so they know the build is for the
    idserver application rather than the client library.
  • Database and TCP/IP stream handlers (both now in iFlow) now are
    compatible with the more modern <iostream> library.


Only builds with the SC compiler use the old <iostream.h> stuff and the
differences are encapsulated in u_global.hpp

  • Common useful TCP/IP and XML code was moved to iFlow so there are new
    modules there and some removed form PL and IDBase KB projects
  • A new SC project to build an IDBase client library is added to IDBase.


This library contains the idbase client code and is linked in (statically)
by PL so it can obtain idBase functionality.

  • The standalone idclient project has been updated to now use the idbase
    client library and is a useful reference of what needs to be set up to
    use the client library (not much).


The IDBase client library uses TCP/IP with windows messages and no threads.

  • IDClient EXE and the idclient library builds with SC or VC.
  • iFlow and Planimate (+ iDBase client) now build under SC and VC.


PL pre IDBase was building under VC7 (Visual Studio 2003).
I have not switched to this compiler "officially" yet, I run it under a
VMWare box and mount the project workspaces. It seems to keep its configs
separate.


Libraries/projects:

c:\rick\wiflow\
ifloww.lib built with SC (debug or release) from ifloww.prj
debug\mwiflow.lib built with VC (debug) from mwiflow.dsw
release\mwiflow.lib built with VC (release) from mwiflow.dsw


c:\rick\idbase\
idclilib.lib built with SC from idclilib.prj
debug\midclilib.lib built with VC from midclilib.dsw
release\midclilib.lib built with VC from midclilib.dsw
idserver.exe built with VC from idserver.dsw
idclient.exe built with SC from idclient.prj
idclient.exe built with VC from idclient.dsw (same name as SC build)


c:\rick\planimat
planimat.exe built with SC from planimat.prj
needs ifloww.lib and idclilib.lib above to be built first


mplanimat.exe built with VC from mplaniamt.dsw (debug and release)
needs mwiflow.lib and midclilib.lib to be built first. Libraries
from debug and release are used matching the EXE build type.

I've tried to keep paths to libraries and include directories relative so the drive and parent path should not matter too much.


With all the new libraries and options (eg: MEMMAN) its very easy to release a version with partial debug code (particularly under SC where the libraries are common)


I've added some globals: IFLOW_DEBUG_BUILD and IDBASE_DEBUG_BUILD which are set if either
library was compiled in debug mode (_DEBUG should be defined for this) or compiled with the memory manager
debugging enabled (see U_MEMMAN.HPP)


PL tests these and appends "DEBUG" to the titlebar if any debug compilations are present in the build


I'm gradually moving compiler temporary files to folders within C:\TMP

Compiler options


Under SC, both "Strict" compilation must be selected and the STRICT symbol must be defined.