+#-----------------------------------------------------------------------------
+# Compiler specific flags:
+IF(CMAKE_COMPILER_IS_GNUCC)
+ # For all builds, make sure openjpeg 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)
+
+#-----------------------------------------------------------------------------
+# opj_config.h generation (1/2)
+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()
+
+#-----------------------------------------------------------------------------
+# Build Library
+INCLUDE_DIRECTORIES(BEFORE ${OPENJPEG_BINARY_DIR})
+ADD_SUBDIRECTORY(libopenjpeg)
+
+#-----------------------------------------------------------------------------
+# Build Applications
+OPTION(BUILD_CODEC "Build the CODEC executables" ON)
+OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF)
+OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF)
+
+IF(BUILD_CODEC OR BUILD_MJ2 OR BUILD_JPIP)
+ OPTION(BUILD_THIRDPARTY "Build the thirdparty executables if it is needed" OFF)
+ ADD_SUBDIRECTORY(thirdparty)
+ ADD_SUBDIRECTORY(applications)
+ENDIF (BUILD_CODEC OR BUILD_MJ2 OR BUILD_JPIP)