build: Rework some things for autoconf and cmake builds

Signed-off-by: Ben Collins <bcollins@ubuntu.com>
This commit is contained in:
Ben Collins 2024-12-23 09:24:23 -05:00
parent 545651633d
commit f736768b8e
No known key found for this signature in database
GPG key ID: 5D5A57C7242B22CF
7 changed files with 49 additions and 15 deletions

View file

@ -1,5 +1,4 @@
language: c
dist: jammy
os: linux
arch:
- amd64
@ -28,20 +27,33 @@ before_script:
jobs:
include:
- name: "Autotools Build (focal)"
env: BUILD=auto
dist: focal
script:
- ../configure
- grep libjwt_version_info ../configure
- grep libjwt_version_info Makefile
- grep version-info libjet/Makefile
- make
- name: "CMake Build"
env: BUILD=cmake
dist: jammy
script:
- cmake -DWITH_GNUTLS=YES -DWITH_OPENSSL=YES ..
- make check
- name: "Autotools Build"
env: BUILD=auto
dist: jammy
script:
- ../configure --with-openssl --with-gnutls
- make check
- name: "Coverage Build"
env: BUILD=coverage
dist: jammy
script:
- ../configure --without-gnutls --enable-code-coverage --enable-valgrind
- make check-valgrind check-code-coverage

View file

@ -12,8 +12,12 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
# Extract info from configure.ac
include(AutoToolsVersion)
project(${LIBJWT_PROJECT} VERSION ${LIBJWT_VERSION} LANGUAGES C)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
project(${LIBJWT_PROJECT}
VERSION ${LIBJWT_VERSION}
DESCRIPTION ${LIBJWT_DESCRIPTION}
HOMEPAGE_URL ${LIBJWT_HOMEPAGE_URL}
LANGUAGES C)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
# Find all the things we need for the library
find_package(PkgConfig REQUIRED)
@ -149,6 +153,7 @@ if (DOXYGEN_FOUND)
"VERSION=${PROJECT_VERSION}"
"DOCDIR=${CMAKE_BINARY_DIR}/doxygen-doc"
"SRCDIR=${CMAKE_SOURCE_DIR}"
"PROJECT_BRIEF=${CMAKE_PROJECT_DESCRIPTION}"
"HAVE_DOT=YES"
"DOT_PATH=${DOXYGEN_DOT_EXECUTABLE}")

View file

@ -54,14 +54,14 @@ PROJECT_NUMBER = "v$(VERSION)"
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = "The C JSON Web Token Library +JWK +JWKS"
PROJECT_BRIEF = $(PROJECT_BRIEF)
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO = $(SRCDIR)/images/LibJWT-Icon-95x91.png
PROJECT_LOGO = $(SRCDIR)/images/LibJWT.svg height=100
# With the PROJECT_ICON tag one can specify an icon that is included in the tabs
# when the HTML document is shown. Doxygen will copy the logo to the output

View file

@ -1,8 +1,9 @@
# Get information from configure.ac
FILE(STRINGS "${CMAKE_SOURCE_DIR}/configure.ac" configure REGEX "m4_define")
FILE(STRINGS "${CMAKE_SOURCE_DIR}/configure.ac" configure REGEX "^m4_define")
foreach (line ${configure})
foreach (var major_version minor_version micro_version
so_current so_revision so_age libjwt_project)
so_current so_revision so_age libjwt_project
libjwt_bugs libjwt_url libjwt_brief)
if (NOT ${var} AND line MATCHES "m4_define\\(\\[${var}\\],.*\\[(.*)\\]\\)")
set(${var} "${CMAKE_MATCH_1}")
break()
@ -12,6 +13,8 @@ endforeach()
set(LIBJWT_VERSION "${major_version}.${minor_version}.${micro_version}")
set(LIBJWT_PROJECT "${libjwt_project}")
set(LIBJWT_DESCRIPTION "${libjwt_brief}")
set(LIBJWT_HOMEPAGE_URL "${libjwt_url}")
# WWLTD (What would libtool do)
math(EXPR SO_MAJOR "${so_current} - ${so_age}")
@ -19,4 +22,3 @@ set(SO_MINOR "${so_age}")
set(SO_REVISION "${so_revision}")
set(LIBJWT_VERSION_INFO "${SO_MAJOR}.${SO_MINOR}.${SO_REVISION}")
set(LIBJWT_COMPATVERSION "${SO_MAJOR}")

View file

@ -1,4 +1,9 @@
dnl This sets it for Autconf and CMake
dnl The use of m4_define here is to make it easy to parse by CMakeLists.txt.
dnl That way there's one source for this info
AC_PREREQ([2.61])
dnl The library version
m4_define([major_version], [2])
m4_define([minor_version], [1])
m4_define([micro_version], [0])
@ -13,10 +18,21 @@ m4_define([so_revision], [1])
m4_define([so_age], [11])
m4_define([libjwt_version_info], [so_current:so_revision:so_age])
m4_define([libjwt_project], [LibJWT])
m4_define([libjwt_project], [LibJWT])
m4_define([libjwt_bugs], [https://github.com/benmcollins/libjwt/issues])
m4_define([libjwt_url], [https://libjwt.io])
m4_define([libjwt_brief], [The C JSON Web Token Library +JWK +JWKS])
AC_INIT([libjwt_project],
[libjwt_version],
[libjwt_bugs],
[],
[libjwt_url])
AC_SUBST([LIBJWT_VERSION_INFO], [libjwt_version_info])
AC_DEFINE([PACKAGE_DESCRIPTION], ["libjwt_brief"], [Description of this project])
AC_SUBST([PACKAGE_DESCRIPTION], ["libjwt_brief"])
AC_PREREQ([2.61])
AC_INIT([libjwt_project],[libjwt_version],[https://github.com/benmcollins/libjwt/issues])
AC_LANG([C])
AM_INIT_AUTOMAKE([foreign subdir-objects dist-bzip2])
LT_PREREQ([2.2])
@ -24,8 +40,6 @@ LT_INIT([])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([libjwt/config.h])
AC_SUBST([libjwt_version_info], [libjwt_version_info])
AC_SUBST([AM_CFLAGS], [-Wall])
[RPMB_GNUTLS="--without gnutls"]
@ -115,6 +129,7 @@ DX_RTF_FEATURE(OFF)
DX_XML_FEATURE(OFF)
DX_PDF_FEATURE(OFF)
DX_PS_FEATURE(OFF)
DX_ENV_APPEND(PROJECT_BRIEF, $PACKAGE_DESCRIPTION)
DX_INIT_DOXYGEN($PACKAGE_NAME, Doxyfile)
AC_CONFIG_FILES([

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View file

@ -12,7 +12,7 @@ lib_LTLIBRARIES = libjwt.la
libjwt_la_SOURCES = jwt.c jwks.c base64.c
libjwt_la_LDFLAGS = -version-info @libjwt_version_info@ $(OPENSSL_LDFLAGS) \
libjwt_la_LDFLAGS = -version-info $(LIBJWT_VERSION_INFO) $(OPENSSL_LDFLAGS) \
$(GNUTLS_LDFLAGS) $(MBEDTLS_LIBS) $(JANSSON_LDFLAGS) -no-undefined
libjwt_la_CPPFLAGS = -I$(top_srcdir)/include $(OPENSSL_INCLUDES) \
$(MBEDTLS_INCS) $(GNUTLS_INCLUDES) $(CODE_COVERAGE_CPPFLAGS) -Wall