Skip to content

Commit

Permalink
daisy: make it compile on platforms without large file support:
Browse files Browse the repository at this point in the history
o Add cmake detection of large file support (mmap64, open64 and friends)
  • Loading branch information
Marco Molteni committed Apr 13, 2011
1 parent 02c0749 commit 184a121
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 24 deletions.
34 changes: 13 additions & 21 deletions src/third_party/daisy/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
project(daisy)

check_symbol_exists(mmap64 "sys/mman.h" HAVE_MMAP64)
if(${HAVE_MMAP64})
message("System has large file support.")
add_definitions(-DHAVE_LARGE_FILE_SUPPORT)
else()
message("System hasn't large file support.")
endif()

include_directories(include)

# Make the headers appear in IDEs.
file(GLOB daisy_hdrs include/kutility/*.h include/daisy/*.h)

set(daisy_srcs
include/kutility/convolution_default.h
include/kutility/fileio.tcc
include/kutility/image_io_jpeg.h
include/kutility/kutility.def
include/kutility/convolution.h
include/kutility/general.h
include/kutility/image.h
include/kutility/image_io_bmp.h
include/kutility/image_io_pnm.h
include/kutility/image_io_png.h
include/kutility/math.h
include/kutility/convolution_opencv.h
include/kutility/progress_bar.h
include/kutility/corecv.h
include/kutility/image_manipulation.h
include/kutility/fileio.h
include/kutility/image_io.h
include/kutility/interaction.h
include/daisy/daisy.h
src/daisy.cpp
src/corecv.cpp
src/image_io_bmp.cpp
Expand All @@ -34,6 +26,6 @@ set(daisy_srcs
src/interaction.cpp
)

add_library(daisy ${daisy_srcs} )
add_library(daisy ${daisy_srcs} ${daisy_hdrs})

LIBMV_INSTALL_THIRD_PARTY_LIB(daisy)
LIBMV_INSTALL_THIRD_PARTY_LIB(daisy)
1 change: 1 addition & 0 deletions src/third_party/daisy/README.libmv
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ Local modifications:
* Change to add use of unused parameter.
* make convolution code better : convolution.h use template<class T> inline void convolve_sym
* fix layer issue un daisy.cpp (memory error in valgrind)
* Make it compile on platforms without large file support (mmap64, open64 and friends).

11 changes: 8 additions & 3 deletions src/third_party/daisy/include/kutility/general.h
Original file line number Diff line number Diff line change
Expand Up @@ -745,19 +745,24 @@ namespace kutility
}

#if !defined(WIN32)
#ifdef HAVE_LARGE_FILE_SUPPORT
#define mmap mmap64
#define open open64
#endif

/// to deallocate call munmap( (void*)mapped_file, size * sizeof(T) )
template<typename T> inline
void map_memory_file(string memory_file, long int size, T* &mapped_file)
{
int fildes = open64(memory_file.c_str(), O_RDWR);
int fildes = open(memory_file.c_str(), O_RDWR);

if(fildes == -1) //The file does not exist
{
create_file<T>(memory_file,size);
fildes = open64(memory_file.c_str(), O_RDWR);
fildes = open(memory_file.c_str(), O_RDWR);
}

void* file = mmap64(0, size*sizeof(T), PROT_READ|PROT_WRITE, MAP_SHARED, fildes, 0);
void* file = mmap(0, size*sizeof(T), PROT_READ|PROT_WRITE, MAP_SHARED, fildes, 0);

if(file == MAP_FAILED)
{
Expand Down

0 comments on commit 184a121

Please sign in to comment.