summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Campbell <ben@scumways.com>2016-11-09 10:17:01 +1300
committerBen Campbell <ben@scumways.com>2016-11-09 10:20:46 +1300
commitbd67d5d9c33ce20be3950013f63ee601a0697c6e (patch)
tree27e583bad3b06d1323b27499d07605551db7aaab
parent75ddeaf0083f0ad1cd4558f80ea94aeb830e376c (diff)
downloaddevil-bd67d5d9c33ce20be3950013f63ee601a0697c6e.tar.gz
Turn src-IL into a self-contained cmake project
Top-level cmake project is now just a container for it's sub-projects. Previously, src-IL relied on the parent project for configuration, even though all those settings were specific to src-IL. This commit also rolls in some changes to generate and install pkg-config support.
-rw-r--r--DevIL/CMakeLists.txt97
-rw-r--r--DevIL/data/IL.pc.in10
-rw-r--r--DevIL/src-IL/CMakeLists.txt125
-rw-r--r--DevIL/src-IL/cmake/FindLCMS.cmake (renamed from DevIL/cmake/FindLCMS.cmake)0
-rw-r--r--DevIL/src-IL/cmake/FindNVTT.cmake (renamed from DevIL/cmake/FindNVTT.cmake)0
-rw-r--r--DevIL/src-IL/cmake/FindOpenEXR.cmake (renamed from DevIL/cmake/FindOpenEXR.cmake)0
-rw-r--r--DevIL/src-IL/cmake/README (renamed from DevIL/cmake/README)0
-rw-r--r--DevIL/src-IL/pkgconfig/IL.pc.cmake.in12
-rw-r--r--DevIL/src-IL/pkgconfig/README3
9 files changed, 133 insertions, 114 deletions
diff --git a/DevIL/CMakeLists.txt b/DevIL/CMakeLists.txt
index f54e0e8d..5f3dd3c0 100644
--- a/DevIL/CMakeLists.txt
+++ b/DevIL/CMakeLists.txt
@@ -1,105 +1,8 @@
cmake_minimum_required(VERSION 2.6)
-
project(ImageLib)
-# include our custom modules
-set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-
-include (TestBigEndian)
-
-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)
-
-
-
-
add_subdirectory(src-IL)
#add_subdirectory(src-ILU)
#add_subdirectory(src-ILUT)
-
-
-
diff --git a/DevIL/data/IL.pc.in b/DevIL/data/IL.pc.in
deleted file mode 100644
index 932d27c3..00000000
--- a/DevIL/data/IL.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-Name: IL
-Description: Developer's Image Library - IL part (just image loading)
-Version: @VERSION@
-URL: http://openil.sourceforge.net
-Libs: -L@libdir@ -lIL
-Libs.private: @IL_LIBS@
-Cflags: -I@includedir@ @IL_CFLAGS@
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
+)
+
diff --git a/DevIL/cmake/FindLCMS.cmake b/DevIL/src-IL/cmake/FindLCMS.cmake
index 9830ba62..9830ba62 100644
--- a/DevIL/cmake/FindLCMS.cmake
+++ b/DevIL/src-IL/cmake/FindLCMS.cmake
diff --git a/DevIL/cmake/FindNVTT.cmake b/DevIL/src-IL/cmake/FindNVTT.cmake
index d82192a7..d82192a7 100644
--- a/DevIL/cmake/FindNVTT.cmake
+++ b/DevIL/src-IL/cmake/FindNVTT.cmake
diff --git a/DevIL/cmake/FindOpenEXR.cmake b/DevIL/src-IL/cmake/FindOpenEXR.cmake
index 3718d989..3718d989 100644
--- a/DevIL/cmake/FindOpenEXR.cmake
+++ b/DevIL/src-IL/cmake/FindOpenEXR.cmake
diff --git a/DevIL/cmake/README b/DevIL/src-IL/cmake/README
index 2f50d7f2..2f50d7f2 100644
--- a/DevIL/cmake/README
+++ b/DevIL/src-IL/cmake/README
diff --git a/DevIL/src-IL/pkgconfig/IL.pc.cmake.in b/DevIL/src-IL/pkgconfig/IL.pc.cmake.in
new file mode 100644
index 00000000..d97fe94b
--- /dev/null
+++ b/DevIL/src-IL/pkgconfig/IL.pc.cmake.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+libdir=${exec_prefix}/lib
+
+Name: IL
+Description: Developer's Image Library - IL part (just image load/save)
+Version: @VERSION@
+URL: http://openil.sourceforge.net
+Cflags: -I${includedir}
+Libs: -L${libdir} -lIL
+
diff --git a/DevIL/src-IL/pkgconfig/README b/DevIL/src-IL/pkgconfig/README
new file mode 100644
index 00000000..e7cebc93
--- /dev/null
+++ b/DevIL/src-IL/pkgconfig/README
@@ -0,0 +1,3 @@
+IL.pc.cmake.in is the template file for building IL.pc, which
+provides pkg-config support for IL.
+