From 966da324724764157bece9733c8355a67054c351 Mon Sep 17 00:00:00 2001 From: filux Date: Mon, 23 Feb 2015 20:19:49 +0100 Subject: [PATCH] better support for macos, this also closes #36 --- CMakeLists.txt | 53 +++++++++++----- mk/macosx/CMakeLists.txt | 85 +++++++++---------------- source/g3d_viewer/CMakeLists.txt | 39 ++++++++---- source/glest_game/CMakeLists.txt | 87 +++++++++++++++++--------- source/glest_map_editor/CMakeLists.txt | 38 +++++++---- source/tests/CMakeLists.txt | 40 ++++++------ 6 files changed, 196 insertions(+), 146 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32ce6c0a0..552f2aa20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,7 @@ 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) FIND_PROGRAM(HELP2MAN "help2man") @@ -77,7 +78,6 @@ MESSAGE(STATUS "Detected MegaGlest Version is [v${MEGAGLEST_VERSION}] ") ## Compiler flags, CPACK configuration and other Apple specific code. IF(APPLE) - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") include(${PROJECT_SOURCE_DIR}/mk/macosx/CMakeLists.txt) ENDIF(APPLE) @@ -247,7 +247,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) MESSAGE(STATUS "Using GIT revision stamp: [${GIT_COMMIT_COUNT}.${GIT_SHA1}] CMD [${GIT_LIVE_REV_CMD}]") IF(CMAKE_GENERATOR STREQUAL Xcode) - SET(GIT_VERSION_CMD "-DGITVERSION='\\\\'${GIT_LIVE_REV_CMD}\\\\''") + SET(GIT_VERSION_CMD "-DGITVERSION='\\\\'${GIT_COMMIT_COUNT}.${GIT_SHA1}\\\\''") ELSE() SET(GIT_VERSION_CMD "-DGITVERSION='\\\"${GIT_LIVE_REV_CMD}\\\"'") ENDIF() @@ -257,30 +257,51 @@ 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) + 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) - SET(MEGAGLEST_BIN_INSTALL_PATH "bin/" CACHE STRING "The installation path for binaries (this is appended to the CMAKE_INSTALL_PREFIX)") + 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() ENDIF() IF(NOT MEGAGLEST_DATA_INSTALL_PATH) - SET(MEGAGLEST_DATA_INSTALL_PATH "share/megaglest/" CACHE STRING "The installation path for data files (this is appended to the CMAKE_INSTALL_PREFIX)") + 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() ENDIF() IF(NOT MEGAGLEST_DESKTOP_INSTALL_PATH) - SET(MEGAGLEST_DESKTOP_INSTALL_PATH "share/applications/" CACHE STRING "The installation path for desktop files (this is appended to the CMAKE_INSTALL_PREFIX)") + 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() ENDIF() IF(NOT MEGAGLEST_ICON_INSTALL_PATH) - SET(MEGAGLEST_ICON_INSTALL_PATH "share/pixmaps/" CACHE STRING "The installation path for icon files (this is appended to the CMAKE_INSTALL_PREFIX)") + 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() ENDIF() - IF(NOT MEGAGLEST_MANPAGE_INSTALL_PATH) - SET(MEGAGLEST_MANPAGE_INSTALL_PATH "share/man/man6/" CACHE STRING "The installation path for manpage files (this is appended to the CMAKE_INSTALL_PREFIX)") + 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() + ENDIF() + IF(NOT CUSTOM_DATA_INSTALL_PATH AND NOT 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() - IF(NOT CUSTOM_DATA_INSTALL_PATH) - 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)") - ENDIF() - SET(CUSTOM_DATA_INSTALL_PATH_VALUE "-DCUSTOM_DATA_INSTALL_PATH=${CUSTOM_DATA_INSTALL_PATH}") - - SET(PKG_DATADIR ${CUSTOM_DATA_INSTALL_PATH_VALUE}) - SET(PKG_BINDIR ${MEGAGLEST_BIN_INSTALL_PATH}) - + SET(PKG_DATADIR ${CUSTOM_DATA_INSTALL_PATH_VALUE}) + SET(PKG_BINDIR ${MEGAGLEST_BIN_INSTALL_PATH}) MESSAGE(STATUS "*NOTE: Custom Data Install Path is [${CUSTOM_DATA_INSTALL_PATH}]") ENDIF() diff --git a/mk/macosx/CMakeLists.txt b/mk/macosx/CMakeLists.txt index 8c1ad4eb0..c37eb16ab 100644 --- a/mk/macosx/CMakeLists.txt +++ b/mk/macosx/CMakeLists.txt @@ -1,91 +1,64 @@ -# Set defaults for Universal Binaries. We want 32-bit Intel/PPC on 10.4 -# and 32/64-bit Intel/PPC on >= 10.5. Anything <= 10.3 doesn't support. -# These are just defaults/recommendations, but how we want to build -# out of the box. But the user needs to be able to change these options. +# Anything <= 10.3 isn't supported. We want 32-bit Intel/PPC on 10.4, 10.5. +# On 10.6 32/64-bit Intel. On >= 10.7 unset architecture mean default 64-bit Intel. +# Using oldest available sdk with current Xcode is recommended. +# User needs to be able to change these options. # So we must only set the values the first time CMake is run, or we # will overwrite any changes the user sets. # FORCE is used because the options are not reflected in the UI otherwise. # Seems like a good place to add version specific compiler flags too. + IF(NOT CONFIG_HAS_BEEN_RUN_BEFORE) - IF(EXISTS /Developer/SDKs/MacOSX10.6.sdk) - SET(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Build architectures for OSX" FORCE) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.6 -ftree-vectorize -fvisibility-inlines-hidden" CACHE STRING "Flags used by the compiler during all build types." FORCE) - - ELSEIF(EXISTS /Developer/SDKs/MacOSX10.5.sdk) - # 64-bit compiles are not supported with Carbon. We should enable - # 64-bit compilation by default once osgviewer has been - # rewritten with Cocoa. - #SET(CMAKE_OSX_ARCHITECTURES "ppc;i386;ppc64;x86_64" CACHE STRING "Build architectures for OSX" FORCE) - SET(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Build architectures for OSX" FORCE) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.5 -ftree-vectorize -fvisibility-inlines-hidden" CACHE STRING "Flags used by the compiler during all build types." FORCE) - ELSE() - # No Universal Binary support - # Should break down further to set the -mmacosx-version-min, - # but the SDK detection is too unreliable here. + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden") ENDIF() + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftree-vectorize" CACHE STRING "Flags used by the compiler during all build types." FORCE) ENDIF(NOT CONFIG_HAS_BEEN_RUN_BEFORE) +# don't try to be too much "modern" +ADD_DEFINITIONS(-Wno-deprecated -Wno-deprecated-declarations) + # Include extra paths to search for includes; this is the default system wide macports path. INCLUDE_DIRECTORIES(/opt/local/include) LINK_DIRECTORIES(/opt/local/lib) -# Set custom data path as macos apps don't use /local/ -SET(CUSTOM_DATA_INSTALL_PATH "/Applications/MegaGlest.app/Contents/Resources/share/megaglest/") - ##install part # This file is in git CRLF but that causes the cpack run to fail -EXECUTE_PROCESS(COMMAND dos2unix -k docs/COPYRIGHT.source_code.txt WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/docs/COPYRIGHT.source_code.txt" + "${CMAKE_CURRENT_BINARY_DIR}/docs/COPYRIGHT.source_code.txt" NEWLINE_STYLE UNIX) +SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/docs/COPYRIGHT.source_code.txt") # This changes Info.plist from something with variables and CMakeisms to # something that can be installed on disk. -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/Info.plist" - "${CMAKE_CURRENT_BINARY_DIR}/Info.plist") +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/bundle_resources/Info.plist.in" + "${CMAKE_CURRENT_BINARY_DIR}/mk/macosx/bundle_resources/Info.plist") +SET(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/mk/macosx/bundle_resources/Info.plist") include (InstallRequiredSystemLibraries) # Use bundle generator (OSX has 3 other options if you feel adventurous) -set (CPACK_GENERATOR "Bundle") - -# The following CPACK_* options are all required -set (CPACK_PACKAGE_FILE_NAME MegaGlest-${VER_MAJOR}.${VER_MINOR}.${VER_RELEASE}) -set (CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/MegaGlest.icns") - -set (CPACK_RESOURCE_FILE_LICENSE - "${CMAKE_CURRENT_SOURCE_DIR}/docs/COPYRIGHT.source_code.txt") -set (CPACK_BUNDLE_NAME "MegaGlest") - -# This variable changs depending on the build type -IF(CMAKE_GENERATOR STREQUAL Xcode) - IF(CMAKE_BUILD_TYPE STREQUAL Release) - set (CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/source/glest_game/Release/megaglest") - ELSEIF(CMAKE_BUILD_TYPE STREQUAL Debug) - set (CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/source/glest_game/Debug/megaglest") - ENDIF() -ELSE() -# Assume gnumake - set (CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/source/glest_game/megaglest") -ENDIF() - - -set (CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/MegaGlest.icns") -set (CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist") +SET(CPACK_GENERATOR "Bundle") +SET(CPACK_BUNDLE_NAME "MegaGlest") +SET(CPACK_PACKAGE_FILE_NAME "MegaGlest-game-macos-${MEGAGLEST_VERSION}") +SET(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/bundle_resources/MegaGlest.icns") +SET(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/bundle_resources/MegaGlest.icns") +SET(CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/mk/macosx/bundle_resources/MegaGlest.sh") # Install files in to the package (FIXME: how? we sure?) -INSTALL(FILES +INSTALL(FILES ${LUA_LIBRARIES} - DESTINATION ../Frameworks + DESTINATION ../Frameworks ) #the SDL_LIBRARY is seen as a framework thus we need to remove the suffix... STRING(REGEX REPLACE ";.*" "" SDL_LIBRARY_DIR "${SDL_LIBRARY}") -#INSTALL(DIRECTORY +#INSTALL(DIRECTORY # ${OGG_LIBRARY} # ${XERCESC_LIBRARY} # ${VORBIS_LIBRARY} # ${SDL_LIBRARY_DIR} # ${PNG_LIBRARY} - # DESTINATION ../Frameworks - # ) - +# DESTINATION ../Frameworks +# ) diff --git a/source/g3d_viewer/CMakeLists.txt b/source/g3d_viewer/CMakeLists.txt index b9fab2bf4..9e3cd5c13 100644 --- a/source/g3d_viewer/CMakeLists.txt +++ b/source/g3d_viewer/CMakeLists.txt @@ -6,6 +6,10 @@ SET(TARGET_NAME_MANPAGE "${TARGET_NAME}.6") IF(BUILD_MEGAGLEST_MODEL_VIEWER) MESSAGE(STATUS "Will try to build MegaGlest model viewer") + + IF(UNIX AND APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + ADD_DEFINITIONS("-std=c++11") + ENDIF() FIND_PACKAGE(SDL REQUIRED) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) @@ -128,13 +132,15 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER) ENDFOREACH(DIR) OPTION(WANT_DEV_OUTPATH "use developer friendly output paths" OFF) - IF(WANT_DEV_OUTPATH) - IF(UNIX AND NOT APPLE) - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) - ELSE() - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) - ENDIF() - ENDIF() + IF(WANT_DEV_OUTPATH) + IF(UNIX AND NOT APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) + ELSEIF(UNIX AND APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/macosx/) + ELSE() + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) + ENDIF() + ENDIF() SET(HELP2MAN_OUT_PATH ${EXECUTABLE_OUTPUT_PATH}) IF("${EXECUTABLE_OUTPUT_PATH}" STREQUAL "") @@ -199,12 +205,21 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER) "${PROJECT_SOURCE_DIR}/mk/shared/g3dviewer.ico" DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) - # Installation of the program desktop file - SET(MG_DESKTOP_FILE ${PROJECT_SOURCE_DIR}/mk/linux/megaglest_g3dviewer.desktop) + IF(UNIX AND NOT APPLE) + # Installation of the program desktop file + SET(MG_DESKTOP_FILE ${PROJECT_SOURCE_DIR}/mk/linux/megaglest_g3dviewer.desktop) - INSTALL(FILES - "${MG_DESKTOP_FILE}" - DESTINATION ${MEGAGLEST_DESKTOP_INSTALL_PATH}) + INSTALL(FILES + "${MG_DESKTOP_FILE}" + DESTINATION ${MEGAGLEST_DESKTOP_INSTALL_PATH}) + + IF(NOT BUILD_MEGAGLEST) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.png" + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.xpm" + DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) + ENDIF() + ENDIF() ENDIF() ENDIF() diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index f8255048e..9b6025df8 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -217,13 +217,15 @@ IF(BUILD_MEGAGLEST) ENDIF() OPTION(WANT_DEV_OUTPATH "use developer friendly output paths" OFF) - IF(WANT_DEV_OUTPATH) - IF(UNIX AND NOT APPLE) - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) - ELSE() - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) - ENDIF() - ENDIF() + IF(WANT_DEV_OUTPATH) + IF(UNIX AND NOT APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) + ELSEIF(UNIX AND APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/macosx/) + ELSE() + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) + ENDIF() + ENDIF() MESSAGE(STATUS "***Note: The final output path for Megaglest Game will be [${EXECUTABLE_OUTPUT_PATH}]") @@ -299,17 +301,27 @@ IF(BUILD_MEGAGLEST) DESTINATION ${MEGAGLEST_MANPAGE_INSTALL_PATH}) ENDIF() - # rename the ini for installation + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/shared/glestkeys.ini" + "${PROJECT_SOURCE_DIR}/mk/shared/servers.ini" + DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) IF(WIN32) - INSTALL(FILES - "${PROJECT_SOURCE_DIR}/mk/windoze/glest.ini" - "${PROJECT_SOURCE_DIR}/mk/shared/glestkeys.ini" - DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) - ELSE() - INSTALL(FILES - "${PROJECT_SOURCE_DIR}/mk/linux/glest.ini" - "${PROJECT_SOURCE_DIR}/mk/shared/glestkeys.ini" - DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/windoze/glest.ini" + DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) + ELSEIF(UNIX AND NOT APPLE) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/linux/glest.ini" + DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) + ELSEIF(UNIX AND APPLE) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/macosx/glest.ini" + DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) + IF(SINGLE_INSTALL_DIRECTORY AND EXISTS "${PROJECT_SOURCE_DIR}/mk/macosx/p7zip/") + INSTALL(DIRECTORY + "${PROJECT_SOURCE_DIR}/mk/macosx/p7zip" + DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) + ENDIF() ENDIF() # Installation of data files from outside normal data folder @@ -319,19 +331,32 @@ IF(BUILD_MEGAGLEST) #MESSAGE(STATUS "**Source package detected git folder structure.") - # Installation of the program desktop file - INSTALL(FILES - "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.desktop" - DESTINATION ${MEGAGLEST_DESKTOP_INSTALL_PATH}) + IF(NOT APPLE) + # Installation of the program desktop file + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.desktop" + DESTINATION ${MEGAGLEST_DESKTOP_INSTALL_PATH}) + ENDIF() - # Installation of the program desktop icon file - INSTALL(FILES - "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.png" - "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.xpm" - "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.bmp" - "${PROJECT_SOURCE_DIR}/mk/shared/editor.ico" - "${PROJECT_SOURCE_DIR}/mk/shared/glest.ico" - "${PROJECT_SOURCE_DIR}/mk/shared/g3dviewer.ico" - DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) - ENDIF() + # Installation of the program desktop icon file + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/shared/megaglest.ico" + DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) + IF(UNIX AND NOT APPLE) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.png" + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.xpm" + DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) + ELSEIF(UNIX AND APPLE) + IF(NOT SINGLE_INSTALL_DIRECTORY) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/macosx/bundle_resources/MegaGlest.icns" + DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) + ENDIF() + ELSE() + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.bmp" + DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) + ENDIF() + ENDIF() ENDIF() diff --git a/source/glest_map_editor/CMakeLists.txt b/source/glest_map_editor/CMakeLists.txt index 0651be77b..0afc54b98 100644 --- a/source/glest_map_editor/CMakeLists.txt +++ b/source/glest_map_editor/CMakeLists.txt @@ -6,6 +6,10 @@ SET(TARGET_NAME_MANPAGE "${TARGET_NAME}.6") IF(BUILD_MEGAGLEST_MAP_EDITOR) MESSAGE(STATUS "Will try to build MegaGlest map editor") + + IF(UNIX AND APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + ADD_DEFINITIONS("-std=c++11") + ENDIF() FIND_PACKAGE(SDL REQUIRED) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) @@ -112,13 +116,15 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) ENDFOREACH(DIR) OPTION(WANT_DEV_OUTPATH "use developer friendly output paths" OFF) - IF(WANT_DEV_OUTPATH) - IF(UNIX AND NOT APPLE) - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) - ELSE() - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) - ENDIF() - ENDIF() + IF(WANT_DEV_OUTPATH) + IF(UNIX AND NOT APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) + ELSEIF(UNIX AND APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/macosx/) + ELSE() + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) + ENDIF() + ENDIF() SET(HELP2MAN_OUT_PATH ${EXECUTABLE_OUTPUT_PATH}) IF("${EXECUTABLE_OUTPUT_PATH}" STREQUAL "") @@ -193,12 +199,20 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) "${PROJECT_SOURCE_DIR}/mk/shared/editor.ico" DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) - # Installation of the program desktop file - SET(MG_DESKTOP_FILE ${PROJECT_SOURCE_DIR}/mk/linux/megaglest_editor.desktop) + IF(UNIX AND NOT APPLE) + # Installation of the program desktop file + SET(MG_DESKTOP_FILE ${PROJECT_SOURCE_DIR}/mk/linux/megaglest_editor.desktop) - INSTALL(FILES - "${MG_DESKTOP_FILE}" - DESTINATION ${MEGAGLEST_DESKTOP_INSTALL_PATH}) + INSTALL(FILES + "${MG_DESKTOP_FILE}" + DESTINATION ${MEGAGLEST_DESKTOP_INSTALL_PATH}) + IF(NOT BUILD_MEGAGLEST) + INSTALL(FILES + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.png" + "${PROJECT_SOURCE_DIR}/mk/linux/megaglest.xpm" + DESTINATION ${MEGAGLEST_ICON_INSTALL_PATH}) + ENDIF() + ENDIF() ENDIF() ENDIF() diff --git a/source/tests/CMakeLists.txt b/source/tests/CMakeLists.txt index 925c4c546..1cd843dd3 100644 --- a/source/tests/CMakeLists.txt +++ b/source/tests/CMakeLists.txt @@ -140,13 +140,15 @@ IF(BUILD_MEGAGLEST_TESTS) SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1) OPTION(WANT_DEV_OUTPATH "use developer friendly output paths" OFF) - IF(WANT_DEV_OUTPATH) - IF(UNIX AND NOT APPLE) - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) - ELSE() - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) - ENDIF() - ENDIF() + IF(WANT_DEV_OUTPATH) + IF(UNIX AND NOT APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/) + ELSEIF(UNIX AND APPLE) + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/macosx/) + ELSE() + SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/) + ENDIF() + ENDIF() MESSAGE(STATUS "EXTERNAL_LIBS = [${EXTERNAL_LIBS}]") @@ -164,19 +166,19 @@ IF(BUILD_MEGAGLEST_TESTS) ENDIF() TARGET_LINK_LIBRARIES(${TARGET_NAME} ${EXTERNAL_LIBS}) + IF(NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") + # Run the unit tests after build + IF(EXISTS ${XVFB_EXEC}) + MESSAGE("***-- Found xvfb-run: ${XVFB_EXEC} will run tests with it.") - # Run the unit tests after build - IF(EXISTS ${XVFB_EXEC}) - MESSAGE("***-- Found xvfb-run: ${XVFB_EXEC} will run tests with it.") - - add_custom_command(TARGET ${TARGET_NAME} POST_BUILD - COMMAND ${XVFB_EXEC} --auto-servernum --server-num=770 ${EXECUTABLE_OUTPUT_PATH}${TARGET_NAME} - COMMENT "***-- Found megaglest test runner: ${TARGET_NAME} about to run unit tests via xvfb...") - - ELSE() - add_custom_command(TARGET ${TARGET_NAME} POST_BUILD - COMMAND ${EXECUTABLE_OUTPUT_PATH}${TARGET_NAME} - COMMENT "***-- Found megaglest test runner: ${TARGET_NAME} about to run unit tests...") + add_custom_command(TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${XVFB_EXEC} --auto-servernum --server-num=770 ${EXECUTABLE_OUTPUT_PATH}${TARGET_NAME} + COMMENT "***-- Found megaglest test runner: ${TARGET_NAME} about to run unit tests via xvfb...") + ELSE() + add_custom_command(TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${EXECUTABLE_OUTPUT_PATH}${TARGET_NAME} + COMMENT "***-- Found megaglest test runner: ${TARGET_NAME} about to run unit tests...") + ENDIF() ENDIF() ENDIF()