# HG changeset patch
# User koda
# Date 1351134360 -7200
# Node ID 6cc558a69b580a60be6be470e94308064e1a5ddc
# Parent  a25e943dd4b0327a780e0aacf310e8f7d36bdcbc
countless small optimisation for cmake, output messages are now coherent (mostly) and the options get fully respected (eg. skipping library search if not activated)

diff -r a25e943dd4b0 -r 6cc558a69b58 CMakeLists.txt
--- a/CMakeLists.txt	Thu Oct 25 01:16:13 2012 +0200
+++ b/CMakeLists.txt	Thu Oct 25 05:06:00 2012 +0200
@@ -227,9 +227,9 @@
 #lua discovery
 find_package(Lua)
 if(LUA_FOUND)
-    message(STATUS "LUA found: ${LUA_DEFAULT}")
+    message(STATUS "Found LUA: ${LUA_DEFAULT}")
 else()
-    message(STATUS "Cound NOT find LUA, building bundled dependency")
+    message(STATUS "LUA will be provided by the bundled sources")
     add_subdirectory(misc/liblua)
     #linking with liblua.a requires system readline -- this works everywhere, right?
     set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags})
diff -r a25e943dd4b0 -r 6cc558a69b58 QTfrontend/CMakeLists.txt
--- a/QTfrontend/CMakeLists.txt	Thu Oct 25 01:16:13 2012 +0200
+++ b/QTfrontend/CMakeLists.txt	Thu Oct 25 05:06:00 2012 +0200
@@ -28,7 +28,9 @@
 # Configure for SDL
 find_package(SDL REQUIRED)
 find_package(SDL_mixer REQUIRED)
-find_package(FFMPEG)
+if(NOT NOVIDEOREC)
+    find_package(FFMPEG)
+endif()
 
 include_directories(.)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/model)
@@ -73,7 +75,7 @@
 file(GLOB_RECURSE UIcpp ui/*.cpp)
 file(GLOB UtilCpp util/*.cpp)
 
-if((NOT NOVIDEOREC) AND "${FFMPEG_FOUND}")
+if(${FFMPEG_FOUND})
     add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS)
 endif()
 
diff -r a25e943dd4b0 -r 6cc558a69b58 cmake_modules/FindSDL_Extras.cmake
--- a/cmake_modules/FindSDL_Extras.cmake	Thu Oct 25 01:16:13 2012 +0200
+++ b/cmake_modules/FindSDL_Extras.cmake	Thu Oct 25 05:06:00 2012 +0200
@@ -12,7 +12,7 @@
     math(EXPR sdlmixer_version "${sdlmixer_majorversion}*10000 + ${sdlmixer_minorversion}*100 + ${sdlmixer_patchversion}")
 
     if(sdlmixer_version GREATER "10209")
-        message(STATUS "SDL_mixer - Mix_Init() found")
+        message(STATUS "Mix_Init() is present")
         set(pascal_flags "-dSDL_MIXER_NEWER" ${pascal_flags})
     endif()
 endif()
@@ -29,7 +29,7 @@
     math(EXPR sdlimage_version "${sdlimage_majorversion}*10000 + ${sdlimage_minorversion}*100 + ${sdlimage_patchversion}")
 
     if(sdlimage_version GREATER "010207")
-        message(STATUS "SDL_image - IMG_Init() found")
+        message(STATUS "IMG_Init() is present")
         set(pascal_flags "-dSDL_IMAGE_NEWER" ${pascal_flags})
     endif()
 endif()
diff -r a25e943dd4b0 -r 6cc558a69b58 hedgewars/CMakeLists.txt
--- a/hedgewars/CMakeLists.txt	Thu Oct 25 01:16:13 2012 +0200
+++ b/hedgewars/CMakeLists.txt	Thu Oct 25 05:06:00 2012 +0200
@@ -3,8 +3,6 @@
 find_package(SDL_net)
 find_package(SDL_ttf)
 find_package(SDL_mixer)
-set(FFMPEG_FIND_QUIETLY true)
-find_package(FFMPEG)
 
 include(${CMAKE_MODULE_PATH}/FindSDL_Extras.cmake)
 
@@ -163,7 +161,7 @@
     string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
     string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
     string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
-    message(STATUS "Freepascal version installed: ${fpc_vers_major}.${fpc_vers_minor}")
+    message(STATUS "Found Freepascal: ${fpc_executable} (version ${fpc_vers_major}.${fpc_vers_minor})")
     math(EXPR fpc_version "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
 
     if(fpc_version LESS "020200")
@@ -181,9 +179,8 @@
     find_package(PNG)
     if(${PNG_FOUND})
         set(pascal_flags "-dPNG_SCREENSHOTS" ${pascal_flags})
-        if(APPLE)  # easier to explictly link with the static lib
-            string(REGEX REPLACE "(.*)libpng.*" "\\1" PNG_LIBDIR "${PNG_LIBRARY}")
-            set(pascal_flags "-k${PNG_LIBDIR}/libpng.a" ${pascal_flags})
+        if(APPLE)  # fpc png unit doesn't pull the library (see bug 21833)
+            set(pascal_flags "-k${PNG_LIBRARY}" ${pascal_flags})
         endif()
     else()
         message(STATUS "Screenshots will be in BMP format because libpng was not found")
@@ -201,6 +198,8 @@
 
 
 if(NOT NOVIDEOREC)
+    set(FFMPEG_FIND_QUIETLY true)
+    find_package(FFMPEG)
     if(${FFMPEG_FOUND})
         include_directories(${FFMPEG_INCLUDE_DIR})
         set(pascal_flags "-dUSE_VIDEO_RECORDING" ${pascal_flags})
@@ -262,10 +261,8 @@
 endif()
 
 #this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6
-if(fpc_version LESS "020600")
-    if(NO_VIDEOREC OR NOT ${FFMPEG_FOUND})
-        add_dependencies(${engine_output_name} ENGINECLEAN)
-    endif()
+if((fpc_version LESS "020600") AND (NOVIDEOREC OR NOT ${FFMPEG_FOUND}))
+    add_dependencies(${engine_output_name} ENGINECLEAN)
 endif()
 
 install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
diff -r a25e943dd4b0 -r 6cc558a69b58 tools/CMakeLists.txt
--- a/tools/CMakeLists.txt	Thu Oct 25 01:16:13 2012 +0200
+++ b/tools/CMakeLists.txt	Thu Oct 25 05:06:00 2012 +0200
@@ -1,48 +1,54 @@
 if (NOT APPLE)
-	configure_file(	"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
-			"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
-			IMMEDIATE @ONLY)
+    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
+                   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+                    IMMEDIATE @ONLY)
 
-	add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
+    add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
 endif()
 
 if (APPLE)
-	find_package(Qt4 REQUIRED)
-	find_package(SDL REQUIRED)
-	find_package(SDL_image REQUIRED)
-	find_package(SDL_net REQUIRED)
-	find_package(SDL_ttf REQUIRED)
-	find_package(SDL_mixer REQUIRED)
-	find_package(OGGVORBIS REQUIRED)
-        if(NOT NOAUTOUPDATE)
-		#needed for SPARKLE_FOUND variable
-		find_package(Sparkle QUIET)
-		#needed because the 'if' clause in the script prints silly policy warnings
-		if(${SPARKLE_FOUND})
-			set(SPARKLE_FOUND 1)
-		else()
-			set(SPARKLE_FOUND 0)
-		endif()
-	endif()
+    find_package(Qt4 REQUIRED QUIET)
+    find_package(SDL REQUIRED)
+    find_package(SDL_image REQUIRED)
+    find_package(SDL_net REQUIRED)
+    find_package(SDL_ttf REQUIRED)
+    find_package(SDL_mixer REQUIRED)
+    find_package(OGGVORBIS REQUIRED)
+    if(NOT NOAUTOUPDATE)
+        #needed for SPARKLE_FOUND variable
+        find_package(Sparkle QUIET)
+        #needed because the 'if' clause in the script prints silly policy warnings
+        if(${SPARKLE_FOUND})
+            set(SPARKLE_FOUND 1)
+        else()
+            set(SPARKLE_FOUND 0)
+        endif()
+    endif()
+
+    #use the associated tool from the libraries we've selected
+    string(REGEX REPLACE "(.*)/include.*" "\\1" qt_base_dir "${QT_INCLUDE_DIR}")
 
-	#use the associated tool from the libraries we've selected
-	string(REGEX REPLACE "(.*)/include.*" "\\1" qt_base_dir "${QT_INCLUDE_DIR}")
+    #remove the ";-framework Cocoa" from the SDL_LIBRARY variable
+    string(REGEX REPLACE "(.*);-.*" "\\1" sdl_dir "${SDL_LIBRARY}")
 
-	#remove the ";-framework Cocoa" from the SDL_LIBRARY variable
-	string(REGEX REPLACE "(.*);-.*" "\\1" sdl_dir "${SDL_LIBRARY}")
+    if(NOT NOPNG)
+        #get the neme of the library (harmelss if it is static)
+        string(REGEX REPLACE ".*/(.*)$" "\\1" PNG_LIBNAME "${PNG_LIBRARY}")
+    endif()
 
-	#this tool is present in qt 4.5 but only if you compile from sources; from qt 4.6 is present also in the binary version
-	find_program(macdeployqt_executable NAMES macdeployqt macdeployqt-mac PATHS ${qt_base_dir}/bin)
-	if(NOT macdeployqt_executable)
-		message(FATAL_ERROR "The utility macdeployqt is required to create the bundle (seached: ${qt_base_dir})")
-	else()
-		message(STATUS "macdeployqt found in ${macdeployqt_executable}")
-	endif()
+    #this tool is present in qt 4.5 but only if you compile from sources
+    #from qt 4.6 is present also in the binary version
+    find_program(macdeployqt_executable NAMES macdeployqt macdeployqt-mac PATHS ${qt_base_dir}/bin)
+    if(NOT macdeployqt_executable)
+        message(FATAL_ERROR "The utility macdeployqt is required to create the bundle (seached: ${qt_base_dir})")
+    else()
+        message(STATUS "Found macdeployqt: ${macdeployqt_executable}")
+    endif()
 
-	#dummy target, we're interested in the postscript file
-	add_custom_target(bundle)
-	set_target_properties(bundle PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake)
+    #dummy target, we're interested in the postscript file
+    add_custom_target(bundle)
+    set_target_properties(bundle PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake)
 
-	configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CreateMacBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake)
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CreateMacBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake)
 endif()
 
diff -r a25e943dd4b0 -r 6cc558a69b58 tools/CreateMacBundle.cmake.in
--- a/tools/CreateMacBundle.cmake.in	Thu Oct 25 01:16:13 2012 +0200
+++ b/tools/CreateMacBundle.cmake.in	Thu Oct 25 05:06:00 2012 +0200
@@ -1,14 +1,22 @@
 message(STATUS "Performing standalone bundle creation...")
 
 execute_process(COMMAND ls ${frameworks_dir} RESULT_VARIABLE doBundle OUTPUT_QUIET ERROR_QUIET)
-
 execute_process(COMMAND mkdir -p ${frameworks_dir})
 # macdeployqt will convert safely any absolute path library for 'hedgewars'
 execute_process(COMMAND ${macdeployqt_executable} ${CMAKE_BINARY_DIR}/${bundle_name} OUTPUT_QUIET ERROR_QUIET)
-# but macdeployqt will not work for 'hwengine'; luckily the dylibs were already updated before
-execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVCODEC} @executable_path/../Frameworks/libavcodec.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
-execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVFORMAT} @executable_path/../Frameworks/libavformat.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
-execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVUTIL} @executable_path/../Frameworks/libavutil.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
+
+if(NOT ${NOVIDEOREC})
+    # but macdeployqt will not work for 'hwengine'; luckily the dylibs were already updated before
+    execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVCODEC} @executable_path/../Frameworks/libavcodec.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
+    execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVFORMAT} @executable_path/../Frameworks/libavformat.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
+    execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVUTIL} @executable_path/../Frameworks/libavutil.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
+endif()
+
+if(NOT ${NOPNG})
+    #same here, for libpng and hwengine, let's assume the version pulled by macdeployqt is the same
+    #(yes libpng is pulled by macdeployqt even when NOVIDEOREC is active)
+    execute_process(COMMAND install_name_tool -change ${PNG_LIBRARY} @executable_path/../Frameworks/${PNG_LIBNAME} ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine)
+endif()
 
 if(doBundle EQUAL 1)
     execute_process(COMMAND cp -pPR ${sdl_dir}          ${CMAKE_BINARY_DIR}/${frameworks_dir}/SDL.framework)