Add a pkg-config file to the project.

I ended up having to edit CMakeLists.txt a bit to get it to work out.
So I modified the versioning in version.h to utilize the new variable I made.
No functionality is changed, just worked on the build system.
This commit is contained in:
rexy712 2021-06-24 16:09:43 -07:00
parent 7e1e076cbe
commit 1ae3523fe2
5 changed files with 60 additions and 30 deletions

2
.gitignore vendored
View File

@ -3,3 +3,5 @@ cmake-build-debug
cmake-build-release cmake-build-release
CMakeCache\.txt CMakeCache\.txt
pc/frnetlib.pc
include/frnetlib/version.h

View File

@ -1,6 +1,12 @@
cmake_minimum_required(VERSION 3.9) cmake_minimum_required(VERSION 3.9)
project(frnetlib) project(frnetlib)
include(GNUInstallDirs)
set(FRNETLIB_LINK_LIBRARIES "") set(FRNETLIB_LINK_LIBRARIES "")
set(FRNETLIB_LIBFLAGS "-lfrnetlib")
set(FRNETLIB_VERSION_MAJOR 1)
set(FRNETLIB_VERSION_MINOR 1)
set(FRNETLIB_VERSION_PATCH 1)
#Set module path #Set module path
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules) set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
@ -14,7 +20,7 @@ set(FRNETLIB_BUILD_SHARED_LIBS false CACHE BOOL "Build shared library.")
set(MAX_HTTP_HEADER_SIZE "0xC800" CACHE STRING "The maximum allowed HTTP header size in bytes") set(MAX_HTTP_HEADER_SIZE "0xC800" CACHE STRING "The maximum allowed HTTP header size in bytes")
set(MAX_HTTP_BODY_SIZE "0xA00000" CACHE STRING "The maximum allowed HTTP body size in bytes") set(MAX_HTTP_BODY_SIZE "0xA00000" CACHE STRING "The maximum allowed HTTP body size in bytes")
set(LISTEN_QUEUE_SIZE "64" CACHE STRING "The listen queue depth for fr::TcpListener/fr::SSLListener") set(LISTEN_QUEUE_SIZE "64" CACHE STRING "The listen queue depth for fr::TcpListener/fr::SSLListener")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type")
#Configure defines based on user options #Configure defines based on user options
add_definitions(-DMAX_HTTP_HEADER_SIZE=${MAX_HTTP_HEADER_SIZE}) add_definitions(-DMAX_HTTP_HEADER_SIZE=${MAX_HTTP_HEADER_SIZE})
@ -50,11 +56,14 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CORE_CXX_FLAGS} -g -O0")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CORE_CXX_FLAGS} -O2") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CORE_CXX_FLAGS} -O2")
if(USE_SSL) if(USE_SSL)
set(FRNETLIB_LINK_LIBRARIES ${FRNETLIB_LINK_LIBRARIES} ${MBEDTLS_LIBRARIES}) set(FRNETLIB_LINK_LIBRARIES ${FRNETLIB_LINK_LIBRARIES} ${MBEDTLS_LIBRARIES})
if( FRNETLIB_BUILD_SHARED_LIBS )
set(FRNETLIB_LIBFLAGS "${FRNETLIB_LIBFLAGS} -lmbedcrypto -lmbedx509")
endif()
endif() endif()
if(NOT MSVC) if(NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
endif() endif()
# Set the library output directory # Set the library output directory
@ -79,16 +88,12 @@ elseif(APPLE)
set( LIB_PATH "lib" ) set( LIB_PATH "lib" )
else() else()
set( SHARE_PATH "${CMAKE_INSTALL_PREFIX}/share/FRNETLIB" ) set( SHARE_PATH "${CMAKE_INSTALL_PREFIX}/share/FRNETLIB" )
set( LIB_PATH "${CMAKE_INSTALL_LIBDIR}" )
if( LIB_SUFFIX )
set( LIB_PATH "lib${LIB_SUFFIX}" )
else()
set( LIB_PATH "lib" )
endif()
endif() endif()
if(WIN32) if(WIN32)
set(FRNETLIB_LINK_LIBRARIES ${FRNETLIB_LINK_LIBRARIES} wsock32 ws2_32) set(FRNETLIB_LINK_LIBRARIES ${FRNETLIB_LINK_LIBRARIES} wsock32 ws2_32)
set(FRNETLIB_LIBFLAGS "${FRNETLIB_LIBFLAGS} -lwsock32 -lws2_32")
endif() endif()
target_link_libraries(frnetlib ${FRNETLIB_LINK_LIBRARIES}) target_link_libraries(frnetlib ${FRNETLIB_LINK_LIBRARIES})
@ -106,6 +111,16 @@ if(BUILD_EXAMPLES)
add_subdirectory(examples) add_subdirectory(examples)
endif() endif()
configure_file(
"${CMAKE_SOURCE_DIR}/include/frnetlib/version.h.cmake.in"
"${CMAKE_SOURCE_DIR}/include/frnetlib/version.h"
)
configure_file(
"${CMAKE_SOURCE_DIR}/pc/frnetlib.pc.cmake.in"
"${CMAKE_SOURCE_DIR}/pc/frnetlib.pc"
@ONLY
)
install( install(
TARGETS frnetlib TARGETS frnetlib
RUNTIME DESTINATION bin COMPONENT bin RUNTIME DESTINATION bin COMPONENT bin
@ -114,6 +129,10 @@ install(
) )
install( install(
DIRECTORY include DIRECTORY include/frnetlib
DESTINATION . DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
install(
FILES "${CMAKE_CURRENT_SOURCE_DIR}/pc/frnetlib.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/"
) )

View File

@ -1,18 +0,0 @@
//
// Created by fred.nicolson on 12/07/18.
//
#ifndef FRNETLIB_VERSION_H
#define FRNETLIB_VERSION_H
//Format: Major | Minor | Patch
#define FRNETLIB_VERSION_MAJOR 1
#define FRNETLIB_VERSION_MINOR 1
#define FRNETLIB_VERSION_PATCH 1
#define FRNETLIB_VERSION_NUMBER (FRNETLIB_VERSION_MAJOR * 100*100 + FRNETLIB_VERSION_MINOR * 100 + FRNETLIB_VERSION_PATCH)
#define FRNETLIB_VERSION_STRING "1.1.1"
#define FRNETLIB_VERSION_STRING_FULL "frnetlib 1.1.1"
#endif //FRNETLIB_VERSION_H

View File

@ -0,0 +1,18 @@
//
// Created by fred.nicolson on 12/07/18.
//
#ifndef FRNETLIB_VERSION_H
#define FRNETLIB_VERSION_H
//Format: Major | Minor | Patch
#define FRNETLIB_VERSION_MAJOR @FRNETLIB_VERSION_MAJOR@
#define FRNETLIB_VERSION_MINOR @FRNETLIB_VERSION_MINOR@
#define FRNETLIB_VERSION_PATCH @FRNETLIB_VERSION_PATCH@
#define FRNETLIB_VERSION_NUMBER (FRNETLIB_VERSION_MAJOR * 100*100 + FRNETLIB_VERSION_MINOR * 100 + FRNETLIB_VERSION_PATCH)
#define FRNETLIB_VERSION_STRING "@FRNETLIB_VERSION_MAJOR@.@FRNETLIB_VERSION_MINOR@.@FRNETLIB_VERSION_PATCH@"
#define FRNETLIB_VERSION_STRING_FULL "frnetlib @FRNETLIB_VERSION_MAJOR@.@FRNETLIB_VERSION_MINOR@.@FRNETLIB_VERSION_PATCH@"
#endif //FRNETLIB_VERSION_H

9
pc/frnetlib.pc.cmake.in Normal file
View File

@ -0,0 +1,9 @@
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Name: frnetlib
Description: Frnetlib, is a cross-platform, small and fast networking library written in C++.
URL: https://github.com/Cloaked9000/frnetlib
Version: @FRNETLIB_VERSION_MAJOR@.@FRNETLIB_VERSION_MINOR@.@FRNETLIB_VERSION_PATCH@
Libs: -L${libdir} @FRNETLIB_LIBFLAGS@
Cflags: -I${includedir}