LEX Files
Previous topic  First topic  Next topic


Marinas-IDE has the ability to load the list of libraries that are used in the process of our program linkedition from external files called LEX (Libraries EXternal).
Marinas-IDE tiene la facilidad de cargar la lista de librerías que se utilizarán en el proceso de linkedicion de nuestro programa desde archivos externos llamados LEX (Libraries EXtern).

LEX file exists for each distribution of operating system (Windows, Ubuntu, Mint, etc) on each platform (Linux, Windows NT, etc.)
Existe un archivo LEX para cada DISTRIBUCION de sistema operativo (Windows, Ubuntu, Mint, etc) en cada PLATAFORMA (Linux, Windows NT, etc)

For example, for Ubuntu distribution (lucid, maverick, natty, etc) LINUX platform with GCC compiler is used:
Por ejemplo: Para la distribución UBUNTU (lucid, maverick, natty, etc) de la plataforma LINUX con compilador GCC se usa:

mih_lex_linux_ubuntu_gcc.ch

or, in example, for Windows distribution (XP, 7, etc.) from the Windows NT platform with MinGW compiler is used:
o, por ejemplo, para la distribución Windows (XP, 7, etc) de la plataforma WINDOWS NT con compilador MINGW se usa:

mih_lex_windows-nt_windows_mingw.ch

Within these files the following syntax is used:
Dentro de estos archivos se utiliza la siguiente sintaxis:

The characters "#", "*" or "//" as starting line denotes comments
Los caracteres "#", "*" o "//" como inicio de linea denotan comentarios

The file is being read sequentially
El archivo se va leyendo en forma secuencial

SETVER: indicates that the libraries in the following lines are applicable to the Operating System Version and Release which (Release is used only in some OS) is greater than or equal to that indicated in the statement.
SETVER: indica que las librerias que se encuentran en las lineas siguientes son aplicables al Sistema Operativo cuya Version y Release (Release se utiliza solo en algunos SO) es superior o igual a la indicada en la sentencia.

SETVER <nVersionMinima> [ <nReleaseMinimo> ]

e.g.: SETVER 10 04

COMMON: Indicates that the library is used both to DYNAMIC and STATIC linkedition.The name of the library must have Harbour syntax.In GCC family compilers when PATH is not indicated, the library is added using the -l modificator

COMMON: indica que la libreria se utiliza tanto para linkedición STATIC como para linkedición DYNAMIC
El nombre de la libreria debe tener sintaxis Harbour.
En compiladores de la familia GCC, cuando no se indica el PATH, la libreria se agrega utilizando el modificador -l


e.g.: COMMON "libhbvm.a"

is used as -lhbvm

es utilizada como -lhbvm

But if you encode the full path (usually used in STATIC linkeditions):En cambio, si se codifica el camino completo (generalmente utilizado en linkediciones STATIC):

e.g.: COMMON MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQtGui.a"
ej.: COMMON MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQtGui.a"

the library is added to the linkedicion as if it were an object:
la libreria es agregada a la linkedicion como si fuera un objeto:

/usr/lib/libQtGui.a

For the latter case there are several functions available:

Para este ultimo caso hay disponibles varias funciones:

MIH_GetCppFolder(): Indicates the C++ compiler folder, such as /usr
MIH_GetCppFolder(): Indica el folder del compilador C++, por ejemplo: /usr

MIH_GetCppPathLib(): Indicates the subfolder in the folder C++ compiler where the libraries are, for example: lib
MIH_GetCppPathLib(): Indica el subfolder dentro del folder del compilador C++ en donde estan las librerías, por ejemplo: lib

HB_OsPathSeparator(): This function serves to concatenate Harbour above functions to set up our path regardless of the OS that the library will be used
HB_OsPathSeparator(): Esta función Harbour nos sirve para concatenar las funciones anteriores para armar nuestro path independientemente del SO en que vaya a ser usada la librería.

MIH_GetQtFolder(): Indicates the Qt folder, for example: /home/cdq/marinas-ide_01_04_0035_64bits/qt
MIH_GetQtFolder(): Indica el folder de Qt, por ejemplo: /home/cdq/marinas-ide_01_04_0035_64bits/qt

MIH_GetQtPathLib(): Indicates the subfolder within the folder where the Qt libraries are, for example: lib_static
MIH_GetQtPathLib(): Indica el subfolder dentro del folder de Qt en donde estan las librerías, por ejemplo: lib_static

MIH_GetHarbourFolder(): Indicates the Harbour compiler folder, eg c:\Program Files\marinas-ide_01_04_0036_64bits\harbour
MIH_GetHarbourFolder(): Indica el folder del compilador Harbour, por ejemplo: c:\Program Files\marinas-ide_01_04_0036_64bits\harbour

MIH_GetHarbourPathLib(): Indicates the subfolder in the folder C++ compiler where the libraries are, for example: lib\win\mingw
MIH_GetHarbourPathLib(): Indica el subfolder dentro del folder del compilador C++ en donde estan las librerías, por ejemplo: lib\win\mingw

STATIC: DISCONTINUED at Marinas-Ide 5.x - works in the same way that COMMON but indicates that the library should only be included if it is a STATIC linkedition
STATIC: DISCONTINUADO en Marinas-Ide 5.x - funciona de la misma forma que COMMON pero indica que la libreria sólo debe incluirse si se trata de una linkedición ESTATICA

DYNAMIC: works in the same way that COMMON but indicates that the library should only be included if it is a DYNAMIC linkedition
DYNAMIC: funciona de la misma forma que COMMON pero indica que la libreria sólo debe incluirse si se trata de una linkedición DINAMICA


These LEX files are a sub-product within the Marinas package and like the GUI and the IDE can be updated from the same Marinas-IDE whichgreatly flexibilizes the possibility to correct errors or add new distributions without having to build a new installer.
Estos archivos LEX constituyen un subproducto dentro del paquete MARINAS y al igual que el IDE y la GUI, pueden ser actualizados desde el mismo Marinas-IDE lo cual flexibiliza enormemente la posiblidad de corregir errores o agregar nuevas distribuciones sin necesidad de armar un nuevo instalador.

Real Example: mih_lex_linux_ubuntu_gcc.ch
Ejemplo real: mih_lex_linux_ubuntu_gcc.ch

##============================================================================##
## SETVER for Linux Ubuntu are 2 words                                        ##
##----------------------------------------------------------------------------##
   SETVER 10 04
##----------------------------------------------------------------------------##
   MODULE WebKit "libhbqtwebkit.a"
   MODULE WebKit "libQt5WebKit"+__mg_getQtMidFix()+".outgroup"
   MODULE WebKit "libQt5WebKitWidgets"+__mg_getQtMidFix()+".outgroup"
#
   MODULE OnlyGUI "libhbqtcore.a"
   MODULE OnlyGUI "libhbqtgui.a"
   MODULE OnlyGUI "libhbqtnetwork.a"
   MODULE OnlyGUI "libhbqtwebkit.a"
   MODULE OnlyGUI "libQt5Core"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5Gui"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5Network"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5WebKit"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5XmlPatterns"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5PrintSupport"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5WebKitWidgets"+__mg_getQtMidFix()+".outgroup"
   MODULE OnlyGUI "libQt5Widgets"+__mg_getQtMidFix()+".outgroup"
##
   COMMON "libxhb.a"
   COMMON "libhbct.a"
   COMMON "libsupc++.a"
   COMMON "libhbextern.a"
   COMMON "libhbdebug.a"
   COMMON "libhbvm.a"
   COMMON "libhbrtl.a"
   COMMON "libhblang.a"
   COMMON "libhbcpage.a"
   COMMON "libgtcgi.a"
   COMMON "libgtpca.a"
   COMMON "libgtstd.a"
   COMMON "libgttrm.a"
   COMMON "libgtxwc.a"
   COMMON "libhbrdd.a"
   COMMON "libhbuddall.a"
   COMMON "libhbusrrdd.a"
   COMMON "librddntx.a"
   COMMON "librddcdx.a"
   COMMON "librddnsx.a"
   COMMON "librddfpt.a"
   COMMON "libhbrdd.a"
   COMMON "libhbhsx.a"
   COMMON "libhbsix.a"
   COMMON "libhbmacro.a"
   COMMON "libhbcplr.a"
   COMMON "libhbpp.a"
   COMMON "libhbcommon.a"
   COMMON "libm.a"
   COMMON "libdl.a"
   COMMON "librt.a"
   COMMON "libhbmzip.a"
   COMMON "libminizip.a"
   COMMON "libhbziparc.a"
   COMMON "libhbzlib.a"
   COMMON "libhbtip.a"
   COMMON "libhbxdiff.a"
   COMMON "libxdiff.a"
   COMMON "libhbpcre.a"
   COMMONIF "libgpm.a"
   COMMON "libhbzebra.a"
##- xml library --------##
   COMMON "libhbmxml.a"
   COMMON "libmxml.a"
##- cairo library ------##
   COMMON "libhbcairo.a"
##- cUrl library -------##
   COMMON "libhbcurl.a"
##- mySql library ------##
   COMMON "libhbmysql.a"
##- ssl library --------##
   COMMON "libhbssl.a"
##----------------------------------------------------------------------------##
   DYNAMIC "libhbqtcore.a"
   DYNAMIC "libhbqtgui.a"
   DYNAMIC "libhbqtnetwork.a"
   DYNAMIC "libhbqtwebkit.a"
   DYNAMIC "libQt5Core"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5Gui"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5Network"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5WebKit"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5XmlPatterns"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5PrintSupport"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5WebKitWidgets"+__mg_getQtMidFix()+".outgroup"
   DYNAMIC "libQt5Widgets"+__mg_getQtMidFix()+".outgroup"
##----------------------------------------------------------------------------##
   STATIC "libhbqtcore.a"
   STATIC "libhbqtgui.a"
   STATIC "libhbqtnetwork.a"
// STATIC "libhbqtwebkit.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Core.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Gui.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Network.a"
// STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5WebKit.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5XmlPatterns.a"
##============================================================================##
   SETVER 14 04
##----------------------------------------------------------------------------##
// COMMON "libz.outgroup"
   DYNAMIC "libX11.outgroup"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC "libtiff.a"
   STATIC "libSM.a"
   STATIC "libICE.a"
   STATIC "libfontconfig.a"
   STATIC "libfreetype.a"
   STATIC "libexpat.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
   STATIC "libgthread-2.0.a"
   STATIC "libglib-2.0.a"
   STATIC "libpthread.a"
##============================================================================##
   SETVER 13 04
##----------------------------------------------------------------------------##
// COMMON "libz.outgroup"
   DYNAMIC "libX11.outgroup"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC "libtiff.a"
   STATIC "libSM.a"
   STATIC "libICE.a"
   STATIC "libfontconfig.a"
   STATIC "libfreetype.a"
   STATIC "libexpat.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
   STATIC "libgthread-2.0.a"
   STATIC "libglib-2.0.a"
   STATIC "libpthread.a"
##============================================================================##
   SETVER 12 10
##----------------------------------------------------------------------------##
// COMMON "libz.outgroup"
   DYNAMIC "libX11.outgroup"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC "libtiff.a"
   STATIC "libSM.a"
   STATIC "libICE.a"
   STATIC "libfontconfig.a"
   STATIC "libfreetype.a"
   STATIC "libexpat.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
   STATIC "libgthread-2.0.a"
   STATIC64 "libjbig.a"
##============================================================================##
   SETVER 12 04
##----------------------------------------------------------------------------##
// COMMON "libz.outgroup"
   DYNAMIC "libX11.outgroup"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libtiff.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libSM.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libICE.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libfontconfig.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libfreetype.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libexpat.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
   STATIC "libgthread-2.0.a"
##============================================================================##
   SETVER 11 10
##----------------------------------------------------------------------------##
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libtiff.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libSM.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libICE.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libfontconfig.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libfreetype.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libexpat.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
##============================================================================##
   SETVER 11 04
##----------------------------------------------------------------------------##
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libtiff.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libSM.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+MIH_GetCppPathArch()+Hb_OsPathSeparator()+"libICE.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
##============================================================================##
   SETVER 10 04
##----------------------------------------------------------------------------##
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5DBus.a"
   STATIC MIH_GetQtFolder()+HB_OsPathSeparator()+MIH_GetQtPathLib()+Hb_OsPathSeparator()+"libQt5Xml.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+"libtiff.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+"libSM.a"
   STATIC MIH_GetCppFolder()+HB_OsPathSeparator()+MIH_GetCppPathLib()+Hb_OsPathSeparator()+"libICE.a"
   STATIC "libX11.a"
   STATIC "libXext.a"
   STATIC "libXrender.a"
   STATIC "libXft.a"
   STATIC "libgobject-2.0.a"
##============================================================================##





Marinas-GUI Version 03.06 and
Marinas-IDE Version 05.06 and
LEX Files Version 02.06


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
last update: April 27
2017
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------




A Harbour/QT framework to make multiplatform programs

(©) Copyright 2009-2017 by Fernando Santolin (aka CarozoDeQuilmes)
CarozoDeQuilmes@gmail.com

2009-2017 Beta tester and full English translator: Bruno Luciani
Bruno.Luciani@gmail.com

2014-2015 Final English corrector: David Worboys
DavidWorboys@hotmail.com

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

www.marinas-gui.org


www.marinas-gui.org  

Previous topic  First topic  Next topic