an open source UNIX framework for shell script based web services provider
»Man Page
»User Guide
»Source Code

»My Apps

Davide Cucciniello <>


mysde - My Service Development Environment - lightweight UNIX development environment makefile based


mysde - My Service Development Environment - Version 1.0
usage: mysde [-e]
             [-n <name>=default]
             [-l <libpath>=LD_LIBRARY_PATH]
             [-S <subsystems>]
             [-s <softwareunits>]
        -S-|-s- => read subsystems or softwareunits from stdin
        <subsystems>="<subsystem1> <subsystem2> ...<subsystemN>" |
                      <subsystemN>" |
        <softwareunits>="[<subsystem1>/]<softwareunit1> [<subsystem2>/]<softwareunit2> ... [<subsystemN>/]<softwareunitN>" |
                         [<subsystemN>/]<softwareunitN>" |
      -e => get only configuration for $HOME/.profile
      -s => configure for only one environment
      -n => set name of default environment
      -l => set name of environment variable used for shared libraries
      <basedir> =>base directory of the service development tree
      (e.g. /home/mysystem)


MySDE (My Service Development Environment) is a light UNIX development environment makefile based for C/C++ and Java software projects.

It is the development environment of MySVC framework and includes support:

  • to build external libraries and binaries from packages sources handling multiple configurations for different UNIX environments

  • for configuration management (RCS)

  • for third party C/C++ and Java libraries (including J2EE web applications .war)

  • for Lex & Jacc compilers

  • for AsciiDoc based web sites

  • for FTP deploy

This environment is configured as:

  • a base environment (under $MYSDE_BASE)

  • a root environment, which is a subset of the base environment (under $MYSDE_ROOT=$MYSDE_BASE/src/<mysystem>)

The base environment contains:

  • all package sources and binaries

  • all makefiles to build binaries from sources

  • the support to create initial configuration for more UNIX environments and switch from one environment to another (each environment using its environment variable name for shared libraries)

  • the support to archive system binaries and sources

The root environment contains all system sources and its configured as a tree with three logical levels:

  • The system is the root of the tree

  • The subsystems are the childs of the system

  • The software units are the childs of each subsystem and the leafs of the tree

  | ---- subsystem1
  |          |
  |          | ---- softwareunit11
  |          | ---- softwareunit12
  |          | ---- ...
  |          | ---- softwareunit1M
  | ---- subsystem2
  |          |
  |          | ---- softwareunit21
  |          | ---- softwareunit22
  |          | ---- ...
  |          | ---- softwareunit2M
  | ...
  | ---- subsystemN
             | ---- softwareunitN1
             | ---- softwareunitN2
             | ---- ...
             | ---- softwareunitNM

Each of the three levels (system, subsystem and software unit) has an src subdirectory containing the corresponding Makefile to customize filling some variables

There is also a forth Makefile, included by other three makefiles, that is the "engine" of the development environment

The src subdirectories of the software units contain all the software (including scripts and configuration files)

Each software unit can generate one the following objects:

  • a C/C++ application

  • a C/C++ library (lib*.a or lib*.so) that can be used (linked):

    • only from other software units of its own subsystem ("subsystem" library) or

    • also from software units of other subsystems ("system" library)

  • a Java application

  • a Java library (.jar)

  • a Java/J2EE web application (.war)

  • an AsciiDoc based Web Site (with automatic FTP deploy)

From the system level is then possible to generate Java libraries (.jar) or web applications (.war)



write only on stdout the initial configuration to add to $HOME/.profile (always stored also as $MYSDE_BASE/.profile)


create a development environment for a single UNIX platform

-n <name>

specify the default logical name of UNIX platform (e.g. "osx" or "sun")

-l <libpath>

specify the name of environment variable used in default UNIX platform to handle shared libraries (default LD_LIBRARY_PATH)

-S <subsystems>

read from standard input the name of subsytems to create <subsystems>="<subsystem1> <subsystem2> …<subsystemN>" | "<subsystem1> <subsystem2> … <subsystemN>" | <subsystem1>,<subsystem2>[,…],<subsystemN>

-s <softwareunits>

read from standard input the name of software units to create <softwareunits>="[<subsystem1>/]<softwareunit1> [<subsystem2>/]<softwareunit2> … [<subsystemN>/]<softwareunitN>" | "[<subsystem1>/]<softwareunit1> [<subsystem2>/]<softwareunit2> … [<subsystemN>/]<softwareunitN>" | [<subsystem1>/]<softwareunit1>,[<subsystem2>/]<softwareunit2>[,…],[<subsystemN>/]<softwareunitN> you can specify once the subsytem for all software units (if is common) with -S <subsystem> and -s <softwareunits> or specify for each software unit its corresponding subsystem with -s <subsystem1>/<softwareunit1>,<subsystem2>/<softwareunit2>,…,<subsystemN>/<softwareunitN> or as -s "<subsystem1>/<softwareunit1> <subsystem2>/<softwareunit2> <subsystemN>/<softwareunitN>"


specify the base directory of development environment (default $HOME/mysde)


print help





Failure (usage error or base directory already exists)


See the MySDE distribution BUGS file.


Written by Davide Cucciniello, <>


Main web site:


Copyright (C) 2002-2009 Davide Cucciniello. Free use of this software is granted under the terms of the GNU General Public License (GPL).