


SWI(1)                                                     SWI(1)


NAME
       swipl-ld - Create a SWI-Prolog embedded executable

SYNOPSIS
       swipl-ld options c-files o-files pl-files

DESCRIPTION
       The  utility  swipl-ld  is a front-end for the C-compiler and linker to
       create a stand-alone executable from a series of C/C++ and Prolog input
       files.  It  extracts  information from the SWI-Prolog executable swipl,
       after which it scans the arguments and breaks them into  several  cate-
       gories.   It then calls the C-compiler to create an executable contain-
       ing the user's C-code and the SWI-Prolog kernel.  After this,  it  will
       call  the  development  environment to create a Prolog saved state from
       the prolog files and finally it will create the  target  executable  by
       concatenating the state to the emulator.  See also qsave_program/2 from
       the SWI-Prolog manual.


   Options
       -pl prolog
              Specifies the prolog version to  use.   The  default  is  swipl.
              This  flag  may  be  used  to  choose between different versions
              installed on your system, or to specify a modified  version.   A
              modified  version  should  understands  the flags -dump-runtime-
              variables -f file -F file -g goal -t toplevel.

       -help  Shows options briefly

       -nostate
              Just relinks the kernel.  The newly linked kernel can only func-
              tion  in  the  presence of the development system.  Any supplied
              prolog sourcefiles are ignored, and so  are  the  options  -goal
              -toplevel -initfile.  -class This is the preferred way to attach
              external modules to Prolog if dynamic loading is  not  supported
              on your system.

       -c     Compile  C  or  C++  source-files into object files.  This turns
              swipl-ld into a replacement for the  C  or  C++  compiler  where
              proper options such as the location of the include directory are
              passed automatically to the compiler.

       -E     Invoke the C preprocessor.  Used to make swipl-ld a  replacement
              for the C or C++ compiler.

       -shared
              Link  C, C++ or object files into a shared object (DLL) that can
              be loaded by the load_foreign_library/1 predicate.  If used with
              -c  it  sets the proper options to compile a C or C++ file ready
              for linking into a shared object.

       -embed-shared
              Embed SWI-Prolog into a DLL/Shared object rather  than  an  exe-
              cutable.  See the reference manual for details.



                           Feb 8, 2006                          1





SWI(1)                                                     SWI(1)


       -dll   Windows only Same as -embed-shared Backward compatibility.

       -F base
              By  default,  none  is passed to the swipl command to create the
              saved state.  Using -F xpce you  can  specify  loading  xpce.rc,
              making XPCE available to the saved state.

       -goal goal
              The goal that is initially executed when the toplevel is started
              using PL_toplevel().  E.i. the default.  -g  flag  for  the  new
              executable.

       -toplevel goal
              The  goal  that is executed as the main toplevel goal.  E.i. the
              default.  -t flag for the new executable.

       -initfile file
              The file that is loaded by the toplevel.  E.i. the default.   -f
              flag for the new executable.

       -class {runtime,kernel,development}
              Set  the  save-class  of the Prolog saved-state that is created.
              If runtime (default), the resulting system leave  interpretation
              of  all  arguments to the application.  If kernel all predicates
              will be locked for the  tracer.   Finally,  if  development  the
              state  is  saved  `as-is'  and  the  resulting  system processes
              options just as the basic SWI-Prolog executable does.  See  also
              qsave_program/2 in the SWI-Prolog reference manual.

       -v     Verbose  operation.   This  echos  the commands before executing
              them.  Note that some commands are printed  as  shell  commands,
              but  actually executed by swipl-ld itself for compatibility with
              the Win32 platforms.

       -f     Fake operation.  Together with -v this prints the commands  that
              need to be executed without actually doing anything.

       -Ecppargument ...
              If  the  first option is -E, all subsequent options are appended
              and handed to the program selected by  SWI-Prolog  configure  to
              run cpp.

       -o file
              Specifies  the  name  of  the  final executable.  The default is
              a.out.

       -cc C-compiler
              Specify the compiler to use for *.c files.  Default is the  com-
              piler  used  to compile SWI-Prolog itself, as read from the fea-
              ture c_cc.

       -c++ C++-compiler
              Specify the compiler to use for C++ input files.  If the  C-com-
              piler is gcc this is g++, otherwise c++ is assumed.



                           Feb 8, 2006                          2





SWI(1)                                                     SWI(1)


       -ld linker
              Specifies  the  linker  to  use.  Default is the C-compiler.  On
              Win32 platforms, the default is link.exe.

       -llibrary
              Specifies a C-library for linking the application.  By  default,
              -lswipl as well as the libraries required by the SWI-Prolog ker-
              nel will be passed to the C-compiler.

       -Llibrary-directory
              Specifies an additional library directory  for  the  C-compiler.
              By  default,  the runtime directory for the current architecture
              is passed.

       -g|-I*|-D*|-U*|-O*|-W*
              Passed to the compiler as c-flags.  By default,  the  SWI-Prolog
              include  directory  is  passed  as additional include directory.
              The following -D flags are added by  swipl-ld:  -D__SWI_PROLOG__
              and -D__SWI_EMBEDDED__.

       -pl-options*
              Specify  additional options for swipl.  The first character fol-
              lowing -pl-options determines the option-separator.  The remain-
              der  of the argument is split using this separator and the parts
              are added to the option list for Prolog.  See  also  -cc-options
              and -ld-options

       -ld-options*
              Additional  options  passed  to  the  linker.  For example: -ld-
              options,-Bstatic

       -cc-options*
              Additional options passed to both C- and C++-compiler.

       *.o    Passed as input files to the linker.

       *.c    Compiled using the C-compiler, after which  the  object-file  is
              passed to the linker.  The object file is deleted at cleanup.

       *.cc|*.C|*.cxx|*.cpp
              Compiled  using the C++-compiler, after which the object-file is
              passed to the linker.  The object file is deleted at cleanup.

       *.pl|*.qlf
              Passed as Prolog input files

BUGS
       Parsing the options and distributing them over the various programs  is
       probably  incomplete.  Feel free to modify it and please forward gener-
       ally useful modifications to bugs@swi-prolog.org.

       Some care has to be taken that the state created  with  qsave_program/2
       is   self-contained   (i.e.   contains  no  references  to  the  Prolog
       libraries).  Also, as  the  state  is  created  using  the  development



                           Feb 8, 2006                          3





SWI(1)                                                     SWI(1)


       environment rather then the user's emulator, the Prolog code cannot use
       directives that rely on the C-code added by the user.

SEE ALSO
       swipl(1) SWI-Prolog Reference Manual, http://www.swi-prolog.org

COPYRIGHT
       Copyright (C) 1991-2010, University of Amsterdam, VU  University,  Ams-
       terdam  This program may be used under the terms of the LGPL, version 2
       or later.

AUTHOR
       Jan Wielemaker












































                           Feb 8, 2006                          4


