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.txt181
1 files changed, 144 insertions, 37 deletions
diff --git a/DevIL/src-IL/CMakeLists.txt b/DevIL/src-IL/CMakeLists.txt
index 08a75a14..73d09561 100644
--- a/DevIL/src-IL/CMakeLists.txt
+++ b/DevIL/src-IL/CMakeLists.txt
@@ -1,48 +1,138 @@
-PROJECT(DevIL)
+cmake_minimum_required(VERSION 2.6)
-FILE(GLOB DevIL_SRCS src/*.c src/*.cpp)
-FILE(GLOB DevIL_INC include/*.h ../include/IL/config.h ../include/IL/devil_internal_exports.h ../include/IL/il.h)
-FILE(GLOB DevIL_RSRC)
-FILE(GLOB DevIL_TXT)
+project(DevIL)
-INCLUDE_DIRECTORIES(
+# include our custom modules
+set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+include (TestBigEndian)
- ${DevIL_SOURCE_DIR}/include
- ${DevIL_SOURCE_DIR}/../include
-)
+option(BUILD_SHARED_LIBS "Build with shared (.DLL .SO) libraries." ON)
-#SET(DevIL_INC ${DEVIL_INCS} ${DEVIL_SRCS})
+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)
+file(GLOB DevIL_TXT)
-SET(LIBRARY_OUTPUT_PATH ${DEVIL_LIB_DEST_DIR} )
+include_directories( include ../include )
-#
# for windows add the .def and .rc files to the source list
-#
-IF(WIN32)
- ADD_DEFINITIONS(-DIL_USE_PRAGMA_LIBS)
- IF(BUILD_SHARED_LIBS)
+if(WIN32)
+ #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)
- SET(DevIL_SRCS ${DevIL_SRCS} msvc/il.def)
- SET(DevIL_RSRC ${DevIL_RSRC} "msvc/resources/IL Logo.ico" msvc/IL.rc)
- SET(DevIL_TXT ${DevIL_TXT} ../AUTHORS ../ChangeLog ../CREDITS ../libraries.txt ../MSVC++.txt ../README.unix ../README.win ../TODO)
+ add_definitions(-DIL_DLL -DJPEGSTATIC)
+ # note: .def not used for now - __declspec() in source handles export.
+ # set(DevIL_SRCS ${DevIL_SRCS} msvc/il.def)
+ set(DevIL_RSRC ${DevIL_RSRC} "msvc/resources/IL Logo.ico" msvc/IL.rc)
+ set(DevIL_TXT ${DevIL_TXT} ../AUTHORS ../ChangeLog ../CREDITS ../libraries.txt ../README ../README.cmake ../TODO)
# SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB:msvcrt.lib ")
- SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
- ELSE(BUILD_SHARED_LIBS)
- ADD_DEFINITIONS(-DIL_STATIC_LIB -DJPEGSTATIC)
- ENDIF(BUILD_SHARED_LIBS)
-ENDIF(WIN32)
+ set(CMAKE_C_FLAGS_RELEASE "/MT /O2")
+ else(BUILD_SHARED_LIBS)
+ add_definitions(-DIL_STATIC_LIB -DJPEGSTATIC)
+ endif(BUILD_SHARED_LIBS)
+endif(WIN32)
+
+source_group("Source Files" FILES src/*.c src/*.cpp)
+source_group("Header Files" FILES ${DevIL_INC} )
+source_group("Resource Files" FILES ${DevIL_RSRC} )
+source_group("Text Files" FILES ${DevIL_TXT} )
+
+if(BUILD_SHARED_LIBS)
+ add_library(IL SHARED ${DevIL_SRCS} )
+else(BUILD_SHARED_LIBS)
+ add_library(IL ${DevIL_SRCS} )
+endif(BUILD_SHARED_LIBS)
+
+
+
+
+# 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)
+
+
+
-SOURCE_GROUP("Source Files" FILES src/*.c src/*.cpp)
-SOURCE_GROUP("Header Files" FILES ${DevIL_INC} )
-SOURCE_GROUP("Resource Files" FILES ${DevIL_RSRC} )
-SOURCE_GROUP("Text Files" FILES ${DevIL_TXT} )
-IF(BUILD_SHARED_LIBS)
- ADD_LIBRARY(DevIL SHARED ${DevIL_SRCS} ${DevIL_INC} ${DevIL_RSRC} ${DevIL_TXT})
-ELSE(BUILD_SHARED_LIBS)
- ADD_LIBRARY(DevIL ${DevIL_SRCS} ${DevIL_INC} ${DevIL_RSRC} ${DevIL_TXT})
-ENDIF(BUILD_SHARED_LIBS)
# configure include dirs and linkage for the optional external libs
@@ -98,14 +188,31 @@ endif(IL_USE_DXTC_NVIDIA)
include_directories(${incs})
-target_link_libraries(DevIL ${libs})
+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)
+
+
+
+# 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 DevIL
+# 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
+)
+