[PATCH 5/6] Clean up CMake scripts

James Le Cuirot chewi at aura-online.co.uk
Sun Jun 1 15:28:40 PDT 2014


A lot of it was redundant. Lowercased function names seem to be the
norm now. Static build is now optional. Documentation now
installs. Added CMake finder script.
---
 .gitignore           | 10 ++++++++
 CMakeLists.txt       | 50 ++++++++++++++++------------------------
 FindGLPNG.cmake.in   | 21 +++++++++++++++++
 cmake/FindZlib.cmake | 64 ----------------------------------------------------
 src/CMakeLists.txt   | 40 ++++++++++++++++----------------
 5 files changed, 70 insertions(+), 115 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 FindGLPNG.cmake.in
 delete mode 100644 cmake/FindZlib.cmake

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..05a3d44
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+*.a
+*.so
+*.so.*
+
+Makefile
+CMakeFiles
+CMakeCache.txt
+cmake_install.cmake
+
+/FindGLPNG.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47aaf4f..6bd9d50 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,31 +1,21 @@
-# Created by Tomas Chvatal (Scarabeus IV)
-###############################################################################
-# sdlpango/CMakeLists.txt
-###############################################################################
-SET ( VERSION "1.45" CACHE STRING "Version" ) # this is redefine able
-SET ( SONAME_VERSION "1" CACHE STRING "SONAME Version" )
-SET ( CMAKE_INSTALL_PREFIX "/usr/local/" CACHE PATH "Install path prefix" )
-SET ( CMAKE_INSTALL_LIBDIR lib )
-SET ( WORKDIR ${CMAKE_SOURCE_DIR}/src )
-###############################################################################
+cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)
 
-PROJECT ( glpng C )
-SET ( APPNAME glpng )
-CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 )
-CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 FATAL_ERROR )
-IF ( COMMAND cmake_policy )
-	cmake_policy( SET CMP0003 NEW )
-ENDIF ( COMMAND cmake_policy )
-SET ( CMAKE_COLOR_MAKEFILE ON )
-SET ( CMAKE_BUILD_TYPE_SHARED_LIBS ON )
-# uninstall
-###############################################################################
-SET ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" )
-FIND_PACKAGE ( Zlib REQUIRED)
-FIND_PACKAGE ( PNG REQUIRED )
-FIND_PACKAGE ( OpenGL REQUIRED )
-ADD_SUBDIRECTORY ( src )
-ADD_SUBDIRECTORY ( Example )
-# install include files
-FILE ( GLOB files "${CMAKE_SOURCE_DIR}/include/GL/*.h" )
-INSTALL ( FILES ${files} DESTINATION include/GL/ )
+project(glpng C)
+include(GNUInstallDirs)
+
+set(SONAME_VERSION 1)
+set(MINOR_VERSION 45)
+set(VERSION ${SONAME_VERSION}.${MINOR_VERSION})
+
+set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries")
+
+find_package(ZLIB REQUIRED)
+find_package(PNG REQUIRED)
+find_package(OpenGL REQUIRED)
+
+add_subdirectory(src)
+configure_file(FindGLPNG.cmake.in FindGLPNG.cmake @ONLY)
+
+install(FILES include/GL/glpng.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GL/)
+install(FILES glpng.htm DESTINATION ${CMAKE_INSTALL_DOCDIR})
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindGLPNG.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules)
diff --git a/FindGLPNG.cmake.in b/FindGLPNG.cmake.in
new file mode 100644
index 0000000..c7ab95d
--- /dev/null
+++ b/FindGLPNG.cmake.in
@@ -0,0 +1,21 @@
+# - Try to find glpng
+# Once done this will define
+#
+#  GLPNG_FOUND - system has glpng
+#  GLPNG_INCLUDE_DIRS - the glpng include directories
+#  GLPNG_LIBRARIES - link these to use glpng
+
+find_path(GLPNG_INCLUDE_DIR GL/glpng.h)
+find_library(GLPNG_LIBRARY NAMES glpng)
+
+set(GLPNG_INCLUDE_DIRS ${GLPNG_INCLUDE_DIR})
+set(GLPNG_LIBRARIES ${GLPNG_LIBRARY})
+
+set(GLPNG_VERSION @VERSION@)
+set(GLPNG_VERSION_MAJOR @SONAME_VERSION@)
+set(GLPNG_VERSION_MINOR @MINOR_VERSION@)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GLPNG DEFAULT_MSG GLPNG_LIBRARY GLPNG_INCLUDE_DIR)
+
+mark_as_advanced(GLPNG_INCLUDE_DIR GLPNG_LIBRARY)
diff --git a/cmake/FindZlib.cmake b/cmake/FindZlib.cmake
deleted file mode 100644
index f5c1497..0000000
--- a/cmake/FindZlib.cmake
+++ /dev/null
@@ -1,64 +0,0 @@
-# - Find zlib
-# Find the native ZLIB includes and library
-#
-#  ZLIB_INCLUDE_DIR - where to find zlib.h, etc.
-#  ZLIB_LIBRARIES   - List of libraries when using zlib.
-#  ZLIB_FOUND       - True if zlib found.
-#
-#  Modified by Nicolas Schlumberger, (c) 2007
-#  to make it work on the Tardis Infrastucture of the ETH Zurich
-#
-IF(UNIX)
-  IF (ZLIB_INCLUDE_DIR)
-  # Already in cache, be silent
-    SET(ZLIB_FIND_QUIETLY TRUE)
-  ENDIF (ZLIB_INCLUDE_DIR)
-  FIND_PATH(ZLIB_INCLUDE_DIR zlib.h
-    /usr/pack/zziplib-0.13.49-sd/include/
-    /usr/local/include
-    /usr/include
-  )
-  SET(ZLIB_NAMES z zlib zdll)
-  FIND_LIBRARY(ZLIB_LIBRARY
-    NAMES ${ZLIB_NAMES}
-    PATHS /usr/pack/zziplib-0.13.49-sd/i686-debian-linux3.1/lib/ /usr/lib /usr/local/lib
-  )
-  IF (ZLIB_INCLUDE_DIR AND ZLIB_LIBRARY)
-    SET(ZLIB_FOUND TRUE)
-      SET( ZLIB_LIBRARIES ${ZLIB_LIBRARY} )
-  ELSE (ZLIB_INCLUDE_DIR AND ZLIB_LIBRARY)
-    SET(ZLIB_FOUND FALSE)
-    SET( ZLIB_LIBRARIES )
-  ENDIF (ZLIB_INCLUDE_DIR AND ZLIB_LIBRARY)
-  IF (ZLIB_FOUND)
-    IF (NOT ZLIB_FIND_QUIETLY)
-      MESSAGE(STATUS "Found ZLIB: ${ZLIB_LIBRARY}")
-    ENDIF (NOT ZLIB_FIND_QUIETLY)
-  ELSE (ZLIB_FOUND)
-    IF (ZLIB_FIND_REQUIRED)
-        MESSAGE(STATUS "Looked for Z libraries named ${ZLIBS_NAMES}.")
-        MESSAGE(FATAL_ERROR "Could NOT find z library")
-    ENDIF (ZLIB_FIND_REQUIRED)
-  ENDIF (ZLIB_FOUND)
-  MARK_AS_ADVANCED(
-    ZLIB_LIBRARY
-    ZLIB_INCLUDE_DIR
-  )
-ENDIF(UNIX)
-IF(WIN32)
-  IF(EXISTS "../libs/ogre/Dependencies/lib/Release")
-    SET (ZLIB_LIBRARY_DIR "../libs/ogre/Dependencies/lib/Release")
-  ENDIF(EXISTS "../libs/ogre/Dependencies/lib/Release")
-  FIND_PATH(ZLIB_INCLUDE_DIR zlib.h
-    ../libs/ogre/Dependencies/include
-  )
-  FIND_LIBRARY(ZLIB_LIBRARY
-    NAMES zlib
-    PATHS ${ZLIB_LIBRARY_DIR}
-  )
-  IF(ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR)
-    MESSAGE(STATUS "Zlib was found.")
-  ELSE(ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR)
-    MESSAGE(FATAL_ERROR "Zlib was NOT found.")
-  ENDIF(ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR)
-ENDIF(WIN32)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f58df8d..5ff3e4a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,24 +1,22 @@
-# Created by Tomas Chvatal (Scarabeus IV)
-###############################################################################
-# sdlpango/src/CMakeLists.txt
-###############################################################################
-INCLUDE_DIRECTORIES ( ${ZLIB_INCLUDE_DIR} ${PNG_INCLUDE_DIR}
-		${OPENGL_INCLUDE_DIR}  ${CMAKE_SOURCE_DIR}/include/ )
-LINK_LIBRARIES ( ${CMAKE_DL_LIBS} ${ZLIB_LIBRARIES} ${PNG_LIBRARY}
-		${OPENGL_gl_LIBRARY} )
-SET ( SRCS ${APPNAME}.c
+include_directories(
+	${ZLIB_INCLUDE_DIR}
+	${PNG_INCLUDE_DIR}
+	${OPENGL_INCLUDE_DIR}
+	${CMAKE_SOURCE_DIR}/include/
 )
-SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
-SET(CMAKE_STATIC_LIBRARY_C_FLAG "-Wl," )
-ADD_LIBRARY ( shared SHARED ${SRCS} )
-ADD_LIBRARY ( static STATIC ${SRCS} )
-SET_TARGET_PROPERTIES(shared static PROPERTIES OUTPUT_NAME glpng)
-SET_TARGET_PROPERTIES (shared PROPERTIES VERSION ${VERSION} SOVERSION ${SONAME_VERSION})
-#INCLUDE(MacroCreateLibtoolFile.cmake)
-#CREATE_LIBTOOL_FILE(pango-shared "/${CMAKE_INSTALL_LIBDIR}")
-INSTALL ( TARGETS shared
-	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
-INSTALL ( TARGETS static
-	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
 
+link_libraries(
+	${ZLIB_LIBRARIES}
+	${PNG_LIBRARY}
+	${OPENGL_gl_LIBRARY}
+)
+
+add_library(glpng SHARED glpng.c)
+set_target_properties(glpng PROPERTIES VERSION ${VERSION} SOVERSION ${SONAME_VERSION})
+install(TARGETS glpng DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
+if(BUILD_STATIC_LIBS)
+	add_library(glpng-static STATIC glpng.c)
+	set_target_properties(glpng-static PROPERTIES OUTPUT_NAME glpng)
+	install(TARGETS glpng-static DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(BUILD_STATIC_LIBS)
-- 
1.9.2



More information about the Games mailing list