From c8ec0d0ec27d73fde3cb0cebb23cbbeac02ca6cf Mon Sep 17 00:00:00 2001 From: "Wang, Xiang W" Date: Mon, 9 Jul 2018 08:26:22 -0400 Subject: [PATCH] chimera: add pkgconfig install files --- CMakeLists.txt | 4 ++-- chimera/CMakeLists.txt | 17 +++++++++++++++++ chimera/libch.pc.in | 12 ++++++++++++ tools/hscollider/CMakeLists.txt | 25 +++++++++++++++++++------ 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 chimera/libch.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a452561..6ed73e16 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -460,7 +460,7 @@ if (NOT CORRECT_PCRE_VERSION) endif() # we need static libs for Chimera - too much deep magic for shared libs -if (CORRECT_PCRE_VERSION AND BUILD_STATIC_LIBS) +if (CORRECT_PCRE_VERSION AND PCRE_BUILD_SOURCE AND BUILD_STATIC_LIBS) set(BUILD_CHIMERA TRUE) endif() @@ -512,7 +512,7 @@ if (NOT CORRECT_PCRE_VERSION) endif() # we need static libs for Chimera - too much deep magic for shared libs -if (CORRECT_PCRE_VERSION AND BUILD_STATIC_LIBS) +if (CORRECT_PCRE_VERSION AND PCRE_BUILD_SOURCE AND BUILD_STATIC_LIBS) set(BUILD_CHIMERA TRUE) endif() diff --git a/chimera/CMakeLists.txt b/chimera/CMakeLists.txt index f2a4203a..1cd66a3f 100644 --- a/chimera/CMakeLists.txt +++ b/chimera/CMakeLists.txt @@ -30,3 +30,20 @@ SET(chimera_SRCS add_library(chimera STATIC ${chimera_SRCS}) add_dependencies(chimera hs pcre) target_link_libraries(chimera hs pcre) + +install(TARGETS chimera DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if (NOT WIN32) + # expand out library names for pkgconfig static link info + foreach (LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}) + # this is fragile, but protects us from toolchain specific files + if (NOT EXISTS ${LIB}) + set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}") + endif() + endforeach() + set(PRIVATE_LIBS "${PRIVATE_LIBS} -L${LIBDIR} -lpcre") + + configure_file(libch.pc.in libch.pc @ONLY) # only replace @ quoted vars + install(FILES ${CMAKE_BINARY_DIR}/chimera/libch.pc + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +endif() diff --git a/chimera/libch.pc.in b/chimera/libch.pc.in new file mode 100644 index 00000000..7f266009 --- /dev/null +++ b/chimera/libch.pc.in @@ -0,0 +1,12 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@CMAKE_INSTALL_PREFIX@/lib +includedir=@CMAKE_INSTALL_PREFIX@/include + +Name: libch +Description: Intel(R) Chimera Library +Version: @HS_VERSION@ +Requires.private: libhs +Libs: -L${libdir} -lchimera +Libs.private: @PRIVATE_LIBS@ +Cflags: -I${includedir}/hs diff --git a/tools/hscollider/CMakeLists.txt b/tools/hscollider/CMakeLists.txt index 0a6878a7..4684964f 100644 --- a/tools/hscollider/CMakeLists.txt +++ b/tools/hscollider/CMakeLists.txt @@ -23,7 +23,9 @@ set_source_files_properties( ragelmaker(ColliderCorporaParser.rl) -add_definitions(-DHS_HYBRID) +if (BUILD_CHIMERA) + add_definitions(-DHS_HYBRID) +endif() # only set these after all tests are done set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS}") @@ -65,9 +67,15 @@ add_dependencies(hscollider ragel_ColliderCorporaParser) add_dependencies(hscollider pcre) if(NOT WIN32) - target_link_libraries(hscollider hs chimera ${PCRE_LDFLAGS} databaseutil - expressionutil corpusomatic crosscompileutil pthread - "${BACKTRACE_LDFLAGS}") + if (BUILD_CHIMERA) + target_link_libraries(hscollider hs chimera ${PCRE_LDFLAGS} databaseutil + expressionutil corpusomatic crosscompileutil pthread + "${BACKTRACE_LDFLAGS}") + else() + target_link_libraries(hscollider hs ${PCRE_LDFLAGS} databaseutil + expressionutil corpusomatic crosscompileutil pthread + "${BACKTRACE_LDFLAGS}") + endif() if(HAVE_BACKTRACE) set_source_files_properties(hscollider_SOURCES COMPILE_FLAGS @@ -75,8 +83,13 @@ if(HAVE_BACKTRACE) endif() else() # WIN32 set_target_properties(hscollider PROPERTIES LINK_FLAGS "/STACK:8388608,8388608") - target_link_libraries(hscollider hs chimera pcre databaseutil - expressionutil corpusomatic crosscompileutil) + if (BUILD_CHIMERA) + target_link_libraries(hscollider hs chimera pcre databaseutil + expressionutil corpusomatic crosscompileutil) + else() + target_link_libraries(hscollider hs pcre databaseutil + expressionutil corpusomatic crosscompileutil) + endif() endif() add_custom_target(