Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e49691c
Coverage biuld type + gcov flush function
DasVinch Feb 4, 2026
af3f62b
use a LIBNAME in CMakeLists
DasVinch Feb 6, 2026
6200617
change CMakeLists.txt to disallow direct #include from sibling folder…
DasVinch Mar 8, 2026
0c0277f
And change #include in python_module as such.
DasVinch Mar 8, 2026
4111d6b
Merge branch 'vd/no_direct_include' into vd/coveragecap
DasVinch Mar 26, 2026
c13adce
Port files from milk core to allow sep compilation of ImageStreamIO/P…
DasVinch Mar 26, 2026
781b0f1
fix: GPU debug ifo
DasVinch Mar 26, 2026
33c2d67
Add timeutils.c to compilation
DasVinch Mar 26, 2026
9ff7854
Leave _gcov_dump undefined in the general case. Python will handle th…
DasVinch Mar 26, 2026
e0f8904
Add const modifier to ImageStreamIO_printERROR_
DasVinch Mar 26, 2026
dabba1f
Modify target name for disambiguation with MILK
DasVinch Mar 26, 2026
171f521
#include local, CMAKE if for pybind
DasVinch Mar 27, 2026
759e596
Port pybind to nanobind
DasVinch Mar 27, 2026
47735c6
nanobind locate in CMakeLists.txt
DasVinch Mar 27, 2026
0789f6f
add view function for zerocopy read
DasVinch Mar 27, 2026
4f34eda
[build] COVERAGE_BUILD propage to python_module
DasVinch Mar 31, 2026
1e34885
[bug][backport] Clean structure in ImageStreamIO_closeIm
DasVinch Mar 31, 2026
544ca6a
Fix: image creation through tmp filename for atomicity
DasVinch Apr 12, 2026
bdc8255
[fix] Image posting (and repr). Possible regression on lastaccesstime…
DasVinch Apr 12, 2026
08d2583
Leave fixme for future
DasVinch May 1, 2026
eda5b3d
Fix: iage->used = 1 in OpenIm / read_sharedmem_image_toIMAGE(name, im…
DasVinch May 3, 2026
aec2dac
typo found in passing
DasVinch May 3, 2026
6a67306
[bug] Refactor closeIm/destroyIm and fix missing used=1 in openIm
DasVinch May 3, 2026
6ce8ff3
[fix] [backport] Fix/improvement for GPU SHM - CUDA error print; tabl…
DasVinch May 3, 2026
4f151ee
Merge branch 'dev' into nanobind
DasVinch May 3, 2026
7caf6b1
Revert key things from pyMilk's nanobind branch for dev merge
DasVinch May 3, 2026
373545b
Fixup: missing deletions in adapting PR from nanobind to dev
DasVinch May 3, 2026
d88a089
[fix] Cleaner implementation on close/destroy on shared=0 IMAGEs
DasVinch May 4, 2026
9591e28
Merge branch 'nanobind' into nanobind-to-dev
DasVinch May 4, 2026
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
77 changes: 59 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
cmake_minimum_required(VERSION 3.17)

set(LIBNAME "ImageStreamIO")
set(LIBNAME_PCFILES "ImageStreamIO")
set(SRCNAME "ImageStreamIO")

message("")
Expand All @@ -13,24 +14,55 @@ project(${LIBNAME} LANGUAGES C)

# Version number
set ( VERSION_MAJOR 2 )
set ( VERSION_MINOR 00 )
set ( VERSION_MINOR 01 )
set ( VERSION_PATCH 00 )
set ( VERSION_OPTION "" )
set ( PROJECT_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
configure_file (
"${PROJECT_SOURCE_DIR}/${PROJECT_NAME}_config.h.in"
"${PROJECT_SOURCE_DIR}//${PROJECT_NAME}_config.h"
"${PROJECT_SOURCE_DIR}/${LIBNAME_PCFILES}_config.h.in"
"${PROJECT_SOURCE_DIR}//${LIBNAME_PCFILES}_config.h"
)
message(" VERSION = ${PROJECT_VERSION}")

add_compile_options(-Ofast)
if(USE_CUDA)
set(IPC_REGISTRY_SRC ImageStreamIO_ipc_registry.c)
else()
set(IPC_REGISTRY_SRC "")
endif()

add_library(${LIBNAME} SHARED ${SRCNAME}.c)
add_library(${LIBNAME} SHARED ${SRCNAME}.c ${IPC_REGISTRY_SRC})

# set -C99 flag for 'for' loop initial declartaions
set_property(TARGET ${LIBNAME} PROPERTY C_STANDARD 99)

# =======================================
# BUILD TYPE
# =======================================
# cmake -DCMAKE_BUILD_TYPE=Debug
# option: add -fanalyzer if gcc10+ (warning: this will take a while to run)
set(CMAKE_C_FLAGS_DEBUG "-O0 -g -Wall -Wextra -std=gnu17 -Wno-sign-compare")
# cmake -DCMAKE_BUILD_TYPE=Coverage
set(CMAKE_C_FLAGS_COVERAGE "-O0 -g --coverage -fprofile-arcs -ftest-coverage")
set(CMAKE_CXX_FLAGS_COVERAGE "-O0 -g --coverage -fprofile-arcs -ftest-coverage")
# cmake -DCMAKE_BUILD_TYPE=Release
set(CMAKE_C_FLAGS_RELEASE "-Ofast -DNDEBUG -std=gnu17")


# Set a default build type if none was specified
set(default_build_type "Release")
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}")
endif()

message("CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")


target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${SRCNAME}>
$<INSTALL_INTERFACE:include>)
find_package(PkgConfig REQUIRED)

pkg_check_modules(CFITSIO cfitsio)
if(${CFITSIO_FOUND})
link_directories(${CFITSIO_LIBRARY_DIRS})
Expand All @@ -39,24 +71,30 @@ if(${CFITSIO_FOUND})
target_link_directories(${LIBNAME} PUBLIC ${CFITSIO_INCLUDE_DIRS})
endif()

target_include_directories(${LIBNAME} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${SRCNAME}>
$<INSTALL_INTERFACE:include>)

if(USE_CUDA)
find_package(CUDAToolkit 9.0 REQUIRED)
message(STATUS "Found CUDA ${CUDAToolkit_VERSION} at ${CUDAToolkit_LIBRARY_DIR}")
message("---- CUDA_INCLUDE_DIRS = ${CUDAToolkit_INCLUDE_DIRS}")
find_package(CUDAToolkit 9.0 REQUIRED)
message(STATUS "Found CUDA ${CUDAToolkit_VERSION} at ${CUDAToolkit_LIBRARY_DIR}")
message("---- CUDA_INCLUDE_DIRS = ${CUDAToolkit_INCLUDE_DIRS}")
target_include_directories(${LIBNAME} PUBLIC ${CUDAToolkit_INCLUDE_DIRS})
target_link_libraries(${LIBNAME} PRIVATE CUDA::toolkit CUDA::cudart)
target_compile_options(${LIBNAME} PUBLIC -DHAVE_CUDA)

set(BUILD_FLAGS "${BUILD_FLAGS} -DHAVE_CUDA" )
endif(USE_CUDA)

# =======================================
# COVERAGE BUILD
# =======================================
if (CMAKE_BUILD_TYPE STREQUAL "Coverage")
target_compile_definitions(${LIBNAME} PRIVATE COVERAGE_BUILD=1)
target_link_options(${LIBNAME} PRIVATE --coverage)
target_link_libraries(${LIBNAME} PRIVATE gcov)
endif()

if(DAO_COMPAT)
target_compile_options(${LIBNAME} PUBLIC -DDAO_COMPAT)
endif(DAO_COMPAT)

#
# Python wrap.
#
Expand All @@ -68,6 +106,7 @@ if(build_python_module)
add_subdirectory(python_module)
endif()


########################################################################
#
# CONFIG.CMAKE
Expand Down Expand Up @@ -107,7 +146,6 @@ install(FILES
DESTINATION lib/cmake
)


########################################################################
#
# pkg-config
Expand All @@ -116,10 +154,10 @@ string(APPEND LINKSTRING "-l${LIBNAME} ")
set(INSTALL_PKGCONFIG_DIR "lib/pkgconfig"
CACHE PATH "Installation directory for pkgconfig (.pc) files")

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${LIBNAME}.pc.in
${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}.pc @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${LIBNAME_PCFILES}.pc.in
${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME_PCFILES}.pc @ONLY)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}.pc
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME_PCFILES}.pc
DESTINATION "${INSTALL_PKGCONFIG_DIR}")


Expand All @@ -141,5 +179,8 @@ endif()


install(TARGETS ${LIBNAME} EXPORT ${LIBNAME}Targets DESTINATION lib)
install(FILES ${SRCNAME}.h DESTINATION include/${SRCNAME})
install(FILES ImageStruct.h ImageStreamIOError.h DESTINATION include/${SRCNAME})
install(FILES
${SRCNAME}.h
ImageStruct.h
ImageStreamIOError.h
DESTINATION include/${SRCNAME})
Loading