diff --git a/.gitignore b/.gitignore index fe7d1cfdf..e48f6e831 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ $RECYCLE.BIN/ *.tar *.zip *.bz2 +*.tar.xz ## Logs and databases *.log diff --git a/.gitmodules b/.gitmodules index d43b58241..f95510bca 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "source/masterserver"] path = source/masterserver url = https://github.com/MegaGlest/megaglest-masterserver.git +[submodule "mk/linux/tools-for-standalone-client/installer/mojosetup"] + path = mk/linux/tools-for-standalone-client/installer/mojosetup + url = https://github.com/MegaGlest-Community/mojosetup-fork.git diff --git a/CMakeLists.txt b/CMakeLists.txt index f2da2584c..55bf1adb0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,10 +8,15 @@ PROJECT( MegaGlest ) # VC++ users should not use CMake yet but rather the build-mg.bat file in mk/windoze # -# build type defaults to release -if(NOT DEFINED CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.") -endif(NOT DEFINED CMAKE_BUILD_TYPE) +# build type +IF(NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) +ENDIF() +SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS None Debug Release RelWithDebInfo MinSizeRel) + +IF(NOT CMAKE_VERSION VERSION_LESS "3.1") + cmake_policy(SET CMP0054 NEW) +ENDIF() # add additional CMake modules MESSAGE(STATUS "CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}") @@ -30,8 +35,14 @@ OPTION(BUILD_MEGAGLEST_MODEL_VIEWER "Build model viewer" ON) OPTION(BUILD_MEGAGLEST_MAP_EDITOR "Build map editor" ON) OPTION(BUILD_MEGAGLEST "Build MegaGlest" ON) OPTION(BUILD_MEGAGLEST_TESTS "Build MegaGlest Unit Tests" OFF) -OPTION(WITH_VLC "Use libVLC to play videos" ON) -OPTION(SINGLE_INSTALL_DIRECTORY "Use single install directory for everything. It is useful for example for MacOS cpack bundles." OFF) +OPTION(WANT_SINGLE_INSTALL_DIRECTORY "Use single install directory for everything. It is useful for example for MacOS cpack bundles." OFF) +OPTION(WANT_STATIC_LIBS "Builds as many static libs as possible." OFF) +OPTION(WANT_USE_VLC "Use libVLC to play videos." ON) +OPTION(WANT_USE_OpenSSL "Use libOpenSSL during CURL linking." ON) +OPTION(WANT_USE_FriBiDi "Enable libFriBIDi support." ON) +OPTION(WANT_USE_GoogleBreakpad "Enable GoogleBreakpad support." ON) +OPTION(WANT_USE_STREFLOP "Use the library streflop." ON) +OPTION(WANT_USE_XercesC "Enable libXercesC support." OFF) FIND_PROGRAM(HELP2MAN "help2man") @@ -41,8 +52,10 @@ if (NOT ${XVFB_RUN} MATCHES "XVFB_RUN-NOTFOUND") set(XVFB_EXEC ${XVFB_RUN}) message(STATUS "Using xvfb-run to run man2help.") endif() +MARK_AS_ADVANCED(HELP2MAN XVFB_RUN) -include(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/SpecialMacros.cmake) +include(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/SpecialMacros.cmake) +include(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/ReqVersAndStaticConf.cmake) SET(PKG_NAME "megaglest") # read version @@ -96,13 +109,6 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) MESSAGE(STATUS "Detected MINGW Compiler...") ENDIF() - if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo) - endif (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - - # Default compiler flags - #SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") ## Strip binary - # Common generic GNU type compiler options that work with all generic GCC compatible compilers ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing") @@ -133,34 +139,30 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") - #MESSAGE(STATUS "*TEST: Checking for max SSE LEVEL [${MAX_SSE_LEVEL_DESIRED}]") + #MESSAGE(STATUS "*TEST: Checking for max SSE LEVEL [${FORCE_MAX_SSE_LEVEL}]") - IF(NOT STREFLOP_SOFTWRAPPER_FORCE) - SET(STREFLOP_SOFTWRAPPER_FORCE "0" CACHE STRING "Set the streflop library to be forced to use the software emulator") + OPTION(FORCE_STREFLOP_SOFTWRAPPER "Set the streflop library to be forced to use the software emulator" OFF) + IF(NOT FORCE_MAX_SSE_LEVEL AND NOT FORCE_STREFLOP_SOFTWRAPPER) + SET(FORCE_MAX_SSE_LEVEL "1" CACHE STRING "Set the max SSE level to use if supported (0-3)") ENDIF() - IF(NOT MAX_SSE_LEVEL_DESIRED AND NOT STREFLOP_SOFTWRAPPER_FORCE) - SET(MAX_SSE_LEVEL_DESIRED "1" CACHE STRING "Set the max SSE level to use if supported (0-3)") - ENDIF() - - IF(NOT STREFLOP_SOFTWRAPPER_FORCE) - MESSAGE(STATUS "*NOTE: Checking for max SSE LEVEL [${MAX_SSE_LEVEL_DESIRED}]") - special_check_for_sse( ${MAX_SSE_LEVEL_DESIRED} ) + IF(NOT FORCE_STREFLOP_SOFTWRAPPER) + MESSAGE(STATUS "*NOTE: Checking for max SSE LEVEL [${FORCE_MAX_SSE_LEVEL}]") + special_check_for_sse( ${FORCE_MAX_SSE_LEVEL} ) ENDIF() - OPTION(WANT_STREFLOP "use the library streflop" ON) - IF(WANT_STREFLOP) + IF(WANT_USE_STREFLOP) ADD_DEFINITIONS("-DUSE_STREFLOP -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DN_SPECIALIZED=32") - IF(HAS_SSE_EXTENSIONS AND NOT ${MAX_SSE_LEVEL_DESIRED} MATCHES "0" AND NOT STREFLOP_SOFTWRAPPER_FORCE) + IF(HAS_SSE_EXTENSIONS AND NOT ${FORCE_MAX_SSE_LEVEL} MATCHES "0" AND NOT FORCE_STREFLOP_SOFTWRAPPER) ADD_DEFINITIONS("-DSTREFLOP_SSE") MESSAGE(STATUS "*NOTE: using SSE for STREFLOP.") ELSE() - IF(NOT STREFLOP_SOFTWRAPPER_FORCE) + IF(NOT FORCE_STREFLOP_SOFTWRAPPER) special_check_for_x87() ENDIF() - IF(HAS_X87_SUPPORT AND NOT STREFLOP_SOFTWRAPPER_FORCE) + IF(HAS_X87_SUPPORT AND NOT FORCE_STREFLOP_SOFTWRAPPER) ADD_DEFINITIONS("-DSTREFLOP_X87") MESSAGE(STATUS "*NOTE: using X87 for STREFLOP.") ELSE() @@ -200,22 +202,17 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) # Release compiler flags SET(CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS_RELEASE} -O3 ") - IF(CMAKE_GENERATOR STREQUAL Xcode) - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") ## Strip binary - ELSE() + IF(NOT CMAKE_GENERATOR STREQUAL Xcode) SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary ENDIF() # Release with debug info compiler flags - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ") # Release minimum size compiler flags SET(CMAKE_CXX_FLAGS_MINSIZEREL "-O3 ${CMAKE_CXX_FLAGS_MINSIZEREL} -O3 ") - SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}") ## Strip binary - IF(CMAKE_GENERATOR STREQUAL Xcode) - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") ## Strip binary - ELSE() - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary + IF(NOT CMAKE_GENERATOR STREQUAL Xcode) + SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary ENDIF() # Get the git revision info for the binary @@ -263,45 +260,33 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) IF(CMAKE_INSTALL_PREFIX STREQUAL "") MESSAGE(STATUS "*NOTE: NOT USING a Custom Data Install Path...") ELSE() - IF(SINGLE_INSTALL_DIRECTORY AND NOT MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH) + IF(WANT_SINGLE_INSTALL_DIRECTORY AND NOT MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH) SET(MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH "megaglest-game/" CACHE STRING "The single directory installation path for game (this is appended to the CMAKE_INSTALL_PREFIX)") ENDIF() - IF(NOT MEGAGLEST_BIN_INSTALL_PATH) - IF(NOT SINGLE_INSTALL_DIRECTORY) - SET(MEGAGLEST_BIN_INSTALL_PATH "bin/" CACHE STRING "The installation path for binaries (this is appended to the CMAKE_INSTALL_PREFIX)") - ELSE() - SET(MEGAGLEST_BIN_INSTALL_PATH "${MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH}") - ENDIF() + IF(NOT MEGAGLEST_BIN_INSTALL_PATH AND NOT WANT_SINGLE_INSTALL_DIRECTORY) + SET(MEGAGLEST_BIN_INSTALL_PATH "bin/" CACHE STRING "The installation path for binaries (this is appended to the CMAKE_INSTALL_PREFIX)") ENDIF() - IF(NOT MEGAGLEST_DATA_INSTALL_PATH) - IF(NOT SINGLE_INSTALL_DIRECTORY) - SET(MEGAGLEST_DATA_INSTALL_PATH "share/megaglest/" CACHE STRING "The installation path for data files (this is appended to the CMAKE_INSTALL_PREFIX)") - ELSE() - SET(MEGAGLEST_DATA_INSTALL_PATH "${MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH}") - ENDIF() + IF(NOT MEGAGLEST_DATA_INSTALL_PATH AND NOT WANT_SINGLE_INSTALL_DIRECTORY) + SET(MEGAGLEST_DATA_INSTALL_PATH "share/megaglest/" CACHE STRING "The installation path for data files (this is appended to the CMAKE_INSTALL_PREFIX)") ENDIF() - IF(NOT MEGAGLEST_DESKTOP_INSTALL_PATH) - IF(NOT SINGLE_INSTALL_DIRECTORY) - SET(MEGAGLEST_DESKTOP_INSTALL_PATH "share/applications/" CACHE STRING "The installation path for desktop files (this is appended to the CMAKE_INSTALL_PREFIX)") - ELSE() - SET(MEGAGLEST_DESKTOP_INSTALL_PATH "${MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH}") - ENDIF() + IF(NOT MEGAGLEST_DESKTOP_INSTALL_PATH AND NOT WANT_SINGLE_INSTALL_DIRECTORY) + SET(MEGAGLEST_DESKTOP_INSTALL_PATH "share/applications/" CACHE STRING "The installation path for desktop files (this is appended to the CMAKE_INSTALL_PREFIX)") ENDIF() - IF(NOT MEGAGLEST_ICON_INSTALL_PATH) - IF(NOT SINGLE_INSTALL_DIRECTORY) - SET(MEGAGLEST_ICON_INSTALL_PATH "share/pixmaps/" CACHE STRING "The installation path for icon files (this is appended to the CMAKE_INSTALL_PREFIX)") - ELSE() - SET(MEGAGLEST_ICON_INSTALL_PATH "${MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH}") - ENDIF() + IF(NOT MEGAGLEST_ICON_INSTALL_PATH AND NOT WANT_SINGLE_INSTALL_DIRECTORY) + SET(MEGAGLEST_ICON_INSTALL_PATH "share/pixmaps/" CACHE STRING "The installation path for icon files (this is appended to the CMAKE_INSTALL_PREFIX)") ENDIF() - IF(NOT MEGAGLEST_MANPAGE_INSTALL_PATH AND NOT SINGLE_INSTALL_DIRECTORY) - IF(NOT SINGLE_INSTALL_DIRECTORY) - SET(MEGAGLEST_MANPAGE_INSTALL_PATH "share/man/man6/" CACHE STRING "The installation path for manpage files (this is appended to the CMAKE_INSTALL_PREFIX)") - ELSE() - SET(MEGAGLEST_MANPAGE_INSTALL_PATH "${MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH}") - ENDIF() + IF(NOT MEGAGLEST_MANPAGE_INSTALL_PATH AND NOT WANT_SINGLE_INSTALL_DIRECTORY) + SET(MEGAGLEST_MANPAGE_INSTALL_PATH "share/man/man6/" CACHE STRING "The installation path for manpage files (this is appended to the CMAKE_INSTALL_PREFIX)") ENDIF() - IF(NOT CUSTOM_DATA_INSTALL_PATH AND NOT SINGLE_INSTALL_DIRECTORY) + IF(WANT_SINGLE_INSTALL_DIRECTORY) + FOREACH(MG_PATH BIN DATA DESKTOP ICON) + IF(NOT MEGAGLEST_${MG_PATH}_INSTALL_PATH) + SET(MEGAGLEST_${MG_PATH}_INSTALL_PATH "${MEGAGLEST_SINGLE_DIRECTORY_INSTALL_PATH}") + ENDIF() + ENDFOREACH() + ENDIF() + + IF(NOT CUSTOM_DATA_INSTALL_PATH AND NOT WANT_SINGLE_INSTALL_DIRECTORY) SET(CUSTOM_DATA_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${MEGAGLEST_DATA_INSTALL_PATH}" CACHE STRING "The FULL installation path for data files (this is build automatically by combining CMAKE_INSTALL_PREFIX and MEGAGLEST_DATA_INSTALL_PATH)") SET(CUSTOM_DATA_INSTALL_PATH_VALUE "-DCUSTOM_DATA_INSTALL_PATH=${CUSTOM_DATA_INSTALL_PATH}") ENDIF() @@ -311,45 +296,21 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) MESSAGE(STATUS "*NOTE: Custom Data Install Path is [${CUSTOM_DATA_INSTALL_PATH}]") ENDIF() + string(TOUPPER "${CMAKE_BUILD_TYPE}" MG_BUILD_TYPE) IF(HAS_GIT STREQUAL "TRUE") - SET(CMAKE_CXX_FLAGS_NONE "${CMAKE_CXX_FLAGS_NONE} ${GIT_VERSION_CMD}") - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${GIT_VERSION_CMD}") - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${GIT_VERSION_CMD}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${GIT_VERSION_CMD}") - SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${GIT_VERSION_CMD}") + SET(CMAKE_CXX_FLAGS_${MG_BUILD_TYPE} "${CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}} ${GIT_VERSION_CMD}") ENDIF() - SET(CMAKE_CXX_FLAGS_NONE "${CMAKE_CXX_FLAGS_NONE} ${CUSTOM_DATA_INSTALL_PATH_VALUE}") - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CUSTOM_DATA_INSTALL_PATH_VALUE}") - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CUSTOM_DATA_INSTALL_PATH_VALUE}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${CUSTOM_DATA_INSTALL_PATH_VALUE}") - SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${CUSTOM_DATA_INSTALL_PATH_VALUE}") + SET(CMAKE_CXX_FLAGS_${MG_BUILD_TYPE} "${CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}} ${CUSTOM_DATA_INSTALL_PATH_VALUE}") # We do some funky character escaping to get the right stuff written out to # the final Makefile so we get the GIT Global Revsion # - string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_NONE "${CMAKE_CXX_FLAGS_NONE}") - string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") + string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_${MG_BUILD_TYPE} "${CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}}") - IF( CMAKE_BUILD_TYPE STREQUAL None ) - message("CMAKE_CXX_FLAGS_NONE: ${CMAKE_CXX_FLAGS_NONE}") - ELSEIF( CMAKE_BUILD_TYPE STREQUAL Debug ) - message("CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}") - ELSEIF( CMAKE_BUILD_TYPE STREQUAL Release ) - message("CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}") - ELSEIF( CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo ) - message("CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - ELSEIF( CMAKE_BUILD_TYPE STREQUAL MinSizeRel ) - message("CMAKE_CXX_FLAGS_MINSIZEREL: ${CMAKE_CXX_FLAGS_MINSIZEREL}") - - ENDIF() + message(STATUS "CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}}") # Win32 specific Compiler Flags IF(WIN32) ADD_DEFINITIONS("-D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DCURL_STATICLIB") - ELSE() - ADD_DEFINITIONS("-DCURL_STATICLIB") ENDIF() ENDIF() @@ -358,6 +319,9 @@ IF(UNIX AND NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # We don't wanna see bug reports with deprecation warnings from OSes where game isn't # actively developed, and where usually those warnings can make "make log" completely unreadable. # Main targets are: bsd and macos + + MARK_AS_ADVANCED(CLEAR wxWidgets_CONFIG_EXECUTABLE) + # This variable may be sometimes necessary to set manually. ELSE() OPTION(WANT_DEPRECATION_WARNINGS "Want to see warnings related with deprecated code parts." ON) ENDIF() @@ -366,18 +330,23 @@ IF(NOT WANT_DEPRECATION_WARNINGS) ENDIF() MARK_AS_ADVANCED(WANT_DEPRECATION_WARNINGS) -OPTION(WANT_USE_SDL2 "Want to use SDL2 instead of SDL1.X. SDL2 is not officially supported yet." OFF) -IF(NOT WANT_USE_SDL2) - SET(SDL_WINDOWS_DIR_DINC "SDL-1.2.x") - SET(SDL_VERSION_NAME "SDL") - SET(SDL_VERSION_SNAME "sdl") -ELSE() +SET(WANT_USE_SDL2 ON) +IF(WANT_USE_SDL2) SET(SDL_WINDOWS_DIR_DINC "SDL-2.0.x") SET(SDL_VERSION_NAME "SDL2") SET(SDL_VERSION_SNAME "sdl") - # ^ sdl > sdl2 ENDIF() -MARK_AS_ADVANCED(WANT_USE_SDL2) + +OPTION(WANT_DEV_OUTPATH "Use developer friendly output paths." OFF) +IF(UNIX AND "${CMAKE_SYSTEM_NAME}" MATCHES "^[A-Z][a-z]*BSD$") + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/bsd/") +ELSEIF(UNIX AND NOT APPLE) + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/linux/") +ELSEIF(UNIX AND APPLE) + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/macosx/") +ELSE() + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/data/glest_game/") +ENDIF() IF(WIN32) SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} @@ -505,3 +474,6 @@ endforeach() MARK_AS_ADVANCED(${SDL_VERSION_NAME}MAIN_LIBRARY) MARK_AS_ADVANCED(${SDL_VERSION_NAME}_INCLUDE_DIR) MARK_AS_ADVANCED(${SDL_VERSION_NAME}_LIBRARY) +MARK_AS_ADVANCED(wxWidgets_CONFIG_EXECUTABLE) +MARK_AS_ADVANCED(wxWidgets_wxrc_EXECUTABLE) +MARK_AS_ADVANCED(wxWidgets_USE_DEBUG) diff --git a/data/glest_game b/data/glest_game index bf04854ad..736113a2b 160000 --- a/data/glest_game +++ b/data/glest_game @@ -1 +1 @@ -Subproject commit bf04854ade7cd0fc51483c857e590acfef4fbc26 +Subproject commit 736113a2b4b883722279942e11e63bdb414fe39f diff --git a/mk/cmake/Modules/CurlGetConfig.cmake b/mk/cmake/Modules/CurlGetConfig.cmake new file mode 100644 index 000000000..2d3df7d5b --- /dev/null +++ b/mk/cmake/Modules/CurlGetConfig.cmake @@ -0,0 +1,50 @@ +# +# Curl Get Config +# +# IF we are using a system that supports curl-config use it. +# + +IF(CURL_FOUND) + IF(UNIX AND NOT APPLE) + FIND_PROGRAM( CMAKE_CURL_CONFIG curl-config) + MARK_AS_ADVANCED(CMAKE_CURL_CONFIG) + + IF(CMAKE_CURL_CONFIG) + IF(STATIC_CURL) + # run the curl-config program to get --static-libs + EXEC_PROGRAM(sh + ARGS "${CMAKE_CURL_CONFIG} --static-libs" + OUTPUT_VARIABLE CURL_STATIC_LIBS + RETURN_VALUE RET) + + MESSAGE(STATUS "CURL RET = ${RET} libs: [${CURL_STATIC_LIBS}]") + ELSE() + SET(RET 1) + ENDIF() + + IF(RET EQUAL 0 AND CURL_STATIC_LIBS) + MESSAGE(STATUS "#2 CURL RET = ${RET}, using CURL static libs") + SET(CURL_LIBRARIES "-Bstatic ${CURL_STATIC_LIBS}") + ELSE() + EXEC_PROGRAM(sh + ARGS "${CMAKE_CURL_CONFIG} --libs" + OUTPUT_VARIABLE CURL_DYNAMIC_LIBS + RETURN_VALUE RET2) + + IF(RET2 EQUAL 0 AND CURL_DYNAMIC_LIBS) + MESSAGE(STATUS "#2 CURL RET = ${RET2}, using CURL dynamic libs: ${CURL_DYNAMIC_LIBS}") + SET(CURL_LIBRARIES "${CURL_DYNAMIC_LIBS}") + ELSE() + MESSAGE(STATUS "#3 CURL RET = ${RET2}, using CURL libs found by cmake: ${CURL_LIBRARIES}") + ENDIF() + ENDIF() + ENDIF() + ENDIF() + IF(CURL_VERSION_STRING AND "${CURL_VERSION_STRING}" VERSION_LESS "${CURL_MIN_VERSION_MG}") + MESSAGE(STATUS "(please visit http://curl.haxx.se/libcurl/ to find a newer version)") + MESSAGE(FATAL_ERROR " CURL version = [${CURL_VERSION_STRING}] we require AT LEAST [7.16.4]") + ENDIF() +ELSE() + SET(CURL_LIBRARIES) + SET(CURL_INCLUDE_DIRS) +ENDIF() diff --git a/mk/cmake/Modules/FindCURL.cmake b/mk/cmake/Modules/FindCURL.cmake deleted file mode 100644 index c324f9ba0..000000000 --- a/mk/cmake/Modules/FindCURL.cmake +++ /dev/null @@ -1,71 +0,0 @@ -# - Find curl -# Find the native CURL headers and libraries. -# -# CURL_INCLUDE_DIRS - where to find curl/curl.h, etc. -# CURL_LIBRARIES - List of libraries when using curl. -# CURL_FOUND - True if curl found. - -# Look for the header file. -FIND_PATH(CURL_INCLUDE_DIR NAMES curl/curl.h - PATHS /usr/local/include/ - /usr/include/ - /opt/local/include/) -MARK_AS_ADVANCED(CURL_INCLUDE_DIR) - -# Look for the library. -FIND_LIBRARY(CURL_LIBRARY NAMES curl curl-gnutls - PATHS /usr/local/lib/ - /usr/lib/ - /opt/local/lib/) -MARK_AS_ADVANCED(CURL_LIBRARY) - -# handle the QUIETLY and REQUIRED arguments and set CURL_FOUND to TRUE if -# all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL DEFAULT_MSG CURL_LIBRARY CURL_INCLUDE_DIR) - -IF(CURL_FOUND) - SET(CURL_LIBRARIES ${CURL_LIBRARY}) - SET(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR}) - - # IF we are using a system that supports curl-config use it - # and force using static libs - IF(UNIX AND NOT APPLE) - FIND_PROGRAM( CMAKE_CURL_CONFIG curl-config) - MARK_AS_ADVANCED(CMAKE_CURL_CONFIG) - - IF(CMAKE_CURL_CONFIG) - OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) - OPTION(FORCE_CURL_DYNAMIC_LIBS "force the use of dynamic libs for CURL" OFF) - MESSAGE(STATUS "Force Curl dynamic: ${FORCE_CURL_DYNAMIC_LIBS}") - - IF(WANT_STATIC_LIBS AND NOT FORCE_CURL_DYNAMIC_LIBS) - # run the curl-config program to get --static-libs - EXEC_PROGRAM(sh - ARGS "${CMAKE_CURL_CONFIG} --static-libs" - OUTPUT_VARIABLE CURL_STATIC_LIBS - RETURN_VALUE RET) - - MESSAGE(STATUS "CURL RET = ${RET} libs: [${CURL_STATIC_LIBS}]") - ELSE() - SET(RET 1) - ENDIF() - - IF(RET EQUAL 0 AND CURL_STATIC_LIBS) - MESSAGE(STATUS "#2 CURL RET = ${RET}, using CURL static libs") - SET(CURL_LIBRARIES "-Bstatic ${CURL_STATIC_LIBS}") - ELSE() - EXEC_PROGRAM(sh - ARGS "${CMAKE_CURL_CONFIG} --libs" - OUTPUT_VARIABLE CURL_STATIC_LIBS - RETURN_VALUE RET) - - MESSAGE(STATUS "#2 CURL RET = ${RET}, using CURL dynamic libs: ${CURL_STATIC_LIBS}") - SET(CURL_LIBRARIES "${CURL_STATIC_LIBS}") - ENDIF() - ENDIF() - ENDIF() -ELSE(CURL_FOUND) - SET(CURL_LIBRARIES) - SET(CURL_INCLUDE_DIRS) -ENDIF(CURL_FOUND) diff --git a/mk/cmake/Modules/FindFTGL.cmake b/mk/cmake/Modules/FindFTGL.cmake index f7fc97b45..e2078cc19 100644 --- a/mk/cmake/Modules/FindFTGL.cmake +++ b/mk/cmake/Modules/FindFTGL.cmake @@ -10,11 +10,6 @@ # # -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -IF(WANT_STATIC_LIBS) - OPTION(FTGL_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) -ENDIF() - #message(STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #1 Searching for FTGL lib in custom path: [${FTGL_LIBRARY_PATH}]") IF (FTGL_LIBRARY AND FTGL_INCLUDE_DIR) @@ -30,9 +25,9 @@ ELSE (FTGL_LIBRARY AND FTGL_INCLUDE_DIR) PATHS /usr/local/include /usr/include) - IF (FTGL_STATIC AND NOT FTGL_LIBRARY) + IF (STATIC_FTGL AND NOT FTGL_LIBRARY) FIND_LIBRARY(FTGL_LIBRARY - NAMES libftgl.a ftgl libftgl libftgl.dll + NAMES libftgl.a ftgl.a ftgl libftgl libftgl.dll PATHS /usr/local/lib /usr/lib ${FTGL_LIBRARY_PATH}) diff --git a/mk/cmake/Modules/FindFontConfig.cmake b/mk/cmake/Modules/FindFontConfig.cmake index 312975faf..db05f717d 100644 --- a/mk/cmake/Modules/FindFontConfig.cmake +++ b/mk/cmake/Modules/FindFontConfig.cmake @@ -5,17 +5,13 @@ # FONTCONFIG_LIBRARIES - List of libraries when using FONTCONFIG. # FONTCONFIG_FOUND - True if FONTCONFIG found. -IF(WANT_STATIC_LIBS) - OPTION(FONTCONFIG_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) -ENDIF() - # Look for the header file. FIND_PATH( FONTCONFIG_INCLUDE_DIR NAMES fontconfig/fontconfig.h DOC "Path in which the file fontconfig/fontconfig.h is located." ) MARK_AS_ADVANCED(FONTCONFIG_INCLUDE_DIR) -IF(FONTCONFIG_STATIC) - FIND_LIBRARY( FONTCONFIG_LIBRARY NAMES libfontconfig.a fontconfig +IF(STATIC_FONTCONFIG) + FIND_LIBRARY( FONTCONFIG_LIBRARY NAMES libfontconfig.a fontconfig.a fontconfig DOC "Path to fontconfig library." ) ELSE() FIND_LIBRARY( FONTCONFIG_LIBRARY NAMES fontconfig diff --git a/mk/cmake/Modules/FindFriBiDi.cmake b/mk/cmake/Modules/FindFriBiDi.cmake index 5c8ae4ae4..2ea91778c 100644 --- a/mk/cmake/Modules/FindFriBiDi.cmake +++ b/mk/cmake/Modules/FindFriBiDi.cmake @@ -28,9 +28,8 @@ set(FRIBIDI_INCLUDE_DIR ${xFRIBIDI_INCLUDE_DIR}) SET(FRIBIDI_NAMES ${FRIBIDI_NAMES} fribidi libfribidi) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -IF(WANT_STATIC_LIBS) - SET(FRIBIDI_NAMES fribidi.a libfribidi.a ${FRIBIDI_NAMES}) +IF(STATIC_FriBiDi) + SET(FRIBIDI_NAMES libfribidi.a fribidi.a ${FRIBIDI_NAMES}) ENDIF() #MESSAGE(STATUS "** Searching for library names: [${FRIBIDI_NAMES}] ...") diff --git a/mk/cmake/Modules/FindGLEW.cmake b/mk/cmake/Modules/FindGLEW.cmake index f7a42fdbe..067319231 100644 --- a/mk/cmake/Modules/FindGLEW.cmake +++ b/mk/cmake/Modules/FindGLEW.cmake @@ -1,54 +1,62 @@ - -# Try to find GLEW library and include path. -# Once done this will define +#.rst: +# FindGLEW +# -------- # -# GLEW_FOUND -# GLEW_INCLUDE_PATH -# GLEW_LIBRARY -# +# Find the OpenGL Extension Wrangler Library (GLEW) +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines the :prop_tgt:`IMPORTED` target ``GLEW::GLEW``, +# if GLEW has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# :: +# +# GLEW_INCLUDE_DIRS - include directories for GLEW +# GLEW_LIBRARIES - libraries to link against GLEW +# GLEW_FOUND - true if GLEW has been found and can be used -IF (WIN32) - FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h - $ENV{PROGRAMFILES}/GLEW/include - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES glew GLEW glew32 glew32s - PATHS - $ENV{PROGRAMFILES}/GLEW/lib - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib - DOC "The GLEW library") -ELSE (WIN32) +#============================================================================= +# Copyright 2012 Benjamin Eikel +# Copyright 2015 filux +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) - SET(GLEW_NAMES ${GLEW_NAMES} GLEW glew) - OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) - IF(WANT_STATIC_LIBS) - SET(GLEW_NAMES libGLEW.a libglew.a ${GLEW_NAMES}) - ENDIF() +find_path(GLEW_INCLUDE_DIR GL/glew.h) - FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h - /usr/include - /usr/local/include - /sw/include - /opt/local/include - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES ${GLEW_NAMES} - PATHS - /usr/lib64 - /usr/lib - /usr/local/lib64 - /usr/local/lib - /sw/lib - /opt/local/lib - DOC "The GLEW library") -ENDIF (WIN32) - -IF(GLEW_INCLUDE_PATH) - SET( GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") -ELSE() - SET( GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") +SET(GLEW_NAMES ${GLEW_NAMES} GLEW glew32 glew glew32s) +IF(STATIC_GLEW) + SET(GLEW_NAMES libGLEW.a libglew32.a libglew.a libglew32s.a GLEW.a glew32.a glew.a glew32s.a ${GLEW_NAMES}) ENDIF() -MARK_AS_ADVANCED(GLEW_FOUND GLEW_INCLUDE_PATH GLEW_LIBRARY) +find_library(GLEW_LIBRARY NAMES ${GLEW_NAMES} PATH_SUFFIXES lib64) + +set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR}) +set(GLEW_LIBRARIES ${GLEW_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GLEW REQUIRED_VARS GLEW_INCLUDE_DIR GLEW_LIBRARY) + +if(GLEW_FOUND AND NOT TARGET GLEW::GLEW) + add_library(GLEW::GLEW UNKNOWN IMPORTED) + set_target_properties(GLEW::GLEW PROPERTIES + IMPORTED_LOCATION "${GLEW_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}") + + message(STATUS "GLEW_LIBRARY: ${GLEW_LIBRARIES}") +endif() + +mark_as_advanced(GLEW_INCLUDE_DIR GLEW_LIBRARY) diff --git a/mk/cmake/Modules/FindGoogleBreakpad.cmake b/mk/cmake/Modules/FindGoogleBreakpad.cmake index 7431a8ba6..89f5a9ec1 100644 --- a/mk/cmake/Modules/FindGoogleBreakpad.cmake +++ b/mk/cmake/Modules/FindGoogleBreakpad.cmake @@ -132,4 +132,4 @@ IF(BREAKPAD_FOUND) #SET(BREAKPAD_FOUND FALSE) ENDIF(BREAKPAD_DUMPSYMS_EXE) ENDIF(BREAKPAD_FOUND) - +MARK_AS_ADVANCED(BREAKPAD_INCLUDE_DIR) diff --git a/mk/cmake/Modules/FindIrcclient.cmake b/mk/cmake/Modules/FindIrcclient.cmake index 7559e1278..13bdb544c 100644 --- a/mk/cmake/Modules/FindIrcclient.cmake +++ b/mk/cmake/Modules/FindIrcclient.cmake @@ -41,12 +41,8 @@ FIND_PATH(IRCCLIENT_INCLUDE_DIR libircclient.h SET(IRCCLIENT_FIND_LIBRARIES ircclient) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -OPTION(FORCE_IRCCLIENT_DYNAMIC_LIBS "force the use of dynamic libs for IRCCLIENT" OFF) -MESSAGE(STATUS "Force IRCCLient dynamic: ${FORCE_IRCCLIENT_DYNAMIC_LIBS}") - -IF(WANT_STATIC_LIBS AND NOT FORCE_IRCCLIENT_DYNAMIC_LIBS) - SET(IRCCLIENT_FIND_LIBRARIES libircclient.a ircclient.a) +IF(STATIC_Ircclient) + SET(IRCCLIENT_FIND_LIBRARIES libircclient.a ircclient.a libircclient ircclient) ELSE() SET(IRCCLIENT_FIND_LIBRARIES libircclient ircclient) ENDIF() diff --git a/mk/cmake/Modules/FindLIBVLC.cmake b/mk/cmake/Modules/FindLIBVLC.cmake index f28da0dec..31b61d091 100644 --- a/mk/cmake/Modules/FindLIBVLC.cmake +++ b/mk/cmake/Modules/FindLIBVLC.cmake @@ -46,7 +46,6 @@ find_path(LIBVLC_INCLUDE_DIR PATHS "${CMAKE_INCLUDE_PATH}/vlc" NAMES vlc.h HINTS ${PC_LIBVLC_INCLUDEDIR} ${PC_LIBVLC_INCLUDE_DIRS}) # dream on libvlc doesn't support static linking -#OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) set(LIBVLC_LIB_NAMES vlc libvlc) set(LIBVLC_LIB_CORE_NAMES vlccore libvlccore) #IF(WANT_STATIC_LIBS) diff --git a/mk/cmake/Modules/FindLUA.cmake b/mk/cmake/Modules/FindLUA.cmake index 1941f9d58..dfc1d795a 100644 --- a/mk/cmake/Modules/FindLUA.cmake +++ b/mk/cmake/Modules/FindLUA.cmake @@ -1,104 +1,195 @@ -# Find the Lua 5.1 includes and library +#.rst: +# FindLua +# ------- # -# LUA_INCLUDE_DIR - where to find lua.h -# LUA_LIBRARIES - List of fully qualified libraries to link against -# LUA_FOUND - Set to TRUE if found - -# Copyright (c) 2007, Pau Garcia i Quiles, # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# Locate Lua library This module defines +# +# :: +# +# LUA_FOUND - if false, do not try to link to Lua +# LUA_LIBRARIES - both lua and lualib +# LUA_INCLUDE_DIR - where to find lua.h +# LUA_VERSION_STRING - the version of Lua found +# LUA_VERSION_MAJOR - the major version of Lua +# LUA_VERSION_MINOR - the minor version of Lua +# LUA_VERSION_PATCH - the patch version of Lua +# +# +# +# Note that the expected include convention is +# +# :: +# +# #include "lua.h" +# +# and not +# +# :: +# +# #include +# +# This is because, the lua location is not standardized and may exist in +# locations other than lua/ -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -IF(WANT_STATIC_LIBS) - OPTION(LUA_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) -ENDIF() +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# Copyright 2013 Rolf Eike Beer +# Copyright 2015 filux +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) -IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) - #SET(LUA_FIND_QUIETLY TRUE) -ENDIF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) +unset(_lua_include_subdirs) +unset(_lua_library_names) -IF(FORCE_LUA_5_3) - MESSAGE(STATUS "Trying to FORCE LUA 5.3 ...") - - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.3 - /usr/include/lua - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.3.a lua5.3 liblua.a lua ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.3 lua ) - -ELSEIF(FORCE_LUA_5_2) - MESSAGE(STATUS "Trying to FORCE LUA 5.2 ...") - - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.2 - /usr/include/lua - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.2.a lua5.2 liblua.a lua ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.2 lua ) - -ELSEIF(FORCE_LUA_5_1) - MESSAGE(STATUS "Trying to FORCE LUA 5.1 ...") - - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.1 - /usr/include/lua - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.1.a lua5.1 liblua.a lua ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.1 lua ) +IF("${FORCE_LUA_VERSION}" STREQUAL "OFF") + IF(DEFINED ALL_LUA_VERSIONS_IN_ORDER) + SET(LUA_VERSIONS5 "${ALL_LUA_VERSIONS_IN_ORDER}") + ELSE() + SET(LUA_VERSIONS5 5.3 5.2 5.1 5.0) + ENDIF() ELSE() - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.3 - /usr/include/lua5.2 - /usr/include/lua - /usr/include/lua5.1 - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.3.a liblua5.2.a liblua.a liblua5.1.a lua5.3 lua5.2 lua lua5.1 ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.3 lua5.2 lua lua5.1 ) + SET(LUA_VERSIONS5 "${FORCE_LUA_VERSION}") ENDIF() -FIND_PATH(LUA_INCLUDE_DIR NAMES lua.hpp - PATHS ${LUA_FIND_INCLUDE_PATHS} - IF(FreeBSD) - SET(PATHS "/usr/local/include/lua53 /usr/local/include/lua52 /usr/local/include/lua51") - ENDIF() - $ENV{LUA_HOME}) +# this is a function only to have all the variables inside go away automatically +function(set_lua_version_vars) + if (Lua_FIND_VERSION_EXACT) + if (Lua_FIND_VERSION_COUNT GREATER 1) + set(lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}) + endif () + elseif (Lua_FIND_VERSION) + # once there is a different major version supported this should become a loop + if (NOT Lua_FIND_VERSION_MAJOR GREATER 5) + if (Lua_FIND_VERSION_COUNT EQUAL 1) + set(lua_append_versions ${LUA_VERSIONS5}) + else () + foreach (subver IN LISTS LUA_VERSIONS5) + if (NOT subver VERSION_LESS ${Lua_FIND_VERSION}) + list(APPEND lua_append_versions ${subver}) + endif () + endforeach () + endif () + endif () + else () + # once there is a different major version supported this should become a loop + set(lua_append_versions ${LUA_VERSIONS5}) + endif () -IF (LUA_STATIC AND NOT LUA_LIBRARIES) - FIND_LIBRARY(LUA_LIBRARIES NAMES ${LUA_FIND_STATIC_LIB_NAMES} - PATHS - IF(FreeBSD) - SET(PATHS "/usr/local/lib/lua53 /usr/local/lib/lua52 /usr/local/lib/lua51") - ENDIF() - $ENV{LUA_HOME}) + foreach (ver IN LISTS lua_append_versions) + string(REGEX MATCH "^([0-9]+)\\.([0-9]+)$" _ver "${ver}") + list(APPEND _lua_include_subdirs + include/lua${CMAKE_MATCH_1}${CMAKE_MATCH_2} + include/lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + include/lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + ) + IF(STATIC_LUA) + list(APPEND _lua_library_names + liblua${CMAKE_MATCH_1}${CMAKE_MATCH_2}.a + liblua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.a + liblua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.a + lua${CMAKE_MATCH_1}${CMAKE_MATCH_2}.a + lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.a + lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.a + ) + ENDIF() + list(APPEND _lua_library_names + lua${CMAKE_MATCH_1}${CMAKE_MATCH_2} + lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + ) + endforeach () -ELSE() - FIND_LIBRARY(LUA_LIBRARIES NAMES ${LUA_FIND_DYNAMIC_LIB_NAMES} - PATHS - IF(FreeBSD) - SET(PATHS "/usr/local/lib/lua53 /usr/local/lib/lua52 /usr/local/lib/lua51") - ENDIF() - $ENV{LUA_HOME}) + set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE) + set(_lua_library_names "${_lua_library_names}" PARENT_SCOPE) +endfunction(set_lua_version_vars) + +set_lua_version_vars() + +find_path(LUA_INCLUDE_DIR lua.h + HINTS + ENV LUA_DIR + PATH_SUFFIXES ${_lua_include_subdirs} include/lua include + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt +) +unset(_lua_include_subdirs) + +IF(STATIC_LUA AND APPLE) + # at least in mac ports, static lib is without numbers in name + SET(_lua_library_names lua.a liblua.a ${_lua_library_names}) ENDIF() -#MESSAGE(STATUS "LUA_INC: ${LUA_INCLUDE_DIR}") -#MESSAGE(STATUS "LUA_LIB: ${LUA_LIBRARIES}") +find_library(LUA_LIBRARY + NAMES ${_lua_library_names} lua + HINTS + ENV LUA_DIR + PATH_SUFFIXES lib + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt +) +unset(_lua_library_names) -IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) - SET(LUA_FOUND TRUE) - INCLUDE(CheckLibraryExists) - CHECK_LIBRARY_EXISTS(${LUA_LIBRARIES} lua_close "" LUA_NEED_PREFIX) -ELSE(LUA_INCLUDE_DIR AND LUA_LIBRARIES) - SET(LUA_FOUND FALSE) -ENDIF (LUA_INCLUDE_DIR AND LUA_LIBRARIES) +if (LUA_LIBRARY) + # include the math library for Unix + if (UNIX AND NOT APPLE AND NOT BEOS) + find_library(LUA_MATH_LIBRARY m) + set(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}") + # For Windows and Mac, don't need to explicitly include the math library + else () + set(LUA_LIBRARIES "${LUA_LIBRARY}") + endif () +endif () -IF(LUA_FOUND) - IF (NOT LUA_FIND_QUIETLY) - MESSAGE(STATUS "Found Lua library: ${LUA_LIBRARIES}") - MESSAGE(STATUS "Found Lua headers: ${LUA_INCLUDE_DIR}") - ENDIF (NOT LUA_FIND_QUIETLY) -ELSE(LUA_FOUND) - IF(LUA_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could NOT find Lua") - ENDIF(LUA_FIND_REQUIRED) -ENDIF(LUA_FOUND) +if (LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h") + # At least 5.[012] have different ways to express the version + # so all of them need to be tested. Lua 5.2 defines LUA_VERSION + # and LUA_RELEASE as joined by the C preprocessor, so avoid those. + file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_strings + REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*") -MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARIES) + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};") + if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};") + set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}") + else () + string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};") + if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};") + endif () + string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}") + string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}") + string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}") + endif () + unset(lua_version_strings) +endif() + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if +# all listed variables are TRUE +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua + REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR + VERSION_VAR LUA_VERSION_STRING) + +mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY) diff --git a/mk/cmake/Modules/FindLUAJIT.cmake b/mk/cmake/Modules/FindLUAJIT.cmake deleted file mode 100644 index a4342ee65..000000000 --- a/mk/cmake/Modules/FindLUAJIT.cmake +++ /dev/null @@ -1,36 +0,0 @@ -# Find the LuaJIT includes and library -# -# LUAJIT_INCLUDE_DIR - where to find lua.h -# LUAJIT_LIBRARIES - List of fully qualified libraries to link against -# LUAJIT_FOUND - Set to TRUE if found - -# Copyright (c) 2012, Mark Vejvoda, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -IF(WANT_STATIC_LIBS) - OPTION(LUAJIT_FIND_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) -ENDIF() - -find_path(LUAJIT_INCLUDE_DIR luajit.h - NAMES luajit.h - PATH_SUFFIXES luajit-2.0) - -if (LUAJIT_FIND_STATIC) - find_library(LUAJIT_LIBRARIES luajit.a - NAMES libluajit-5.1.a) -else (LUATJIT_FIND_STATIC) - find_library(LUAJIT_LIBRARIES luajit - NAMES luajit-5.1) -endif (LUAJIT_FIND_STATIC) - -mark_as_advanced(LUAJIT_INCLUDE_DIR) -mark_as_advanced(LUAJIT_LIBRARIES) - -# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if -# all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LUAJIT DEFAULT_MSG LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR) - diff --git a/mk/cmake/Modules/FindMiniupnpc.cmake b/mk/cmake/Modules/FindMiniupnpc.cmake index f220c073c..5fedfbf07 100644 --- a/mk/cmake/Modules/FindMiniupnpc.cmake +++ b/mk/cmake/Modules/FindMiniupnpc.cmake @@ -41,31 +41,30 @@ SET(MINIUPNPC_DIR_SEARCH $ENV{MINIUPNPC_ROOT}) # PATH_SUFFIXES miniupnpc) FIND_PATH(MINIUPNP_INCLUDE_DIR miniupnpc.h - ${MINIUPNPC_DIR_SEARCH}/include/miniupnpc - /usr/include/miniupnpc - /usr/local/include/miniupnpc) + PATHS ${MINIUPNPC_DIR_SEARCH}/include + /usr/include + /usr/local/include + PATH_SUFFIXES miniupnpc) #message(STATUS "Finding miniupnpc.h result: ${MINIUPNP_INCLUDE_DIR}") #find_library(MINIUPNP_LIBRARY miniupnpc) +set(MINIUPNPC_LIBRARY_NAMES ${MINIUPNPC_LIBRARY_DYNAMIC_NAME} libminiupnpc miniupnpc) -IF(WANT_STATIC_LIBS) - set(MINIUPNPC_LIBRARY_NAMES ${MINIUPNPC_LIBRARY_STATIC_NAME} libminiupnpc.a) -ELSE() - set(MINIUPNPC_LIBRARY_NAMES ${MINIUPNPC_LIBRARY_DYNAMIC_NAME} libminiupnpc.so miniupnpc) +IF(STATIC_Miniupnpc) + set(MINIUPNPC_LIBRARY_NAMES ${MINIUPNPC_LIBRARY_STATIC_NAME} libminiupnpc.a miniupnpc.a ${MINIUPNPC_LIBRARY_NAMES}) ENDIF() FIND_LIBRARY(MINIUPNP_LIBRARY NAMES ${MINIUPNPC_LIBRARY_NAMES}) #message(STATUS "Finding miniupnpc lib result: ${MINIUPNP_LIBRARY}") -if (MINIUPNP_INCLUDE_DIR AND MINIUPNP_LIBRARY) - set (MINIUPNP_FOUND TRUE) -endif () +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(MINIUPNP REQUIRED_VARS MINIUPNP_LIBRARY MINIUPNP_INCLUDE_DIR) if (MINIUPNP_FOUND) if (NOT MINIUPNP_FIND_QUIETLY) - message (STATUS "Found the miniupnpc libraries at ${MINIUPNP_LIBRARY}") + #message (STATUS "Found the miniupnpc libraries at ${MINIUPNP_LIBRARY}") message (STATUS "Found the miniupnpc headers at ${MINIUPNP_INCLUDE_DIR}") endif (NOT MINIUPNP_FIND_QUIETLY) diff --git a/mk/cmake/Modules/FindOGG.cmake b/mk/cmake/Modules/FindOGG.cmake index 92a165e72..7e2628ad2 100644 --- a/mk/cmake/Modules/FindOGG.cmake +++ b/mk/cmake/Modules/FindOGG.cmake @@ -6,11 +6,6 @@ # VORBIS_FILE_LIBRARY # -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -IF(WANT_STATIC_LIBS) - OPTION(OGG_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) -ENDIF() - # check for cache to avoid littering log IF(OGG_INCLUDE_DIR AND OGG_LIBRARY AND VORBIS_LIBRARY) SET(OGG_BE_QUIET TRUE) @@ -18,14 +13,14 @@ ENDIF() FIND_PATH(OGG_INCLUDE_DIR ogg/ogg.h) -IF (OGG_STATIC AND NOT OGG_LIBRARY) - FIND_LIBRARY(OGG_LIBRARY NAMES libogg.a ogg) +IF (STATIC_OGG AND NOT OGG_LIBRARY) + FIND_LIBRARY(OGG_LIBRARY NAMES libogg.a ogg.a ogg) ELSE() FIND_LIBRARY(OGG_LIBRARY NAMES ogg) ENDIF() -IF (OGG_STATIC AND NOT VORBIS_LIBRARY) - FIND_LIBRARY(VORBIS_LIBRARY NAMES libvorbis.a vorbis) +IF (STATIC_OGG AND NOT VORBIS_LIBRARY) + FIND_LIBRARY(VORBIS_LIBRARY NAMES libvorbis.a vorbis.a vorbis) ELSE() FIND_LIBRARY(VORBIS_LIBRARY NAMES vorbis) ENDIF() @@ -34,8 +29,8 @@ ENDIF() #IF(NOT APPLE) # comment above is full of lies -IF (OGG_STATIC AND NOT VORBIS_FILE_LIBRARY) - FIND_LIBRARY(VORBIS_FILE_LIBRARY NAMES libvorbisfile.a vorbisfile) +IF (STATIC_OGG AND NOT VORBIS_FILE_LIBRARY) + FIND_LIBRARY(VORBIS_FILE_LIBRARY NAMES libvorbisfile.a vorbisfile.a vorbisfile) ELSE() FIND_LIBRARY(VORBIS_FILE_LIBRARY NAMES vorbisfile) ENDIF() diff --git a/mk/cmake/Modules/FindPackageHandleStandardArgs.cmake b/mk/cmake/Modules/FindPackageHandleStandardArgs.cmake deleted file mode 100644 index 78c16c942..000000000 --- a/mk/cmake/Modules/FindPackageHandleStandardArgs.cmake +++ /dev/null @@ -1,263 +0,0 @@ -# FIND_PACKAGE_HANDLE_STANDARD_ARGS( ... ) -# -# This function is intended to be used in FindXXX.cmake modules files. -# It handles the REQUIRED, QUIET and version-related arguments to FIND_PACKAGE(). -# It also sets the _FOUND variable. -# The package is considered found if all variables ... listed contain -# valid results, e.g. valid filepaths. -# -# There are two modes of this function. The first argument in both modes is -# the name of the Find-module where it is called (in original casing). -# -# The first simple mode looks like this: -# FIND_PACKAGE_HANDLE_STANDARD_ARGS( (DEFAULT_MSG|"Custom failure message") ... ) -# If the variables to are all valid, then _FOUND -# will be set to TRUE. -# If DEFAULT_MSG is given as second argument, then the function will generate -# itself useful success and error messages. You can also supply a custom error message -# for the failure case. This is not recommended. -# -# The second mode is more powerful and also supports version checking: -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME [REQUIRED_VARS ...] -# [VERSION_VAR -# [CONFIG_MODE] -# [FAIL_MESSAGE "Custom failure message"] ) -# -# As above, if through are all valid, _FOUND -# will be set to TRUE. -# After REQUIRED_VARS the variables which are required for this package are listed. -# Following VERSION_VAR the name of the variable can be specified which holds -# the version of the package which has been found. If this is done, this version -# will be checked against the (potentially) specified required version used -# in the find_package() call. The EXACT keyword is also handled. The default -# messages include information about the required version and the version -# which has been actually found, both if the version is ok or not. -# Use the option CONFIG_MODE if your FindXXX.cmake module is a wrapper for -# a find_package(... NO_MODULE) call, in this case all the information -# provided by the config-mode of find_package() will be evaluated -# automatically. -# Via FAIL_MESSAGE a custom failure message can be specified, if this is not -# used, the default message will be displayed. -# -# Example for mode 1: -# -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) -# -# LibXml2 is considered to be found, if both LIBXML2_LIBRARY and -# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE. -# If it is not found and REQUIRED was used, it fails with FATAL_ERROR, -# independent whether QUIET was used or not. -# If it is found, success will be reported, including the content of . -# On repeated Cmake runs, the same message won't be printed again. -# -# Example for mode 2: -# -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON REQUIRED_VARS BISON_EXECUTABLE -# VERSION_VAR BISON_VERSION) -# In this case, BISON is considered to be found if the variable(s) listed -# after REQUIRED_VAR are all valid, i.e. BISON_EXECUTABLE in this case. -# Also the version of BISON will be checked by using the version contained -# in BISON_VERSION. -# Since no FAIL_MESSAGE is given, the default messages will be printed. -# -# Another example for mode 2: -# -# FIND_PACKAGE(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4) -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(Automoc4 CONFIG_MODE) -# In this case, FindAutmoc4.cmake wraps a call to FIND_PACKAGE(Automoc4 NO_MODULE) -# and adds an additional search directory for automoc4. -# The following FIND_PACKAGE_HANDLE_STANDARD_ARGS() call produces a proper -# success/error message. - -#============================================================================= -# Copyright 2007-2009 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -INCLUDE(FindPackageMessage) - -IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") -INCLUDE(CMakeParseArguments) -ENDIF() - -# internal helper macro -MACRO(_FPHSA_FAILURE_MESSAGE _msg) - IF (${_NAME}_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "${_msg}") - ELSE (${_NAME}_FIND_REQUIRED) - IF (NOT ${_NAME}_FIND_QUIETLY) - MESSAGE(STATUS "${_msg}") - ENDIF (NOT ${_NAME}_FIND_QUIETLY) - ENDIF (${_NAME}_FIND_REQUIRED) -ENDMACRO(_FPHSA_FAILURE_MESSAGE _msg) - - -# internal helper macro to generate the failure message when used in CONFIG_MODE: -MACRO(_FPHSA_HANDLE_FAILURE_CONFIG_MODE) - # _CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found: - IF(${_NAME}_CONFIG) - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})") - ELSE(${_NAME}_CONFIG) - # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version. - # List them all in the error message: - IF(${_NAME}_CONSIDERED_CONFIGS) - SET(configsText "") - LIST(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount) - MATH(EXPR configsCount "${configsCount} - 1") - FOREACH(currentConfigIndex RANGE ${configsCount}) - LIST(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename) - LIST(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version) - SET(configsText "${configsText} ${filename} (version ${version})\n") - ENDFOREACH(currentConfigIndex) - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}") - - ELSE(${_NAME}_CONSIDERED_CONFIGS) - # Simple case: No Config-file was found at all: - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}") - ENDIF(${_NAME}_CONSIDERED_CONFIGS) - ENDIF(${_NAME}_CONFIG) -ENDMACRO(_FPHSA_HANDLE_FAILURE_CONFIG_MODE) - - -FUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG) - -# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in -# new extended or in the "old" mode: - SET(options CONFIG_MODE) - SET(oneValueArgs FAIL_MESSAGE VERSION_VAR) - SET(multiValueArgs REQUIRED_VARS) - SET(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} ) - LIST(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX) - - IF(${INDEX} EQUAL -1) - SET(FPHSA_FAIL_MESSAGE ${_FIRST_ARG}) - SET(FPHSA_REQUIRED_VARS ${ARGN}) - SET(FPHSA_VERSION_VAR) - ELSE(${INDEX} EQUAL -1) - - CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN}) - - IF(FPHSA_UNPARSED_ARGUMENTS) - MESSAGE(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"") - ENDIF(FPHSA_UNPARSED_ARGUMENTS) - - IF(NOT FPHSA_FAIL_MESSAGE) - SET(FPHSA_FAIL_MESSAGE "DEFAULT_MSG") - ENDIF(NOT FPHSA_FAIL_MESSAGE) - ENDIF(${INDEX} EQUAL -1) - -# now that we collected all arguments, process them - - IF("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG") - SET(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}") - ENDIF("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG") - - # In config-mode, we rely on the variable _CONFIG, which is set by find_package() - # when it successfully found the config-file, including version checking: - IF(FPHSA_CONFIG_MODE) - LIST(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG) - LIST(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS) - SET(FPHSA_VERSION_VAR ${_NAME}_VERSION) - ENDIF(FPHSA_CONFIG_MODE) - - IF(NOT FPHSA_REQUIRED_VARS) - MESSAGE(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()") - ENDIF(NOT FPHSA_REQUIRED_VARS) - - LIST(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR) - - STRING(TOUPPER ${_NAME} _NAME_UPPER) - STRING(TOLOWER ${_NAME} _NAME_LOWER) - - # collect all variables which were not found, so they can be printed, so the - # user knows better what went wrong (#6375) - SET(MISSING_VARS "") - SET(DETAILS "") - SET(${_NAME_UPPER}_FOUND TRUE) - # check if all passed variables are valid - FOREACH(_CURRENT_VAR ${FPHSA_REQUIRED_VARS}) - IF(NOT ${_CURRENT_VAR}) - SET(${_NAME_UPPER}_FOUND FALSE) - SET(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}") - ELSE(NOT ${_CURRENT_VAR}) - SET(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]") - ENDIF(NOT ${_CURRENT_VAR}) - ENDFOREACH(_CURRENT_VAR) - - - # version handling: - SET(VERSION_MSG "") - SET(VERSION_OK TRUE) - SET(VERSION ${${FPHSA_VERSION_VAR}} ) - IF (${_NAME}_FIND_VERSION) - - IF(VERSION) - - IF(${_NAME}_FIND_VERSION_EXACT) # exact version required - IF (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") - SET(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") - SET(VERSION_OK FALSE) - ELSE (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") - SET(VERSION_MSG "(found suitable exact version \"${VERSION}\")") - ENDIF (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") - - ELSE(${_NAME}_FIND_VERSION_EXACT) # minimum version specified: - IF ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}") - SET(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"") - SET(VERSION_OK FALSE) - ELSE ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}") - SET(VERSION_MSG "(found suitable version \"${VERSION}\", required is \"${${_NAME}_FIND_VERSION}\")") - ENDIF ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}") - ENDIF(${_NAME}_FIND_VERSION_EXACT) - - ELSE(VERSION) - - # if the package was not found, but a version was given, add that to the output: - IF(${_NAME}_FIND_VERSION_EXACT) - SET(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")") - ELSE(${_NAME}_FIND_VERSION_EXACT) - SET(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")") - ENDIF(${_NAME}_FIND_VERSION_EXACT) - - ENDIF(VERSION) - ELSE (${_NAME}_FIND_VERSION) - IF(VERSION) - SET(VERSION_MSG "(found version \"${VERSION}\")") - ENDIF(VERSION) - ENDIF (${_NAME}_FIND_VERSION) - - IF(VERSION_OK) - SET(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]") - ELSE(VERSION_OK) - SET(${_NAME_UPPER}_FOUND FALSE) - ENDIF(VERSION_OK) - - - # print the result: - IF (${_NAME_UPPER}_FOUND) - FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG}" "${DETAILS}") - ELSE (${_NAME_UPPER}_FOUND) - - IF(FPHSA_CONFIG_MODE) - _FPHSA_HANDLE_FAILURE_CONFIG_MODE() - ELSE(FPHSA_CONFIG_MODE) - IF(NOT VERSION_OK) - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})") - ELSE(NOT VERSION_OK) - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}") - ENDIF(NOT VERSION_OK) - ENDIF(FPHSA_CONFIG_MODE) - - ENDIF (${_NAME_UPPER}_FOUND) - - SET(${_NAME_UPPER}_FOUND ${${_NAME_UPPER}_FOUND} PARENT_SCOPE) - -ENDFUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _FIRST_ARG) diff --git a/mk/cmake/Modules/FindXercesC.cmake b/mk/cmake/Modules/FindXercesC.cmake index 983a9c727..933525f9a 100644 --- a/mk/cmake/Modules/FindXercesC.cmake +++ b/mk/cmake/Modules/FindXercesC.cmake @@ -46,17 +46,12 @@ IF (XERCESC_INCLUDE AND XERCESC_LIBRARY) #MESSAGE(STATUS "Found cached Xerces-C lib [${XERCESC_LIBRARY}]") ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) -IF(WANT_STATIC_LIBS) - OPTION(XERCESC_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) -ENDIF() - -IF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC}) +IF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${STATIC_XercesC}) UNSET(XERCESC_LIBRARY CACHE) UNSET(XERCESC_LIBRARY_DEBUG CACHE) -ENDIF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC}) +ENDIF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${STATIC_XercesC}) -SET(XERCESC_WAS_STATIC ${XERCESC_STATIC} CACHE INTERNAL "" ) +SET(XERCESC_WAS_STATIC ${STATIC_XercesC} CACHE INTERNAL "" ) IF (XERCESC_INCLUDE_DIR) SET(XERCESC_INCLUDE ${XERCESC_INCLUDE_DIR}) @@ -74,7 +69,7 @@ ENDIF() #MESSAGE(STATUS "Current Xerces-C lib [${XERCESC_LIBRARY}] XERCESC_INCLUDE [${XERCESC_INCLUDE}") -IF (XERCESC_STATIC AND NOT XERCESC_LIBRARY) +IF (STATIC_XercesC AND NOT XERCESC_LIBRARY) MESSAGE(STATUS "Looking for static Xerces-C lib...") FIND_LIBRARY(XERCESC_LIBRARY NAMES xerces-c_static_3 libxerces-c.a libxerces-c_3.a libxerces-c2_8_0.a libxerces-c_2.a libXerces.a PATHS diff --git a/mk/cmake/Modules/FindwxWidgets.cmake b/mk/cmake/Modules/FindwxWidgets.cmake deleted file mode 100644 index 4d452f430..000000000 --- a/mk/cmake/Modules/FindwxWidgets.cmake +++ /dev/null @@ -1,1068 +0,0 @@ -# - Find a wxWidgets (a.k.a., wxWindows) installation. -# This module finds if wxWidgets is installed and selects a default -# configuration to use. wxWidgets is a modular library. To specify the -# modules that you will use, you need to name them as components to -# the package: -# -# FIND_PACKAGE(wxWidgets COMPONENTS core base ...) -# -# There are two search branches: a windows style and a unix style. For -# windows, the following variables are searched for and set to -# defaults in case of multiple choices. Change them if the defaults -# are not desired (i.e., these are the only variables you should -# change to select a configuration): -# -# wxWidgets_ROOT_DIR - Base wxWidgets directory -# (e.g., C:/wxWidgets-2.6.3). -# wxWidgets_LIB_DIR - Path to wxWidgets libraries -# (e.g., C:/wxWidgets-2.6.3/lib/vc_lib). -# wxWidgets_CONFIGURATION - Configuration to use -# (e.g., msw, mswd, mswu, mswunivud, etc.) -# wxWidgets_EXCLUDE_COMMON_LIBRARIES -# - Set to TRUE to exclude linking of -# commonly required libs (e.g., png tiff -# jpeg zlib regex expat). -# -# For unix style it uses the wx-config utility. You can select between -# debug/release, unicode/ansi, universal/non-universal, and -# static/shared in the QtDialog or ccmake interfaces by turning ON/OFF -# the following variables: -# -# wxWidgets_USE_DEBUG -# wxWidgets_USE_UNICODE -# wxWidgets_USE_UNIVERSAL -# wxWidgets_USE_STATIC -# -# There is also a wxWidgets_CONFIG_OPTIONS variable for all other -# options that need to be passed to the wx-config utility. For -# example, to use the base toolkit found in the /usr/local path, set -# the variable (before calling the FIND_PACKAGE command) as such: -# -# SET(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr) -# -# The following are set after the configuration is done for both -# windows and unix style: -# -# wxWidgets_FOUND - Set to TRUE if wxWidgets was found. -# wxWidgets_INCLUDE_DIRS - Include directories for WIN32 -# i.e., where to find "wx/wx.h" and -# "wx/setup.h"; possibly empty for unices. -# wxWidgets_LIBRARIES - Path to the wxWidgets libraries. -# wxWidgets_LIBRARY_DIRS - compile time link dirs, useful for -# rpath on UNIX. Typically an empty string -# in WIN32 environment. -# wxWidgets_DEFINITIONS - Contains defines required to compile/link -# against WX, e.g. WXUSINGDLL -# wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link -# against WX debug builds, e.g. __WXDEBUG__ -# wxWidgets_CXX_FLAGS - Include dirs and compiler flags for -# unices, empty on WIN32. Essentially -# "`wx-config --cxxflags`". -# wxWidgets_USE_FILE - Convenience include file. -# -# Sample usage: -# # Note that for MinGW users the order of libs is important! -# FIND_PACKAGE(wxWidgets COMPONENTS net gl core base) -# IF(wxWidgets_FOUND) -# INCLUDE(${wxWidgets_USE_FILE}) -# # and for each of your dependent executable/library targets: -# TARGET_LINK_LIBRARIES( ${wxWidgets_LIBRARIES}) -# ENDIF(wxWidgets_FOUND) -# -# If wxWidgets is required (i.e., not an optional part): -# FIND_PACKAGE(wxWidgets REQUIRED net gl core base) -# INCLUDE(${wxWidgets_USE_FILE}) -# # and for each of your dependent executable/library targets: -# TARGET_LINK_LIBRARIES( ${wxWidgets_LIBRARIES}) - -#============================================================================= -# Copyright 2004-2009 Kitware, Inc. -# Copyright 2007-2009 Miguel A. Figueroa-Villanueva -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -# -# Sample usage with monolithic wx build: -# -# FIND_PACKAGE(wxWidgets COMPONENTS mono) -# ... - -# NOTES -# -# This module has been tested on the WIN32 platform with wxWidgets -# 2.6.2, 2.6.3, and 2.5.3. However, it has been designed to -# easily extend support to all possible builds, e.g., static/shared, -# debug/release, unicode, universal, multilib/monolithic, etc.. -# -# If you want to use the module and your build type is not supported -# out-of-the-box, please contact me to exchange information on how -# your system is setup and I'll try to add support for it. -# -# AUTHOR -# -# Miguel A. Figueroa-Villanueva (miguelf at ieee dot org). -# Jan Woetzel (jw at mip.informatik.uni-kiel.de). -# -# Based on previous works of: -# Jan Woetzel (FindwxWindows.cmake), -# Jorgen Bodde and Jerry Fath (FindwxWin.cmake). - -# -# (1) Option/Setting to use all available wx libs -# In contrast to expert developer who lists the -# minimal set of required libs in wxWidgets_USE_LIBS -# there is the newbie user: -# - who just wants to link against WX with more 'magic' -# - doesn't know the internal structure of WX or how it was built, -# in particular if it is monolithic or not -# - want to link against all available WX libs -# Basically, the intent here is to mimic what wx-config would do by -# default (i.e., `wx-config --libs`). -# -# Possible solution: -# Add a reserved keyword "std" that initializes to what wx-config -# would default to. If the user has not set the wxWidgets_USE_LIBS, -# default to "std" instead of "base core" as it is now. To implement -# "std" will basically boil down to a FOR_EACH lib-FOUND, but maybe -# checking whether a minimal set was found. - - -# -# Helper macro to control the debugging output globally. There are -# two versions for controlling how verbose your output should be. -MACRO(DBG_MSG _MSG) -# MESSAGE(STATUS -# "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}") -ENDMACRO(DBG_MSG) -MACRO(DBG_MSG_V _MSG) -# MESSAGE(STATUS -# "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}") -ENDMACRO(DBG_MSG_V) - -# Clear return values in case the module is loaded more than once. -SET(wxWidgets_FOUND FALSE) -SET(wxWidgets_INCLUDE_DIRS "") -SET(wxWidgets_LIBRARIES "") -SET(wxWidgets_LIBRARY_DIRS "") -SET(wxWidgets_CXX_FLAGS "") - -# Using SYSTEM with INCLUDE_DIRECTORIES in conjunction with wxWidgets on -# the Mac produces compiler errors. Set wxWidgets_INCLUDE_DIRS_NO_SYSTEM -# to prevent UsewxWidgets.cmake from using SYSTEM. -# -# See cmake mailing list discussions for more info: -# http://www.cmake.org/pipermail/cmake/2008-April/021115.html -# http://www.cmake.org/pipermail/cmake/2008-April/021146.html -# -IF(APPLE) - SET(wxWidgets_INCLUDE_DIRS_NO_SYSTEM 1) -ENDIF(APPLE) - -# DEPRECATED: This is a patch to support the DEPRECATED use of -# wxWidgets_USE_LIBS. -# -# If wxWidgets_USE_LIBS is set: -# - if using , then override wxWidgets_USE_LIBS -# - else set wxWidgets_FIND_COMPONENTS to wxWidgets_USE_LIBS -IF(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS) - SET(wxWidgets_FIND_COMPONENTS ${wxWidgets_USE_LIBS}) -ENDIF(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS) -DBG_MSG("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}") - -# Add the convenience use file if available. -# -# Get dir of this file which may reside in: -# - CMAKE_MAKE_ROOT/Modules on CMake installation -# - CMAKE_MODULE_PATH if user prefers his own specialized version -SET(wxWidgets_USE_FILE "") -GET_FILENAME_COMPONENT( - wxWidgets_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) -# Prefer an existing customized version, but the user might override -# the FindwxWidgets module and not the UsewxWidgets one. -IF(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake") - SET(wxWidgets_USE_FILE - "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake") -ELSE(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake") - SET(wxWidgets_USE_FILE UsewxWidgets) -ENDIF(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake") - -#===================================================================== -#===================================================================== -IF(WIN32 AND NOT CYGWIN AND NOT MSYS) - SET(wxWidgets_FIND_STYLE "win32") -ELSE(WIN32 AND NOT CYGWIN AND NOT MSYS) - IF(UNIX OR MSYS) - SET(wxWidgets_FIND_STYLE "unix") - ENDIF(UNIX OR MSYS) -ENDIF(WIN32 AND NOT CYGWIN AND NOT MSYS) - -#===================================================================== -# WIN32_FIND_STYLE -#===================================================================== -IF(wxWidgets_FIND_STYLE STREQUAL "win32") - # Useful common wx libs needed by almost all components. - SET(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat) - - # DEPRECATED: Use FIND_PACKAGE(wxWidgets COMPONENTS mono) instead. - IF(NOT wxWidgets_FIND_COMPONENTS) - IF(wxWidgets_USE_MONOLITHIC) - SET(wxWidgets_FIND_COMPONENTS mono) - ELSE(wxWidgets_USE_MONOLITHIC) - SET(wxWidgets_FIND_COMPONENTS core base) # this is default - ENDIF(wxWidgets_USE_MONOLITHIC) - ENDIF(NOT wxWidgets_FIND_COMPONENTS) - - # Add the common (usually required libs) unless - # wxWidgets_EXCLUDE_COMMON_LIBRARIES has been set. - IF(NOT wxWidgets_EXCLUDE_COMMON_LIBRARIES) - LIST(APPEND wxWidgets_FIND_COMPONENTS - ${wxWidgets_COMMON_LIBRARIES}) - ENDIF(NOT wxWidgets_EXCLUDE_COMMON_LIBRARIES) - - #------------------------------------------------------------------- - # WIN32: Helper MACROS - #------------------------------------------------------------------- - # - # Get filename components for a configuration. For example, - # if _CONFIGURATION = mswunivud, then _UNV=univ, _UCD=u _DBG=d - # if _CONFIGURATION = mswu, then _UNV="", _UCD=u _DBG="" - # - MACRO(WX_GET_NAME_COMPONENTS _CONFIGURATION _UNV _UCD _DBG) - STRING(REGEX MATCH "univ" ${_UNV} "${_CONFIGURATION}") - STRING(REGEX REPLACE "msw.*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}") - IF(${_UCD} STREQUAL ${_CONFIGURATION}) - SET(${_UCD} "") - ENDIF(${_UCD} STREQUAL ${_CONFIGURATION}) - STRING(REGEX MATCH "d$" ${_DBG} "${_CONFIGURATION}") - ENDMACRO(WX_GET_NAME_COMPONENTS) - - # - # Find libraries associated to a configuration. - # - MACRO(WX_FIND_LIBS _UNV _UCD _DBG) - DBG_MSG_V("m_unv = ${_UNV}") - DBG_MSG_V("m_ucd = ${_UCD}") - DBG_MSG_V("m_dbg = ${_DBG}") - - # What if both regex libs are available. regex should be - # found outside the loop and only wx${LIB}${_UCD}${_DBG}. - # Find wxWidgets common libraries. - FOREACH(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla) - FIND_LIBRARY(WX_${LIB}${_DBG} - NAMES - wx${LIB}${_UCD}${_DBG} # for regex - wx${LIB}${_DBG} - PATHS ${WX_LIB_DIR} - NO_DEFAULT_PATH - ) - MARK_AS_ADVANCED(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - - # Find wxWidgets multilib base libraries. - FIND_LIBRARY(WX_base${_DBG} - NAMES - wxbase29${_UCD}${_DBG} - wxbase28${_UCD}${_DBG} - wxbase27${_UCD}${_DBG} - wxbase26${_UCD}${_DBG} - wxbase25${_UCD}${_DBG} - PATHS ${WX_LIB_DIR} - NO_DEFAULT_PATH - ) - MARK_AS_ADVANCED(WX_base${_DBG}) - FOREACH(LIB net odbc xml) - FIND_LIBRARY(WX_${LIB}${_DBG} - NAMES - wxbase29${_UCD}${_DBG}_${LIB} - wxbase28${_UCD}${_DBG}_${LIB} - wxbase27${_UCD}${_DBG}_${LIB} - wxbase26${_UCD}${_DBG}_${LIB} - wxbase25${_UCD}${_DBG}_${LIB} - PATHS ${WX_LIB_DIR} - NO_DEFAULT_PATH - ) - MARK_AS_ADVANCED(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - - # Find wxWidgets monolithic library. - FIND_LIBRARY(WX_mono${_DBG} - NAMES - wxmsw${_UNV}29${_UCD}${_DBG} - wxmsw${_UNV}28${_UCD}${_DBG} - wxmsw${_UNV}27${_UCD}${_DBG} - wxmsw${_UNV}26${_UCD}${_DBG} - wxmsw${_UNV}25${_UCD}${_DBG} - PATHS ${WX_LIB_DIR} - NO_DEFAULT_PATH - ) - MARK_AS_ADVANCED(WX_mono${_DBG}) - - # Find wxWidgets multilib libraries. - FOREACH(LIB core adv aui html media xrc dbgrid gl qa richtext - stc ribbon propgrid) - FIND_LIBRARY(WX_${LIB}${_DBG} - NAMES - wxmsw${_UNV}29${_UCD}${_DBG}_${LIB} - wxmsw${_UNV}28${_UCD}${_DBG}_${LIB} - wxmsw${_UNV}27${_UCD}${_DBG}_${LIB} - wxmsw${_UNV}26${_UCD}${_DBG}_${LIB} - wxmsw${_UNV}25${_UCD}${_DBG}_${LIB} - PATHS ${WX_LIB_DIR} - NO_DEFAULT_PATH - ) - MARK_AS_ADVANCED(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - ENDMACRO(WX_FIND_LIBS) - - # - # Clear all library paths, so that FIND_LIBRARY refinds them. - # - # Clear a lib, reset its found flag, and mark as advanced. - MACRO(WX_CLEAR_LIB _LIB) - SET(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE) - SET(${_LIB}_FOUND FALSE) - MARK_AS_ADVANCED(${_LIB}) - ENDMACRO(WX_CLEAR_LIB) - # Clear all debug or release library paths (arguments are "d" or ""). - MACRO(WX_CLEAR_ALL_LIBS _DBG) - # Clear wxWidgets common libraries. - FOREACH(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla) - WX_CLEAR_LIB(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - - # Clear wxWidgets multilib base libraries. - WX_CLEAR_LIB(WX_base${_DBG}) - FOREACH(LIB net odbc xml) - WX_CLEAR_LIB(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - - # Clear wxWidgets monolithic library. - WX_CLEAR_LIB(WX_mono${_DBG}) - - # Clear wxWidgets multilib libraries. - FOREACH(LIB core adv aui html media xrc dbgrid gl qa richtext - stc ribbon propgrid) - WX_CLEAR_LIB(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - ENDMACRO(WX_CLEAR_ALL_LIBS) - # Clear all wxWidgets debug libraries. - MACRO(WX_CLEAR_ALL_DBG_LIBS) - WX_CLEAR_ALL_LIBS("d") - ENDMACRO(WX_CLEAR_ALL_DBG_LIBS) - # Clear all wxWidgets release libraries. - MACRO(WX_CLEAR_ALL_REL_LIBS) - WX_CLEAR_ALL_LIBS("") - ENDMACRO(WX_CLEAR_ALL_REL_LIBS) - - # - # Set the wxWidgets_LIBRARIES variable. - # Also, Sets output variable wxWidgets_FOUND to FALSE if it fails. - # - MACRO(WX_SET_LIBRARIES _LIBS _DBG) - DBG_MSG_V("Looking for ${${_LIBS}}") - IF(WX_USE_REL_AND_DBG) - FOREACH(LIB ${${_LIBS}}) - DBG_MSG_V("Searching for ${LIB} and ${LIB}d") - DBG_MSG_V("WX_${LIB} : ${WX_${LIB}}") - DBG_MSG_V("WX_${LIB}d : ${WX_${LIB}d}") - IF(WX_${LIB} AND WX_${LIB}d) - DBG_MSG_V("Found ${LIB} and ${LIB}d") - LIST(APPEND wxWidgets_LIBRARIES - debug ${WX_${LIB}d} optimized ${WX_${LIB}} - ) - ELSE(WX_${LIB} AND WX_${LIB}d) - DBG_MSG_V("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}") - SET(wxWidgets_FOUND FALSE) - ENDIF(WX_${LIB} AND WX_${LIB}d) - ENDFOREACH(LIB) - ELSE(WX_USE_REL_AND_DBG) - FOREACH(LIB ${${_LIBS}}) - DBG_MSG_V("Searching for ${LIB}${_DBG}") - DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}") - IF(WX_${LIB}${_DBG}) - DBG_MSG_V("Found ${LIB}${_DBG}") - LIST(APPEND wxWidgets_LIBRARIES ${WX_${LIB}${_DBG}}) - ELSE(WX_${LIB}${_DBG}) - DBG_MSG_V( - "- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}") - SET(wxWidgets_FOUND FALSE) - ENDIF(WX_${LIB}${_DBG}) - ENDFOREACH(LIB) - ENDIF(WX_USE_REL_AND_DBG) - - DBG_MSG_V("OpenGL") - LIST(FIND ${_LIBS} gl WX_USE_GL) - IF(NOT WX_USE_GL EQUAL -1) - DBG_MSG_V("- is required.") - LIST(APPEND wxWidgets_LIBRARIES opengl32 glu32) - ENDIF(NOT WX_USE_GL EQUAL -1) - - LIST(APPEND wxWidgets_LIBRARIES winmm comctl32 rpcrt4 wsock32) - ENDMACRO(WX_SET_LIBRARIES) - - #------------------------------------------------------------------- - # WIN32: Start actual work. - #------------------------------------------------------------------- - - # Look for an installation tree. - FIND_PATH(wxWidgets_ROOT_DIR - NAMES include/wx/wx.h - PATHS - $ENV{wxWidgets_ROOT_DIR} - $ENV{WXWIN} - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" # WX 2.6.x - C:/ - D:/ - $ENV{ProgramFiles} - PATH_SUFFIXES - wxWidgets-3.0.2 - wxWidgets-2.9.4 - wxWidgets-2.9.3 - wxWidgets-2.9.2 - wxWidgets-2.9.1 - wxWidgets-2.9.0 - wxWidgets-2.8.9 - wxWidgets-2.8.8 - wxWidgets-2.8.7 - wxWidgets-2.8.6 - wxWidgets-2.8.5 - wxWidgets-2.8.4 - wxWidgets-2.8.3 - wxWidgets-2.8.2 - wxWidgets-2.8.1 - wxWidgets-2.8.0 - wxWidgets-2.7.4 - wxWidgets-2.7.3 - wxWidgets-2.7.2 - wxWidgets-2.7.1 - wxWidgets-2.7.0 - wxWidgets-2.7.0-1 - wxWidgets-2.6.4 - wxWidgets-2.6.3 - wxWidgets-2.6.2 - wxWidgets-2.6.1 - wxWidgets-2.5.4 - wxWidgets-2.5.3 - wxWidgets-2.5.2 - wxWidgets-2.5.1 - wxWidgets - DOC "wxWidgets base/installation directory?" - ) - - # If wxWidgets_ROOT_DIR changed, clear lib dir. - IF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR) - SET(WX_ROOT_DIR ${wxWidgets_ROOT_DIR} - CACHE INTERNAL "wxWidgets_ROOT_DIR") - SET(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND" - CACHE PATH "Cleared." FORCE) - ENDIF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR) - - IF(WX_ROOT_DIR) - # Select one default tree inside the already determined wx tree. - # Prefer static/shared order usually consistent with build - # settings. - IF(MINGW) - SET(WX_LIB_DIR_PREFIX gcc) - ELSE(MINGW) - SET(WX_LIB_DIR_PREFIX vc) - ENDIF(MINGW) - IF(BUILD_SHARED_LIBS) - FIND_PATH(wxWidgets_LIB_DIR - NAMES - msw/wx/setup.h - mswd/wx/setup.h - mswu/wx/setup.h - mswud/wx/setup.h - mswuniv/wx/setup.h - mswunivd/wx/setup.h - mswunivu/wx/setup.h - mswunivud/wx/setup.h - PATHS - ${WX_ROOT_DIR}/lib/${WX_LIB_DIR_PREFIX}_dll # prefer shared - ${WX_ROOT_DIR}/lib/${WX_LIB_DIR_PREFIX}_lib - DOC "Path to wxWidgets libraries?" - NO_DEFAULT_PATH - ) - ELSE(BUILD_SHARED_LIBS) - FIND_PATH(wxWidgets_LIB_DIR - NAMES - msw/wx/setup.h - mswd/wx/setup.h - mswu/wx/setup.h - mswud/wx/setup.h - mswuniv/wx/setup.h - mswunivd/wx/setup.h - mswunivu/wx/setup.h - mswunivud/wx/setup.h - PATHS - ${WX_ROOT_DIR}/lib/${WX_LIB_DIR_PREFIX}_lib # prefer static - ${WX_ROOT_DIR}/lib/${WX_LIB_DIR_PREFIX}_dll - DOC "Path to wxWidgets libraries?" - NO_DEFAULT_PATH - ) - ENDIF(BUILD_SHARED_LIBS) - - # If wxWidgets_LIB_DIR changed, clear all libraries. - IF(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR) - SET(WX_LIB_DIR ${wxWidgets_LIB_DIR} CACHE INTERNAL "wxWidgets_LIB_DIR") - WX_CLEAR_ALL_DBG_LIBS() - WX_CLEAR_ALL_REL_LIBS() - ENDIF(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR) - - IF(WX_LIB_DIR) - # If building shared libs, define WXUSINGDLL to use dllimport. - IF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*") - SET(wxWidgets_DEFINITIONS WXUSINGDLL) - DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}") - ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*") - - # Search for available configuration types. - FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw) - SET(WX_${CFG}_FOUND FALSE) - IF(EXISTS ${WX_LIB_DIR}/${CFG}) - LIST(APPEND WX_CONFIGURATION_LIST ${CFG}) - SET(WX_${CFG}_FOUND TRUE) - SET(WX_CONFIGURATION ${CFG}) - ENDIF(EXISTS ${WX_LIB_DIR}/${CFG}) - ENDFOREACH(CFG) - DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}") - - IF(WX_CONFIGURATION) - SET(wxWidgets_FOUND TRUE) - - # If the selected configuration wasn't found force the default - # one. Otherwise, use it but still force a refresh for - # updating the doc string with the current list of available - # configurations. - IF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND) - SET(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING - "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE) - ELSE(NOT WX_${wxWidgets_CONFIGURATION}_FOUND) - SET(wxWidgets_CONFIGURATION ${wxWidgets_CONFIGURATION} CACHE STRING - "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE) - ENDIF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND) - - # If release config selected, and both release/debug exist. - IF(WX_${wxWidgets_CONFIGURATION}d_FOUND) - OPTION(wxWidgets_USE_REL_AND_DBG - "Use release and debug configurations?" TRUE) - SET(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG}) - ELSE(WX_${wxWidgets_CONFIGURATION}d_FOUND) - # If the option exists (already in cache), force it false. - IF(wxWidgets_USE_REL_AND_DBG) - SET(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL - "No ${wxWidgets_CONFIGURATION}d found." FORCE) - ENDIF(wxWidgets_USE_REL_AND_DBG) - SET(WX_USE_REL_AND_DBG FALSE) - ENDIF(WX_${wxWidgets_CONFIGURATION}d_FOUND) - - # Get configuration parameters from the name. - WX_GET_NAME_COMPONENTS(${wxWidgets_CONFIGURATION} UNV UCD DBG) - - # Set wxWidgets lib setup include directory. - IF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h) - SET(wxWidgets_INCLUDE_DIRS - ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}) - ELSE(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h) - DBG_MSG("wxWidgets_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.") - SET(wxWidgets_FOUND FALSE) - ENDIF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h) - - # Set wxWidgets main include directory. - IF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h) - LIST(APPEND wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include) - ELSE(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h) - DBG_MSG("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h") - SET(wxWidgets_FOUND FALSE) - ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h) - - # Find wxWidgets libraries. - WX_FIND_LIBS("${UNV}" "${UCD}" "${DBG}") - IF(WX_USE_REL_AND_DBG) - WX_FIND_LIBS("${UNV}" "${UCD}" "d") - ENDIF(WX_USE_REL_AND_DBG) - - # Settings for requested libs (i.e., include dir, libraries, etc.). - WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}") - - # Add necessary definitions for unicode builds - IF("${UCD}" STREQUAL "u") - LIST(APPEND wxWidgets_DEFINITIONS UNICODE _UNICODE) - ENDIF("${UCD}" STREQUAL "u") - - # Add necessary definitions for debug builds - SET(wxWidgets_DEFINITIONS_DEBUG _DEBUG __WXDEBUG__) - - ENDIF(WX_CONFIGURATION) - ENDIF(WX_LIB_DIR) - ENDIF(WX_ROOT_DIR) - -#===================================================================== -# UNIX_FIND_STYLE -#===================================================================== -ELSE(wxWidgets_FIND_STYLE STREQUAL "win32") - IF(wxWidgets_FIND_STYLE STREQUAL "unix") - #----------------------------------------------------------------- - # UNIX: Helper MACROS - #----------------------------------------------------------------- - # - # Set the default values based on "wx-config --selected-config". - # - MACRO(WX_CONFIG_SELECT_GET_DEFAULT) - EXECUTE_PROCESS( - COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" - ${wxWidgets_CONFIG_OPTIONS} --selected-config - OUTPUT_VARIABLE _wx_selected_config - RESULT_VARIABLE _wx_result - ERROR_QUIET - ) - - IF(_wx_result EQUAL 0) - FOREACH(_opt_name debug static unicode universal) - STRING(TOUPPER ${_opt_name} _upper_opt_name) - IF(_wx_selected_config MATCHES ".*${_opt_name}.*") - SET(wxWidgets_DEFAULT_${_upper_opt_name} ON) - ELSE(_wx_selected_config MATCHES ".*${_opt_name}.*") - SET(wxWidgets_DEFAULT_${_upper_opt_name} OFF) - ENDIF(_wx_selected_config MATCHES ".*${_opt_name}.*") - ENDFOREACH(_opt_name) - ELSE(_wx_result EQUAL 0) - FOREACH(_upper_opt_name DEBUG STATIC UNICODE UNIVERSAL) - SET(wxWidgets_DEFAULT_${_upper_opt_name} OFF) - ENDFOREACH(_upper_opt_name) - ENDIF(_wx_result EQUAL 0) - ENDMACRO(WX_CONFIG_SELECT_GET_DEFAULT) - - # - # Query a boolean configuration option to determine if the system - # has both builds available. If so, provide the selection option - # to the user. - # - MACRO(WX_CONFIG_SELECT_QUERY_BOOL _OPT_NAME _OPT_HELP) - EXECUTE_PROCESS( - COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" - ${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=yes - RESULT_VARIABLE _wx_result_yes - OUTPUT_QUIET - ERROR_QUIET - ) - EXECUTE_PROCESS( - COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" - ${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=no - RESULT_VARIABLE _wx_result_no - OUTPUT_QUIET - ERROR_QUIET - ) - STRING(TOUPPER ${_OPT_NAME} _UPPER_OPT_NAME) - IF(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0) - OPTION(wxWidgets_USE_${_UPPER_OPT_NAME} - ${_OPT_HELP} ${wxWidgets_DEFAULT_${_UPPER_OPT_NAME}}) - ELSE(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0) - # If option exists (already in cache), force to available one. - IF(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME}) - IF(_wx_result_yes EQUAL 0) - SET(wxWidgets_USE_${_UPPER_OPT_NAME} ON CACHE BOOL ${_OPT_HELP} FORCE) - ELSE(_wx_result_yes EQUAL 0) - SET(wxWidgets_USE_${_UPPER_OPT_NAME} OFF CACHE BOOL ${_OPT_HELP} FORCE) - ENDIF(_wx_result_yes EQUAL 0) - ENDIF(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME}) - ENDIF(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0) - ENDMACRO(WX_CONFIG_SELECT_QUERY_BOOL) - - # - # Set wxWidgets_SELECT_OPTIONS to wx-config options for selecting - # among multiple builds. - # - MACRO(WX_CONFIG_SELECT_SET_OPTIONS) - SET(wxWidgets_SELECT_OPTIONS ${wxWidgets_CONFIG_OPTIONS}) - FOREACH(_opt_name debug static unicode universal) - STRING(TOUPPER ${_opt_name} _upper_opt_name) - IF(DEFINED wxWidgets_USE_${_upper_opt_name}) - IF(wxWidgets_USE_${_upper_opt_name}) - LIST(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=yes) - ELSE(wxWidgets_USE_${_upper_opt_name}) - LIST(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=no) - ENDIF(wxWidgets_USE_${_upper_opt_name}) - ENDIF(DEFINED wxWidgets_USE_${_upper_opt_name}) - ENDFOREACH(_opt_name) - ENDMACRO(WX_CONFIG_SELECT_SET_OPTIONS) - - #----------------------------------------------------------------- - # UNIX: Start actual work. - #----------------------------------------------------------------- - # Support cross-compiling, only search in the target platform. - FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE NAMES $ENV{WX_CONFIG} wx-config - ONLY_CMAKE_FIND_ROOT_PATH - ) - - IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") - MESSAGE(STATUS "Searching for wx on FreeBSD") - FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE NAMES $ENV{WX_CONFIG} wxgtk2u-3.0-config wxgtk2u-2.9-config wxgtk2u-2.8-config wxgtk2u-2.6-config wxgtk2-2.6-config - ONLY_CMAKE_FIND_ROOT_PATH - ) - ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") - - MESSAGE(STATUS "DEBUG FreeBSD: ${wxWidgets_CONFIG_EXECUTABLE}") - - IF(wxWidgets_CONFIG_EXECUTABLE) - SET(wxWidgets_FOUND TRUE) - - # get defaults based on "wx-config --selected-config" - WX_CONFIG_SELECT_GET_DEFAULT() - - # for each option: if both builds are available, provide option - WX_CONFIG_SELECT_QUERY_BOOL(debug "Use debug build?") - WX_CONFIG_SELECT_QUERY_BOOL(unicode "Use unicode build?") - WX_CONFIG_SELECT_QUERY_BOOL(universal "Use universal build?") - WX_CONFIG_SELECT_QUERY_BOOL(static "Link libraries statically?") - - # process selection to set wxWidgets_SELECT_OPTIONS - WX_CONFIG_SELECT_SET_OPTIONS() - DBG_MSG("wxWidgets_SELECT_OPTIONS=${wxWidgets_SELECT_OPTIONS}") - - # run the wx-config program to get cxxflags - MESSAGE(STATUS "run the wx-config program to get cxxflags:") - EXECUTE_PROCESS( - COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" - ${wxWidgets_SELECT_OPTIONS} --cxxflags - OUTPUT_VARIABLE wxWidgets_CXX_FLAGS - RESULT_VARIABLE RET - ERROR_QUIET - ) - MESSAGE(STATUS "${wxWidgets_CONFIG_EXECUTABLE} ${wxWidgets_SELECT_OPTIONS} --cxxflags") - - EXECUTE_PROCESS( - COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" - --version - OUTPUT_VARIABLE wxWidgets_VERSION - ERROR_QUIET - ) - MESSAGE(STATUS "${wxWidgets_CONFIG_EXECUTABLE} --version returned: ${wxWidgets_VERSION}") - - IF(RET EQUAL 0) - STRING(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS) - SEPARATE_ARGUMENTS(wxWidgets_CXX_FLAGS) - - DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}") - - # parse definitions from cxxflags; - # drop -D* from CXXFLAGS and the -D prefix - STRING(REGEX MATCHALL "-D[^;]+" - wxWidgets_DEFINITIONS "${wxWidgets_CXX_FLAGS}") - STRING(REGEX REPLACE "-D[^;]+(;|$)" "" - wxWidgets_CXX_FLAGS "${wxWidgets_CXX_FLAGS}") - STRING(REGEX REPLACE ";$" "" - wxWidgets_CXX_FLAGS "${wxWidgets_CXX_FLAGS}") - STRING(REPLACE "-D" "" - wxWidgets_DEFINITIONS "${wxWidgets_DEFINITIONS}") - - # parse include dirs from cxxflags; drop -I prefix - STRING(REGEX MATCHALL "-I[^;]+" - wxWidgets_INCLUDE_DIRS "${wxWidgets_CXX_FLAGS}") - STRING(REGEX REPLACE "-I[^;]+;" "" - wxWidgets_CXX_FLAGS "${wxWidgets_CXX_FLAGS}") - STRING(REPLACE "-I" "" - wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}") - - DBG_MSG_V("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}") - DBG_MSG_V("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}") - DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}") - - ELSE(RET EQUAL 0) - SET(wxWidgets_FOUND FALSE) - MESSAGE(STATUS "run the wx-config program to get cxxflags FAILED") - DBG_MSG_V( - "${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}") - ENDIF(RET EQUAL 0) - - # run the wx-config program to get the libs - # - NOTE: wx-config doesn't verify that the libs requested exist - # it just produces the names. Maybe a TRY_COMPILE would - # be useful here... - STRING(REPLACE ";" "," - wxWidgets_FIND_COMPONENTS "${wxWidgets_FIND_COMPONENTS}") - EXECUTE_PROCESS( - COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" - ${wxWidgets_SELECT_OPTIONS} --libs ${wxWidgets_FIND_COMPONENTS} - OUTPUT_VARIABLE wxWidgets_LIBRARIES - RESULT_VARIABLE RET - ERROR_QUIET - ) - IF(RET EQUAL 0) - STRING(STRIP "${wxWidgets_LIBRARIES}" wxWidgets_LIBRARIES) - SEPARATE_ARGUMENTS(wxWidgets_LIBRARIES) - STRING(REPLACE "-framework;" "-framework " - wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}") - STRING(REPLACE "-arch;" "-arch " - wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}") - STRING(REPLACE "-isysroot;" "-isysroot " - wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}") - - # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES) - STRING(REGEX MATCHALL "-L[^;]+" - wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARIES}") - STRING(REPLACE "-L" "" - wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}") - - DBG_MSG_V("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}") - DBG_MSG_V("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}") - - ELSE(RET EQUAL 0) - SET(wxWidgets_FOUND FALSE) - DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --libs ${wxWidgets_FIND_COMPONENTS} FAILED with RET=${RET}") - ENDIF(RET EQUAL 0) - ENDIF(wxWidgets_CONFIG_EXECUTABLE) - -#===================================================================== -# Neither UNIX_FIND_STYLE, nor WIN32_FIND_STYLE -#===================================================================== - ELSE(wxWidgets_FIND_STYLE STREQUAL "unix") - IF(NOT wxWidgets_FIND_QUIETLY) - MESSAGE(STATUS - "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n" - " Platform unknown/unsupported. It's neither WIN32 nor UNIX " - "find style." - ) - ENDIF(NOT wxWidgets_FIND_QUIETLY) - ENDIF(wxWidgets_FIND_STYLE STREQUAL "unix") -ENDIF(wxWidgets_FIND_STYLE STREQUAL "win32") - -# Debug output: -DBG_MSG("wxWidgets_FOUND : ${wxWidgets_FOUND}") -DBG_MSG("wxWidgets_INCLUDE_DIRS : ${wxWidgets_INCLUDE_DIRS}") -DBG_MSG("wxWidgets_LIBRARY_DIRS : ${wxWidgets_LIBRARY_DIRS}") -DBG_MSG("wxWidgets_LIBRARIES : ${wxWidgets_LIBRARIES}") -DBG_MSG("wxWidgets_CXX_FLAGS : ${wxWidgets_CXX_FLAGS}") -DBG_MSG("wxWidgets_USE_FILE : ${wxWidgets_USE_FILE}") - -#===================================================================== -#===================================================================== -IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") -INCLUDE("${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake") -ENDIF() - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(wxWidgets DEFAULT_MSG wxWidgets_FOUND) -# Maintain consistency with all other variables. -SET(wxWidgets_FOUND ${WXWIDGETS_FOUND}) - -#===================================================================== -# Macros for use in wxWidgets apps. -# - This module will not fail to find wxWidgets based on the code -# below. Hence, it's required to check for validity of: -# -# wxWidgets_wxrc_EXECUTABLE -#===================================================================== - -# Resource file compiler. -FIND_PROGRAM(wxWidgets_wxrc_EXECUTABLE wxrc - ${wxWidgets_ROOT_DIR}/utils/wxrc/vc_msw - ) - -MARK_AS_ADVANCED(wxWidgets_CONFIG_EXECUTABLE) -MARK_AS_ADVANCED(wxWidgets_wxrc_EXECUTABLE) - - -# -# WX_SPLIT_ARGUMENTS_ON( ...) -# -# Sets and to contain arguments to the left and right, -# respectively, of . -# -# Example usage: -# FUNCTION(WXWIDGETS_ADD_RESOURCES outfiles) -# WX_SPLIT_ARGUMENTS_ON(OPTIONS wxrc_files wxrc_options ${ARGN}) -# ... -# ENDFUNCTION(WXWIDGETS_ADD_RESOURCES) -# -# WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o file.C) -# -# NOTE: This is a generic piece of code that should be renamed to -# SPLIT_ARGUMENTS_ON and put in a file serving the same purpose as -# FindPackageStandardArgs.cmake. At the time of this writing -# FindQt4.cmake has a QT4_EXTRACT_OPTIONS, which I basically copied -# here a bit more generalized. So, there are already two find modules -# using this approach. -# -FUNCTION(WX_SPLIT_ARGUMENTS_ON _keyword _leftvar _rightvar) - # Document that the input variables will be cleared. - #LIST(APPEND ${_leftvar} "") - #LIST(APPEND ${_rightvar} "") - SET(${_leftvar} "") - SET(${_rightvar} "") - - SET(_doing_right FALSE) - FOREACH(element ${ARGN}) - IF("${element}" STREQUAL "${_keyword}") - SET(_doing_right TRUE) - ELSE("${element}" STREQUAL "${_keyword}") - IF(_doing_right) - LIST(APPEND ${_rightvar} "${element}") - ELSE(_doing_right) - LIST(APPEND ${_leftvar} "${element}") - ENDIF(_doing_right) - ENDIF("${element}" STREQUAL "${_keyword}") - ENDFOREACH(element) - - SET(${_leftvar} ${${_leftvar}} PARENT_SCOPE) - SET(${_rightvar} ${${_rightvar}} PARENT_SCOPE) -ENDFUNCTION(WX_SPLIT_ARGUMENTS_ON) - -# -# WX_GET_DEPENDENCIES_FROM_XML( -# -# -# -# -# -# ) -# -# -FUNCTION(WX_GET_DEPENDENCIES_FROM_XML - _depends - _match_patt - _clean_patt - _xml_contents - _depends_path - ) - - STRING(REGEX MATCHALL - ${_match_patt} - dep_file_list - "${${_xml_contents}}" - ) - FOREACH(dep_file ${dep_file_list}) - STRING(REGEX REPLACE ${_clean_patt} "" dep_file "${dep_file}") - - # make the file have an absolute path - IF(NOT IS_ABSOLUTE "${dep_file}") - SET(dep_file "${${_depends_path}}/${dep_file}") - ENDIF(NOT IS_ABSOLUTE "${dep_file}") - - # append file to dependency list - LIST(APPEND ${_depends} "${dep_file}") - ENDFOREACH(dep_file) - - SET(${_depends} ${${_depends}} PARENT_SCOPE) -ENDFUNCTION(WX_GET_DEPENDENCIES_FROM_XML) - -# -# WXWIDGETS_ADD_RESOURCES( -# OPTIONS [NO_CPP_CODE]) -# -# Adds a custom command for resource file compilation of the -# and appends the output files to . -# -# Example usages: -# WXWIDGETS_ADD_RESOURCES(sources xrc/main_frame.xrc) -# WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o altname.cxx) -# -FUNCTION(WXWIDGETS_ADD_RESOURCES _outfiles) - WX_SPLIT_ARGUMENTS_ON(OPTIONS rc_file_list rc_options ${ARGN}) - - # Parse files for dependencies. - SET(rc_file_list_abs "") - SET(rc_depends "") - FOREACH(rc_file ${rc_file_list}) - GET_FILENAME_COMPONENT(depends_path ${rc_file} PATH) - - GET_FILENAME_COMPONENT(rc_file_abs ${rc_file} ABSOLUTE) - LIST(APPEND rc_file_list_abs "${rc_file_abs}") - - # All files have absolute paths or paths relative to the location - # of the rc file. - FILE(READ "${rc_file_abs}" rc_file_contents) - - # get bitmap/bitmap2 files - WX_GET_DEPENDENCIES_FROM_XML( - rc_depends - "]*>" - rc_file_contents - depends_path - ) - - # get url files - WX_GET_DEPENDENCIES_FROM_XML( - rc_depends - "]*>" - rc_file_contents - depends_path - ) - - # get wxIcon files - WX_GET_DEPENDENCIES_FROM_XML( - rc_depends - "]*class=\"wxIcon\"[^<]+" - "^]*>" - rc_file_contents - depends_path - ) - ENDFOREACH(rc_file) - - # - # Parse options. - # - # If NO_CPP_CODE option specified, then produce .xrs file rather - # than a .cpp file (i.e., don't add the default --cpp-code option). - LIST(FIND rc_options NO_CPP_CODE index) - IF(index EQUAL -1) - LIST(APPEND rc_options --cpp-code) - # wxrc's default output filename for cpp code. - SET(outfile resource.cpp) - ELSE(index EQUAL -1) - LIST(REMOVE_AT rc_options ${index}) - # wxrc's default output filename for xrs file. - SET(outfile resource.xrs) - ENDIF(index EQUAL -1) - - # Get output name for use in ADD_CUSTOM_COMMAND. - # - short option scanning - LIST(FIND rc_options -o index) - IF(NOT index EQUAL -1) - MATH(EXPR filename_index "${index} + 1") - LIST(GET rc_options ${filename_index} outfile) - #LIST(REMOVE_AT rc_options ${index} ${filename_index}) - ENDIF(NOT index EQUAL -1) - # - long option scanning - STRING(REGEX MATCH "--output=[^;]*" outfile_opt "${rc_options}") - IF(outfile_opt) - STRING(REPLACE "--output=" "" outfile "${outfile_opt}") - ENDIF(outfile_opt) - #STRING(REGEX REPLACE "--output=[^;]*;?" "" rc_options "${rc_options}") - #STRING(REGEX REPLACE ";$" "" rc_options "${rc_options}") - - IF(NOT IS_ABSOLUTE "${outfile}") - SET(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}") - ENDIF(NOT IS_ABSOLUTE "${outfile}") - ADD_CUSTOM_COMMAND( - OUTPUT "${outfile}" - COMMAND ${wxWidgets_wxrc_EXECUTABLE} ${rc_options} ${rc_file_list_abs} - DEPENDS ${rc_file_list_abs} ${rc_depends} - ) - - # Add generated header to output file list. - LIST(FIND rc_options -e short_index) - LIST(FIND rc_options --extra-cpp-code long_index) - IF(NOT short_index EQUAL -1 OR NOT long_index EQUAL -1) - GET_FILENAME_COMPONENT(outfile_ext ${outfile} EXT) - STRING(REPLACE "${outfile_ext}" ".h" outfile_header "${outfile}") - LIST(APPEND ${_outfiles} "${outfile_header}") - SET_SOURCE_FILES_PROPERTIES( - "${outfile_header}" PROPERTIES GENERATED TRUE - ) - ENDIF(NOT short_index EQUAL -1 OR NOT long_index EQUAL -1) - - # Add generated file to output file list. - LIST(APPEND ${_outfiles} "${outfile}") - - SET(${_outfiles} ${${_outfiles}} PARENT_SCOPE) -ENDFUNCTION(WXWIDGETS_ADD_RESOURCES) diff --git a/mk/cmake/Modules/ReqVersAndStaticConf.cmake b/mk/cmake/Modules/ReqVersAndStaticConf.cmake new file mode 100644 index 000000000..ae730264e --- /dev/null +++ b/mk/cmake/Modules/ReqVersAndStaticConf.cmake @@ -0,0 +1,76 @@ +# +# Required Versions And Static Config +# +# Things related with "Static build" and optional versioning. +# +# By assumption in general all should be done in the way that the default dynamic +# compilation should work even without this file. +# + +IF(WANT_STATIC_LIBS) + IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST) + # shared lib + FOREACH(STATIC_LIB + OpenSSL + CURL + XercesC + LUA + JPEG + PNG + FontConfig + FTGL + GLEW + FriBiDi + Miniupnpc + Ircclient) + LIST(APPEND LIST_OF_STATIC_LIBS_MG "${STATIC_LIB}") + ENDFOREACH() + ENDIF() + IF(BUILD_MEGAGLEST) + # only libs not used by shared lib + FOREACH(STATIC_LIB + OGG) + LIST(APPEND LIST_OF_STATIC_LIBS_MG "${STATIC_LIB}") + ENDFOREACH() + ENDIF() + FOREACH(STATIC_LIB ${LIST_OF_STATIC_LIBS_MG}) + IF(DEFINED WANT_USE_${STATIC_LIB} AND NOT WANT_USE_${STATIC_LIB}) + IF(DEFINED STATIC_${STATIC_LIB}) + UNSET(STATIC_${STATIC_LIB} CACHE) + ENDIF() + ELSE() + OPTION("STATIC_${STATIC_LIB}" "Set to ON to link your project with static library (instead of DLL)." ON) + ENDIF() + ENDFOREACH() +ENDIF() + +IF(STATIC_OpenSSL) + SET(OPENSSL_USE_STATIC_LIBS ON) +ENDIF() + +IF(STATIC_CURL AND UNIX) + ADD_DEFINITIONS("-DCURL_STATICLIB") +ENDIF() +SET(CURL_MIN_VERSION_MG "7.16.4") + +IF(NOT DEFINED FORCE_LUA_VERSION) + SET(FORCE_LUA_VERSION "OFF" CACHE STRING "Try to force some specific lua version (for example older). On the list may be also not existing versions yet for future use." FORCE) +ENDIF() +SET_PROPERTY(CACHE FORCE_LUA_VERSION PROPERTY STRINGS OFF 5.5 5.4 5.3 5.2 5.1 5.0) +SET(ALL_LUA_VERSIONS_IN_ORDER 5.3 5.2 5.1 5.4 5.5 5.0) + +IF(STATIC_JPEG) + SET(JPEG_NAMES jpeg.a libjpeg.a ${JPEG_NAMES}) +ENDIF() + +IF(STATIC_PNG) + list(APPEND PNG_NAMES png.a libpng.a) + set(_PNG_VERSION_SUFFIXES 17 16 15 14 12 18 19 20 21 22) + foreach(v IN LISTS _PNG_VERSION_SUFFIXES) + list(APPEND PNG_NAMES png${v}.a libpng${v}.a) + list(APPEND PNG_NAMES_DEBUG png${v}d.a libpng${v}d.a) + endforeach() + unset(_PNG_VERSION_SUFFIXES) +ENDIF() + +SET(VLC_MIN_VERSION_MG "1.1.0") diff --git a/mk/linux/build-mg.sh b/mk/linux/build-mg.sh index 9ca41af6b..4a6bfc78c 100755 --- a/mk/linux/build-mg.sh +++ b/mk/linux/build-mg.sh @@ -19,58 +19,59 @@ CMAKE_ONLY=0 MAKE_ONLY=0 CLANG_FORCED=0 WANT_STATIC_LIBS="-DWANT_STATIC_LIBS=ON" -FORCE_EMBEDDED_LIBS="-DFORCE_EMBEDDED_LIBS=OFF" +FORCE_EMBEDDED_LIBS=0 LUA_FORCED_VERSION=0 FORCE_32BIT_CROSS_COMPILE=0 +BUILD_MEGAGLEST_TESTS="ON" while getopts "c:defhl:mnx" option; do case "${option}" in - c) + c) CPU_COUNT=${OPTARG} # echo "${option} value: ${OPTARG}" ;; - d) + d) WANT_STATIC_LIBS="-DWANT_STATIC_LIBS=OFF" # echo "${option} value: ${OPTARG}" ;; - e) - FORCE_EMBEDDED_LIBS="-DFORCE_EMBEDDED_LIBS=ON" + e) + FORCE_EMBEDDED_LIBS=1 # echo "${option} value: ${OPTARG}" ;; - f) + f) CLANG_FORCED=1 # echo "${option} value: ${OPTARG}" ;; - h) + h) echo "Usage: $0