Page 216 - DCAP507_SYSTEM_SOFTWARE
P. 216

System Software




                    Notes          The most basic autoconf based build systems won't need to know any of these values, at least
                                   directly.  Some other  tools,  such  as libtool,  will require  discovery of  canonic systems  by
                                   themselves. Since adding these macros unconditionally adds direct and indirect code to the
                                   configure script (and a dependency on the two support files config.sub and config.guess); it is
                                   recommended not to call them unconditionally.
                                   It is actually quite easy to decide whether canonic system definitions are needed or not. We just
                                   have to look for the use of the related actor variable. For instance, if the configure.ac script uses
                                   the $build variable, we would need to call AC_CANONIC_BUILD to discover its value. If the
                                   system definition variables are used in a macro instead, we should use the AC_REQUIRE macro
                                   to ensure that they are executed before entering. Don't fear calling them in more than one place.
                                   One common mistake is to "go all the way" and always use the AC_CANONIC_TARGET macro,
                                   or its misnamed predecessor AC_CANONIC_SYSTEM. This is particularly a problem; because
                                   most of the software will not have a target actor at all. This actor is only meaningful when the
                                   software that is being built manages data that is specific to a different system than the one it is
                                   being executed on (the host system).




                                     Notes  In practice, the only places where the target actor is meaningful are to the parts of
                                     a compile toolchain: assemblers, linkers, compilers, debuggers, profilers, analysers, etc.
                                     For the rest of the software, the presence of an extraneous – target option to configure is
                                     likely to just be confusing. Especially for software that processes the output of the script to
                                     identify some information about the package being built.

                                   14.1 Syntax Specification

                                   Advanced Query Syntax (AQS) is the default query syntax used by Windows Search to query the
                                   index and to refine and narrow search parameters. AQS is employed by developers to build
                                   queries programmatically (and by users to narrow their search parameters). Canonic AQS was
                                   introduced in Windows 7 and must be used in Windows 7 and later to programmatically generate
                                   AQS queries.

                                   Canonic syntax was introduced for keywords in Windows 7. An example of a query with a
                                   canonic property is System.Message.FromAddress:=me@microsoft.com. When coding queries
                                   in  applications  running  on  Windows  7  and  later,  you  must  use  canonic  syntax  to
                                   programmatically generate AQS queries. If you do not use canonic syntax and your application
                                   is deployed in a locale or UI language different from the language in the application code, your
                                   queries will not be interpreted correctly.
                                   The conventions for canonic keyword syntax are as follows:

                                      The canonic syntax for a property is its canonic name, such as System.Photo.LightSource.
                                       Canonic names are not case sensitive.
                                      The canonic syntax for the Boolean operators consists of the keywords AND, OR, and
                                       NOT, in all uppercase.
                                      The operators <, >, =, and so forth, are not localized and are thus also part of the canonic
                                       syntax.
                                      If a property P has enumerated values or ranges named N1 through Nk, the canonic syntax
                                       for the Ith value or range is the canonic name for P, followed by the character #, followed
                                       by NI, as illustrated in the following example:
                                       System.Photo.LightSource#Daylight, System.Photo.LightSource#StandardA, and so forth.



          210                               LOVELY PROFESSIONAL UNIVERSITY
   211   212   213   214   215   216   217   218   219   220   221