On 30/03/2014 16:37, Edson W. R. Pereira wrote:

Bill,
Hi Edson,

With the structure you suggest, would it be possible for a developer work on only one of the products without having to check out and build all products during development?
The addition of CMake options (or see below ofr an automatic solution) to select applications individually could help with that, it would lead to a somewhat unintuitive repo layout, but there is no requirement that the target of a CMake add_subdirectory() command is actually a sub-directory. It can be a relative path or even an absolute path (I wouldn't recommend that). So a developer could just check out the top-level common project and the application(s) they want to work on. So long as the relative path relationship between the common libs top-level project to the individual application projects is correct; all will be ok.

The top-level CMake script could automatically exclude, from the build, sibling application directories that aren't present.

73,

-- Edson PY2SDR
73
Bill
G4WJS.



On Sun, Mar 30, 2014 at 12:22 PM, Bill Somerville <[email protected] <mailto:[email protected]>> wrote:

    On 30/03/2014 15:23, Joe Taylor wrote:
    > Hi all,
    Hi Joe,
    >
    > Thanks for the good information and ideas being shared here.  Our
    > combined efforts will surely help us to further improve WSJT-X
    and the
    > other WSJT-related programs, to make them easier to maintain and
    > distribute on multiple platforms, and to facilitate more widespread
    > participation in their development.
    >
    > Several things on my mind today:
    >
    > *To Do List* - Here's an item to add to the list I posted a few
    days ago.
    >
    > How best should we manage code used in more than one of our
    programs?
    > For example, I note that the following Fortran routines are
    common to
    > both WSJT and WSPR: azdist.f90, conv232.f90, db.f90, deg2grid.f90,
    > fano232.f90, four2a.f90, gencwid.f90, geodist.f90, getfile.f90,
    > grid2deg.f90, morse.f90, nchar.f90, packcall.f90, packgrid.f90,
    > packpfx.f90, pctile.f90, peakup.f90, set.f90, slope.f90, sort.f90,
    > ssort.f90, thnix.f90, thnix_stub.f90, unpackcall.f90,
    unpackgrid.f90,
    > unpackpfx.f90, xfft.f90.  Many of these are used in WSJT-X,
    MAP65, and
    > WSPR-X as well.
    >
    > At present, we have multiple copies of these routines in the
    different
    > SVN branches, and they're not necessarily identical.  They probably
    > should be, and it could help a lot if they were stored and
    maintained in
    > one place only.
    >
    > What is best practice in such a situation?  Should we have an
    SVN branch
    > or branches called "common" or "libxyz" or some such, and build
    these
    > functions into libraries that can be linked by the several
    programs?  We
    > would need to be aware that changes to things like calling sequences
    > might then require corresponding changes in more than one program.
    > Therefore, functions to be moved into such libraries should be
    ones that
    > have been stable for some time, and judged likely to remain so.
    >
    > I realize that (especially for code like that summarized above) I'm
    > probably the one best suited to do this work.  But I would value any
    > organizational suggestions on how best to arrange our
    source-code tree.
    One way to do this is to have a top level CMakeLists.txt that builds
    various static libraries from sources using the CMake add_library()
    command their sources can be stored in separate sub directories if
    required (desirable). Then have other sub-directories that have each
    application built by a CMakeLists.txt in that sub-directory that would
    be built from the top level CMakeLists.txt using the
    add_subdirectory()
    command. This structure allows common build options to be shared
    by all
    libraries and specific options to be used at the level of each
    application. Libraries would be directly available to the application
    build scripts as the CMake variables that describe them are passed
    down
    automatically by the add_subdirectory() command.

    Implied by this sort of structure is that all products are built
    at the
    same time. IMHO this is a good thing because as you say library
    changes
    can potentially break multiple programs that depend on the library.
    Builds would not be slower because once everything is built once only
    the bits that you change would get rebuilt.

    I don't know the prerequisites for the applications other than
    wsjtx, I
    guess that such a reorganization would place a greater barrier to
    casual
    development since prerequisites for all applications would really need
    to be in place to build. This could be mitigated with CMake options to
    select individual applications, with the downside that an application
    not built may get broken unknowingly.

    This would probably require a bit or re-organization of the repository
    and a little work on the various CMake scripts for the individual
    applications.

    I have already made some inroads to use static libraries in the wsjtx
    build scripts. A library of Fortran/C/C++ code that is not
    dependent on
    Qt (libwsjt) and another library of common code that is Qt dependent
    (libwsjt_qt) are already built and used by the executables built.
    >
    >
    > *Build Methods* - I think we're now committed to using CMake for
    > production builds of WSJT-X.  CMake build tools are now in place for
    > MAP65 and WSPR, as well, although the scripts in place now are less
    > sophisticated than the one for WSJT-X.  Some effort is needed
    here, and
    > CMakeLists.txt files for WSJT and WSPR could also be written.
    This would come naturally as a result of the above approach to sharing
    static libraries between applications.
    >
    > *Trivia* - Does anyone here have some graphics skills?  Our
    icons need
    > work.  Somehow the ones in window title-bars look fuzzy compared
    with
    > wsjt.ico, the one we had been using; and I notice the icon for
    WSJT-X in
    > the Windows taskbar has become an unrelated system default.  Can we
    > restore the use of the green-on-blue world globe for this
    purpose, and
    > perhaps tweak the picture so that it works well on all our supported
    > platforms?
    The Window title bar icon should not be fuzzy, that normally happens
    when Windows resizes an icon when the appropriate size isn't
    available.
    I have tried to generate every possible size that Windows might
    need as
    a clean bitmaps rendered from the original SVG artwork. It might be
    because I have bumped the gamma on the icon drawings quite a lot which
    can make them look a little washed out. The brightening is
    deliberate to
    make sure the icons stand out as well as possible on various
    backgrounds.

    Aside from the technical issue, I agree that the icons need some input
    from someone with some real graphic artist skills, I hacked them
    together more as place holders that serious attempts at Icon design.

    The build system currently requires two Icon drawings, both need to be
    SVG files, one is used for large icons (the one with orange text on it
    at the moment) and another used for smaller versions which is the
    globe
    without text. More details in the wsjtx/artwork directory which
    contains
    the original SVG drawings.
    >
    >       -- Joe, K1JT
    73
    Bill
    G4WJS.

    
------------------------------------------------------------------------------
    _______________________________________________
    wsjt-devel mailing list
    [email protected]
    <mailto:[email protected]>
    https://lists.sourceforge.net/lists/listinfo/wsjt-devel




------------------------------------------------------------------------------


_______________________________________________
wsjt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

------------------------------------------------------------------------------
_______________________________________________
wsjt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to