breaking away module development to use only dpmdk

master
Chris Punches 2025-03-08 22:05:13 -05:00
parent e06f3733fa
commit 7e068db32a
2 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,34 @@
cmake_minimum_required(VERSION 3.22)
project(dpm-info-module VERSION 0.1.0)
# Set C++ standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Create output directory
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/modules)
# Create shared library with the correct naming convention (no prefix)
add_library(info MODULE
info.cpp
src/infoFuncs.cpp
)
# Set output properties for the module
set_target_properties(
info PROPERTIES
PREFIX ""
SUFFIX ".so"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
)
# Include directories based on the actual project structure
target_include_directories(info PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/../../dpmdk/include # Path to DPMDK headers outside the module directory
)
# Installation rules
install(TARGETS info
LIBRARY DESTINATION /usr/lib/dpm/modules
)

31
modules/info/README.md Normal file
View File

@ -0,0 +1,31 @@
# DPM Module Development
Modules for the Dark Horse Package Manager (DPM) can be developed independently of the core system. The `info` module in this repository provides a reference implementation.
## Required Dependencies
Modules must include the DPMDK headers:
```cpp
#include <dpmdk/include/CommonModuleAPI.hpp>
```
## Required Functions
Every module must implement these three functions:
```cpp
extern "C" const char* dpm_module_get_version(void);
extern "C" const char* dpm_get_description(void);
extern "C" int dpm_module_execute(const char* command, int argc, char** argv);
```
See `modules/info/info.cpp` for a working implementation.
## Building
See the standalone CMakeLists.txt in the `modules/info` directory as a reference for building independent modules.
## Configuration
Standard configuration location: `/etc/dpm/conf.d/`