X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=INSTALL.md;h=1c0f1e4ed99034923a16aaa1048c1a4c6a2495de;hb=67e6a79bcf6b2ea5503f47954537d14ed37e4a72;hp=9788596b363553956a85ac64d7e5548be53b3725;hpb=f4a708ba0fe0ef906209ba608c6059572ff76dcf;p=openjpeg.git diff --git a/INSTALL.md b/INSTALL.md index 9788596b..1c0f1e4e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -5,11 +5,11 @@ The build method maintained by OpenJPEG is [CMake](https://cmake.org/). ## UNIX/LINUX - MacOS (terminal) - WINDOWS (cygwin, MinGW) -To build the library, type in root openjpeg directory: +To build the library, type from source tree directory: ``` mkdir build cd build -cmake .. +cmake .. -DCMAKE_BUILD_TYPE=Release make ``` Binaries are then located in the 'bin' directory. @@ -30,7 +30,9 @@ 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. + * PKG_CONFIG files are by default built for Unix compile, you can force to build on other platforms by adding: '-DBUILD_PKGCONFIG_FILES=on' * To build the CODEC executables: '-DBUILD\_CODEC:bool=on' (default: 'ON') + * To build opjstyle (internal version of astyle) for OpenJPEG development: '-DWITH_ASTYLE=ON' * [OBSOLETE] To build the MJ2 executables: '-DBUILD\_MJ2:bool=on' (default: 'OFF') * [OBSOLETE] To build the JPWL executables and JPWL library: '-DBUILD\_JPWL:bool=on' (default: 'OFF') * [OBSOLETE] To build the JPIP client (java compiler recommended) library and executables: '-DBUILD\_JPIP:bool=on' (default: 'OFF') @@ -60,7 +62,68 @@ Note 4 : On MacOS, if it does not work, try adding the following flag to the cma ## MacOS (XCode) - WINDOWS (VisualStudio, etc) You can use cmake to generate the project files for the IDE you are using (VC2010, XCode, etc). -Type 'cmake --help' for available generators on your platform. +Type `cmake --help` for available generators on your platform. + +Examples for Windows with Visual Studio C++ compiler: + +If using directly the cl compiler: + +``` +cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE:string="Release" -DBUILD_SHARED_LIBS:bool=on -DCMAKE_INSTALL_PREFIX:path="%USERPROFILE%" -DCMAKE_LIBRARY_PATH:path="%USERPROFILE%" -DCMAKE_INCLUDE_PATH:path="%USERPROFILE%\include" .. +``` + +To compile a 64-bit application, open 64-Bit Visual C\+\+ toolset on the command line and run cmake. For further information, please refer to: [How to: Enable a 64-Bit Visual C\+\+ Toolset on the Command Line](https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx). + + +If you do not want directly use the cl compiler, you could use: + +``` +cmake -DCMAKE_BUILD_TYPE:string="Release" -DBUILD_SHARED_LIBS:bool=on -DCMAKE_INSTALL_PREFIX:path="%USERPROFILE%" -DCMAKE_LIBRARY_PATH:path="%USERPROFILE%" -DCMAKE_INCLUDE_PATH:path="%USERPROFILE%\include" .. +``` + +To create Visual Studio solution (.sln) and project files (.vcproj / .vcxproj): +``` +cmake -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE:string="Release" -DBUILD_SHARED_LIBS:bool=on -DCMAKE_INSTALL_PREFIX:path="%USERPROFILE%" -DCMAKE_LIBRARY_PATH:path="%USERPROFILE%" -DCMAKE_INCLUDE_PATH:path="%USERPROFILE%\include" .. +``` + +64-bit application: +``` +cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE:string="Release" -DBUILD_SHARED_LIBS:bool=on -DCMAKE_INSTALL_PREFIX:path="%USERPROFILE%" -DCMAKE_LIBRARY_PATH:path="%USERPROFILE%" -DCMAKE_INCLUDE_PATH:path="%USERPROFILE%\include" .. +``` + + +# Enabling CPU specific optimizations + +For Intel/AMD processors, OpenJPEG implements optimizations using the SSE4.1 +instruction set (for example, for the 9x7 inverse MCT transform) and the AVX2 +instruction set (for example, for the 5x3 inverse discrete wavelet transform). +Currently, those optimizations are only available if OpenJPEG is built to +use those instruction sets (and the resulting binary will only run on compatible +CPUs) + +With gcc/clang, it is possible to enable those instruction sets with the following : + +``` +cmake -DCMAKE_C_FLAGS="-O3 -msse4.1 -DNDEBUG" .. +``` + +``` +cmake -DCMAKE_C_FLAGS="-O3 -mavx2 -DNDEBUG" .. +``` + +(AVX2 implies SSE4.1) + +Or if the binary is dedicated to run on the machine where it has +been compiled : + +``` +cmake -DCMAKE_C_FLAGS="-O3 -march=native -DNDEBUG" .. +``` + +# Modifying OpenJPEG + +Before committing changes, run: +```scripts/prepare-commit.sh``` # Using OpenJPEG @@ -72,4 +135,4 @@ find_package(OpenJPEG REQUIRED) include_directories(${OPENJPEG_INCLUDE_DIRS}) add_executable(myapp myapp.c) target_link_libraries(myapp ${OPENJPEG_LIBRARIES}) -``` \ No newline at end of file +```