| 12 | |
| 13 | A simple Mingw shell script was created to generate DEF file from MMP file. To invoke this script: |
| 14 | |
| 15 | {{{ |
| 16 | ..build.symbian $ ./makedef.sh pjlib.mmp |
| 17 | }}} |
| 18 | |
| 19 | This script parses the preprocessor output of each source files and look for {{{EXPORT_C}}} modifier for symbols to export. Because of this, the indentation of some function definitions need to be modified to make it parseable by this script. |
| 20 | |
| 21 | '''Problems with exporting global const variables''' |
| 22 | |
| 23 | It looks like the use of global variables are really discouraged in Symbian, even if they are const variables. They don't work, because their values are not initialized when used by applications. Unfortunately, PJLIB does export some global const variables, in: |
| 24 | - '''sock.h''', for things such as {{{PJ_AF_INET}}} and {{{PJ_SOCK_STREAM}}} constants. |
| 25 | - '''pool.h''', for the default pool factory policy ({{{pj_pool_factory_default_policy}}}). |
| 26 | |
| 27 | To fix this, some accessor functions were added: |
| 28 | - '''sock.h''', added {{{pj_AF_INET()}}} function which returns {{{PJ_AF_INET}}} value, {{{pj_SOCK_STREAM()}}} for {{{PJ_SOCK_STREAM}}}, etc. All libraries have been updated to use this function rather than directly accessing the variable. |
| 29 | - '''pool.h''', added {{{pj_pool_factory_get_default_policy()}}} function which returns the default pool factory policy. In addition, user may specify NULL as the policy when calling {{{pj_caching_pool_init()}}} to make it use the default policy. |