# HG changeset patch # User koda # Date 1290905888 -3600 # Node ID 006133b13b327f7414d7be543a67d5635ce90320 # Parent c279aeb615dfc34b006471d9e7b1cce472260a25 update build files for compliance with Mac AppStore diff -r c279aeb615df -r 006133b13b32 CMakeLists.txt --- a/CMakeLists.txt Sun Nov 14 20:37:55 2010 +0100 +++ b/CMakeLists.txt Sun Nov 28 01:58:08 2010 +0100 @@ -4,38 +4,34 @@ cmake_policy(SET CMP0003 NEW) IF(POLICY CMP0012) - cmake_policy(SET CMP0012 NEW) + cmake_policy(SET CMP0012 NEW) ENDIF() -#detect subversion revision (if present) -#set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME +#detect Mercurial revision (if present) +set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME IF(version_suffix MATCHES "-dev") - set(HW_DEV true) - IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg) - FIND_PROGRAM(HGCOMMAND hg) - IF(HGCOMMAND) - exec_program(${HGCOMMAND} - ARGS identify -in ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE version_suffix - ) - STRING(REGEX REPLACE "(.*) +(.*)" "\\2:\\1" version_suffix ${version_suffix}) - MESSAGE(STATUS "Building revision ${version_suffix}") - set(version_suffix ".${version_suffix}") -# #truncate to numbers only - trying to fix a problem described in http://www.hedgewars.org/node/2019 -# STRING(REGEX REPLACE "^\\.(\\d+)" ".\\1" version_suffix ${version_suffix}) -# # screw whole suffix if there's no number -# STRING(REGEX REPLACE "^\\.([a-z]+.*)" "-dev" version_suffix ${version_suffix}) - ENDIF() - ENDIF() + set(HW_DEV true) + IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg) + FIND_PROGRAM(HGCOMMAND hg) + IF(HGCOMMAND) + exec_program(${HGCOMMAND} + ARGS identify -in ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE version_suffix + ) + STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) ([0-9]+)(.*)" "\\3:\\1" version_suffix ${version_suffix}) + MESSAGE(STATUS "Building revision ${version_suffix}") + set(version_suffix ".${version_suffix}") + ENDIF() + ENDIF() ELSE() - set(HW_DEV false) + set(HW_DEV false) ENDIF() set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules) set(CPACK_PACKAGE_VERSION_MAJOR "0") set(CPACK_PACKAGE_VERSION_MINOR "9") -set(CPACK_PACKAGE_VERSION_PATCH "14.1${version_suffix}") +set(CPACK_PACKAGE_VERSION_PATCH "15${version_suffix}") #forbid in-tree building #IF (${CMAKE_SOURCE_DIR} MATCHES ${CMAKE_BINARY_DIR}) @@ -46,80 +42,80 @@ #set some safe values IF(NOT WITH_SERVER) - SET(WITH_SERVER 0) + SET(WITH_SERVER 0) ENDIF(NOT WITH_SERVER) IF(NOT BUILD_ENGINE_LIBRARY) - SET(BUILD_ENGINE_LIBRARY 0) + SET(BUILD_ENGINE_LIBRARY 0) ENDIF(NOT BUILD_ENGINE_LIBRARY) if(APPLE) - set(CMAKE_FIND_FRAMEWORK "FIRST") + set(CMAKE_FIND_FRAMEWORK "FIRST") - #paths for creating the bundle - set(bundle_name Hedgewars.app) - set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/) - set(DATA_INSTALL_DIR "../Resources/") - set(target_dir ".") + #paths for creating the bundle + set(bundle_name Hedgewars.app) + set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/) + set(DATA_INSTALL_DIR "../Resources/") + set(target_dir ".") - #what system are we building for - set(minimum_macosx $ENV{MACOSX_DEPLOYMENT_TARGET}) + #what system are we building for + set(minimum_macosx $ENV{MACOSX_DEPLOYMENT_TARGET}) - #detect on which system are we - EXEC_PROGRAM("/usr/bin/sw_vers" OUTPUT_VARIABLE MACOSX_VERSION_TMP) - STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" MACOSX_VERSION_TMP "${MACOSX_VERSION_TMP}") - STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${MACOSX_VERSION_TMP}) + #detect on which system are we + EXEC_PROGRAM("/usr/bin/sw_vers" OUTPUT_VARIABLE MACOSX_VERSION_TMP) + STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" MACOSX_VERSION_TMP "${MACOSX_VERSION_TMP}") + STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${MACOSX_VERSION_TMP}) - if(NOT minimum_macosx) - #if nothing is set, we deploy only for the current system - set(minimum_macosx ${current_macosx_version}) - endif() + if(NOT minimum_macosx) + #if nothing is set, we deploy only for the current system + set(minimum_macosx ${current_macosx_version}) + endif() - if (minimum_macosx LESS "10.4") - set(FATAL "Hedgewars is not supported for pre-10.4 systems") - endif() + if (minimum_macosx LESS "10.4") + set(FATAL "Hedgewars is not supported for pre-10.4 systems") + endif() - set(CMAKE_OSX_ARCHITECTURES "i386;ppc7400") + set(CMAKE_OSX_ARCHITECTURES "i386;ppc7400") - #create universal binaries only when it's time to bundle the application, also build server - IF(BUNDLE) - set(WITH_SERVER true) - if(NOT minimum_macosx MATCHES "10.6") - set(CMAKE_C_COMPILER "gcc-4.0") - set(CMAKE_CXX_COMPILER "g++-4.0") - else() - if(current_macosx_version MATCHES "10.6") - set(CMAKE_OSX_ARCHITECTURES "x86_64") - endif() - endif() - ELSE() - if(current_macosx_version MATCHES "10.6") - set(CMAKE_OSX_ARCHITECTURES "x86_64") - endif() - ENDIF() + #create universal binaries only when it's time to bundle the application, also build server + IF(BUNDLE) + set(WITH_SERVER true) + if(NOT minimum_macosx MATCHES "10.6") + set(CMAKE_C_COMPILER "gcc-4.0") + set(CMAKE_CXX_COMPILER "g++-4.0") + else() + if(current_macosx_version MATCHES "10.6") + set(CMAKE_OSX_ARCHITECTURES "x86_64") + endif() + endif() + ELSE() + if(current_macosx_version MATCHES "10.6") + set(CMAKE_OSX_ARCHITECTURES "x86_64") + endif() + ENDIF() - message(STATUS "Target system: Mac OS X ${minimum_macosx} ${CMAKE_OSX_ARCHITECTURES}") + message(STATUS "Target system: Mac OS X ${minimum_macosx} ${CMAKE_OSX_ARCHITECTURES}") - if(minimum_macosx MATCHES "10.4") - set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/") - if(current_macosx_version MATCHES "10.4") - find_package(SDL_mixer REQUIRED) - set(pascal_compiler_flags_cmn "-k-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg" "-k-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod" ${pascal_compiler_flags_cmn}) - set(CMAKE_C_FLAGS "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg -dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod") - endif() - else() - set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${minimum_macosx}.sdk/") - endif() + if(minimum_macosx MATCHES "10.4") + set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/") + if(current_macosx_version MATCHES "10.4") + find_package(SDL_mixer REQUIRED) + set(pascal_compiler_flags_cmn "-k-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg" "-k-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod" ${pascal_compiler_flags_cmn}) + set(CMAKE_C_FLAGS "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg -dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod") + endif() + else() + set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${minimum_macosx}.sdk/") + endif() - #1.set deployment target; 2.link with libsdlmain.a (when building an executable); 3.link with liblua.a (which requires readline) - set(pascal_compiler_flags_cmn "-k-macosx_version_min" "-k${minimum_macosx}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_compiler_flags_cmn}) - if(NOT BUILD_ENGINE_LIBRARY) - set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/libSDLmain.a" ${pascal_compiler_flags_cmn}) - endif() - set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/liblua.a" "-k-lreadline" ${pascal_compiler_flags_cmn}) + #1.set deployment target; 2.link with libsdlmain.a (when building an executable); 3.link with liblua.a (which requires readline) + set(pascal_compiler_flags_cmn "-k-macosx_version_min" "-k${minimum_macosx}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_compiler_flags_cmn}) + if(NOT BUILD_ENGINE_LIBRARY) + set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/libSDLmain.a" ${pascal_compiler_flags_cmn}) + endif() + set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/liblua.a" "-k-lreadline" ${pascal_compiler_flags_cmn}) else(APPLE) - set(target_dir "bin") + set(target_dir "bin") endif(APPLE) @@ -128,16 +124,16 @@ # SET(CMAKE_BUILD_TYPE "Release") #ENDIF (NOT CMAKE_BUILD_TYPE) if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: None Debug Release." FORCE) + set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: None Debug Release." FORCE) endif (NOT CMAKE_BUILD_TYPE) if(CMAKE_BUILD_TYPE MATCHES RELEASE OR CMAKE_BUILD_TYPE MATCHES "Release") - message(STATUS "Building Release") - set(Optz true) + message(STATUS "Building Release") + set(Optz true) else() - message(STATUS "Building Debug") - #set(CMAKE_VERBOSE_MAKEFILE true) - set(Optz false) + message(STATUS "Building Debug") + #set(CMAKE_VERBOSE_MAKEFILE true) + set(Optz false) endif() @@ -153,40 +149,40 @@ if(Optz) # set(pascal_compiler_flags_cmn "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_compiler_flags_cmn}) - set(pascal_compiler_flags_cmn "-O2" "-Xs" "-Si" ${pascal_compiler_flags_cmn}) - set(haskell_compiler_flags_cmn "-O2" "-w") + set(pascal_compiler_flags_cmn "-O2" "-Xs" "-Si" ${pascal_compiler_flags_cmn}) + set(haskell_compiler_flags_cmn "-O2" "-w") else(Optz) - set(pascal_compiler_flags_cmn "-O-" "-g" "-gh" "-gl" "-dDEBUGFILE" ${pascal_compiler_flags_cmn}) - set(haskell_compiler_flags_cmn "-Wall" "-debug" "-dcore-lint") + set(pascal_compiler_flags_cmn "-O-" "-g" "-gh" "-gl" "-dDEBUGFILE" ${pascal_compiler_flags_cmn}) + set(haskell_compiler_flags_cmn "-Wall" "-debug" "-dcore-lint") endif(Optz) if(DEFINED DATA_INSTALL_DIR) - set(SHAREPATH ${DATA_INSTALL_DIR}/hedgewars/) + set(SHAREPATH ${DATA_INSTALL_DIR}/hedgewars/) else() - set(SHAREPATH share/hedgewars/) + set(SHAREPATH share/hedgewars/) endif() set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(HEDGEWARS_PROTO_VER 35) +set(HEDGEWARS_PROTO_VER 34) if(WITH_SERVER) - message(STATUS "Server is going to be built! Make sure you have GHC installed") - set(HAVE_NETSERVER true) - add_subdirectory(gameServer) + message(STATUS "Server is going to be built! Make sure you have GHC installed") + set(HAVE_NETSERVER true) + add_subdirectory(gameServer) else(WITH_SERVER) - set(HAVE_NETSERVER false) + set(HAVE_NETSERVER false) endif(WITH_SERVER) add_subdirectory(misc/liblua) add_subdirectory(hedgewars) #add_subdirectory(misc/libopenalbridge) if(NOT BUILD_ENGINE_LIBRARY) - add_subdirectory(bin) - add_subdirectory(QTfrontend) - add_subdirectory(share) - add_subdirectory(tools) + add_subdirectory(bin) + add_subdirectory(QTfrontend) + add_subdirectory(share) + add_subdirectory(tools) endif() # CPack vars @@ -201,70 +197,70 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "Hedgewars ${HEDGEWARS_VERSION}") if(WIN32 AND NOT UNIX) - set(CPACK_NSIS_DISPLAY_NAME "Hedgewars") - set(CPACK_NSIS_HELP_LINK "http://www.hedgewars.org/") - set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/") - set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com") - set(CPACK_NSIS_MODIFY_PATH OFF) - set(CPACK_GENERATOR "ZIP;NSIS") - set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "hedgewars") + set(CPACK_NSIS_DISPLAY_NAME "Hedgewars") + set(CPACK_NSIS_HELP_LINK "http://www.hedgewars.org/") + set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/") + set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com") + set(CPACK_NSIS_MODIFY_PATH OFF) + set(CPACK_GENERATOR "ZIP;NSIS") + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "hedgewars") else(WIN32 AND NOT UNIX) - set(CPACK_STRIP_FILES "bin/hedgewars;bin/hwengine") + set(CPACK_STRIP_FILES "bin/hedgewars;bin/hwengine") endif(WIN32 AND NOT UNIX) set(CPACK_SOURCE_IGNORE_FILES - "~" - "\\\\.hg" - "\\\\.svn" - "\\\\.exe$" - "\\\\.a$" - "\\\\.dll$" - "\\\\.xcf$" - "\\\\.cxx$" - "\\\\.db$" - "\\\\.dof$" - "\\\\.layout$" - "\\\\.zip$" - "\\\\.gz$" - "\\\\.bz2$" - "\\\\.tmp$" - "\\\\.core$" - "\\\\.sh$" - "\\\\.sifz$" - "\\\\.svg$" - "\\\\.svgz$" - "\\\\.ppu$" - "\\\\.psd$" - "\\\\.o$" - "Makefile" - "Doxyfile" - "CMakeFiles" - "debug" - "release$" - "Debug$" - "Release$" - "proto.inc$" - "hwconsts.cpp$" - "playlist.inc$" - "CPack" - "cmake_install.cmake$" - "config.inc$" - "hwengine.desktop$" + "~" + "\\\\.hg" + "\\\\.svn" + "\\\\.exe$" + "\\\\.a$" + "\\\\.dll$" + "\\\\.xcf$" + "\\\\.cxx$" + "\\\\.db$" + "\\\\.dof$" + "\\\\.layout$" + "\\\\.zip$" + "\\\\.gz$" + "\\\\.bz2$" + "\\\\.tmp$" + "\\\\.core$" + "\\\\.sh$" + "\\\\.sifz$" + "\\\\.svg$" + "\\\\.svgz$" + "\\\\.ppu$" + "\\\\.psd$" + "\\\\.o$" + "Makefile" + "Doxyfile" + "CMakeFiles" + "debug" + "release$" + "Debug$" + "Release$" + "proto.inc$" + "hwconsts.cpp$" + "playlist.inc$" + "CPack" + "cmake_install.cmake$" + "config.inc$" + "hwengine.desktop$" # "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge" - "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/HedgewarsMobile/" - "^${CMAKE_CURRENT_SOURCE_DIR}/bin/[a-z]" - "^${CMAKE_CURRENT_SOURCE_DIR}/tools/templates" - "^${CMAKE_CURRENT_SOURCE_DIR}/doc" - "^${CMAKE_CURRENT_SOURCE_DIR}/templates" - "^${CMAKE_CURRENT_SOURCE_DIR}/Graphics" - "^${CMAKE_CURRENT_SOURCE_DIR}/realtest" - "^${CMAKE_CURRENT_SOURCE_DIR}/tmp" - "^${CMAKE_CURRENT_SOURCE_DIR}/utils" - "^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Maps/test" - "^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Themes/ethereal" - "^${CMAKE_CURRENT_SOURCE_DIR}/install_manifest.txt" - "^${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt" - "^${CMAKE_CURRENT_SOURCE_DIR}/hedgewars\\\\." + "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/HedgewarsMobile/" + "^${CMAKE_CURRENT_SOURCE_DIR}/bin/[a-z]" + "^${CMAKE_CURRENT_SOURCE_DIR}/tools/templates" + "^${CMAKE_CURRENT_SOURCE_DIR}/doc" + "^${CMAKE_CURRENT_SOURCE_DIR}/templates" + "^${CMAKE_CURRENT_SOURCE_DIR}/Graphics" + "^${CMAKE_CURRENT_SOURCE_DIR}/realtest" + "^${CMAKE_CURRENT_SOURCE_DIR}/tmp" + "^${CMAKE_CURRENT_SOURCE_DIR}/utils" + "^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Maps/test" + "^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Themes/ethereal" + "^${CMAKE_CURRENT_SOURCE_DIR}/install_manifest.txt" + "^${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt" + "^${CMAKE_CURRENT_SOURCE_DIR}/hedgewars\\\\." ) include(CPack) diff -r c279aeb615df -r 006133b13b32 hedgewars/SDLMain.m --- a/hedgewars/SDLMain.m Sun Nov 14 20:37:55 2010 +0100 +++ b/hedgewars/SDLMain.m Sun Nov 28 01:58:08 2010 +0100 @@ -216,9 +216,11 @@ #endif /* SDL_USE_CPS */ /* Set up the menubar */ - [NSApp setMainMenu:[[NSMenu alloc] init]]; + NSMenu *menu = [[NSMenu alloc] init]; + [NSApp setMainMenu:menu]; setApplicationMenu(); setupWindowMenu(); + [menu release]; /* Create SDLMain and make it the app delegate */ sdlMain = [[SDLMain alloc] init]; diff -r c279aeb615df -r 006133b13b32 share/CMakeLists.txt --- a/share/CMakeLists.txt Sun Nov 14 20:37:55 2010 +0100 +++ b/share/CMakeLists.txt Sun Nov 28 01:58:08 2010 +0100 @@ -1,6 +1,19 @@ add_subdirectory(hedgewars) IF(APPLE) + #needed for CFBundleVersion and CFBundleShortVersionString + FIND_PROGRAM(HGCOMMAND hg) + IF (HGCOMMAND AND (EXISTS ${hedgewars_SOURCE_DIR}/.hg)) + exec_program(${HGCOMMAND} + ARGS identify -n ${hedgewars_SOURCE_DIR} + OUTPUT_VARIABLE version_suffix + ) + STRING(REGEX REPLACE "([0-9]+)(.*)" "\\1" version_suffix ${version_suffix}) + set (HEDGEWARS_REVISION ${version_suffix}) + ELSE () + set (HEDGEWARS_REVISION ${HEDGEWARS_VERSION}) + ENDIF () + configure_file(${hedgewars_SOURCE_DIR}/share/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/Info.plist" diff -r c279aeb615df -r 006133b13b32 share/Info.plist.in --- a/share/Info.plist.in Sun Nov 14 20:37:55 2010 +0100 +++ b/share/Info.plist.in Sun Nov 28 01:58:08 2010 +0100 @@ -17,31 +17,35 @@ CFBundleSignature Hedge CFBundleVersion + ${HEDGEWARS_REVISION} + CFBundleShortVersionString ${HEDGEWARS_VERSION} NSHumanReadableCopyright - GPL + © 2004-2010 Hedgewars Project NSAppleScriptEnabled LSRequiresNativeExecution - + LSMinimumSystemVersionByArchitecture - x86_64 - 10.6.0 - i386 - 10.4.0 - ppc - 10.4.0 + x86_64 + 10.6.0 + i386 + 10.4.0 + ppc + 10.4.0 LSArchitecturePriority - x86_64 - i386 - ppc + x86_64 + i386 + ppc LSMinimumSystemVersion ${minimum_macosx} SUPublicDSAKeyFile dsa_pub.pem + LSApplicationCategoryType + public.app-category.strategy-games