From 02215b0386fa530f3d0f7204cb1cff2ed07df66c Mon Sep 17 00:00:00 2001 From: asarium Date: Mon, 21 Mar 2016 11:16:06 +0100 Subject: [PATCH 1/4] Add install rules for a desktop file --- CMakeLists.txt | 2 +- cmake/wxLauncherInstaller.cmake | 21 ++++++++++++++++++--- platform/freedesktop/wxLauncher.desktop.in | 9 +++++++++ resources/wxlauncher.png | Bin 0 -> 40069 bytes 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 platform/freedesktop/wxLauncher.desktop.in create mode 100644 resources/wxlauncher.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 056d448..87c1750 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,7 +119,7 @@ else(DEVELOPMENT_MODE) elseif(IS_APPLE) set(RESOURCES_PATH wxlauncher.app/Contents/Resources) else() - set(RESOURCES_PATH /usr/local/share/wxlauncher/) + set(RESOURCES_PATH ${CMAKE_INSTALL_PREFIX}/share/wxlauncher/) endif() endif() set(HELP_HTB_LOCATION ${RESOURCES_PATH}/onlinehelp.htb) diff --git a/cmake/wxLauncherInstaller.cmake b/cmake/wxLauncherInstaller.cmake index a53af8f..a0fe6d4 100644 --- a/cmake/wxLauncherInstaller.cmake +++ b/cmake/wxLauncherInstaller.cmake @@ -71,7 +71,7 @@ if(IS_APPLE) # set(MACOSX_BUNDLE_LONG_VERSION_STRING "wxLauncher for the SCP, version ${MACOSX_BUNDLE_SHORT_VERSION_STRING}") set(MACOSX_BUNDLE_ICON_FILE wxlauncher.icns) set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}) - set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2009-2015 ${CPACK_PACKAGE_VENDOR}") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2009-2015 ${CPACK_PACKAGE_VENDOR}") endif(IS_APPLE) if(IS_LINUX) @@ -144,6 +144,21 @@ elseif(IS_APPLE) install(FILES ${PROJECT_SOURCE_DIR}/GPLv2.txt DESTINATION .) # add_custom_target(RemoveAppsLink ALL ${PROJECT_SOURCE_DIR}/platform/macosx/removeAppsLink.sh "${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages/Darwin/DragNDrop/wxlauncher-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" VERBATIM) # attempt to remove link to Applications folder, will keep this as placeholder until I come up with a better idea -- maybe a postinstall script to delete the generated DMG, remove the Applications link, then create a new DMG with hdiutil? else() - install(DIRECTORY resources/ DESTINATION ${RESOURCES_PATH}) - install(FILES ${helphtblocation} DESTINATION ${RESOURCES_PATH}) + if (${CMAKE_VERSION} VERSION_EQUAL 3.0 OR ${CMAKE_VERSION} VERSION_GREATER 3.0) + install(DIRECTORY resources/ DESTINATION ${RESOURCES_PATH}) + install(FILES ${helphtblocation} DESTINATION ${RESOURCES_PATH}) + + # Assume a freedesktop environment + set(WXLAUNCHER_FILE ${CMAKE_INSTALL_PREFIX}/bin/$) + configure_file("${PROJECT_SOURCE_DIR}/platform/freedesktop/wxLauncher.desktop.in" "${CMAKE_BINARY_DIR}/platform/freedesktop/wxlauncher.desktop") + + file(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/platform/freedesktop/wxlauncher.desktop-$" + INPUT "${CMAKE_BINARY_DIR}/platform/freedesktop/wxlauncher.desktop") + + install(FILES "${CMAKE_BINARY_DIR}/platform/freedesktop/wxlauncher.desktop-$" + DESTINATION share/applications + RENAME wxlauncher.desktop) + else() + message(STATUS "The CMake version is too old to support desktop file generation. CMake 3.0 or newer required") + endif() endif() diff --git a/platform/freedesktop/wxLauncher.desktop.in b/platform/freedesktop/wxLauncher.desktop.in new file mode 100644 index 0000000..f26981a --- /dev/null +++ b/platform/freedesktop/wxLauncher.desktop.in @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=wxLauncher +Comment=A wxWidgets based launcher for FreeSpace Open +Exec=@WXLAUNCHER_FILE@ +Icon=@RESOURCES_PATH@wxlauncher.png +Terminal=false +Type=Application +Categories=Utility;Application; \ No newline at end of file diff --git a/resources/wxlauncher.png b/resources/wxlauncher.png new file mode 100644 index 0000000000000000000000000000000000000000..61a947b16a2d9b2442eb9903099d829b6d37cd39 GIT binary patch literal 40069 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 ZwDbMn0b8>gws!ymZFK{+N|je1{s&9WZ} Date: Mon, 21 Mar 2016 15:09:06 +0100 Subject: [PATCH 2/4] Don't hide resource installing behind CMake version check --- cmake/wxLauncherInstaller.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmake/wxLauncherInstaller.cmake b/cmake/wxLauncherInstaller.cmake index a0fe6d4..b8e0a2e 100644 --- a/cmake/wxLauncherInstaller.cmake +++ b/cmake/wxLauncherInstaller.cmake @@ -144,10 +144,9 @@ elseif(IS_APPLE) install(FILES ${PROJECT_SOURCE_DIR}/GPLv2.txt DESTINATION .) # add_custom_target(RemoveAppsLink ALL ${PROJECT_SOURCE_DIR}/platform/macosx/removeAppsLink.sh "${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages/Darwin/DragNDrop/wxlauncher-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" VERBATIM) # attempt to remove link to Applications folder, will keep this as placeholder until I come up with a better idea -- maybe a postinstall script to delete the generated DMG, remove the Applications link, then create a new DMG with hdiutil? else() + install(DIRECTORY resources/ DESTINATION ${RESOURCES_PATH}) + install(FILES ${helphtblocation} DESTINATION ${RESOURCES_PATH}) if (${CMAKE_VERSION} VERSION_EQUAL 3.0 OR ${CMAKE_VERSION} VERSION_GREATER 3.0) - install(DIRECTORY resources/ DESTINATION ${RESOURCES_PATH}) - install(FILES ${helphtblocation} DESTINATION ${RESOURCES_PATH}) - # Assume a freedesktop environment set(WXLAUNCHER_FILE ${CMAKE_INSTALL_PREFIX}/bin/$) configure_file("${PROJECT_SOURCE_DIR}/platform/freedesktop/wxLauncher.desktop.in" "${CMAKE_BINARY_DIR}/platform/freedesktop/wxlauncher.desktop") From dfb1e24a25ecebf8dcde8d9f3990df9b23b9b871 Mon Sep 17 00:00:00 2001 From: rtoijala Date: Mon, 22 Aug 2016 06:09:20 +0300 Subject: [PATCH 3/4] Fix first run on Linux (#146) wxLauncher failed to start the game because MigrateOldConfig failed. When no new config was present, it assumed that the old config must be copied over to the new location. On the first run, there was no old config, so MigrateOldConfig failed and returned false, meaning the game was not started. First check for the existance of the old config file and only try to copy it if exists. --- code/global/Compatibility.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/global/Compatibility.cpp b/code/global/Compatibility.cpp index c819c43..67a5415 100644 --- a/code/global/Compatibility.cpp +++ b/code/global/Compatibility.cpp @@ -237,6 +237,11 @@ namespace Compatibility wxFileName oldName = GetPlatformDefaultConfigFilePathOld(); oldName.SetFullName(FSO_CONFIG_FILENAME); + if (!wxFile::Exists(oldName.GetFullPath())) { + // Old file does not exist, probably first run. + return true; + } + if (!wxCopyFile(oldName.GetFullPath(), newName.GetFullPath())) { wxLogError(_T("Failed to copy old configuration file to new location!")); return false; From 95130ca45a922e378834dde883fcfe293022c835 Mon Sep 17 00:00:00 2001 From: m!m Date: Mon, 22 Aug 2016 05:13:43 +0200 Subject: [PATCH 4/4] Add matrix for different wxWidgets versions (#137) --- .travis.yml | 24 ++++++++++++++++++++++-- CMakeLists.txt | 4 ++++ ci/travis/before_script.sh | 2 +- ci/travis/install.sh | 7 ++++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 17500f1..19fcefc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,17 +5,25 @@ addons: packages: - build-essential - cmake - - libwxgtk2.8-dev - - libwxgtk3.0-dev - libopenal-dev matrix: include: - os: linux compiler: gcc + env: CONFIGURATION="Debug" wxWidgets_ver=2.8 + - os: linux + compiler: gcc + env: CONFIGURATION="Debug" wxWidgets_ver=3.0 + + - os: linux + compiler: clang env: CONFIGURATION="Debug" + env: CONFIGURATION="Debug" wxWidgets_ver=2.8 - os: linux compiler: clang env: CONFIGURATION="Debug" + env: CONFIGURATION="Debug" wxWidgets_ver=3.0 + - os: osx compiler: clang env: CONFIGURATION="Debug" @@ -23,9 +31,21 @@ matrix: - os: linux compiler: gcc env: CONFIGURATION="Release" + env: CONFIGURATION="Debug" wxWidgets_ver=2.8 + - os: linux + compiler: gcc + env: CONFIGURATION="Release" + env: CONFIGURATION="Debug" wxWidgets_ver=3.0 + + - os: linux + compiler: clang + env: CONFIGURATION="Release" + env: CONFIGURATION="Debug" wxWidgets_ver=2.8 - os: linux compiler: clang env: CONFIGURATION="Release" + env: CONFIGURATION="Debug" wxWidgets_ver=3.0 + - os: osx compiler: clang env: CONFIGURATION="Release" diff --git a/CMakeLists.txt b/CMakeLists.txt index 056d448..2b94300 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -340,6 +340,10 @@ add_executable(wxlauncher WIN32 MACOSX_BUNDLE ${RESOURCE_FILES} ${CODE_FILES} ) +if (COMMAND target_compile_features) + target_compile_features(wxlauncher PRIVATE cxx_auto_type) # Enable C++11 because it is required for wxWidgets 3.0 +endif() + set_target_properties(wxlauncher PROPERTIES LINKER_LANGUAGE CXX POSITION_INDEPENDENT_CODE ON) diff --git a/ci/travis/before_script.sh b/ci/travis/before_script.sh index b0ab08f..dd7b6b2 100755 --- a/ci/travis/before_script.sh +++ b/ci/travis/before_script.sh @@ -6,7 +6,7 @@ mkdir -p travis-build cd travis-build if [ "$TRAVIS_OS_NAME" = "linux" ]; then - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$CONFIGURATION .. + $HOME/cmake/bin/cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$CONFIGURATION .. elif [ "$TRAVIS_OS_NAME" = "osx" ]; then cmake -G "Xcode" -DUSING_SDL_FRAMEWORK=OFF .. fi diff --git a/ci/travis/install.sh b/ci/travis/install.sh index 7f3bd00..15807b4 100755 --- a/ci/travis/install.sh +++ b/ci/travis/install.sh @@ -3,7 +3,12 @@ set -e if [ "$TRAVIS_OS_NAME" = "linux" ]; then - sudo apt-get install -y ninja-build libsdl2-dev + sudo apt-get install -y ninja-build libsdl2-dev libwxgtk$wxWidgets_ver-dev + + mkdir -p $HOME/cmake/ + + wget -O /tmp/cmake.tar.gz --no-check-certificate http://www.cmake.org/files/v3.4/cmake-3.4.3-Linux-x86_64.tar.gz + tar -xzf /tmp/cmake.tar.gz -C $HOME/cmake/ --strip-components=1 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then gem install xcpretty xcpretty-travis-formatter