Store the version in version.cpp and group the library under src/core
libdpm-core.so's version was reaching the source as a compile-line definition, with a fallback in two translation units that would have let the library build and report 0.0.0 if the build ever stopped supplying it. The version is a literal in src/core/version.cpp, the file named for it, alongside dpm_core_version() which returns it and the parser for the X.Y.Z strings modules report. The library's sources and its version script move to src/core, leaving src/cli, src/bundled-modules, and the documentation source beside it.
This commit is contained in:
@@ -8,9 +8,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# libdpm-core.so — the library (C ABI)
|
||||
# ---------------------------------------------------------------------
|
||||
add_library(dpm-core SHARED
|
||||
src/context.cpp
|
||||
src/modules.cpp
|
||||
src/version.cpp
|
||||
src/core/context.cpp
|
||||
src/core/modules.cpp
|
||||
src/core/version.cpp
|
||||
)
|
||||
|
||||
target_include_directories(dpm-core PUBLIC
|
||||
@@ -18,10 +18,6 @@ target_include_directories(dpm-core PUBLIC
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_compile_definitions(dpm-core PRIVATE
|
||||
DPM_CORE_VERSION_STR="${PROJECT_VERSION}"
|
||||
)
|
||||
|
||||
# The public C API is the library's entire exported surface; internals
|
||||
# stay hidden. The version script pins the export list and versions the
|
||||
# symbols.
|
||||
@@ -30,10 +26,10 @@ target_compile_options(dpm-core PRIVATE
|
||||
-fvisibility-inlines-hidden
|
||||
)
|
||||
target_link_options(dpm-core PRIVATE
|
||||
-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/libdpm-core.map
|
||||
-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/core/libdpm-core.map
|
||||
)
|
||||
set_property(TARGET dpm-core APPEND PROPERTY
|
||||
LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/libdpm-core.map
|
||||
LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/core/libdpm-core.map
|
||||
)
|
||||
|
||||
target_link_libraries(dpm-core PRIVATE ${CMAKE_DL_LIBS})
|
||||
|
||||
@@ -32,10 +32,6 @@
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
#ifndef DPM_CORE_VERSION_STR
|
||||
#define DPM_CORE_VERSION_STR "0.0.0"
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
const char* DEFAULT_CONFIG_DIR = "/etc/dpm/conf.d/";
|
||||
@@ -252,11 +248,6 @@ void dpm_close(dpm_ctx* ctx)
|
||||
delete ctx;
|
||||
}
|
||||
|
||||
const char* dpm_core_version(void)
|
||||
{
|
||||
return DPM_CORE_VERSION_STR;
|
||||
}
|
||||
|
||||
const char* dpm_config_get(dpm_ctx* ctx, const char* module,
|
||||
const char* section, const char* key)
|
||||
{
|
||||
@@ -39,10 +39,6 @@
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
#ifndef DPM_CORE_VERSION_STR
|
||||
#define DPM_CORE_VERSION_STR "0.0.0"
|
||||
#endif
|
||||
|
||||
/* dlclose wrapper referenced from context.cpp so handle release stays
|
||||
in one translation unit with the loader. */
|
||||
void dpm_internal_unload(void* handle)
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file version.cpp
|
||||
* @brief X.Y.Z version parsing
|
||||
* @brief libdpm-core.so's version, and X.Y.Z version parsing
|
||||
*
|
||||
* @copyright Copyright (c) 2026 SILO GROUP LLC
|
||||
* @author Chris Punches <chris.punches@silogroup.org>
|
||||
@@ -22,9 +22,19 @@
|
||||
*/
|
||||
#include "internal/version.hpp"
|
||||
|
||||
#include <dpm/core.h>
|
||||
|
||||
#include <cctype>
|
||||
#include <cstdlib>
|
||||
|
||||
/** libdpm-core.so's own version. */
|
||||
#define DPM_CORE_VERSION_STR "1.0.0"
|
||||
|
||||
extern "C" const char* dpm_core_version(void)
|
||||
{
|
||||
return DPM_CORE_VERSION_STR;
|
||||
}
|
||||
|
||||
namespace dpm_core {
|
||||
|
||||
bool parse_version(const char* s, long out[3])
|
||||
Reference in New Issue
Block a user