diff --git a/CMake/CheckHaveGetopt.cmake b/CMake/CheckHaveGetopt.cmake new file mode 100644 index 00000000..c0fd5dcf --- /dev/null +++ b/CMake/CheckHaveGetopt.cmake @@ -0,0 +1,15 @@ +# Check if getopt is present: +INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) +SET(DONT_HAVE_GETOPT 1) +IF(UNIX) #I am pretty sure only *nix sys have this anyway + CHECK_INCLUDE_FILE("getopt.h" CMAKE_HAVE_GETOPT_H) + # Seems like we need the contrary: + IF(CMAKE_HAVE_GETOPT_H) + SET(DONT_HAVE_GETOPT 0) + ENDIF(CMAKE_HAVE_GETOPT_H) +ENDIF(UNIX) + +IF(DONT_HAVE_GETOPT) + ADD_DEFINITIONS(-DDONT_HAVE_GETOPT) +ENDIF(DONT_HAVE_GETOPT) + diff --git a/CMake/OpenJPEG3DConfig.cmake.in b/CMake/OpenJPEG3DConfig.cmake.in new file mode 100644 index 00000000..633c0935 --- /dev/null +++ b/CMake/OpenJPEG3DConfig.cmake.in @@ -0,0 +1,48 @@ +#----------------------------------------------------------------------------- +# +# OPENJPEG3DConfig.cmake - CMake configuration file for external projects. +# +# This file is configured by OPENJPEG3D and used by the UseOPENJPEG3D.cmake +# module to load OPENJPEG3D's settings for an external project. +@OPENJPEG3D_CONFIG_INSTALL_ONLY@ +# The OPENJPEG3D version number. +SET(OPENJPEG3D_MAJOR_VERSION "@OPENJPEG3D_VERSION_MAJOR@") +SET(OPENJPEG3D_MINOR_VERSION "@OPENJPEG3D_VERSION_MINOR@") +SET(OPENJPEG3D_BUILD_VERSION "@OPENJPEG3D_VERSION_BUILD@") + +# The libraries. +SET(OPENJPEG3D_LIBRARIES "@OPENJPEG3D_LIBRARIES@") + +# The CMake macros dir. +SET(OPENJPEG3D_CMAKE_DIR "@OPENJPEG3D_CMAKE_DIR_CONFIG@") + +# The configuration options. +SET(OPENJPEG3D_BUILD_SHARED_LIBS "@OPENJPEG3D_BUILD_SHARED_LIBS@") + +# The "use" file. +SET(OPENJPEG3D_USE_FILE "@OPENJPEG3D_USE_FILE_CONFIG@") + +get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +if(EXISTS ${SELF_DIR}/OpenJPEG3DTargets.cmake) + # This is an install tree + include(${SELF_DIR}/OpenJPEG3DTargets.cmake) + get_filename_component(OPENJPEG3D_INCLUDE_ROOT "${SELF_DIR}/../../@OPENJPEG3D_INSTALL_INCLUDE_DIR@" ABSOLUTE) + set(OPENJPEG3D_INCLUDE_DIRS ${OPENJPEG3D_INCLUDE_ROOT}) + +else(EXISTS ${SELF_DIR}/OpenJPEG3DTargets.cmake) + if(EXISTS ${SELF_DIR}/OpenJPEG3DExports.cmake) + # This is a build tree + SET( OPENJPEG3D_INCLUDE_DIRS @OPENJPEG3D_INCLUDE_PATH@) + + include(${SELF_DIR}/OpenJPEG3DExports.cmake) + + else(EXISTS ${SELF_DIR}/OpenJPEG3DExports.cmake) + message(FATAL_ERROR "ooops") + endif(EXISTS ${SELF_DIR}/OpenJPEG3DExports.cmake) +endif(EXISTS ${SELF_DIR}/OpenJPEG3DTargets.cmake) + +set(OPENJPEG3D_USE_FILE ${SELF_DIR}/UseOPENJPEG3D.cmake) + +# Backward compatible part: +SET(OPENJPEG3D_FOUND TRUE) + diff --git a/CMakeLists.txt b/CMakeLists.txt index 1491d1c3..28e3cbfa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,223 @@ -# jp3d +# Main CMakeLists.txt to build the OpenJPEG3D 3D project using CMake (www.cmake.org) +# Written by Mathieu Malaterre + +# This CMake project will by default create a library called openjpeg3d3d +# But if you want to use this project within your own (CMake) project +# you will eventually like to prefix the library to avoid linking confusion +# For this purpose you can define a CMake var: OPENJPEG3D_NAMESPACE to whatever you like +# e.g.: +# SET(OPENJPEG3D_NAMESPACE "GDCMOPENJPEG3D") +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +IF(COMMAND CMAKE_POLICY) + CMAKE_POLICY(SET CMP0003 NEW) +ENDIF(COMMAND CMAKE_POLICY) + +IF(NOT OPENJPEG3D_NAMESPACE) + SET(OPENJPEG3D_NAMESPACE "OPENJPEG3D") + SET(OPENJPEG3D_STANDALONE 1) +ENDIF(NOT OPENJPEG3D_NAMESPACE) +# In all cases: +STRING(TOLOWER ${OPENJPEG3D_NAMESPACE} OPENJPEG3D_LIBRARY_NAME) + +PROJECT(${OPENJPEG3D_NAMESPACE} C) + +# Do full dependency headers. +INCLUDE_REGULAR_EXPRESSION("^.*$") + +#----------------------------------------------------------------------------- +# OPENJPEG3D version number, useful for packaging and doxygen doc: +SET(OPENJPEG3D_VERSION_MAJOR 1) +SET(OPENJPEG3D_VERSION_MINOR 3) +SET(OPENJPEG3D_VERSION_BUILD 0) +SET(OPENJPEG3D_VERSION + "${OPENJPEG3D_VERSION_MAJOR}.${OPENJPEG3D_VERSION_MINOR}.${OPENJPEG3D_VERSION_BUILD}") +SET(PACKAGE_VERSION + "${OPENJPEG3D_VERSION_MAJOR}.${OPENJPEG3D_VERSION_MINOR}.${OPENJPEG3D_VERSION_BUILD}") +SET(OPENJPEG3D_LIBRARY_PROPERTIES + VERSION "${OPENJPEG3D_VERSION_MAJOR}.${OPENJPEG3D_VERSION_MINOR}.${OPENJPEG3D_VERSION_BUILD}" + SOVERSION "${OPENJPEG3D_VERSION_MAJOR}" +) +# You will also need to define a value for the following variables: +# OPENJPEG3D_INSTALL_BIN_DIR - binary dir (executables) +# OPENJPEG3D_INSTALL_LIB_DIR - library dir (libs) +# OPENJPEG3D_INSTALL_DATA_DIR - share dir (say, examples, data, etc) +# OPENJPEG3D_INSTALL_INCLUDE_DIR - include dir (headers) + + +# On Visual Studio 8 MS deprecated C. This removes all 1.276E1265 security +# warnings +IF(WIN32) + IF(NOT BORLAND) + IF(NOT CYGWIN) + IF(NOT MINGW) + IF(NOT ITK_ENABLE_VISUAL_STUDIO_DEPRECATED_C_WARNINGS) + ADD_DEFINITIONS( + -D_CRT_FAR_MAPPINGS_NO_DEPRECATE + -D_CRT_IS_WCTYPE_NO_DEPRECATE + -D_CRT_MANAGED_FP_NO_DEPRECATE + -D_CRT_NONSTDC_NO_DEPRECATE + -D_CRT_SECURE_NO_DEPRECATE + -D_CRT_SECURE_NO_DEPRECATE_GLOBALS + -D_CRT_SETERRORMODE_BEEP_SLEEP_NO_DEPRECATE + -D_CRT_TIME_FUNCTIONS_NO_DEPRECATE + -D_CRT_VCCLRIT_NO_DEPRECATE + -D_SCL_SECURE_NO_DEPRECATE + ) + ENDIF(NOT ITK_ENABLE_VISUAL_STUDIO_DEPRECATED_C_WARNINGS) + ENDIF(NOT MINGW) + ENDIF(NOT CYGWIN) + ENDIF(NOT BORLAND) +ENDIF(WIN32) + + +# -------------------------------------------------------------------------- +# Install directories + +STRING(TOLOWER ${PROJECT_NAME} projectname) +SET(subdir "${projectname}-${OPENJPEG3D_VERSION_MAJOR}.${OPENJPEG3D_VERSION_MINOR}") + +IF(NOT OPENJPEG3D_INSTALL_BIN_DIR) + SET(OPENJPEG3D_INSTALL_BIN_DIR "bin") +ENDIF(NOT OPENJPEG3D_INSTALL_BIN_DIR) + +IF(NOT OPENJPEG3D_INSTALL_LIB_DIR) + SET(OPENJPEG3D_INSTALL_LIB_DIR "lib") +ENDIF(NOT OPENJPEG3D_INSTALL_LIB_DIR) + +IF(NOT OPENJPEG3D_INSTALL_DATA_DIR) + SET(OPENJPEG3D_INSTALL_DATA_DIR "share/${subdir}") +ENDIF(NOT OPENJPEG3D_INSTALL_DATA_DIR) + +IF(NOT OPENJPEG3D_INSTALL_INCLUDE_DIR) + SET(OPENJPEG3D_INSTALL_INCLUDE_DIR "include/") +ENDIF(NOT OPENJPEG3D_INSTALL_INCLUDE_DIR) + +IF(NOT OPENJPEG3D_INSTALL_MAN_DIR) + SET(OPENJPEG3D_INSTALL_MAN_DIR "share/man/") +ENDIF(NOT OPENJPEG3D_INSTALL_MAN_DIR) + +IF(NOT OPENJPEG3D_INSTALL_DOC_DIR) + SET(OPENJPEG3D_INSTALL_DOC_DIR "share/doc/${subdir}") +ENDIF(NOT OPENJPEG3D_INSTALL_DOC_DIR) + +IF(NOT OPENJPEG3D_INSTALL_PACKAGE_DIR) + SET(OPENJPEG3D_INSTALL_PACKAGE_DIR ${OPENJPEG3D_INSTALL_LIB_DIR}/${subdir} + CACHE INTERNAL "") +ENDIF(NOT OPENJPEG3D_INSTALL_PACKAGE_DIR) + +#----------------------------------------------------------------------------- +# Test for some required system information. +INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake) + +#----------------------------------------------------------------------------- +# Test for getopt being available in this system +INCLUDE (${PROJECT_SOURCE_DIR}/CMake/CheckHaveGetopt.cmake ) + +#----------------------------------------------------------------------------- +# OpenJPEG3D build configuration options. +OPTION(BUILD_SHARED_LIBS "Build OpenJPEG3D shared library and link executables against it." ON) + +#----------------------------------------------------------------------------- +SET (EXECUTABLE_OUTPUT_PATH ${OPENJPEG3D_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.") +SET (LIBRARY_OUTPUT_PATH ${OPENJPEG3D_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.") +MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) + + +# configure name mangling to allow multiple libraries to coexist +# peacefully +IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg3d_mangle.h.in) +SET(MANGLE_PREFIX ${OPENJPEG3D_LIBRARY_NAME}) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg3d_mangle.h.in + ${CMAKE_CURRENT_BINARY_DIR}/openjpeg3d_mangle.h + @ONLY IMMEDIATE) +ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg3d_mangle.h.in) + +#----------------------------------------------------------------------------- +# pkgconfig support +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libopenjpeg3d.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libopenjpeg3d.pc @ONLY) +INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/libopenjpeg3d.pc DESTINATION ${OPENJPEG3D_INSTALL_LIB_DIR}/pkgconfig ) + +#----------------------------------------------------------------------------- +# Always build the library +INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR}) +SUBDIRS(libopenjpeg3d) + +#----------------------------------------------------------------------------- +# Compiler specific flags: +IF(CMAKE_COMPILER_IS_GNUCC) + # For all builds, make sure openjpeg3d is std99 compliant: + # SET(CMAKE_C_FLAGS "-Wall -std=c99 ${CMAKE_C_FLAGS}") # FIXME: this setting prevented us from setting a coverage build. + # Do not use ffast-math for all build, it would produce incorrect results, only set for release: + SET(CMAKE_C_FLAGS_RELEASE "-ffast-math ${CMAKE_C_FLAGS_RELEASE}") +ENDIF(CMAKE_COMPILER_IS_GNUCC) + +# install all targets referenced as OPENJPEG3DTargets +install(EXPORT OpenJPEG3DTargets DESTINATION ${OPENJPEG3D_INSTALL_PACKAGE_DIR}) +CONFIGURE_FILE( ${OPENJPEG3D_SOURCE_DIR}/CMake/OpenJPEG3DConfig.cmake.in + ${OPENJPEG3D_BINARY_DIR}/OpenJPEG3DConfig.cmake + @ONLY +) +INSTALL( FILES ${OPENJPEG3D_BINARY_DIR}/OpenJPEG3DConfig.cmake + DESTINATION ${OPENJPEG3D_INSTALL_PACKAGE_DIR} +) +# install CHANGES and LICENSE +INSTALL( + FILES LICENSE + DESTINATION ${OPENJPEG3D_INSTALL_DOC_DIR}) +# +FIND_FILE(HAVE_STRINGS_H_FOUND strings.h) +IF(NOT HAVE_STRINGS_H_FOUND STREQUAL "HAVE_STRINGS_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_STRINGS_H strings.h) + SET(HAS_STRINGS_H 1) +ENDIF() +FIND_FILE(HAVE_INTTYPES_H_FOUND inttypes.h) +IF(NOT HAVE_INTTYPES_H_FOUND STREQUAL "HAVE_INTTYPES_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_INTTYPES_H inttypes.h) + SET(HAS_INTTYPES_H 1) +ENDIF() +FIND_FILE(HAVE_MEMORY_H_FOUND memory.h) +IF(NOT HAVE_MEMORY_H_FOUND STREQUAL "HAVE_MEMORY_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_MEMORY_H memory.h) + SET(HAS_MEMORY_H 1) +ENDIF() +FIND_FILE(HAVE_STDINT_H_FOUND stdint.h) +IF(NOT HAVE_STDINT_H_FOUND STREQUAL "HAVE_STDINT_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_STDINT_H stdint.h) + SET(HAS_STDINT_H 1) +ENDIF() +FIND_FILE(HAVE_STDLIB_H_FOUND stdlib.h) +IF(NOT HAVE_STDLIB_H_FOUND STREQUAL "HAVE_STDLIB_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_STDLIB_H stdlib.h) + SET(HAS_STDLIB_H 1) +ENDIF() +FIND_FILE(HAVE_STRING_H_FOUND string.h) +IF(NOT HAVE_STRING_H_FOUND STREQUAL "HAVE_STRING_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_STRING_H string.h) + SET(HAS_STRING_H 1) +ENDIF() +FIND_FILE(HAVE_SYS_STAT_H_FOUND sys/stat.h) +IF(NOT HAVE_SYS_STAT_H_FOUND STREQUAL "HAVE_SYS_STAT_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_SYS_STAT_H sys/stat.h) + SET(HAS_SYS_STAT_H 1) +ENDIF() +FIND_FILE(HAVE_SYS_TYPES_H_FOUND sys/types.h) +IF(NOT HAVE_SYS_TYPES_H_FOUND STREQUAL "HAVE_SYS_TYPES_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_SYS_TYPES_H sys/types.h) + SET(HAS_SYS_TYPES_H 1) +ENDIF() +FIND_FILE(HAVE_UNISTD_H_FOUND unistd.h) +IF(NOT HAVE_UNISTD_H_FOUND STREQUAL "HAVE_UNISTD_H_FOUND-NOTFOUND") + FIND_FILE(HAVE_UNISTD_H unistd.h) + SET(HAS_UNISTD_H 1) +ENDIF() + # Headers file are located here: INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/codec - ${CMAKE_CURRENT_SOURCE_DIR}/libjp3dvm + ${CMAKE_CURRENT_SOURCE_DIR}/libopenjpeg3d ) -SUBDIRS( - libjp3dvm - codec -) - - +SUBDIRS(codec) diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..3f4e3dd1 --- /dev/null +++ b/INSTALL @@ -0,0 +1,25 @@ + +How to build and install openjpeg3d binaries +========================================== + +REQUIREMENT : cmake (see www.cmake.org) + +Type: + cmake . + make + +If you are root: + make install + make clean + +else: + sudo make install + make clean + +Binaries are located in the 'bin' directory. + +Main available cmake flags: +* To specify the install path: '-DCMAKE_INSTALL_PREFIX=/path' +* To build the shared libraries and links the executables against it: '-DBUILD_SHARED_LIBS:bool=on' (default: 'ON') + Note: when using this option, static libraries are not built and executables are dynamically linked. + diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE diff --git a/Makefile.nix b/Makefile.nix deleted file mode 100644 index 5b0796f3..00000000 --- a/Makefile.nix +++ /dev/null @@ -1,108 +0,0 @@ -#jp3d Makefile -include ../config.nix - -TARGET = openjp3dvm -COMPILERFLAGS = -O3 -Wall -ffast-math -std=c99 -fPIC - -SRCS = ./libjp3dvm/bio.c ./libjp3dvm/cio.c ./libjp3dvm/dwt.c \ - ./libjp3dvm/event.c ./libjp3dvm/jp3d.c ./libjp3dvm/jp3d_lib.c \ - ./libjp3dvm/volume.c ./libjp3dvm/mct.c ./libjp3dvm/mqc.c \ - ./libjp3dvm/openjpeg.c ./libjp3dvm/pi.c ./libjp3dvm/raw.c \ - ./libjp3dvm/t1.c ./libjp3dvm/t1_3d.c ./libjp3dvm/t2.c \ - ./libjp3dvm/tcd.c ./libjp3dvm/tgt.c - -INCLS = ./libjp3dvm/t1_3d.h ./libjp3dvm/bio.h ./libjp3dvm/cio.h \ - ./libjp3dvm/dwt.h ./libjp3dvm/event.h ./libjp3dvm/fix.h \ - ./libjp3dvm/int.h ./libjp3dvm/jp3d.h ./libjp3dvm/jp3d_lib.h \ - ./libjp3dvm/volume.h ./libjp3dvm/mct.h ./libjp3dvm/mqc.h \ - ./libjp3dvm/openjpeg3d.h ./libjp3dvm/pi.h ./libjp3dvm/raw.h \ - ./libjp3dvm/t1.h ./libjp3dvm/t2.h ./libjp3dvm/tcd.h \ - ./libjp3dvm/tgt.h ./libjp3dvm/opj_includes.h - -INCLUDE = -I.. -Ilibjp3dvm - -INSTALL_LIBDIR = $(prefix)/lib -headerdir = openjpeg3d-$(JP3D_MAJOR).$(JP3D_MINOR) -INSTALL_INCLUDE = $(prefix)/include/$(headerdir) - -# Converts cr/lf to just lf -DOS2UNIX = dos2unix - -LIBRARIES = -lstdc++ - -MODULES = $(SRCS:.c=.o) -CFLAGS = $(COMPILERFLAGS) $(INCLUDE) - -LIBNAME = lib$(TARGET) - -ifeq ($(ENABLE_SHARED),yes) -SHAREDLIB = $(LIBNAME).so.$(JP3D_MAJOR).$(JP3D_MINOR).$(JP3D_BUILD) -else -STATICLIB = $(LIBNAME).a -endif - -default: all - -all: Jp3dVM - make -C codec -f Makefile.nix all - install -d ../bin -ifeq ($(ENABLE_SHARED),yes) - install -m 755 $(SHAREDLIB) ../bin - (cd ../bin && \ - ln -sf $(SHAREDLIB) $(LIBNAME).so.$(JP3D_MAJOR).$(JP3D_MINOR)) - (cd ../bin && \ - ln -sf $(LIBNAME).so.$(JP3D_MAJOR).$(JP3D_MINOR) $(LIBNAME).so) -else - install -m 644 $(STATICLIB) ../bin -endif - -dos2unix: - @$(DOS2UNIX) $(SRCS) $(INCLS) - -Jp3dVM: $(STATICLIB) $(SHAREDLIB) - -.c.o: - $(CC) $(CFLAGS) -c $< -o $@ - -ifeq ($(ENABLE_SHARED),yes) -$(SHAREDLIB): $(MODULES) - $(CC) -s -shared -Wl,-soname,$(LIBNAME) -o $@ $(MODULES) $(LIBRARIES) -else -$(STATICLIB): $(MODULES) - $(AR) r $@ $(MODULES) -endif - -install: Jp3dVM - install -d '$(DESTDIR)$(INSTALL_LIBDIR)' -ifeq ($(ENABLE_SHARED),yes) - install -m 755 -o root -g root $(SHAREDLIB) '$(DESTDIR)$(INSTALL_LIBDIR)' - (cd $(DESTDIR)$(INSTALL_LIBDIR) && \ - ln -sf $(SHAREDLIB) $(LIBNAME).so.$(JP3D_MAJOR).$(JP3D_MINOR) ) - (cd $(DESTDIR)$(INSTALL_LIBDIR) && \ - ln -sf $(LIBNAME).so.$(JP3D_MAJOR).$(JP3D_MINOR) $(LIBNAME).so ) -else - install -m 644 -o root -g root $(STATICLIB) '$(DESTDIR)$(INSTALL_LIBDIR)' - (cd $(DESTDIR)$(INSTALL_LIBDIR) && ranlib $(STATICLIB)) -endif - install -d $(DESTDIR)$(INSTALL_INCLUDE) - rm -f $(DESTDIR)$(INSTALL_INCLUDE)/openjpeg3d.h - install -m 644 -o root -g root libjp3dvm/openjpeg3d.h \ - $(DESTDIR)$(INSTALL_INCLUDE)/openjpeg3d.h - (cd $(DESTDIR)$(prefix)/include && \ - ln -sf $(headerdir)/openjpeg3d.h openjpeg3d.h) - make -C codec -f Makefile.nix install - -uninstall: -ifeq ($(ENABLE_SHARED),yes) - (cd $(DESTDIR)$(INSTALL_LIBDIR) && \ - rm -f $(LIBNAME).so $(LIBNAME).so.$(JP3D_MAJOR).$(JP3D_MINOR) $(SHAREDLIB)) -else - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(STATICLIB) -endif - rm -f $(DESTDIR)$(prefix)/include/openjpeg3d.h - rm -rf $(DESTDIR)$(INSTALL_INCLUDE) - make -C codec -f Makefile.nix uninstall - -clean: - rm -f core u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) - make -C codec -f Makefile.nix clean diff --git a/README.txt b/README similarity index 89% rename from README.txt rename to README index ce04072e..a22ecb44 100755 --- a/README.txt +++ b/README @@ -19,52 +19,18 @@ If you find some bugs or if you have problems using the encoder/decoder, please ====================================================== - After decompressing the zip file provided, you should find -at least the following files in the created 'jp3d_vm' directory: +at least the following files in the created 'openjpeg3d' directory: - * libjp3dvm - This directory contains all library related code + * libopenjpeg3d - This directory contains all library related code * codec - This directory contains all codec related code * tcltk - This directory contains the API scripts * README - The file you are reading - * LICENCE - Copyright statement of the JP3D VM software + * LICENSE - Copyright statement of the JP3D VM software -2.1. Compiling the source code in Windows -------------------------------------------- +2.1. Compilation +----------------- -This version has been compiled with Visual Studio 2003 using -the projects included in the distribution: - - * LibJp3dVM.vcproj - Creates the library with all the JP3D functionalities - * jp3d_vm_enc.vcproj - Test encoder - * jp3d_vm_dec.vcproj - Test decoder - -2.2. Compiling the source code in Unix-like systems -------------------------------------------- - -Library compilation ------------------------- -This version of the library has been tested under the following OS: -- Fedora Core - -The installation process is as simple as this : -1) Enter the 'jp3d_vm' directory -2) Build the distribution : -make -make install -3) Clean all files produced during the build process -make clean - -Codec compilation ------------------------- -Once you've built the library, you should compile the JP3D codec. - -1) Go to the 'codec' directory -2) Build the encoder and decoder programs: - -gcc convert.c volume_to_jp3d.c -o jp3d_vm_enc -I ../libjp3dvm/ -lm -ljp3dvm -gcc convert.c jp3d_to_volume.c -o jp3d_vm_dec -I ../libjp3dvm/ -lm -ljp3dvm - -Note: You should add '-L ../libjp3dvm/' to those lines if you -did not use the 'install' target (and the 'clean' target neither...). +see INSTALL file for compilation and installation instructions 3. Running the JP3D VM ==================================================== diff --git a/codec/CMakeLists.txt b/codec/CMakeLists.txt index 6c33b963..437b1e05 100644 --- a/codec/CMakeLists.txt +++ b/codec/CMakeLists.txt @@ -4,25 +4,6 @@ SET(common_SRCS convert.c ) -# Then check if getopt is present: -INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) -SET(DONT_HAVE_GETOPT 1) -IF(UNIX) #I am pretty sure only *nix sys have this anyway - CHECK_INCLUDE_FILE("getopt.h" CMAKE_HAVE_GETOPT_H) - # Seems like we need the contrary: - IF(CMAKE_HAVE_GETOPT_H) - SET(DONT_HAVE_GETOPT 0) - ENDIF(CMAKE_HAVE_GETOPT_H) -ENDIF(UNIX) - -# If not getopt was found then add it to the lib: -IF(DONT_HAVE_GETOPT) - ADD_DEFINITIONS(-DDONT_HAVE_GETOPT) - SET(common_SRCS - ${common_SRCS} - getopt.c - ) -ENDIF(DONT_HAVE_GETOPT) IF(WIN32) IF(BUILD_SHARED_LIBS) @@ -35,13 +16,14 @@ ENDIF(WIN32) # Loop over all executables: FOREACH(exe jp3d_to_volume volume_to_jp3d) ADD_EXECUTABLE(${exe} ${exe}.c ${common_SRCS}) - TARGET_LINK_LIBRARIES(${exe} ${OPENJPEG_LIBRARY_NAME}_JP3D) # ${TIFF_LIBRARIES}) + TARGET_LINK_LIBRARIES(${exe} ${OPENJPEG3D_LIBRARY_NAME}) # On unix you need to link to the math library: IF(UNIX) TARGET_LINK_LIBRARIES(${exe} m) ENDIF(UNIX) # Install exe - INSTALL_TARGETS(/bin/ ${exe}) + INSTALL(TARGETS ${exe} + EXPORT OpenJPEG3DTargets + DESTINATION ${OPENJPEG3D_INSTALL_BIN_DIR} COMPONENT Applications + ) ENDFOREACH(exe) - - diff --git a/codec/Makefile.nix b/codec/Makefile.nix deleted file mode 100644 index e34ad39c..00000000 --- a/codec/Makefile.nix +++ /dev/null @@ -1,37 +0,0 @@ -#jp3d/codec/Makefile - -include ../../config.nix - -INSTALL_BIN = $(prefix)/bin -CFLAGS = -Wall -I. -I../libjp3dvm -lstdc++ # -g -p -pg -#USERLIBS = -lm - -ifeq ($(ENABLE_SHARED),yes) -ELIB = ../libopenjp3dvm.so.$(JP3D_MAJOR).$(JP3D_MINOR).$(JP3D_BUILD) -else -ELIB = ../libopenjp3dvm.a -endif - -all: jp3d_to_volume volume_to_jp3d - install -d ../../bin - install jp3d_to_volume volume_to_jp3d ../../bin - -jp3d_to_volume: jp3d_to_volume.c $(ELIB) - $(CC) $(CFLAGS) getopt.c convert.c jp3d_to_volume.c \ - -o jp3d_to_volume $(ELIB) $(USERLIBS) - -volume_to_jp3d: volume_to_jp3d.c $(ELIB) - $(CC) $(CFLAGS) getopt.c convert.c volume_to_jp3d.c \ - -o volume_to_jp3d $(ELIB) $(USERLIBS) - -clean: - rm -f jp3d_to_volume volume_to_jp3d - -install: all - install -d $(DESTDIR)$(INSTALL_BIN) - install -m 755 -o root -g root jp3d_to_volume $(DESTDIR)$(INSTALL_BIN) - install -m 755 -o root -g root volume_to_jp3d $(DESTDIR)$(INSTALL_BIN) - -uninstall: - rm -f $(DESTDIR)$(INSTALL_BIN)/jp3d_to_volume - rm -f $(DESTDIR)$(INSTALL_BIN)/volume_to_jp3d diff --git a/codec/convert.c b/codec/convert.c index 7a5d177d..ff4dec3b 100755 --- a/codec/convert.c +++ b/codec/convert.c @@ -31,7 +31,7 @@ #include #include #include -#include "../libjp3dvm/openjpeg3d.h" +#include "openjpeg3d.h" #ifdef _WIN32 #include "windirent.h" #else diff --git a/codec/jp3d_to_volume.c b/codec/jp3d_to_volume.c index 9c5c9adb..e133d876 100755 --- a/codec/jp3d_to_volume.c +++ b/codec/jp3d_to_volume.c @@ -33,7 +33,7 @@ #include #include -#include "../libjp3dvm/openjpeg3d.h" +#include "openjpeg3d.h" #include "getopt.h" #include "convert.h" diff --git a/codec/volume_to_jp3d.c b/codec/volume_to_jp3d.c index e00785d4..acfcd10e 100755 --- a/codec/volume_to_jp3d.c +++ b/codec/volume_to_jp3d.c @@ -32,7 +32,7 @@ #include #include -#include "../libjp3dvm/openjpeg3d.h" +#include "openjpeg3d.h" #include "getopt.h" #include "convert.h" diff --git a/libjp3dvm/CMakeLists.txt b/libjp3dvm/CMakeLists.txt deleted file mode 100644 index 7d265bd2..00000000 --- a/libjp3dvm/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -IF(UNIX OR CYGWIN) - ADD_DEFINITIONS(-O3) -ELSEIF(MINGW) - ADD_DEFINITIONS(-Os) -ELSEIF(WIN32) - ADD_DEFINITIONS(/Os) -ENDIF(UNIX OR CYGWIN) -# -INCLUDE_REGULAR_EXPRESSION("^.*$") -# Defines the source code for the library -SET(JP3DVM_SRCS -bio.c cio.c dwt.c event.c jp3d.c jp3d_lib.c mct.c mqc.c openjpeg.c pi.c raw.c t1.c t1_3d.c t2.c tcd.c tgt.c volume.c -) - -# Build the library -IF(WIN32) - IF(BUILD_SHARED_LIBS) - ADD_DEFINITIONS(-DOPJ_EXPORTS) - ELSE(BUILD_SHARED_LIBS) - ADD_DEFINITIONS(-DOPJ_STATIC) - ENDIF(BUILD_SHARED_LIBS) -ENDIF(WIN32) -ADD_LIBRARY(${OPENJPEG_LIBRARY_NAME}_JP3D ${JP3DVM_SRCS}) -SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME}_JP3D - PROPERTIES - VERSION 1.3.0 - SOVERSION 1) - -# Install library -INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}_JP3D -DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries -) - -# Install includes files -INSTALL(FILES openjpeg3d.h - DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg3d-1.3 -) -INSTALL(CODE - "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink openjpeg3d-1.3/openjpeg3d.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg3d.h)") diff --git a/libopenjpeg3d.pc.cmake b/libopenjpeg3d.pc.cmake new file mode 100644 index 00000000..203e8d39 --- /dev/null +++ b/libopenjpeg3d.pc.cmake @@ -0,0 +1,12 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +bindir=@OPENJPEG3D_INSTALL_BIN_DIR@ +datadir=@OPENJPEG3D_INSTALL_DATA_DIR@ +libdir=@OPENJPEG3D_INSTALL_LIB_DIR@ +includedir=@OPENJPEG3D_INSTALL_INCLUDE_DIR@ + +Name: openjpeg3d +Description: JPEG2000 files library +URL: http://www.openjpeg.org/ +Version: @OPENJPEG3D_VERSION@ +Libs: -L${libdir} -lopenjpeg3d +Cflags: -I${includedir} diff --git a/libopenjpeg3d/CMakeLists.txt b/libopenjpeg3d/CMakeLists.txt new file mode 100644 index 00000000..85d15b13 --- /dev/null +++ b/libopenjpeg3d/CMakeLists.txt @@ -0,0 +1,37 @@ + +INCLUDE_REGULAR_EXPRESSION("^.*$") + +# Defines the source code for the library +SET(OPENJPEG3D_SRCS +bio.c cio.c dwt.c event.c jp3d.c jp3d_lib.c mct.c mqc.c openjpeg.c pi.c raw.c t1.c t1_3d.c t2.c tcd.c tgt.c volume.c +) + +# Build the library +IF(WIN32) + IF(BUILD_SHARED_LIBS) + ADD_DEFINITIONS(-DOPJ_EXPORTS) + ELSE(BUILD_SHARED_LIBS) + ADD_DEFINITIONS(-DOPJ_STATIC) + ENDIF(BUILD_SHARED_LIBS) +ENDIF(WIN32) +ADD_LIBRARY(${OPENJPEG3D_LIBRARY_NAME} ${OPENJPEG3D_SRCS}) +IF(UNIX) + TARGET_LINK_LIBRARIES(${OPENJPEG3D_LIBRARY_NAME} m) +ENDIF(UNIX) +SET_TARGET_PROPERTIES(${OPENJPEG3D_LIBRARY_NAME} PROPERTIES ${OPENJPEG3D_LIBRARY_PROPERTIES}) + +# Install library +INSTALL(TARGETS ${OPENJPEG3D_LIBRARY_NAME} + EXPORT OpenJPEG3DTargets + DESTINATION ${OPENJPEG3D_INSTALL_LIB_DIR} + COMPONENT Libraries +) + +# Install includes files +INSTALL(FILES openjpeg3d.h + DESTINATION ${OPENJPEG3D_INSTALL_INCLUDE_DIR}/${subdir} + COMPONENT Headers +) +INSTALL(CODE + "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${subdir}/openjpeg3d.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG3D_INSTALL_INCLUDE_DIR}/openjpeg3d.h)") + diff --git a/libjp3dvm/Makefile.am b/libopenjpeg3d/Makefile.am similarity index 100% rename from libjp3dvm/Makefile.am rename to libopenjpeg3d/Makefile.am diff --git a/libjp3dvm/bio.c b/libopenjpeg3d/bio.c similarity index 100% rename from libjp3dvm/bio.c rename to libopenjpeg3d/bio.c diff --git a/libjp3dvm/bio.h b/libopenjpeg3d/bio.h similarity index 100% rename from libjp3dvm/bio.h rename to libopenjpeg3d/bio.h diff --git a/libjp3dvm/cio.c b/libopenjpeg3d/cio.c similarity index 100% rename from libjp3dvm/cio.c rename to libopenjpeg3d/cio.c diff --git a/libjp3dvm/cio.h b/libopenjpeg3d/cio.h similarity index 100% rename from libjp3dvm/cio.h rename to libopenjpeg3d/cio.h diff --git a/libjp3dvm/dwt.c b/libopenjpeg3d/dwt.c similarity index 100% rename from libjp3dvm/dwt.c rename to libopenjpeg3d/dwt.c diff --git a/libjp3dvm/dwt.h b/libopenjpeg3d/dwt.h similarity index 100% rename from libjp3dvm/dwt.h rename to libopenjpeg3d/dwt.h diff --git a/libjp3dvm/event.c b/libopenjpeg3d/event.c similarity index 100% rename from libjp3dvm/event.c rename to libopenjpeg3d/event.c diff --git a/libjp3dvm/event.h b/libopenjpeg3d/event.h similarity index 100% rename from libjp3dvm/event.h rename to libopenjpeg3d/event.h diff --git a/libjp3dvm/fix.h b/libopenjpeg3d/fix.h similarity index 100% rename from libjp3dvm/fix.h rename to libopenjpeg3d/fix.h diff --git a/libjp3dvm/int.h b/libopenjpeg3d/int.h similarity index 100% rename from libjp3dvm/int.h rename to libopenjpeg3d/int.h diff --git a/libjp3dvm/jp3d.c b/libopenjpeg3d/jp3d.c similarity index 100% rename from libjp3dvm/jp3d.c rename to libopenjpeg3d/jp3d.c diff --git a/libjp3dvm/jp3d.h b/libopenjpeg3d/jp3d.h similarity index 100% rename from libjp3dvm/jp3d.h rename to libopenjpeg3d/jp3d.h diff --git a/libjp3dvm/jp3d_lib.c b/libopenjpeg3d/jp3d_lib.c similarity index 100% rename from libjp3dvm/jp3d_lib.c rename to libopenjpeg3d/jp3d_lib.c diff --git a/libjp3dvm/jp3d_lib.h b/libopenjpeg3d/jp3d_lib.h similarity index 100% rename from libjp3dvm/jp3d_lib.h rename to libopenjpeg3d/jp3d_lib.h diff --git a/libjp3dvm/mct.c b/libopenjpeg3d/mct.c similarity index 100% rename from libjp3dvm/mct.c rename to libopenjpeg3d/mct.c diff --git a/libjp3dvm/mct.h b/libopenjpeg3d/mct.h similarity index 100% rename from libjp3dvm/mct.h rename to libopenjpeg3d/mct.h diff --git a/libjp3dvm/mqc.c b/libopenjpeg3d/mqc.c similarity index 100% rename from libjp3dvm/mqc.c rename to libopenjpeg3d/mqc.c diff --git a/libjp3dvm/mqc.h b/libopenjpeg3d/mqc.h similarity index 100% rename from libjp3dvm/mqc.h rename to libopenjpeg3d/mqc.h diff --git a/libjp3dvm/openjpeg.c b/libopenjpeg3d/openjpeg.c similarity index 100% rename from libjp3dvm/openjpeg.c rename to libopenjpeg3d/openjpeg.c diff --git a/libjp3dvm/openjpeg3d.h b/libopenjpeg3d/openjpeg3d.h similarity index 100% rename from libjp3dvm/openjpeg3d.h rename to libopenjpeg3d/openjpeg3d.h diff --git a/libjp3dvm/opj_includes.h b/libopenjpeg3d/opj_includes.h similarity index 100% rename from libjp3dvm/opj_includes.h rename to libopenjpeg3d/opj_includes.h diff --git a/libjp3dvm/pi.c b/libopenjpeg3d/pi.c similarity index 100% rename from libjp3dvm/pi.c rename to libopenjpeg3d/pi.c diff --git a/libjp3dvm/pi.h b/libopenjpeg3d/pi.h similarity index 100% rename from libjp3dvm/pi.h rename to libopenjpeg3d/pi.h diff --git a/libjp3dvm/raw.c b/libopenjpeg3d/raw.c similarity index 100% rename from libjp3dvm/raw.c rename to libopenjpeg3d/raw.c diff --git a/libjp3dvm/raw.h b/libopenjpeg3d/raw.h similarity index 100% rename from libjp3dvm/raw.h rename to libopenjpeg3d/raw.h diff --git a/libjp3dvm/t1.c b/libopenjpeg3d/t1.c similarity index 100% rename from libjp3dvm/t1.c rename to libopenjpeg3d/t1.c diff --git a/libjp3dvm/t1.h b/libopenjpeg3d/t1.h similarity index 100% rename from libjp3dvm/t1.h rename to libopenjpeg3d/t1.h diff --git a/libjp3dvm/t1_3d.c b/libopenjpeg3d/t1_3d.c similarity index 100% rename from libjp3dvm/t1_3d.c rename to libopenjpeg3d/t1_3d.c diff --git a/libjp3dvm/t1_3d.h b/libopenjpeg3d/t1_3d.h similarity index 100% rename from libjp3dvm/t1_3d.h rename to libopenjpeg3d/t1_3d.h diff --git a/libjp3dvm/t2.c b/libopenjpeg3d/t2.c similarity index 100% rename from libjp3dvm/t2.c rename to libopenjpeg3d/t2.c diff --git a/libjp3dvm/t2.h b/libopenjpeg3d/t2.h similarity index 100% rename from libjp3dvm/t2.h rename to libopenjpeg3d/t2.h diff --git a/libjp3dvm/tcd.c b/libopenjpeg3d/tcd.c similarity index 100% rename from libjp3dvm/tcd.c rename to libopenjpeg3d/tcd.c diff --git a/libjp3dvm/tcd.h b/libopenjpeg3d/tcd.h similarity index 100% rename from libjp3dvm/tcd.h rename to libopenjpeg3d/tcd.h diff --git a/libjp3dvm/tgt.c b/libopenjpeg3d/tgt.c similarity index 100% rename from libjp3dvm/tgt.c rename to libopenjpeg3d/tgt.c diff --git a/libjp3dvm/tgt.h b/libopenjpeg3d/tgt.h similarity index 100% rename from libjp3dvm/tgt.h rename to libopenjpeg3d/tgt.h diff --git a/libjp3dvm/volume.c b/libopenjpeg3d/volume.c similarity index 100% rename from libjp3dvm/volume.c rename to libopenjpeg3d/volume.c diff --git a/libjp3dvm/volume.h b/libopenjpeg3d/volume.h similarity index 100% rename from libjp3dvm/volume.h rename to libopenjpeg3d/volume.h diff --git a/tcltk/decoder.tcl b/tcltk/decoder.tcl index 6fadbb18..98edcde9 100755 --- a/tcltk/decoder.tcl +++ b/tcltk/decoder.tcl @@ -1,8 +1,8 @@ namespace eval VMDecoder { variable var - variable JP3Ddecoder "../bin/jp3d_vm_dec.exe" - #variable JP3Ddecoder "jp3d_vm_dec.exe" + variable JP3Ddecoder "../bin/jp3d_to_volume.exe" + #variable JP3Ddecoder "jp3d_to_volume.exe" } diff --git a/tcltk/encoder.tcl b/tcltk/encoder.tcl index dc174b71..76ad9f33 100755 --- a/tcltk/encoder.tcl +++ b/tcltk/encoder.tcl @@ -1,7 +1,7 @@ namespace eval VMEncoder { variable var - variable JP3Dencoder "../bin/jp3d_vm_enc.exe" + variable JP3Dencoder "../bin/volume_to_jp3d.exe" } proc VMEncoder::create { nb } {