Skip to content

Commit f50f5be

Browse files
committed
Add pkg-config metadata files for libraries
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 akiss@inf.u-szeged.hu
1 parent 545c6c7 commit f50f5be

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
@@ -269,14 +269,22 @@ target_compile_definitions(${JERRY_CORE_NAME} PUBLIC ${DEFINES_JERRY})
269269
target_include_directories(${JERRY_CORE_NAME} PUBLIC ${INCLUDE_CORE_PUBLIC})
270270
target_include_directories(${JERRY_CORE_NAME} PRIVATE ${INCLUDE_CORE_PRIVATE})
271271

272+
set(JERRY_CORE_PKGCONFIG_REQUIRES)
273+
set(JERRY_CORE_PKGCONFIG_LIBS)
274+
272275
if(JERRY_LIBM)
273276
target_link_libraries(${JERRY_CORE_NAME} jerry-libm)
277+
set(JERRY_CORE_PKGCONFIG_REQUIRES libjerry-libm)
274278
endif()
275279

276280
separate_arguments(EXTERNAL_LINK_LIBS)
277281
foreach(EXT_LIB ${EXTERNAL_LINK_LIBS})
278282
target_link_libraries(${JERRY_CORE_NAME} ${EXT_LIB})
283+
set(JERRY_CORE_PKGCONFIG_LIBS "${JERRY_CORE_PKGCONFIG_LIBS} -l${EXT_LIB}")
279284
endforeach()
280285

286+
configure_file(libjerry-core.pc.in libjerry-core.pc @ONLY)
287+
281288
install(TARGETS ${JERRY_CORE_NAME} DESTINATION lib)
289+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-core.pc DESTINATION lib/pkgconfig)
282290
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)