Skip to content
Snippets Groups Projects
Commit 04f6b4f2 authored by Maxence Naud's avatar Maxence Naud
Browse files

Merge branch 'dev' into 'main'

[Upd] version 0.1.4 -> 0.1.5

See merge request !27
parents b404f66e 6fe5f273
No related branches found
No related tags found
1 merge request!27[Upd] version 0.1.4 -> 0.1.5
Pipeline #64431 passed
# C++ Build
build*/
install*/
include/aidge/backend/opencv_version.h
# VSCode
.vscode
......
# Version 0.1.5 (January 31, 2024)
- Enforce C++14 in 'CMakeLists.txt'
- Remove scm dependency to check versions compatibility
- Change 'setup.py' to use more environment variables in its build process
# Version 0.1.4 (December 6, 2024)
# Version 0.0.1 (January 23, 2024)
......
cmake_minimum_required(VERSION 3.18)
set(CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
file(STRINGS "${CMAKE_SOURCE_DIR}/version.txt" version)
# Parse version.txt to retrieve Major, Minor and Path
string(REGEX MATCH "([0-9]+\\.[0-9]+\\.[0-9]+)" _ MATCHES ${version})
set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_2})
set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_3})
# Retrieve latest git commit
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
project(aidge_backend_opencv
VERSION ${version}
DESCRIPTION "Opencv implementations of the operators and tensor of aidge framework"
......@@ -10,8 +28,9 @@ project(aidge_backend_opencv
message(STATUS "Project name: ${CMAKE_PROJECT_NAME}")
message(STATUS "Project version: ${version}")
message(STATUS "Latest git commit: ${GIT_COMMIT_HASH}")
# Note : project name is {project} and python module name is also {project}
# Note : project name is {project} and python module name is also {project}
set(module_name _${CMAKE_PROJECT_NAME}) # target name
##############################################
......@@ -113,13 +132,19 @@ install(TARGETS ${module_name} EXPORT ${CMAKE_PROJECT_NAME}-targets
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
#Export the targets to a script
message(STATUS "Creating ${CMAKE_CURRENT_SOURCE_DIR}/include/aidge/backend/opencv_version.h")
# Generate version.h file from config file version.h.in
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/include/aidge/backend/version.h.in"
"${CMAKE_CURRENT_SOURCE_DIR}/include/aidge/backend/opencv_version.h"
)
#Export the targets to a script
install(EXPORT ${CMAKE_PROJECT_NAME}-targets
FILE "${CMAKE_PROJECT_NAME}-targets.cmake"
DESTINATION ${INSTALL_CONFIGDIR}
COMPONENT ${module_name}
)
COMPONENT ${module_name}
)
#Create a ConfigVersion.cmake file
include(CMakePackageConfigHelpers)
......
# Example 1: import .so generated by PyBind
import aidge_core
from aidge_backend_opencv.aidge_backend_opencv import *
from aidge_backend_opencv.aidge_backend_opencv import * # import so generated by PyBind
......@@ -12,10 +12,13 @@
#ifndef AIDGE_OPENCV_OPENCV_H_
#define AIDGE_OPENCV_OPENCV_H_
#include "aidge/backend/opencv_version.h"
#include "aidge/backend/opencv/data/DataUtils.hpp"
#include "aidge/backend/opencv/data/TensorImpl.hpp"
#include "aidge/backend/opencv/database/MNIST.hpp"
#include "aidge/backend/opencv/stimuli/StimulusImpl_opencv_imread.hpp"
#include "aidge/backend/opencv/utils/Utils.hpp"
#endif /* AIDGE_OPENCV_OPENCV_H_ */
\ No newline at end of file
#endif /* AIDGE_OPENCV_OPENCV_H_ */
#ifndef VERSION_H
#define VERSION_H
namespace Aidge {
static constexpr const int PROJECT_VERSION_MAJOR = @PROJECT_VERSION_MAJOR@;
static constexpr const int PROJECT_VERSION_MINOR = @PROJECT_VERSION_MINOR@;
static constexpr const int PROJECT_VERSION_PATCH = @PROJECT_VERSION_PATCH@;
static constexpr const char * PROJECT_VERSION = "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@";
static constexpr const char * PROJECT_GIT_HASH = "@GIT_COMMIT_HASH@";
}
#endif // VERSION_H
#ifndef AIDGE_UTILS_SYS_INFO_OPENCV_VERSION_INFO_H
#define AIDGE_UTILS_SYS_INFO_OPENCV_VERSION_INFO_H
#include "aidge/utils/Log.hpp"
#include "aidge/backend/opencv_version.h"
namespace Aidge {
constexpr inline const char * getBackendOpencvProjectVersion(){
return PROJECT_VERSION;
}
constexpr inline const char * getBackendOpencvGitHash(){
return PROJECT_GIT_HASH;
}
void showBackendOpencvVersion() {
Log::info("Aidge backend OpenCV: {} ({}), {} {}", getBackendOpencvProjectVersion(), getBackendOpencvGitHash(), __DATE__, __TIME__);
// Compiler version
#if defined(__clang__)
/* Clang/LLVM. ---------------------------------------------- */
Log::info("Clang/LLVM compiler version: {}.{}.{}\n", __clang_major__ , __clang_minor__, __clang_patchlevel__);
#elif defined(__ICC) || defined(__INTEL_COMPILER)
/* Intel ICC/ICPC. ------------------------------------------ */
Log::info("Intel ICC/ICPC compiler version: {}\n", __INTEL_COMPILER);
#elif defined(__GNUC__) || defined(__GNUG__)
/* GNU GCC/G++. --------------------------------------------- */
Log::info("GNU GCC/G++ compiler version: {}.{}.{}", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
#elif defined(_MSC_VER)
/* Microsoft Visual Studio. --------------------------------- */
Log::info("Microsoft Visual Studio compiler version: {}\n", _MSC_VER);
#else
Log::info("Unknown compiler\n");
#endif
}
} // namespace Aidge
#endif // AIDGE_UTILS_SYS_INFO_OPENCV_VERSION_INFO_H
......@@ -4,22 +4,29 @@ description="Opencv implementations of the operators and tensor of aidge framewo
dependencies = [
"numpy>=1.21.6",
]
requires-python = ">= 3.7"
dynamic = ["version"] # defined in tool.setuptools_scm
requires-python = ">= 3.8"
dynamic = ["version"] # defined by pbr
readme = "README.md"
license = { file = "LICENSE" }
classifiers = [
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Programming Language :: Python :: 3"
]
[project.urls]
Homepage = "https://www.deepgreen.ai/en/platform"
Documentation = "https://eclipse-aidge.readthedocs.io/en/latest/"
Repository = "https://gitlab.eclipse.org/eclipse/aidge/aidge_backend_opencv"
Issues = "https://gitlab.eclipse.org/eclipse/aidge/aidge_backend_opencv/-/issues/"
Changelog = "https://gitlab.eclipse.org/eclipse/aidge/aidge_backend_opencv/-/releases"
[build-system]
requires = [
"setuptools>=64",
"setuptools_scm[toml]==7.1.0",
"cmake>=3.15.3.post1",
"toml",
"opencv-python>=4.9.0.80",
"pbr"
]
build-backend = "setuptools.build_meta"
......@@ -31,9 +38,7 @@ where = ["."] # list of folders that contain the packages (["."] by default)
include = ["aidge_backend_opencv*"] # package names should match these glob patterns (["*"] by default)
exclude = ["aidge_backend_opencv.unit_tests*"] # exclude packages matching these glob patterns (empty by default)
namespaces = false # to disable scanning PEP 420 namespaces (true by default)
# SETUPTOOLS_SCM
[tool.setuptools_scm]
write_to = "aidge_backend_opencv/_version.py"
#####################################################
# CIBUILDWHEEL
......
#include <pybind11/pybind11.h>
// Need to call this header to register tensorImpl when initializing opencv python module
#include "aidge/backend/opencv.hpp"
#include "aidge/backend/opencv.hpp"
namespace py = pybind11;
namespace Aidge {
void init_MNIST(py::module&);
void init_OpencvVersionInfo(py::module&);
PYBIND11_MODULE(aidge_backend_opencv, m) {
init_MNIST(m);
init_OpencvVersionInfo(m);
}
}
#include <pybind11/pybind11.h>
#include "aidge/utils/sys_info/OpencvVersionInfo.hpp"
namespace py = pybind11;
namespace Aidge {
void init_OpencvVersionInfo(py::module& m){
m.def("show_version", &showBackendOpencvVersion);
m.def("get_project_version", &getBackendOpencvProjectVersion);
m.def("get_git_hash", &getBackendOpencvGitHash);
}
}
# pbr file
[metadata]
version = file: version.txt
......@@ -30,6 +30,7 @@ class CMakeBuild(build_ext):
# This lists the number of processors available on the machine
# The compilation will use half of them
max_jobs = str(ceil(multiprocessing.cpu_count() / 2))
max_jobs = os.environ.get("AIDGE_NB_PROC", max_jobs)
cwd = pathlib.Path().absolute()
......@@ -41,49 +42,61 @@ class CMakeBuild(build_ext):
if not build_lib.exists():
build_lib.mkdir(parents=True, exist_ok=True)
os.chdir(str(build_temp))
# Impose to use the executable of the python
# used to launch setup.py to setup PythonInterp
python_executable = sys.executable
print(f"python executable :\t{python_executable}")
compile_type = (
"Release"
if "AIDGE_PYTHON_BUILD_TYPE" not in os.environ
else os.environ["AIDGE_PYTHON_BUILD_TYPE"]
)
install_path = (
os.path.join(sys.prefix, "lib", "libAidge")
if "AIDGE_INSTALL" not in os.environ
else os.environ["AIDGE_INSTALL"]
)
build_gen = (
["-G", os.environ["AIDGE_BUILD_GEN"]]
if "AIDGE_BUILD_GEN" in os.environ
os.chdir(str(build_temp))
# Impose to use the executable of the python
# used to launch setup.py to setup PythonInterp
python_executable = sys.executable
print(f"python executable :\t{python_executable}")
# Read environment variables for CMake options
c_compiler = os.environ.get("AIDGE_C_COMPILER", "gcc")
cxx_compiler = os.environ.get("AIDGE_CXX_COMPILER", "g++")
build_type = os.environ.get("AIDGE_BUILD_TYPE", "Release")
asan = os.environ.get("AIDGE_ASAN", "OFF")
cmake_arch = os.environ.get("AIDGE_CMAKE_ARCH", "")
build_gen = os.environ.get("AIDGE_BUILD_GEN", "")
build_gen_opts = (
["-G", build_gen]
if build_gen
else []
)
test_onoff = os.environ.get("AIDGE_BUILD_TEST", "OFF")
self.spawn(
[
"cmake",
*build_gen,
str(cwd),
"-DTEST=OFF",
f"-DCMAKE_INSTALL_PREFIX:PATH={install_path}",
f"-DCMAKE_BUILD_TYPE={compile_type}",
"-DPYBIND=ON",
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
"-DCOVERAGE=OFF",
]
)
os.chdir(str(build_temp))
cmake_cmd = [
"cmake",
*build_gen_opts,
str(cwd),
f"-DTEST={test_onoff}",
f"-DCMAKE_INSTALL_PREFIX:PATH={install_path}",
f"-DCMAKE_BUILD_TYPE={build_type}",
f"-DCMAKE_C_COMPILER={c_compiler}",
f"-DCMAKE_CXX_COMPILER={cxx_compiler}",
f"-DENABLE_ASAN={asan}",
"-DPYBIND=ON",
"-DCMAKE_EXPORT_COMPILE_COMMANDS=1",
"-DCOVERAGE=OFF",
]
# Append architecture-specific arguments if provided
if cmake_arch:
cmake_cmd.append(cmake_arch)
self.spawn(cmake_cmd)
if not self.dry_run:
self.spawn(
["cmake", "--build", ".", "--config", compile_type, "-j", max_jobs]
["cmake", "--build", ".", "--config", build_type, "-j", max_jobs]
)
self.spawn(["cmake", "--install", ".", "--config", compile_type])
self.spawn(["cmake", "--install", ".", "--config", build_type])
os.chdir(str(cwd))
aidge_package = build_lib / (get_project_name())
......
Include(FetchContent)
# Catch2 configuration
set(CATCH2_MIN_VERSION 3.3.0)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG v3.7.1 # or a later release
)
# Try to find system installed Catch2
find_package(Catch2 ${CATCH2_MIN_VERSION} QUIET)
FetchContent_MakeAvailable(Catch2)
if(NOT Catch2_FOUND)
message(STATUS "Catch2 not found in system, retrieving from git")
Include(FetchContent)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG devel # or a later release
)
FetchContent_MakeAvailable(Catch2)
message(STATUS "Fetched Catch2 version ${Catch2_VERSION}")
else()
message(STATUS "Using system Catch2 version ${Catch2_VERSION}")
endif()
file(GLOB_RECURSE src_files "*.cpp")
......@@ -16,7 +27,13 @@ target_link_libraries(tests${module_name} PUBLIC ${module_name})
target_link_libraries(tests${module_name} PRIVATE Catch2::Catch2WithMain)
# Setup testing
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
include(CTest)
include(Catch)
# Discover and add tests
catch_discover_tests(tests${module_name})
# Set test configuration for CTest
set(CTEST_CONFIGURATION_TYPE ${CMAKE_BUILD_TYPE})
\ No newline at end of file
0.1.4
0.1.5
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment