Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blackdesk/chore/upgrade>debian/latest #57

Merged
merged 4 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.23)
project(
ocppi
LANGUAGES CXX
VERSION 0.2.1)
VERSION 0.2.2)

option(OCPPI_BUILD_EXAMPLES "Build examples of ocppi or not"
${PROJECT_IS_TOP_LEVEL})
Expand Down
256 changes: 149 additions & 107 deletions cmake/PFL.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function(pfl_init)
cmake_parse_arguments(PFL_INIT "" "INSTALL;ENABLE_TESTING;BUILD_EXAMPLES"
"EXTERNALS" ${ARGN})

message(STATUS "PFL: --==Version: v0.2.8==--")
message(STATUS "PFL: --==Version: v0.2.10==--")

set(PFL_ENABLE_TESTING
${PFL_INIT_ENABLE_TESTING}
Expand Down Expand Up @@ -77,27 +77,14 @@ endfunction()
# This function is used to add libraries under the `libs` directory. It just
# takes in a string list contains the directory name under `libs`.
function(pfl_add_libraries)
cmake_parse_arguments(PFL_ADD_LIBRARIES "" "VERSION" "LIBS" ${ARGN})
cmake_parse_arguments(PFL_ADD_LIBRARIES "" "" "LIBS" ${ARGN})

message(
STATUS
"PFL:${PFL_MESSAGE_INDENT} Adding libraries at ${CMAKE_CURRENT_SOURCE_DIR}"
)

set(PFL_MESSAGE_INDENT "${PFL_MESSAGE_INDENT} ")

cmake_path(GET CMAKE_CURRENT_SOURCE_DIR FILENAME TARGET_DIR_NAME)

if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
set(TARGET_DIR_NAME ${PROJECT_NAME})
endif()

string(REPLACE " " "_" TARGET_NAME "${TARGET_DIR_NAME}")
message(STATUS "PFL: Adding libraries at ${CMAKE_CURRENT_SOURCE_DIR}")

if(PFL_PREFIX)
set(PFL_PREFIX "${PFL_PREFIX}::${TARGET_NAME}")
else()
set(PFL_PREFIX "${TARGET_NAME}")
if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
message(
FATAL_ERROR
"PFL: pfl_add_libraries can only be called in \$PROJECT_SOURCE_DIR")
endif()

foreach(LIB ${PFL_ADD_LIBRARIES_LIBS})
Expand All @@ -110,30 +97,46 @@ function(pfl_add_libraries)

include(GNUInstallDirs)

if(EXISTS
${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${TARGET_NAME}-config.cmake.in)
include(CMakePackageConfigHelpers)
# This will be used to replace @PACKAGE_cmakeModulesDir@
set(cmakeModulesDir cmake)

configure_package_config_file(
misc/cmake/${TARGET_NAME}-config.cmake.in
misc/cmake/${TARGET_NAME}-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${TARGET_NAME}
PATH_VARS cmakeModulesDir
NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/misc/cmake/${TARGET_NAME}-config-version.cmake
VERSION ${PFL_ADD_LIBRARIES_VERSION}
COMPATIBILITY SameMajorVersion)
string(TOLOWER "${PROJECT_NAME}" LOWER_PROJECT_NAME)
set(CONFIG_FILE misc/cmake/${LOWER_PROJECT_NAME}-config.cmake)
set(VERSION_FILE misc/cmake/${LOWER_PROJECT_NAME}-config-version.cmake)
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_FILE}.in)
set(CONFIG_FILE misc/cmake/${PROJECT_NAME}Config.cmake)
set(VERSION_FILE misc/cmake/${LOWER_PROJECT_NAME}ConfigVersion.cmake)
endif()

install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/misc/cmake/${TARGET_NAME}-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/misc/cmake/${TARGET_NAME}-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${TARGET_NAME})
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_FILE}.in)
message(STATUS "PFL: tried ")
message(
WARNING
"PFL: tried ${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${PROJECT_NAME}Config.cmake.in"
)
message(
FATAL_ERROR
"PFL: cmake config file not found."
"${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${LOWER_PROJECT_NAME}-config.cmake.in"
"${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${PROJECT_NAME}Config.cmake.in")
endif()

include(CMakePackageConfigHelpers)
# This will be used to replace @PACKAGE_cmakeModulesDir@
set(cmakeModulesDir cmake)

configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_FILE}.in
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_FILE}
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
PATH_VARS cmakeModulesDir
NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)

write_basic_package_version_file(
${VERSION_FILE}
VERSION ${PFL_ADD_LIBRARIES_VERSION}
COMPATIBILITY SameMajorVersion)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_FILE}
${CMAKE_CURRENT_BINARY_DIR}/${VERSION_FILE}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
endfunction()

# This function is used to add a library.
Expand Down Expand Up @@ -187,13 +190,20 @@ function(pfl_add_library)
string(REPLACE "::" "__" TARGET_PREFIX "${PFL_PREFIX}")

set(TARGET_NAME "${TARGET_PREFIX}__${TARGET_NAME}")
string(REPLACE "__" "::" TARGET_EXPORT_NAME "${TARGET_NAME}")
string(REPLACE "__" "::" TARGET_ALIAS "${TARGET_NAME}")

if(NOT PFL_ADD_LIBRARY_OUTPUT_NAME)
set(PFL_ADD_LIBRARY_OUTPUT_NAME ${TARGET_NAME})
message(
WARNING
"PFL: OUTPUT_NAME of ${TARGET_ALIAS} not set, using ${PFL_ADD_LIBRARY_OUTPUT_NAME}"
)
endif()

message(
STATUS
"PFL:${PFL_MESSAGE_INDENT} Adding library ${TARGET_NAME} as ${TARGET_EXPORT_NAME} at ${CMAKE_CURRENT_SOURCE_DIR}"
"PFL: Adding library ${PFL_ADD_LIBRARY_OUTPUT_NAME} as ${TARGET_ALIAS} at ${CMAKE_CURRENT_SOURCE_DIR}"
)
set(PFL_MESSAGE_INDENT "${PFL_MESSAGE_INDENT} ")

__pfl_configure_files(INS ${PFL_ADD_LIBRARY_INS} HEADERS
PFL_ADD_LIBRARY_HEADERS SOURCES PFL_ADD_LIBRARY_SOURCES)
Expand All @@ -212,17 +222,15 @@ function(pfl_add_library)
PROPERTIES SOVERSION ${PFL_ADD_LIBRARY_SOVERSION})
endif()

if(NOT "${TARGET_EXPORT_NAME}" STREQUAL "${TARGET_NAME}")
add_library("${TARGET_EXPORT_NAME}" ALIAS "${TARGET_NAME}")
if(NOT "${TARGET_ALIAS}" STREQUAL "${TARGET_NAME}")
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
endif()

set_target_properties("${TARGET_NAME}" PROPERTIES EXPORT_NAME
${TARGET_DIR_NAME})

if(PFL_ADD_LIBRARY_OUTPUT_NAME)
set_target_properties("${TARGET_NAME}"
PROPERTIES OUTPUT_NAME ${PFL_ADD_LIBRARY_OUTPUT_NAME})
endif()
set_target_properties("${TARGET_NAME}"
PROPERTIES OUTPUT_NAME ${PFL_ADD_LIBRARY_OUTPUT_NAME})

target_sources(
${TARGET_NAME}
Expand Down Expand Up @@ -255,41 +263,58 @@ function(pfl_add_library)
if(PFL_INSTALL AND NOT PFL_ADD_LIBRARY_INTERNAL)
include(GNUInstallDirs)

set(EXPORT_NAME ${PFL_ADD_LIBRARY_OUTPUT_NAME})
if(NOT EXPORT_NAME)
set(EXPORT_NAME ${TARGET_NAME})
endif()

install(
TARGETS "${TARGET_NAME}"
EXPORT "${TARGET_NAME}"
EXPORT "${EXPORT_NAME}"
FILE_SET HEADERS)

install(
EXPORT "${TARGET_NAME}"
EXPORT "${EXPORT_NAME}"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
FILE "${TARGET_NAME}.cmake"
FILE "${EXPORT_NAME}.cmake"
NAMESPACE ${PFL_PREFIX}::)

if(EXISTS
${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${TARGET_NAME}-config.cmake.in)
include(CMakePackageConfigHelpers)
# This will be used to replace @PACKAGE_cmakeModulesDir@
set(cmakeModulesDir cmake)

configure_package_config_file(
misc/cmake/${TARGET_NAME}-config.cmake.in
misc/cmake/${TARGET_NAME}-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${TARGET_NAME}
PATH_VARS cmakeModulesDir
NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/misc/cmake/${TARGET_NAME}-config-version.cmake
VERSION ${PFL_ADD_LIBRARY_VERSION}
COMPATIBILITY SameMajorVersion)

install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/misc/cmake/${TARGET_NAME}-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/misc/cmake/${TARGET_NAME}-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
string(TOLOWER "${EXPORT_NAME}" LOWER_EXPORT_NAME)
set(CONFIG_FILE misc/cmake/${LOWER_EXPORT_NAME}-config.cmake)
set(VERSION_FILE misc/cmake/${LOWER_EXPORT_NAME}-config-version.cmake)
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_FILE}.in)
set(CONFIG_FILE misc/cmake/${EXPORT_NAME}Config.cmake)
set(VERSION_FILE misc/cmake/${LOWER_EXPORT_NAME}ConfigVersion.cmake)
endif()

if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_FILE}.in)
message(
FATAL_ERROR
"PFL: cmake config file not found."
"${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${LOWER_EXPORT_NAME}-config.cmake.in"
"${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/${EXPORT_NAME}Config.cmake.in"
)
endif()

include(CMakePackageConfigHelpers)
# This will be used to replace @PACKAGE_cmakeModulesDir@
set(cmakeModulesDir cmake)

configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_FILE}.in
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_FILE}
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
PATH_VARS cmakeModulesDir
NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)

write_basic_package_version_file(
${VERSION_FILE}
VERSION ${PFL_ADD_LIBRARIES_VERSION}
COMPATIBILITY SameMajorVersion)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_FILE}
${CMAKE_CURRENT_BINARY_DIR}/${VERSION_FILE}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
endif()

if(PFL_PREFIX)
Expand All @@ -298,40 +323,48 @@ function(pfl_add_library)
set(PFL_PREFIX "${TARGET_DIR_NAME}")
endif()

if(PFL_ENABLE_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests")
message(
STATUS
"PFL:${PFL_MESSAGE_INDENT} Adding tests for library ${TARGET_EXPORT_NAME} at ${CMAKE_CURRENT_SOURCE_DIR}/tests"
)
set(PFL_MESSAGE_INDENT "${PFL_MESSAGE_INDENT} ")
add_subdirectory(tests)
string(SUBSTRING "${PFL_MESSAGE_INDENT}" 2 -1 PFL_MESSAGE_INDENT)
if(PFL_ENABLE_TESTING)
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests")
message(
WARNING
"PFL: Tests of library ${TARGET_ALIAS} is enabled but directory ${CMAKE_CURRENT_SOURCE_DIR}/tests not found."
)
else()
message(
STATUS
"PFL: Adding tests for library ${TARGET_ALIAS} at ${CMAKE_CURRENT_SOURCE_DIR}/tests"
)
add_subdirectory(tests)
endif()
endif()

if(PFL_ADD_LIBRARY_EXAMPLES
AND PFL_BUILD_EXAMPLES
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples")
message(
STATUS
"PFL:${PFL_MESSAGE_INDENT} Adding examples for library ${TARGET_EXPORT_NAME} at ${CMAKE_CURRENT_SOURCE_DIR}/examples"
)
set(PFL_MESSAGE_INDENT "${PFL_MESSAGE_INDENT} ")
foreach(EXAMPLE ${PFL_ADD_LIBRARY_EXAMPLES})
add_subdirectory("examples/${EXAMPLE}")
endforeach()
string(SUBSTRING "${PFL_MESSAGE_INDENT}" 2 -1 PFL_MESSAGE_INDENT)
if(PFL_ADD_LIBRARY_EXAMPLES)
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples")
message(
WARNING
"PFL: Examples of library ${TARGET_ALIAS} is enabled but directory ${CMAKE_CURRENT_SOURCE_DIR}/examples not found."
)
else()
if(PFL_BUILD_EXAMPLES)
message(
STATUS
"PFL: Adding examples for library ${TARGET_ALIAS} at ${CMAKE_CURRENT_SOURCE_DIR}/examples"
)
foreach(EXAMPLE ${PFL_ADD_LIBRARY_EXAMPLES})
add_subdirectory("examples/${EXAMPLE}")
endforeach()
endif()
endif()
endif()

if(PFL_ADD_LIBRARY_APPS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/apps")
message(
STATUS
"PFL:${PFL_MESSAGE_INDENT} Adding apps for library ${TARGET_EXPORT_NAME} at ${CMAKE_CURRENT_SOURCE_DIR}/apps"
"PFL: Adding apps for library ${TARGET_ALIAS} at ${CMAKE_CURRENT_SOURCE_DIR}/apps"
)
set(PFL_MESSAGE_INDENT "${PFL_MESSAGE_INDENT} ")
foreach(APP ${PFL_ADD_LIBRARY_APPS})
add_subdirectory("apps/${APP}")
endforeach()
string(SUBSTRING "${PFL_MESSAGE_INDENT}" 2 -1 PFL_MESSAGE_INDENT)
endif()
endfunction()

Expand Down Expand Up @@ -360,27 +393,36 @@ function(pfl_add_executable)

string(REPLACE "::" "__" TARGET_PREFIX "${PFL_PREFIX}")

if(TARGET_PREFIX)
set(TARGET_NAME "${TARGET_PREFIX}__${TARGET_NAME}")
set(TARGET_NAME "${TARGET_PREFIX}__${TARGET_NAME}")

string(REPLACE "__" "::" TARGET_ALIAS "${TARGET_NAME}")

if(NOT PFL_ADD_EXECUTABLE_OUTPUT_NAME)
set(PFL_ADD_EXECUTABLE_OUTPUT_NAME "${TARGET_NAME}")
message(
WARNING
"PFL: OUTPUT_NAME of ${TARGET_ALIAS} not set, using ${PFL_ADD_EXECUTABLE_OUTPUT_NAME}"
)
endif()

message(
STATUS
"PFL:${PFL_MESSAGE_INDENT} Adding executable ${TARGET_NAME} at ${CMAKE_CURRENT_SOURCE_DIR}"
"PFL: Adding executable ${PFL_ADD_EXECUTABLE_OUTPUT_NAME} as ${TARGET_ALIAS} at ${CMAKE_CURRENT_SOURCE_DIR}"
)
set(PFL_MESSAGE_INDENT "${PFL_MESSAGE_INDENT} ")

__pfl_configure_files(
INS ${PFL_ADD_EXECUTABLE_INS} HEADERS PFL_ADD_EXECUTABLE_HEADERS SOURCES
PFL_ADD_EXECUTABLE_SOURCES)

add_executable("${TARGET_NAME}" ${PFL_ADD_EXECUTABLE_SOURCES})

if(PFL_ADD_EXECUTABLE_OUTPUT_NAME)
set_target_properties(
"${TARGET_NAME}" PROPERTIES OUTPUT_NAME ${PFL_ADD_EXECUTABLE_OUTPUT_NAME})
if(NOT "${TARGET_ALIAS}" STREQUAL "${TARGET_NAME}")
add_executable("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
endif()

set_target_properties(
"${TARGET_NAME}" PROPERTIES OUTPUT_NAME ${PFL_ADD_EXECUTABLE_OUTPUT_NAME})

target_sources(
${TARGET_NAME}
PUBLIC FILE_SET
Expand Down
4 changes: 2 additions & 2 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ocppi (0.2.1-1) UNRELEASED; urgency=medium
ocppi (0.2.2-1) UNRELEASED; urgency=medium

* Initial release

-- Chen Linxuan <me@black-desk.cn> Mon, 29 Jan 2024 19:32:38 +0800
-- Chen Linxuan <me@black-desk.cn> Thu, 01 Feb 2024 16:31:08 +0800