Skip to content

Commit 77767c2

Browse files
akosthekissrobertsipka
authored andcommitted
Add pkg-config metadata files for libraries (#2680)
Should core, ext, libm, and/or port libraries be properly installed on some system, help compilation and linking against them by providing standard `.pc` files, which can be picked up by pkg-config. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
1 parent 67ef396 commit 77767c2

File tree

9 files changed

+77
-0
lines changed

9 files changed

+77
-0
lines changed

jerry-core/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,22 @@ target_compile_definitions(${JERRY_CORE_NAME} PUBLIC ${DEFINES_JERRY})
276276
target_include_directories(${JERRY_CORE_NAME} PUBLIC ${INCLUDE_CORE_PUBLIC})
277277
target_include_directories(${JERRY_CORE_NAME} PRIVATE ${INCLUDE_CORE_PRIVATE})
278278

279+
set(JERRY_CORE_PKGCONFIG_REQUIRES)
280+
set(JERRY_CORE_PKGCONFIG_LIBS)
281+
279282
if(JERRY_LIBM)
280283
target_link_libraries(${JERRY_CORE_NAME} jerry-libm)
284+
set(JERRY_CORE_PKGCONFIG_REQUIRES libjerry-libm)
281285
endif()
282286

283287
separate_arguments(EXTERNAL_LINK_LIBS)
284288
foreach(EXT_LIB ${EXTERNAL_LINK_LIBS})
285289
target_link_libraries(${JERRY_CORE_NAME} ${EXT_LIB})
290+
set(JERRY_CORE_PKGCONFIG_LIBS "${JERRY_CORE_PKGCONFIG_LIBS} -l${EXT_LIB}")
286291
endforeach()
287292

293+
configure_file(libjerry-core.pc.in libjerry-core.pc @ONLY)
294+
288295
install(TARGETS ${JERRY_CORE_NAME} DESTINATION lib)
296+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-core.pc DESTINATION lib/pkgconfig)
289297
install(DIRECTORY ${INCLUDE_CORE_PUBLIC}/ DESTINATION include)

jerry-core/libjerry-core.pc.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
libdir=${prefix}/lib
3+
includedir=${prefix}/include
4+
5+
Name: libjerry-core
6+
Description: JerryScript: lightweight JavaScript engine (core engine library)
7+
URL: https://github.com/pando-project/jerryscript
8+
Version: 1.0
9+
Requires.private: @JERRY_CORE_PKGCONFIG_REQUIRES@ # NOTE: libjerry-port-default* is not added as a required package
10+
Libs: -L${libdir} -ljerry-core
11+
Libs.private: @JERRY_CORE_PKGCONFIG_LIBS@
12+
Cflags: -I${includedir}

jerry-ext/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,15 @@ target_include_directories(${JERRY_EXT_NAME} PRIVATE ${INCLUDE_EXT_PRIVATE})
4747
target_compile_definitions(${JERRY_EXT_NAME} PUBLIC ${DEFINES_EXT})
4848
target_link_libraries(${JERRY_EXT_NAME} jerry-core)
4949

50+
set(JERRY_EXT_PKGCONFIG_LIBS)
51+
5052
if(USING_MSVC AND FEATURE_DEBUGGER)
5153
target_link_libraries(${JERRY_EXT_NAME} ws2_32)
54+
set(JERRY_EXT_PKGCONFIG_LIBS -lws2_32)
5255
endif()
5356

57+
configure_file(libjerry-ext.pc.in libjerry-ext.pc @ONLY)
58+
5459
install(TARGETS ${JERRY_EXT_NAME} DESTINATION lib)
60+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-ext.pc DESTINATION lib/pkgconfig)
5561
install(DIRECTORY ${INCLUDE_EXT_PUBLIC}/ DESTINATION include)

jerry-ext/libjerry-ext.pc.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
libdir=${prefix}/lib
3+
includedir=${prefix}/include
4+
5+
Name: libjerry-ext
6+
Description: JerryScript: lightweight JavaScript engine (extensions library)
7+
URL: https://github.com/pando-project/jerryscript
8+
Version: 1.0
9+
Requires.private: libjerry-core
10+
Libs: -L${libdir} -ljerry-ext
11+
Libs.private: @JERRY_EXT_PKGCONFIG_LIBS@
12+
Cflags: -I${includedir}

jerry-libm/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,8 @@ set_property(TARGET ${JERRY_LIBM_NAME}
3636

3737
target_include_directories(${JERRY_LIBM_NAME} PUBLIC ${INCLUDE_LIBM})
3838

39+
configure_file(libjerry-libm.pc.in libjerry-libm.pc @ONLY)
40+
3941
install(TARGETS ${JERRY_LIBM_NAME} DESTINATION lib)
42+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-libm.pc DESTINATION lib/pkgconfig)
4043
install(DIRECTORY ${INCLUDE_LIBM}/ DESTINATION include/jerry-libm)

jerry-libm/libjerry-libm.pc.in

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
libdir=${prefix}/lib
3+
includedir=${prefix}/include/jerry-libm
4+
5+
Name: libjerry-libm
6+
Description: JerryScript: lightweight JavaScript engine (minimal math library)
7+
URL: https://github.com/pando-project/jerryscript
8+
Version: 1.0
9+
Libs: -L${libdir} -ljerry-libm
10+
Cflags: -I${includedir}

jerry-port/default/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,9 @@ endforeach()
6464
target_compile_definitions(${JERRY_PORT_DEFAULT_NAME}-minimal PRIVATE DISABLE_EXTRA_API)
6565

6666
# Installation
67+
configure_file(libjerry-port-default.pc.in libjerry-port-default.pc @ONLY)
68+
configure_file(libjerry-port-default-minimal.pc.in libjerry-port-default-minimal.pc @ONLY)
69+
6770
install(TARGETS ${JERRY_PORT_DEFAULT_NAME} ${JERRY_PORT_DEFAULT_NAME}-minimal DESTINATION lib)
71+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-port-default.pc ${CMAKE_CURRENT_BINARY_DIR}/libjerry-port-default-minimal.pc DESTINATION lib/pkgconfig)
6872
install(DIRECTORY ${INCLUDE_PORT_DEFAULT}/ DESTINATION include)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
libdir=${prefix}/lib
3+
includedir=${prefix}/include
4+
5+
Name: libjerry-port-default-minimal
6+
Description: JerryScript: lightweight JavaScript engine (default minimal port library)
7+
URL: https://github.com/pando-project/jerryscript
8+
Version: 1.0
9+
Conflicts: libjerry-port-default
10+
Libs: -L${libdir} -ljerry-port-default-minimal
11+
Cflags: -I${includedir}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
libdir=${prefix}/lib
3+
includedir=${prefix}/include
4+
5+
Name: libjerry-port-default
6+
Description: JerryScript: lightweight JavaScript engine (default port library)
7+
URL: https://github.com/pando-project/jerryscript
8+
Version: 1.0
9+
Conflicts: libjerry-port-default-minimal
10+
Libs: -L${libdir} -ljerry-port-default
11+
Cflags: -I${includedir}

0 commit comments

Comments
 (0)