[ExM Users] mkstatic questions

Tim Armstrong tim.g.armstrong at gmail.com
Wed May 28 09:40:27 CDT 2014


main_script lets you specify the Tcl script that's run on application
startup.  To run a compiled Swift program, you set main_script to point to
the Tcl output file.  mkstatic.tcl doesn't need Swift source files.

Note that you only need to fill in the fields in the "Manifest info"
section to generate the C main program.  You probably only need the follow
to generate the C code:

# Name and version of Tcl package
pkg_name=flex_pep_docking_or_whatever
pkg_version=0.0

# C function names to initialise Tcl modules
# These follow the Tcl naming convention, e.g., Userlib_Init
# Use nm on your extension object code to find this symbol
lib_init=_Z24FlexPepDocking_wrap_InitP10Tcl_Interp

# lib scripts are executed in specified order, before main_script and
# after lib_inits
lib_script=../flexpep_docking/user-code.tcl

# headers for user Tcl code, e.g. lib_init functions
lib_include=../flexpep_docking/FlexPepDocking_wrap.h

# main script (generated by STC).
# If provided, always runs this main script.
# Otherwise, the script file is specified at run time as the
# first command line argument (like tclsh)
main_script = stc_output_file.tcl


- Tim


On Wed, May 28, 2014 at 9:17 AM, Ketan Maheshwari <ketan at mcs.anl.gov> wrote:

> Thanks. One more question:
>
> I am not sure where should I provide the application source file in the
> manifest files?
>
> Thanks,
> Ketan
>
>
> On Tue, May 27, 2014 at 2:14 PM, Tim Armstrong <tim.g.armstrong at gmail.com>wrote:
>
>>
>>
>>
>> On Tue, May 27, 2014 at 1:50 PM, Ketan Maheshwari <ketan at mcs.anl.gov>wrote:
>>
>>> Hi,
>>>
>>>  Trying to get the Rosetta application static build for Turbine using
>>> mkstatic.tcl.
>>>
>>>  I am a bit confused about the entries in the manifest file:
>>>
>>>  1. The purpose of lib_script option is not very clear to me. What
>>> scripts are supposed to go in there? The template lists user_stuff1.tcl,
>>> user_stuff2.tcl.
>>>
>>>   Any Tcl scripts that you want to run when the library loads.  E.g. if
>> you set pkg_name=the_pkg and lib_script=the_pkg.tcl, then pkg.tcl will be
>> included in the executable.  It's run when the Tcl user script does a
>> "package require the_pkg".
>>
>>
>>>  2. The lib_include entry: does it accept both include dirs and header
>>> files?
>>>
>> It has to be a header file - it will just add a #include at the top of
>> the C main file.  You have to provide any include directory flags to the C
>> compiler later when you compile it.
>>
>>
>>>
>>>  3. From the documentation
>>> http://www.mcs.anl.gov/exm/local/guides/swift.html#mkstatic, I see that
>>> there are options at commandline such as --include-lib and
>>> --include-system-lib. Are these in lieu of the ones in the manifest?
>>>
>> These let you link in entire library directories.
>>
>> --include-system-lib is for the Tcl standard library directory that is
>> always loaded on startup - it links the files into the executable so that
>> it doesn't need to load them off disk.  It's mainly for performance, but it
>> can help build entirely self-contained executables.
>>
>>  --include-lib  lets you link in an external library, e.g. a directory of
>> Tcl files, or a directory with a pkgIndex.tcl file.  These are set up to to
>> be loaded on demand with "package require".  --include-lib <dir> is
>> essentially an alternative to setting TURBINE_USER_LIB=<dir>.
>>
>>
>>
>>>
>>>  Thanks,
>>> Ketan
>>>
>>> _______________________________________________
>>> ExM-user mailing list
>>> ExM-user at lists.mcs.anl.gov
>>> https://lists.mcs.anl.gov/mailman/listinfo/exm-user
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/exm-user/attachments/20140528/a010da03/attachment-0001.html>


More information about the ExM-user mailing list