mirror of
https://github.com/Perlmint/glew-cmake.git
synced 2025-02-16 21:58:01 +00:00
Generate pkg-config file
This commit is contained in:
parent
cc5cfff738
commit
4f2237a265
@ -9,11 +9,14 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
|
||||
include("GeneratePkgConfig.cmake")
|
||||
|
||||
option(glew-cmake_BUILD_SHARED "Build the shared glew library" ON)
|
||||
option(glew-cmake_BUILD_STATIC "Build the static glew library" ON)
|
||||
option(glew-cmake_BUILD_SINGLE_CONTEXT "Build the single context glew library" ON)
|
||||
option(glew-cmake_BUILD_MULTI_CONTEXT "Build the multi context glew library" ON)
|
||||
option(USE_GLU "Use GLU" OFF)
|
||||
option(PKG_CONFIG_REPRESENTATIVE_TARGET "Generate pc file for specified target as glew. libglew_static|libglewmx_static|libglew_shared|libglewmx_shared" OFF)
|
||||
option(ONLY_LIBS "Do not build executables" OFF)
|
||||
|
||||
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/config/version _VERSION_MAJOR_STRING REGEX "GLEW_MAJOR[ ]*=[ ]*[0-9]+.*")
|
||||
@ -124,6 +127,13 @@ if(glew-cmake_BUILD_SHARED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(PKG_CONFIG_REPRESENTATIVE_TARGET)
|
||||
GeneratePkgConfigFile(${PKG_CONFIG_REPRESENTATIVE_TARGET} "The OpenGL Extension Wrangler library"
|
||||
NAME "glew"
|
||||
LIBRARY_DIR lib
|
||||
${pc_requires})
|
||||
endif()
|
||||
|
||||
file(GLOB PUBLIC_HEADERS "include/GL/*.h")
|
||||
install(FILES ${PUBLIC_HEADERS} DESTINATION include/GL/)
|
||||
|
||||
|
58
GeneratePkgConfig.cmake
Normal file
58
GeneratePkgConfig.cmake
Normal file
@ -0,0 +1,58 @@
|
||||
function(GeneratePkgConfigFile target description)
|
||||
cmake_parse_arguments(pc "" "NAME;REQUIRES;LIBRARY_DIR" "" ${ARGV})
|
||||
if(NOT pc_LIBRARY_DIR)
|
||||
set(pc_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
if(WIN32)
|
||||
set(PKGCONFIG_INSTALL_DIR)
|
||||
else()
|
||||
set(PKGCONFIG_INSTALL_DIR ${pc_LIBRARY_DIR}/pkgconfig)
|
||||
endif()
|
||||
if(NOT pc_NAME)
|
||||
set(pc_NAME ${target})
|
||||
endif()
|
||||
|
||||
get_property(raw_definitions TARGET ${target} PROPERTY INTERFACE_COMPILE_DEFINITIONS)
|
||||
set(definitions "")
|
||||
foreach(def IN LISTS raw_definitions)
|
||||
if(def MATCHES "-D")
|
||||
list(APPEND definitions ${def})
|
||||
else()
|
||||
list(APPEND definitions "-D${def}")
|
||||
endif()
|
||||
endforeach()
|
||||
list(JOIN definitions " " definitions)
|
||||
|
||||
get_property(target_output TARGET ${target} PROPERTY OUTPUT_NAME)
|
||||
get_filename_component(target_output ${target_output} NAME)
|
||||
set(links "-l${target_output}")
|
||||
get_property(raw_links TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
foreach(link IN LISTS raw_links)
|
||||
if(link MATCHES "-l")
|
||||
list(APPEND links ${link})
|
||||
elseif(TARGET ${link})
|
||||
get_property(link_target TARGET ${link} PROPERTY OUTPUT_NAME)
|
||||
list(APPEND links ${link_target})
|
||||
else()
|
||||
list(APPEND links "-l${link}")
|
||||
endif()
|
||||
endforeach()
|
||||
list(JOIN links " " links)
|
||||
get_property(version TARGET ${target} PROPERTY VERSION)
|
||||
|
||||
set(out_file "${CMAKE_CURRENT_BINARY_DIR}/${pc_NAME}.pc")
|
||||
file(WRITE ${out_file} "prefix=${CMAKE_INSTALL_PREFIX}\n")
|
||||
file(APPEND ${out_file} "exec_prefix=\${prefix}\n")
|
||||
file(APPEND ${out_file} "libdir=\${prefix}/${pc_LIBRARY_DIR}\n")
|
||||
file(APPEND ${out_file} "includedir=\${prefix}/include\n")
|
||||
file(APPEND ${out_file} "\n")
|
||||
file(APPEND ${out_file} "Name: ${pc_NAME}\n")
|
||||
file(APPEND ${out_file} "Description: ${description}\n")
|
||||
file(APPEND ${out_file} "Version: ${version}\n")
|
||||
file(APPEND ${out_file} "Cflags: -I\${includedir} ${definitions}\n")
|
||||
file(APPEND ${out_file} "Libs: -L\${libdir} ${links}\n")
|
||||
if(pc_REQUIRES)
|
||||
file(APPEND ${out_file} "Requires: ${pc_REQUIRES}")
|
||||
endif()
|
||||
install(FILES ${out_file} DESTINATION "${PKGCONFIG_INSTALL_DIR}")
|
||||
endfunction()
|
Loading…
Reference in New Issue
Block a user