I'm trying to create my own shared library using ipp_custom_lib_tool from IPP 9.0 Update 3 on Ubuntu 14.04.1 64-bit.
I'm using the following export.txt:
ippiSet_8u_C1R ippiSet_16u_C1R ippiAlphaCompC_8u_C1IR ippiResizeGetSize_8u ippsMalloc_8u ippiResizeLinearInit_8u ippiResizeGetBufferSize_8u ippiResizeLinear_8u_C1R ippiResizeGetSize_16u ippsMalloc_16u ippiResizeLinearInit_16u ippiResizeGetBufferSize_16u ippiResizeLinear_16u_C1R ippiFree
. "$INSTALL_DIR"/bin/compilervars.sh -arch intel64 -platform linux "$INSTALL_DIR"/ipp/tools/intel64/custom_lib_tool/ipp_custom_lib_tool -l export.txt -o $HOME -p mylib -intel64
The resulting output is:
Function is not match with any IPP function: ippiAlphaCompC_8u_C1IR Creating a folder for the project... Creating main.c file... Creating export file... Build for Intel64 architecture... The library is successfully created in: /home/chris/mylib Threading mode: single-threaded
The .so is generated, but does not contain any symbols for ippiAlphaCompC_8uC1IR. When I do the same thing with ippiAlphaCompC_8u_C1R, everything works correctly.
Are the in-place functions not able to be included in the custom lib? Am I missing an option somewhere?
I've solved this myself, albeit in a sub-optimal way.
I purposely made it so ipp_custom_lib_tool fails to build the .so, leaving the generated build files (build_intel64.sh, mylib.def, and main.c) in the destination directory.
I modified mylib.def to include the function I wanted and ran build_intel64.sh with my custom def additions.
The result is an .so with all the symbols I specified.
The list of IPPI functions matched by the tool is in "ipp_custom_lib_tool/src/ippi_list.h" file.
Unfortunately, in IPP 9.0.3 it is static and may be not fully synchronized with actual content of IPP library (include/ippi.h file).
If you update this ippi_list.h file with function list from ippi.h (you can use grep and any of programmable text editor) and rebuild ipp_custom_lib_tool application, you must be able to build what you want.
We updated this tool with ability to generate the list of functions "on-the-fly" from content of IPP "include" directory, but this feature will be available in new versions of IPP only.