Browse Source

Enable external project macro users to find and use PackageTool.
Adjust software packaging for Emscripten.

Yao Wei Tjong 姚伟忠 11 years ago
parent
commit
a77e24d8ad

+ 2 - 1
.travis.yml

@@ -23,6 +23,7 @@
 language: objective-c
 language: objective-c
 env:
 env:
   global:
   global:
+    - secure: DE9IUM+pIV757GU0ccfDJhA752442pKu3DyBthrzHW9+GbsqbfuJOx045CYNN5vOWutFPC0A51B9WxhLNpXXqD3mfU8MhP1gkF7SskrHvcAPrCyfdqZf1Q8XDP5phm2KbHhhwxQMYmmicd6yj8DPNy2wRoSgPSDp/ZUDk51XZDU=
     - secure: AfoHc5tpnYoI2TVGUeE9Xdru+15pd5N4YzO7EWvwmMnrHtNO3retrmKOGpnIyfbP2BeWRTW/z+BI4G0RrfvubjHu2us4wRh6Jq8+UZohBBkM+ldTnyqYHX97q+6ScWBWZGg7dpthd1x/7fmds8dSRzustHUhI7RzPbWEMQH1DGI=
     - secure: AfoHc5tpnYoI2TVGUeE9Xdru+15pd5N4YzO7EWvwmMnrHtNO3retrmKOGpnIyfbP2BeWRTW/z+BI4G0RrfvubjHu2us4wRh6Jq8+UZohBBkM+ldTnyqYHX97q+6ScWBWZGg7dpthd1x/7fmds8dSRzustHUhI7RzPbWEMQH1DGI=
     - NUMJOBS=3
     - NUMJOBS=3
   matrix:
   matrix:
@@ -38,7 +39,7 @@ before_install:
   - pushd /usr/bin && sudo ln -sf python python2 && popd
   - pushd /usr/bin && sudo ln -sf python python2 && popd
 install:
 install:
   - if [ $PACKAGE_UPLOAD ]; then travis_retry brew update >/dev/null && travis_retry brew install doxygen graphviz; fi
   - if [ $PACKAGE_UPLOAD ]; then travis_retry brew update >/dev/null && travis_retry brew install doxygen graphviz; fi
-  - wget https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz && tar xfz emsdk-portable.tar.gz && rm emsdk-portable.tar.gz && cd emsdk_portable && ./emsdk update && ./emsdk install latest && ./emsdk activate latest && source ./emsdk_env.sh && export EMSCRIPTEN_ROOT_PATH=$EMSCRIPTEN && export EMSCRIPTEN=1
+  - wget https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz && tar xfz emsdk-portable.tar.gz && rm emsdk-portable.tar.gz && cd emsdk_portable && ./emsdk update >/dev/null && ./emsdk install latest >/dev/null && ./emsdk activate latest >/dev/null && source ./emsdk_env.sh && export EMSCRIPTEN_ROOT_PATH=$EMSCRIPTEN && export EMSCRIPTEN=1
 script: rake ci
 script: rake ci
 after_success: if [ $PACKAGE_UPLOAD ]; then rake ci_package_upload; fi
 after_success: if [ $PACKAGE_UPLOAD ]; then rake ci_package_upload; fi
 
 

+ 32 - 10
CMake/Modules/Urho3D-CMake-common.cmake

@@ -703,7 +703,22 @@ macro (setup_executable)
     endif ()
     endif ()
     if (DEST_RUNTIME_DIR)
     if (DEST_RUNTIME_DIR)
         # Need to check if the destination variable is defined first because this macro could be called by external project that does not wish to install anything
         # Need to check if the destination variable is defined first because this macro could be called by external project that does not wish to install anything
-        install (TARGETS ${TARGET_NAME} RUNTIME DESTINATION ${DEST_RUNTIME_DIR} BUNDLE DESTINATION ${DEST_BUNDLE_DIR})
+        if (EMSCRIPTEN)
+            # todo: Just use generator-expression when CMake minimum version is 3.0
+            if (CMAKE_VERSION VERSION_LESS 3.0)
+                get_target_property (LOCATION ${TARGET_NAME} LOCATION)
+                get_filename_component (LOCATION ${LOCATION} DIRECTORY)
+            else ()
+                set (LOCATION $<TARGET_FILE_DIR:${TARGET_NAME}>)
+            endif ()
+            unset (FILES)
+            foreach (EXT data html html.mem js)
+                list (APPEND FILES ${LOCATION}/${TARGET_NAME}.${EXT})
+            endforeach ()
+            install (FILES ${FILES} DESTINATION ${DEST_BUNDLE_DIR})
+        else ()
+            install (TARGETS ${TARGET_NAME} RUNTIME DESTINATION ${DEST_RUNTIME_DIR} BUNDLE DESTINATION ${DEST_BUNDLE_DIR})
+        endif ()
     endif ()
     endif ()
 endmacro ()
 endmacro ()
 
 
@@ -764,7 +779,18 @@ macro (setup_main_executable)
                 set (PRELOAD_FLAGS "${PRELOAD_FLAGS} --preload-file ${RESOURCE_${DIR}_PATHNAME}@/${NAME}")
                 set (PRELOAD_FLAGS "${PRELOAD_FLAGS} --preload-file ${RESOURCE_${DIR}_PATHNAME}@/${NAME}")
             endif ()
             endif ()
         endforeach ()
         endforeach ()
-        set (PACKAGING_DEP DEPENDS PackageTool)
+        # Urho3D project builds the PackageTool as required; external project uses PackageTool found in the Urho3D build tree or Urho3D SDK
+        find_program (PACKAGE_TOOL PackageTool HINTS ${CMAKE_BINARY_DIR}/bin/tool ${URHO3D_HOME}/bin/tool DOC "Path to PackageTool" NO_DEFAULT_PATH)
+        if (CMAKE_PROJECT_NAME STREQUAL Urho3D)
+            set (PACKAGING_DEP DEPENDS PackageTool)
+        elseif (NOT PACKAGE_TOOL)
+            message (WARNING "PackageTool was not found in the Urho3D build tree or Urho3D SDK. Your project may not build successfully without this tool. "
+                "You may have to first rebuild the Urho3D in its build tree or reinstall Urho3D SDK to get this tool built or installed properly. "
+                "Alternatively, copy the PackageTool executable manually into bin/tool subdirectory in your own project build tree.")
+        endif ()
+        if (NOT PACKAGE_TOOL)
+            set (PACKAGE_TOOL ${CMAKE_BINARY_DIR}/bin/tool/PackageTool)
+        endif ()
         set (PACKAGING_COMMENT " and packaging")
         set (PACKAGING_COMMENT " and packaging")
         # The *.pak will be generated during build time, suppress error during CMake configuration/generation time
         # The *.pak will be generated during build time, suppress error during CMake configuration/generation time
         set_property (SOURCE ${RESOURCE_PAKS} PROPERTY GENERATED TRUE)
         set_property (SOURCE ${RESOURCE_PAKS} PROPERTY GENERATED TRUE)
@@ -882,16 +908,14 @@ macro (setup_main_executable)
             if (CMAKE_HOST_WIN32)
             if (CMAKE_HOST_WIN32)
                 # On Windows host, always assumes there are changes so resource dirs would be repackaged in each build, however, still make sure the *.pak timestamp is not altered unnecessarily
                 # On Windows host, always assumes there are changes so resource dirs would be repackaged in each build, however, still make sure the *.pak timestamp is not altered unnecessarily
                 if (URHO3D_PACKAGING)
                 if (URHO3D_PACKAGING)
-                    set (PACKAGING_COMMAND && echo Packaging ${DIR}... && ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tool/PackageTool ${DIR} ${RESOURCE_${DIR}_PATHNAME}.new -c -q && ${CMAKE_COMMAND} -E copy_if_different ${RESOURCE_${DIR}_PATHNAME}.new ${RESOURCE_${DIR}_PATHNAME} && ${CMAKE_COMMAND} -E remove ${RESOURCE_${DIR}_PATHNAME}.new)
+                    set (PACKAGING_COMMAND && echo Packaging ${DIR}... && ${PACKAGE_TOOL} ${DIR} ${RESOURCE_${DIR}_PATHNAME}.new -c -q && ${CMAKE_COMMAND} -E copy_if_different ${RESOURCE_${DIR}_PATHNAME}.new ${RESOURCE_${DIR}_PATHNAME} && ${CMAKE_COMMAND} -E remove ${RESOURCE_${DIR}_PATHNAME}.new)
                 endif ()
                 endif ()
                 list (APPEND COMMANDS COMMAND ${CMAKE_COMMAND} -E touch ${DIR} ${PACKAGING_COMMAND})
                 list (APPEND COMMANDS COMMAND ${CMAKE_COMMAND} -E touch ${DIR} ${PACKAGING_COMMAND})
             else ()
             else ()
                 # On Unix-like hosts, detect the changes in the resource directory recursively so they are only repackaged and/or rebundled (Xcode only) as necessary
                 # On Unix-like hosts, detect the changes in the resource directory recursively so they are only repackaged and/or rebundled (Xcode only) as necessary
                 if (URHO3D_PACKAGING)
                 if (URHO3D_PACKAGING)
-                    set (PACKAGING_COMMAND && echo Packaging ${DIR}... && ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tool/PackageTool ${DIR} ${RESOURCE_${DIR}_PATHNAME} -c -q)
-                    # Below output command generates the output when it is not yet exists: if [ ! -e ${${RESOURCE_${DIR}_PATHNAME} ]; then ${PACKAGING_COMMAND}; fi
-                    # Alas, it cannot be done as concisely because of a known CMake bug (http://www.cmake.org/Bug/view.php?id=9317) in its handling of bash '[' operator
-                    set (OUTPUT_COMMAND ls -1 ${RESOURCE_${DIR}_PATHNAME} >/dev/null 2>&1 || \( true ${PACKAGING_COMMAND} \))
+                    set (PACKAGING_COMMAND && echo Packaging ${DIR}... && ${PACKAGE_TOOL} ${DIR} ${RESOURCE_${DIR}_PATHNAME} -c -q)
+                    set (OUTPUT_COMMAND test -e ${RESOURCE_${DIR}_PATHNAME} || \( true ${PACKAGING_COMMAND} \))
                 else ()
                 else ()
                     set (OUTPUT_COMMAND true)   # Nothing to output
                     set (OUTPUT_COMMAND true)   # Nothing to output
                 endif ()
                 endif ()
@@ -1120,11 +1144,9 @@ macro (install_header_files)
         if (ARG_FILES)
         if (ARG_FILES)
             set (INSTALL_TYPE FILES)
             set (INSTALL_TYPE FILES)
             set (INSTALL_SOURCES ${ARG_FILES})
             set (INSTALL_SOURCES ${ARG_FILES})
-            unset (INSTALL_PERMISSIONS)
         elseif (ARG_DIRECTORY)
         elseif (ARG_DIRECTORY)
             set (INSTALL_TYPE DIRECTORY)
             set (INSTALL_TYPE DIRECTORY)
             set (INSTALL_SOURCES ${ARG_DIRECTORY})
             set (INSTALL_SOURCES ${ARG_DIRECTORY})
-            set (INSTALL_PERMISSIONS ${DEST_PERMISSIONS})
             if (ARG_FILES_MATCHING)
             if (ARG_FILES_MATCHING)
                 set (INSTALL_MATCHING FILES_MATCHING)
                 set (INSTALL_MATCHING FILES_MATCHING)
                 # Our macro supports PATTERN <list> but CMake's install command does not, so convert the list to: PATTERN <value1> PATTERN <value2> ...
                 # Our macro supports PATTERN <list> but CMake's install command does not, so convert the list to: PATTERN <value1> PATTERN <value2> ...
@@ -1139,7 +1161,7 @@ macro (install_header_files)
             message (FATAL_ERROR "Couldn't setup install command because the install destination is not specified.")
             message (FATAL_ERROR "Couldn't setup install command because the install destination is not specified.")
         endif ()
         endif ()
         if (NOT ARG_BUILD_TREE_ONLY AND NOT CMAKE_PROJECT_NAME MATCHES ^ExternalProject-)
         if (NOT ARG_BUILD_TREE_ONLY AND NOT CMAKE_PROJECT_NAME MATCHES ^ExternalProject-)
-            install (${INSTALL_TYPE} ${INSTALL_SOURCES} DESTINATION ${ARG_DESTINATION} ${INSTALL_PERMISSIONS} ${INSTALL_MATCHING})
+            install (${INSTALL_TYPE} ${INSTALL_SOURCES} DESTINATION ${ARG_DESTINATION} ${INSTALL_MATCHING})
         endif ()
         endif ()
 
 
         # Reparse the arguments for the create_symlink macro to "install" the header files in the build tree
         # Reparse the arguments for the create_symlink macro to "install" the header files in the build tree

+ 4 - 5
CMakeLists.txt

@@ -74,17 +74,16 @@ set (DEST_LIBRARY_DIR lib${LIB_SUFFIX}/${PATH_SUFFIX})
 # TODO: Investigate the implication of using CMAKE_SYSROOT variable (available since 3.0.0) instead of our own SYSROOT variable
 # TODO: Investigate the implication of using CMAKE_SYSROOT variable (available since 3.0.0) instead of our own SYSROOT variable
 set (SYSROOT ${ANDROID_TOOLCHAIN_ROOT} ${RPI_SYSROOT} ${MINGW_SYSROOT} ${IOS_SYSROOT} CACHE INTERNAL "Path to system root of the cross-compiling target")  # SYSROOT is empty for native build
 set (SYSROOT ${ANDROID_TOOLCHAIN_ROOT} ${RPI_SYSROOT} ${MINGW_SYSROOT} ${IOS_SYSROOT} CACHE INTERNAL "Path to system root of the cross-compiling target")  # SYSROOT is empty for native build
 set (DEST_PKGCONFIG_DIR lib${LIB_SUFFIX}/pkgconfig)
 set (DEST_PKGCONFIG_DIR lib${LIB_SUFFIX}/pkgconfig)
-set (DEST_PERMISSIONS FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ DIRECTORY_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 # Install application launcher scripts
 # Install application launcher scripts
 file (GLOB APP_SCRIPTS ${CMAKE_SOURCE_DIR}/bin/*${SCRIPT_EXT})
 file (GLOB APP_SCRIPTS ${CMAKE_SOURCE_DIR}/bin/*${SCRIPT_EXT})
-install (FILES ${APP_SCRIPTS} DESTINATION ${DEST_RUNTIME_DIR} PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)   # 755
+install (PROGRAMS ${APP_SCRIPTS} DESTINATION ${DEST_RUNTIME_DIR})
 # Install resource directories required by applications built with Urho3D library
 # Install resource directories required by applications built with Urho3D library
-install (DIRECTORY ${CMAKE_SOURCE_DIR}/bin/CoreData ${CMAKE_SOURCE_DIR}/bin/Data DESTINATION ${DEST_SHARE_DIR}/Resources ${DEST_PERMISSIONS})
+install (DIRECTORY ${CMAKE_SOURCE_DIR}/bin/CoreData ${CMAKE_SOURCE_DIR}/bin/Data DESTINATION ${DEST_SHARE_DIR}/Resources)
 # Install CMake modules and toolchains provided by and for Urho3D
 # Install CMake modules and toolchains provided by and for Urho3D
-install (DIRECTORY ${CMAKE_SOURCE_DIR}/CMake/ DESTINATION ${DEST_SHARE_DIR}/CMake ${DEST_PERMISSIONS})    # Note: the trailing slash is significant
+install (DIRECTORY ${CMAKE_SOURCE_DIR}/CMake/ DESTINATION ${DEST_SHARE_DIR}/CMake)    # Note: the trailing slash is significant
 # Install CMake build scripts
 # Install CMake build scripts
 file (GLOB CMAKE_SCRIPTS ${CMAKE_SOURCE_DIR}/*${SCRIPT_EXT})
 file (GLOB CMAKE_SCRIPTS ${CMAKE_SOURCE_DIR}/*${SCRIPT_EXT})
-install (FILES ${CMAKE_SCRIPTS} DESTINATION ${DEST_SHARE_DIR}/Scripts PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+install (PROGRAMS ${CMAKE_SCRIPTS} DESTINATION ${DEST_SHARE_DIR}/Scripts)
 
 
 # Setup package variables
 # Setup package variables
 set (URHO3D_DESCRIPTION "Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by OGRE (http://www.ogre3d.org) and Horde3D (http://www.horde3d.org).")
 set (URHO3D_DESCRIPTION "Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by OGRE (http://www.ogre3d.org) and Horde3D (http://www.horde3d.org).")

+ 3 - 3
Docs/CMakeLists.txt

@@ -105,10 +105,10 @@ endif ()
 
 
 # Make sure html output directory exists and not empty
 # Make sure html output directory exists and not empty
 file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/html/Readme.txt "If URHO3D_DOCS build option is not set then use 'make doc' command to re-generate Urho3D documentation before calling 'make install', alternatively use the 'doc' and 'install' built-in targets in an IDE, respectively")
 file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/html/Readme.txt "If URHO3D_DOCS build option is not set then use 'make doc' command to re-generate Urho3D documentation before calling 'make install', alternatively use the 'doc' and 'install' built-in targets in an IDE, respectively")
-    
+
 # Currently it is not possible to make built-in 'install' target to depend on 'doc' in CMake, therefore 'make doc' command need to be invoked manually before 'make install' in order to install the SDK with complete documentation
 # Currently it is not possible to make built-in 'install' target to depend on 'doc' in CMake, therefore 'make doc' command need to be invoked manually before 'make install' in order to install the SDK with complete documentation
-# Unless, URHO3D_DOCS build option is set in which case the custom 'doc' target is part of the default 'all' target which in turn the 'install' target depends on, so a single 'make install' alone is suffice to install everything 
-install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION ${DEST_SHARE_DIR}/Docs ${DEST_PERMISSIONS})
+# Unless, URHO3D_DOCS build option is set in which case the custom 'doc' target is part of the default 'all' target which in turn the 'install' target depends on, so a single 'make install' alone is suffice to install everything
+install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION ${DEST_SHARE_DIR}/Docs)
 
 
 # Define post build steps
 # Define post build steps
 if (CMAKE_EXTRA_GENERATOR MATCHES Eclipse AND NOT CMAKE_HOST_WIN32)
 if (CMAKE_EXTRA_GENERATOR MATCHES Eclipse AND NOT CMAKE_HOST_WIN32)

+ 7 - 7
Source/ThirdParty/LuaJIT/CMakeLists.txt

@@ -112,14 +112,14 @@ if (MSVC)
         set (MSVC_HASFFI 1)
         set (MSVC_HASFFI 1)
     endif ()
     endif ()
     set (TARGET_TESTARCH "LJ_HASFFI ${MSVC_HASFFI}\n")
     set (TARGET_TESTARCH "LJ_HASFFI ${MSVC_HASFFI}\n")
-    
+
     if (LUAJIT_DISABLE_JIT)
     if (LUAJIT_DISABLE_JIT)
         set (MSVC_HASJIT 0)
         set (MSVC_HASJIT 0)
     else ()
     else ()
         set (MSVC_HASJIT 1)
         set (MSVC_HASJIT 1)
     endif ()
     endif ()
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_HASJIT ${MSVC_HASJIT}\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_HASJIT ${MSVC_HASJIT}\n")
-    
+
     if (URHO3D_64BIT)
     if (URHO3D_64BIT)
         set (MSVC_ARCH_BITS 64)
         set (MSVC_ARCH_BITS 64)
         set (MSVC_TARGET_ARCH X64)
         set (MSVC_TARGET_ARCH X64)
@@ -130,13 +130,13 @@ if (MSVC)
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_ARCH_BITS ${MSVC_ARCH_BITS}\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_ARCH_BITS ${MSVC_ARCH_BITS}\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_TARGET_${MSVC_TARGET_ARCH} 1\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_TARGET_${MSVC_TARGET_ARCH} 1\n")
 
 
-	# More assumptions
+    # More assumptions
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_ARCH_HASFPU 1\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_ARCH_HASFPU 1\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_ABI_SOFTFP 0\n")
     set (TARGET_TESTARCH "${TARGET_TESTARCH} LJ_ABI_SOFTFP 0\n")
 else ()
 else ()
     get_directory_property (TARGET_TCFLAGS COMPILE_DEFINITIONS)
     get_directory_property (TARGET_TCFLAGS COMPILE_DEFINITIONS)
     string (REPLACE ";" ";-D" TARGET_TCFLAGS ";${TARGET_TCFLAGS}")
     string (REPLACE ";" ";-D" TARGET_TCFLAGS ";${TARGET_TCFLAGS}")
-    execute_process (COMMAND egrep -V RESULT_VARIABLE EGREP_EXIT_CODE OUTPUT_QUIET ERROR_QUIET)    
+    execute_process (COMMAND egrep -V RESULT_VARIABLE EGREP_EXIT_CODE OUTPUT_QUIET ERROR_QUIET)
     if (EGREP_EXIT_CODE EQUAL 0)
     if (EGREP_EXIT_CODE EQUAL 0)
         execute_process (COMMAND ${CMAKE_C_COMPILER} ${TARGET_TCFLAGS} -E ${CMAKE_CURRENT_SOURCE_DIR}/src/lj_arch.h -dM
         execute_process (COMMAND ${CMAKE_C_COMPILER} ${TARGET_TCFLAGS} -E ${CMAKE_CURRENT_SOURCE_DIR}/src/lj_arch.h -dM
             COMMAND egrep "LJ_|MIPSEL|__SSE2__" OUTPUT_VARIABLE TARGET_TESTARCH ERROR_QUIET)
             COMMAND egrep "LJ_|MIPSEL|__SSE2__" OUTPUT_VARIABLE TARGET_TESTARCH ERROR_QUIET)
@@ -152,7 +152,7 @@ macro (find_string find_regex output_var)
         string (REGEX MATCH ${find_regex} matched ${TARGET_TESTARCH})
         string (REGEX MATCH ${find_regex} matched ${TARGET_TESTARCH})
         if (matched)
         if (matched)
             string (REGEX MATCH "\\(.*\\)" captured ${find_regex})
             string (REGEX MATCH "\\(.*\\)" captured ${find_regex})
-            if (captured) 
+            if (captured)
                 string (REGEX REPLACE ${find_regex} \\1 matched ${matched})
                 string (REGEX REPLACE ${find_regex} \\1 matched ${matched})
             endif ()
             endif ()
 
 
@@ -329,7 +329,7 @@ else ()
     add_subdirectory (src/host)
     add_subdirectory (src/host)
 endif ()
 endif ()
 
 
-# Add definitions specific for target C Compiler 
+# Add definitions specific for target C Compiler
 if (NOT MSVC)
 if (NOT MSVC)
     # Large file support
     # Large file support
     add_definitions (-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
     add_definitions (-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
@@ -429,7 +429,7 @@ if (NOT IOS)
         COMMENT "Copying dependency files for luajit standalone executable")
         COMMENT "Copying dependency files for luajit standalone executable")
 
 
     # Install dependency files required by luajit
     # Install dependency files required by luajit
-    install (DIRECTORY ${LUAJIT_DEP_DIR} DESTINATION ${DEST_RUNTIME_DIR} ${DEST_PERMISSIONS})
+    install (DIRECTORY ${LUAJIT_DEP_DIR} DESTINATION ${DEST_RUNTIME_DIR})
 endif ()
 endif ()
 
 
 # Add directory containing the dependency files into the LuaJIT module search path
 # Add directory containing the dependency files into the LuaJIT module search path

+ 2 - 2
Source/ThirdParty/SDL/CMakeLists.txt

@@ -24,10 +24,10 @@
 set (TARGET_NAME SDL)
 set (TARGET_NAME SDL)
 
 
 if (EMSCRIPTEN)
 if (EMSCRIPTEN)
-    # Emscripten has its own SDL2 port, so just create a dummy target to:
+    # Emscripten has its own SDL2 port, so just create a custom target to:
     #  1) Fetch this SDL2 port from its GitHub repository
     #  1) Fetch this SDL2 port from its GitHub repository
     #  2) Install SDL2 headers to the build tree in the post-build step (Note: current configuration uses our own SDL2 header files instead of the ones provided by Emscripten port for no special reason)
     #  2) Install SDL2 headers to the build tree in the post-build step (Note: current configuration uses our own SDL2 header files instead of the ones provided by Emscripten port for no special reason)
-    add_custom_target (${TARGET_NAME} ALL ${CMAKE_COMMAND} -E touch dummy.cpp && ${CMAKE_CXX_COMPILER} -s USE_SDL=2 -o dummy.html dummy.cpp && ${CMAKE_COMMAND} -E remove dummy.cpp)
+    add_custom_target (${TARGET_NAME} ALL ${CMAKE_COMMAND} -E touch dummy.cpp && ${CMAKE_CXX_COMPILER} -s USE_SDL=2 -o dummy.html dummy.cpp && ${CMAKE_COMMAND} -E remove dummy.*)
     set (STATIC_LIBRARY_TARGETS ${STATIC_LIBRARY_TARGETS} ${TARGET_NAME} PARENT_SCOPE)
     set (STATIC_LIBRARY_TARGETS ${STATIC_LIBRARY_TARGETS} ${TARGET_NAME} PARENT_SCOPE)
     install_header_files (DIRECTORY include/ DESTINATION ${DEST_INCLUDE_DIR}/ThirdParty/SDL FILES_MATCHING PATTERN *.h USE_FILE_SYMLINK)    # Note: the trailing slash is significant
     install_header_files (DIRECTORY include/ DESTINATION ${DEST_INCLUDE_DIR}/ThirdParty/SDL FILES_MATCHING PATTERN *.h USE_FILE_SYMLINK)    # Note: the trailing slash is significant
     return ()
     return ()

+ 2 - 2
Source/Tools/CMakeLists.txt

@@ -42,8 +42,8 @@ if ((CMAKE_CROSSCOMPILING OR IOS) AND URHO3D_PACKAGING)
     endif ()
     endif ()
     ExternalProject_Add(PackageTool
     ExternalProject_Add(PackageTool
         SOURCE_DIR ${CMAKE_SOURCE_DIR}/Source/Tools/PackageTool
         SOURCE_DIR ${CMAKE_SOURCE_DIR}/Source/Tools/PackageTool
-        CMAKE_ARGS -DDEST_RUNTIME_DIR=${CMAKE_BINARY_DIR}/bin/tool -DBAKED_CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR} -DBAKED_CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR} ${OSX_HOST}
-    )
+        CMAKE_ARGS -DDEST_RUNTIME_DIR=${CMAKE_BINARY_DIR}/bin/tool -DBAKED_CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR} -DBAKED_CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR} ${OSX_HOST})
+    install (PROGRAMS ${CMAKE_BINARY_DIR}/bin/tool/PackageTool DESTINATION ${DEST_RUNTIME_DIR}/tool)
 endif ()
 endif ()
 
 
 # All tools must be natively built and output to bin/tool subdir to differentiate them from platform-specific binaries in the bin directory
 # All tools must be natively built and output to bin/tool subdir to differentiate them from platform-specific binaries in the bin directory