Blame CMakeLists.txt

Packit Service 6754ca
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
Packit Service 6754ca
Packit Service 6754ca
PROJECT (openexr)
Packit Service 6754ca
Packit Service 6754ca
SET(OPENEXR_VERSION_MAJOR "2")
Packit Service 6754ca
SET(OPENEXR_VERSION_MINOR "2")
Packit Service 6754ca
SET(OPENEXR_VERSION_PATCH "0")
Packit Service 6754ca
Packit Service 6754ca
SET(OPENEXR_VERSION ${OPENEXR_VERSION_MAJOR}.${OPENEXR_VERSION_MINOR}.${OPENEXR_VERSION_PATCH})
Packit Service 6754ca
SET(OPENEXR_VERSION_API ${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR})
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
# enable the tests
Packit Service 6754ca
ENABLE_TESTING()
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
# distro building 
Packit Service 6754ca
SET(CPACK_PACKAGE_VERSION_MAJOR "${OPENEXR_VERSION_MAJOR}")
Packit Service 6754ca
SET(CPACK_PACKAGE_VERSION_MINOR "${OPENEXR_VERSION_MINOR}")
Packit Service 6754ca
SET(CPACK_PACKAGE_VERSION_PATCH "${OPENEXR_VERSION_PATCH}")
Packit Service 6754ca
SET(CPACK_SOURCE_GENERATOR "TGZ")
Packit Service 6754ca
set(CPACK_SOURCE_PACKAGE_FILE_NAME
Packit Service 6754ca
    "${CMAKE_PROJECT_NAME}-${OPENEXR_VERSION}"
Packit Service 6754ca
  )
Packit Service 6754ca
set(CPACK_SOURCE_IGNORE_FILES
Packit Service 6754ca
  "/.git*;/.cvs*;${CPACK_SOURCE_IGNORE_FILES}")
Packit Service 6754ca
INCLUDE ( CPack )
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
# Allow the developer to select if Dynamic or Static libraries are built
Packit Service 6754ca
OPTION (BUILD_SHARED_LIBS    "Build Shared Libraries" ON)
Packit Service 6754ca
OPTION (USE_ZLIB_WINAPI      "Use ZLib Win API"       OFF)
Packit Service 6754ca
OPTION (NAMESPACE_VERSIONING "Use Namespace Versioning" ON)
Packit Service 6754ca
Packit Service 6754ca
# Setup osx rpathing
Packit Service 6754ca
SET (CMAKE_MACOSX_RPATH 1)
Packit Service 6754ca
SET (BUILD_WITH_INSTALL_RPATH 1)
Packit Service 6754ca
Packit Service 6754ca
ADD_DEFINITIONS ( -DHAVE_CONFIG_H -DILM_IMF_TEST_IMAGEDIR="${CMAKE_SOURCE_DIR}/IlmImfTest/" )
Packit Service 6754ca
Packit Service 6754ca
INCLUDE_DIRECTORIES (
Packit Service 6754ca
  ${CMAKE_CURRENT_BINARY_DIR}/config
Packit Service 6754ca
  IlmImf
Packit Service 6754ca
  IlmImfUtil
Packit Service 6754ca
  exrmaketiled
Packit Service 6754ca
  exrenvmap
Packit Service 6754ca
  exrmakepreview
Packit Service 6754ca
  exrmultiview
Packit Service 6754ca
  IlmImfFuzzTest
Packit Service 6754ca
)
Packit Service 6754ca
Packit Service 6754ca
FIND_PACKAGE(ZLIB REQUIRED)
Packit Service 6754ca
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
Packit Service 6754ca
Packit Service 6754ca
IF (NOT WIN32)
Packit Service 6754ca
  SET ( PTHREAD_LIB pthread )
Packit Service 6754ca
ENDIF()
Packit Service 6754ca
Packit Service 6754ca
INCLUDE_DIRECTORIES ( ${ILMBASE_PACKAGE_PREFIX}/include/OpenEXR )
Packit Service 6754ca
LINK_DIRECTORIES ( ${ILMBASE_PACKAGE_PREFIX}/lib )
Packit Service 6754ca
MESSAGE ( "ILMBASE_PACKAGE_PREFIX = " ${ILMBASE_PACKAGE_PREFIX})
Packit Service 6754ca
Packit Service 6754ca
SET (LIB_TYPE STATIC)
Packit Service 6754ca
IF (BUILD_SHARED_LIBS)
Packit Service 6754ca
  # User wants to build Dynamic Libraries, so change the LIB_TYPE variable to CMake keyword 'SHARED'
Packit Service 6754ca
  SET (LIB_TYPE SHARED)
Packit Service 6754ca
    IF (WIN32)
Packit Service 6754ca
    ADD_DEFINITIONS(-DOPENEXR_DLL)
Packit Service 6754ca
  ENDIF ()
Packit Service 6754ca
ENDIF ()
Packit Service 6754ca
Packit Service 6754ca
IF (USE_ZLIB_WINAPI)
Packit Service 6754ca
  ADD_DEFINITIONS(-DZLIB_WINAPI)
Packit Service 6754ca
ENDIF ()
Packit Service 6754ca
Packit Service 6754ca
# Test for GCC-style inline asm support with AVX instructions
Packit Service 6754ca
INCLUDE (CheckCXXSourceCompiles)
Packit Service 6754ca
CHECK_CXX_SOURCE_COMPILES (
Packit Service 6754ca
	"
Packit Service 6754ca
	int main()
Packit Service 6754ca
	{
Packit Service 6754ca
	 #if defined(__GNUC__) && defined(__SSE2__) 
Packit Service 6754ca
		 int n   = 0;
Packit Service 6754ca
		 int eax = 0;
Packit Service 6754ca
		 int edx = 0;
Packit Service 6754ca
		 __asm__(
Packit Service 6754ca
			 \"xgetbv     ;\"
Packit Service 6754ca
			 \"vzeroupper  \"
Packit Service 6754ca
			 : \"=a\"(eax), \"=d\"(edx) : \"c\"(n) : );
Packit Service 6754ca
	 #else
Packit Service 6754ca
		 #error No GCC style inline asm supported for AVX instructions
Packit Service 6754ca
	 #endif
Packit Service 6754ca
	}
Packit Service 6754ca
	" HAVE_GCC_INLINE_ASM_AVX)
Packit Service 6754ca
Packit Service 6754ca
# Check if sysconf(_SC_NPROCESSORS_ONLN) can be used for CPU count
Packit Service 6754ca
CHECK_CXX_SOURCE_COMPILES (
Packit Service 6754ca
    "
Packit Service 6754ca
    #include <unistd.h>
Packit Service 6754ca
    int main()
Packit Service 6754ca
    {
Packit Service 6754ca
        sysconf(_SC_NPROCESSORS_ONLN);
Packit Service 6754ca
    }
Packit Service 6754ca
    " HAVE_SYSCONF_NPROCESSORS_ONLN)
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
##########################
Packit Service 6754ca
# OpenEXRConfig.h generation
Packit Service 6754ca
##########################
Packit Service 6754ca
IF (WIN32)
Packit Service 6754ca
  FILE ( WRITE ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_COMPLETE_IOMANIP 1\n" )
Packit Service 6754ca
ELSEIF (APPLE)
Packit Service 6754ca
  FILE ( WRITE ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_DARWIN 1\n" )
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_COMPLETE_IOMANIP 1\n" )
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#include <string.h>\n" )
Packit Service 6754ca
ELSE ()
Packit Service 6754ca
  # Linux
Packit Service 6754ca
  FILE ( WRITE ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_LINUX_PROCFS 1\n" )
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_COMPLETE_IOMANIP 1\n" )
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_LARGE_STACK 1\n" )
Packit Service 6754ca
ENDIF()
Packit Service 6754ca
  
Packit Service 6754ca
IF (NAMESPACE_VERSIONING)
Packit Service 6754ca
    FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_INTERNAL_NAMESPACE_CUSTOM 1\n")
Packit Service 6754ca
    FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_NAMESPACE Imf\n" )
Packit Service 6754ca
    FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_INTERNAL_NAMESPACE Imf_${OPENEXR_VERSION_API}\n\n" )
Packit Service 6754ca
ELSE ()
Packit Service 6754ca
    FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_INTERNAL_NAMESPACE_CUSTOM 0\n")
Packit Service 6754ca
    FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_NAMESPACE Imf\n" )
Packit Service 6754ca
    FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_INTERNAL_NAMESPACE Imf\n\n" )
Packit Service 6754ca
ENDIF ()
Packit Service 6754ca
Packit Service 6754ca
FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_VERSION_STRING \"${OPENEXR_VERSION}\"\n" )
Packit Service 6754ca
FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_PACKAGE_STRING \"OpenEXR ${OPENEXR_VERSION}\"\n" )
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "
Packit Service 6754ca
#define OPENEXR_VERSION_MAJOR ${OPENEXR_VERSION_MAJOR}
Packit Service 6754ca
#define OPENEXR_VERSION_MINOR ${OPENEXR_VERSION_MINOR}
Packit Service 6754ca
#define OPENEXR_VERSION_PATCH ${OPENEXR_VERSION_PATCH}
Packit Service 6754ca
")
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "
Packit Service 6754ca
// Version as a single hex number, e.g. 0x01000300 == 1.0.3
Packit Service 6754ca
#define OPENEXR_VERSION_HEX ((OPENEXR_VERSION_MAJOR << 24) | \\
Packit Service 6754ca
                             (OPENEXR_VERSION_MINOR << 16) | \\
Packit Service 6754ca
                             (OPENEXR_VERSION_PATCH <<  8))\n
Packit Service 6754ca
")
Packit Service 6754ca
Packit Service 6754ca
IF (HAVE_GCC_INLINE_ASM_AVX)
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX 1\n" )
Packit Service 6754ca
ENDIF()
Packit Service 6754ca
  
Packit Service 6754ca
IF (HAVE_SYSCONF_NPROCESSORS_ONLN)
Packit Service 6754ca
  FILE ( APPEND ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h "#define OPENEXR_IMF_HAVE_SYSCONF_NPROCESSORS_ONLN 1\n" )
Packit Service 6754ca
ENDIF()
Packit Service 6754ca
  
Packit Service 6754ca
SET (OPENEXR_LIBSUFFIX "")
Packit Service 6754ca
SET (ILMBASE_LIBSUFFIX "")
Packit Service 6754ca
IF (NAMESPACE_VERSIONING)
Packit Service 6754ca
  SET ( OPENEXR_LIBSUFFIX "-${OPENEXR_VERSION_API}" )
Packit Service 6754ca
  # assume same NAMESPACE_VERSION setting for IlmBase for now
Packit Service 6754ca
  SET ( ILMBASE_LIBSUFFIX "-${OPENEXR_VERSION_API}" )
Packit Service 6754ca
ENDIF ()
Packit Service 6754ca
Packit Service 6754ca
##########################
Packit Service 6754ca
# IlmImf library
Packit Service 6754ca
##########################
Packit Service 6754ca
ADD_SUBDIRECTORY ( IlmImf )
Packit Service 6754ca
Packit Service 6754ca
SET_TARGET_PROPERTIES ( IlmImf
Packit Service 6754ca
  PROPERTIES
Packit Service 6754ca
  VERSION 22.0.0
Packit Service 6754ca
  SOVERSION 22
Packit Service 6754ca
  OUTPUT_NAME "IlmImf${OPENEXR_LIBSUFFIX}"
Packit Service 6754ca
  )
Packit Service 6754ca
  
Packit Service 6754ca
##########################
Packit Service 6754ca
# IlmImfUtil library
Packit Service 6754ca
##########################
Packit Service 6754ca
ADD_SUBDIRECTORY ( IlmImfUtil )
Packit Service 6754ca
Packit Service 6754ca
SET_TARGET_PROPERTIES ( IlmImfUtil
Packit Service 6754ca
  PROPERTIES
Packit Service 6754ca
  VERSION 22.0.0
Packit Service 6754ca
  SOVERSION 22
Packit Service 6754ca
  OUTPUT_NAME "IlmImfUtil${OPENEXR_LIBSUFFIX}"
Packit Service 6754ca
  )
Packit Service 6754ca
  
Packit Service 6754ca
##########################
Packit Service 6754ca
# Example Code
Packit Service 6754ca
##########################
Packit Service 6754ca
ADD_SUBDIRECTORY ( IlmImfExamples )
Packit Service 6754ca
Packit Service 6754ca
  
Packit Service 6754ca
##########################
Packit Service 6754ca
# Tests
Packit Service 6754ca
##########################
Packit Service 6754ca
ADD_SUBDIRECTORY ( IlmImfTest )
Packit Service 6754ca
ADD_SUBDIRECTORY ( IlmImfUtilTest )
Packit Service 6754ca
ADD_SUBDIRECTORY ( IlmImfFuzzTest )
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
##########################
Packit Service 6754ca
# Binaries / Utilities
Packit Service 6754ca
##########################
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrheader )
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrmaketiled )
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrstdattr )
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrmakepreview )
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrenvmap )
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrmultiview )
Packit Service 6754ca
ADD_SUBDIRECTORY ( exrmultipart )
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
##########################
Packit Service 6754ca
# Installation
Packit Service 6754ca
##########################
Packit Service 6754ca
Packit Service 6754ca
INSTALL ( FILES
Packit Service 6754ca
  ${CMAKE_CURRENT_BINARY_DIR}/config/OpenEXRConfig.h
Packit Service 6754ca
  DESTINATION
Packit Service 6754ca
  ${CMAKE_INSTALL_PREFIX}/include/OpenEXR
Packit Service 6754ca
  )
Packit Service 6754ca
Packit Service 6754ca
# Documentation
Packit Service 6754ca
INSTALL ( FILES
Packit Service 6754ca
  doc/TechnicalIntroduction.pdf
Packit Service 6754ca
  doc/ReadingAndWritingImageFiles.pdf
Packit Service 6754ca
  doc/OpenEXRFileLayout.pdf
Packit Service 6754ca
  doc/MultiViewOpenEXR.pdf
Packit Service 6754ca
  doc/InterpretingDeepPixels.pdf
Packit Service 6754ca
  doc/TheoryDeepPixels.pdf
Packit Service 6754ca
  DESTINATION
Packit Service 6754ca
  ${CMAKE_INSTALL_PREFIX}/share/doc/OpenEXR-${OPENEXR_VERSION}
Packit Service 6754ca
  )
Packit Service 6754ca
Packit Service 6754ca
# Examples
Packit Service 6754ca
INSTALL ( FILES
Packit Service 6754ca
  IlmImfExamples/main.cpp
Packit Service 6754ca
  IlmImfExamples/drawImage.cpp
Packit Service 6754ca
  IlmImfExamples/rgbaInterfaceExamples.cpp
Packit Service 6754ca
  IlmImfExamples/rgbaInterfaceTiledExamples.cpp
Packit Service 6754ca
  IlmImfExamples/generalInterfaceExamples.cpp
Packit Service 6754ca
  IlmImfExamples/lowLevelIoExamples.cpp
Packit Service 6754ca
  IlmImfExamples/previewImageExamples.cpp
Packit Service 6754ca
  IlmImfExamples/generalInterfaceTiledExamples.cpp
Packit Service 6754ca
  IlmImfExamples/generalInterfaceTiledExamples.h
Packit Service 6754ca
  IlmImfExamples/drawImage.h
Packit Service 6754ca
  IlmImfExamples/rgbaInterfaceExamples.h
Packit Service 6754ca
  IlmImfExamples/generalInterfaceExamples.h
Packit Service 6754ca
  IlmImfExamples/rgbaInterfaceTiledExamples.h
Packit Service 6754ca
  IlmImfExamples/lowLevelIoExamples.h
Packit Service 6754ca
  IlmImfExamples/previewImageExamples.h
Packit Service 6754ca
  IlmImfExamples/namespaceAlias.h
Packit Service 6754ca
  DESTINATION
Packit Service 6754ca
  ${CMAKE_INSTALL_PREFIX}/share/doc/OpenEXR-${OPENEXR_VERSION}/examples
Packit Service 6754ca
  )