summaryrefslogtreecommitdiff
path: root/DevIL/src-IL/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'DevIL/src-IL/CMakeLists.txt')
-rw-r--r--DevIL/src-IL/CMakeLists.txt125
1 files changed, 118 insertions, 7 deletions
diff --git a/DevIL/src-IL/CMakeLists.txt b/DevIL/src-IL/CMakeLists.txt
index 49412c22..9acafd4b 100644
--- a/DevIL/src-IL/CMakeLists.txt
+++ b/DevIL/src-IL/CMakeLists.txt
@@ -1,5 +1,12 @@
+cmake_minimum_required(VERSION 2.6)
+
project(DevIL)
+# include our custom modules
+set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+include (TestBigEndian)
+
+
file(GLOB DevIL_SRCS src/*.c src/*.cpp)
file(GLOB DevIL_INC include/*.h ../include/config.h ../include/IL/devil_internal_exports.h ../include/IL/il.h)
file(GLOB DevIL_RSRC)
@@ -7,14 +14,9 @@ file(GLOB DevIL_TXT)
include_directories( include ../include )
-# generate config.h
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h.cmake.in ${CMAKE_CURRENT_SOURCE_DIR}/include/config.h)
-
-#
# for windows add the .def and .rc files to the source list
-#
if(WIN32)
- add_definitions(-DIL_USE_PRAGMA_LIBS)
+ add_definitions(-DIL_USE_PRAGMA_LIBS)
if(BUILD_SHARED_LIBS)
#ADD_DEFINITIONS(-DIL_DLL -DMNG_DLL -DMNG_USE_DLL -DJPEGDLL)
add_definitions(-DIL_DLL -DJPEGSTATIC)
@@ -40,6 +42,98 @@ else(BUILD_SHARED_LIBS)
endif(BUILD_SHARED_LIBS)
+
+option(BUILD_SHARED_LIBS "Build with shared (.DLL .SO) libraries." ON)
+
+# various compiler stuff
+test_big_endian(WORDS_BIGENDIAN)
+
+
+# check availability of optional external libs
+find_package(PNG)
+find_package(TIFF)
+find_package(JPEG)
+find_package(Jasper)
+find_package(Squish)
+find_package(NVTT) # NVidia texture tools
+find_package(OpenEXR)
+find_package(LCMS)
+
+# TODO: check for libmng, others?
+
+
+# TODO: utx doesn't currently compile (as C, anyway)
+set(IL_NO_UTX 1)
+
+# TODO: WDP requires Microsoft HD Photo Device Porting Kit 1.0
+set(IL_NO_WDP 1)
+
+# TODO: add options for manually configuring formats (eg IL_NO_GAMES)
+
+
+# present options for the libraries which are available
+if(PNG_FOUND)
+ option(IL_NO_PNG "Disable PNG support (libpng)" 0)
+else(PNG_FOUND)
+ set(IL_NO_PNG 1)
+endif(PNG_FOUND)
+
+if(TIFF_FOUND)
+ option(IL_NO_TIF "Disable TIFF support (libtiff)" 0)
+else(TIFF_FOUND)
+ set(IL_NO_TIF 1)
+endif(TIFF_FOUND)
+
+if(JPEG_FOUND)
+ option(IL_NO_JPG "Disable JPEG support (libjpeg)" 0)
+else(JPEG_FOUND)
+ set(IL_NO_JPG 1)
+endif(JPEG_FOUND)
+
+if(OPENEXR_FOUND)
+ option(IL_NO_EXR "Disable EXR support (openEXR)" 0)
+else(OPENEXR_FOUND)
+ set(IL_NO_EXR 1)
+endif(OPENEXR_FOUND)
+
+if(JASPER_FOUND)
+ option(IL_NO_JP2 "Disable JP2 support (libjasper)" 0)
+else(JASPER_FOUND)
+ set(IL_NO_JP2 1)
+endif(JASPER_FOUND)
+
+if(MNG_FOUND)
+ option(IL_NO_MNG "Disable MNG support (libmng)" 0)
+else(MNG_FOUND)
+ set(IL_NO_MNG 1)
+endif(MNG_FOUND)
+
+if(LCMS_FOUND)
+ option(IL_NO_LCMS "Disable LCMS support (Little CMS)" 0)
+ #TODO: be more clever about lcms include... it smells wrong.
+ option(LCMS_NODIRINCLUDE "Include lcms.h instead of lcms/lcms.h" 1)
+else(LCMS_FOUND)
+ set(IL_NO_LCMS 1)
+endif(LCMS_FOUND)
+
+if(NVTT_FOUND)
+ option(IL_USE_DXTC_NVIDIA "Use Nvidia Texture Tools (NVTT) for DXTC support" 1)
+else(NVTT_FOUND)
+ set(IL_USE_DXTC_NVIDIA 0)
+endif(NVTT_FOUND)
+
+if(SQUISH_FOUND)
+ option(IL_USE_DXTC_SQUISH "Use libsquish for DXTC support" 1)
+else(SQUISH_FOUND)
+ set(IL_USE_DXTC_SQUISH 0)
+endif(SQUISH_FOUND)
+
+
+
+
+
+
+
# configure include dirs and linkage for the optional external libs
set(libs "")
set(incs "")
@@ -95,12 +189,29 @@ endif(IL_USE_DXTC_NVIDIA)
include_directories(${incs})
target_link_libraries(IL ${libs})
+# generate config.h
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h.cmake.in ${CMAKE_CURRENT_SOURCE_DIR}/include/config.h)
-# Installation
+
+# generate pkg-config file
+# TODO: add Requires.private or Libs.private
+# (needed to support static linking?)
+# TODO: sort out version number
+configure_file( pkgconfig/IL.pc.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/IL.pc @ONLY)
+
+
+# Installation
install (TARGETS IL
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
install (FILES ../include/IL/il.h DESTINATION include/IL)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/IL.pc
+ DESTINATION lib/pkgconfig
+)
+