Browse Source

Fixed Win64 build. Enhanced cmake_vs20xx.bat to accept extra command line arguments, such as ENABLE_64BIT, ENABLE_LUA, or ENABLE_EXTRAS.

Wei Tjong Yao 12 years ago
parent
commit
56e60a59d8
7 changed files with 45 additions and 23 deletions
  1. 3 0
      CMakeLists.txt
  2. 1 1
      Docs/GettingStarted.dox
  3. 16 15
      Extras/LuaScript/CMakeLists.txt
  4. 1 1
      Readme.txt
  5. 8 2
      cmake_vs2008.bat
  6. 8 2
      cmake_vs2010.bat
  7. 8 2
      cmake_vs2012.bat

+ 3 - 0
CMakeLists.txt

@@ -85,6 +85,9 @@ elseif (CMAKE_GENERATOR STREQUAL "Xcode")
 endif ()
 if (MSVC)
     # Visual Studio-specific setup
+    if (ENABLE_64BIT)
+        enable_language (ASM_MASM)
+    endif ()
     add_definitions (-D_CRT_SECURE_NO_WARNINGS)
     set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
     set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /MT /fp:fast /Zi /GS-")

+ 1 - 1
Docs/GettingStarted.dox

@@ -80,7 +80,7 @@ To run from Xcode on iPhone/iPad Simulator, edit the Product Scheme to set "Run"
 
 \section Building_64bit Desktop 64bit build
 
-Currently CMake build configuration has been set to compile Urho3D as 32bit by default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat by passing the option "Win64" explicitly. This overrides CMake to use a 64bit solution generator.
+Currently CMake build configuration has been set to compile Urho3D as 32bit by default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat by passing the option "ENABLE_64BIT" explicitly. This overrides CMake to use a 64bit solution generator.
 
 To enable 64bit build for non-MSVC/non-Windows platform, pass the option "-DENABLE_64BIT=1" explicitly when invoking cmake_eclipse.sh/cmake_macosx.sh/cmake_gcc.sh. Alternatively, you can modify the main CMakeLists.txt to enable 64bit by default for non-MSVC/non-Windows platform.
 

+ 16 - 15
Extras/LuaScript/CMakeLists.txt

@@ -8,24 +8,25 @@ set (SOURCE_FILES ${CPP_FILES} ${H_FILES})
 
 # Define generated source files
 file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated)
+file (GLOB_RECURSE PKG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/*.pkg)
 add_custom_command (OUTPUT generated/AudioLuaAPI.cpp generated/ContainerLuaAPI.cpp generated/CoreLuaAPI.cpp generated/EngineLuaAPI.cpp generated/GraphicsLuaAPI.cpp
     generated/InputLuaAPI.cpp generated/IOLuaAPI.cpp generated/MathLuaAPI.cpp generated/NavigationLuaAPI.cpp generated/NetworkLuaAPI.cpp
     generated/PhysicsLuaAPI.cpp generated/ResourceLuaAPI.cpp generated/SceneLuaAPI.cpp generated/UILuaAPI.cpp generated/LuaScriptLuaAPI.cpp 
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/AudioLuaAPI.cpp AudioLuaAPI.pkg DEPENDS pkgs/AudioLuaAPI.pkg pkgs/Audio/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ContainerLuaAPI.cpp ContainerLuaAPI.pkg DEPENDS pkgs/ContainerLuaAPI.pkg pkgs/Container/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/CoreLuaAPI.cpp CoreLuaAPI.pkg DEPENDS pkgs/CoreLuaAPI.pkg pkgs/Core/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/EngineLuaAPI.cpp EngineLuaAPI.pkg DEPENDS pkgs/EngineLuaAPI.pkg pkgs/Engine/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/GraphicsLuaAPI.cpp GraphicsLuaAPI.pkg DEPENDS pkgs/GraphicsLuaAPI.pkg pkgs/Graphics/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/InputLuaAPI.cpp InputLuaAPI.pkg DEPENDS pkgs/InputLuaAPI.pkg pkgs/Input/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/IOLuaAPI.cpp IOLuaAPI.pkg DEPENDS pkgs/IOLuaAPI.pkg pkgs/IO/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/MathLuaAPI.cpp MathLuaAPI.pkg DEPENDS pkgs/MathLuaAPI.pkg pkgs/Math/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NavigationLuaAPI.cpp NavigationLuaAPI.pkg DEPENDS pkgs/NavigationLuaAPI.pkg pkgs/Navigation/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NetworkLuaAPI.cpp NetworkLuaAPI.pkg DEPENDS pkgs/NetworkLuaAPI.pkg pkgs/Network/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/PhysicsLuaAPI.cpp PhysicsLuaAPI.pkg DEPENDS pkgs/PhysicsLuaAPI.pkg pkgs/Physics/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ResourceLuaAPI.cpp ResourceLuaAPI.pkg DEPENDS pkgs/ResourceLuaAPI.pkg pkgs/Resource/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/SceneLuaAPI.cpp SceneLuaAPI.pkg DEPENDS pkgs/SceneLuaAPI.pkg pkgs/Scene/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/UILuaAPI.cpp UILuaAPI.pkg DEPENDS pkgs/UILuaAPI.pkg pkgs/UI/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/LuaScriptLuaAPI.cpp LuaScriptLuaAPI.pkg DEPENDS pkgs/LuaScriptLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/AudioLuaAPI.cpp AudioLuaAPI.pkg DEPENDS ${PKG_FILES}
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ContainerLuaAPI.cpp ContainerLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/CoreLuaAPI.cpp CoreLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/EngineLuaAPI.cpp EngineLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/GraphicsLuaAPI.cpp GraphicsLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/InputLuaAPI.cpp InputLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/IOLuaAPI.cpp IOLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/MathLuaAPI.cpp MathLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NavigationLuaAPI.cpp NavigationLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NetworkLuaAPI.cpp NetworkLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/PhysicsLuaAPI.cpp PhysicsLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ResourceLuaAPI.cpp ResourceLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/SceneLuaAPI.cpp SceneLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/UILuaAPI.cpp UILuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/LuaScriptLuaAPI.cpp LuaScriptLuaAPI.pkg
     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/pkgs
     COMMENT "Generate Lua API binding on the fly")
 set (SOURCE_FILES ${SOURCE_FILES} generated/AudioLuaAPI.cpp generated/ContainerLuaAPI generated/CoreLuaAPI.cpp generated/EngineLuaAPI.cpp generated/GraphicsLuaAPI.cpp

+ 1 - 1
Readme.txt

@@ -247,7 +247,7 @@ Desktop 64bit build
 
 Currently CMake build configuration has been set to compile Urho3D as 32bit by
 default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat
-by passing the option "Win64" explicitly. This overrides CMake to use a 64bit
+by passing the option "ENABLE_64BIT" explicitly. This overrides CMake to use a 64bit
 solution generator.
 
 To enable 64bit build for non-MSVC/non-Windows platform, pass the

+ 8 - 2
cmake_vs2008.bat

@@ -1,3 +1,9 @@
 @del /F CMakeCache.txt
-@if "%1" == "Win64" (set "arch= %1") else (set "arch=")
-cmake -G "Visual Studio 9 2008%arch%"
+@if /I "%1" == "ENABLE_64BIT" (set "arch= Win64") else (set "arch=")
+@set "DEFINE="
+@for %%n in (%*) do @call :concat %%n
+cmake -G "Visual Studio 9 2008%arch%" %DEFINE%
+@goto :eof
+:concat
+@set "DEFINE=%DEFINE% -D%1=1"
+@goto :eof

+ 8 - 2
cmake_vs2010.bat

@@ -1,3 +1,9 @@
 @del /F CMakeCache.txt
-@if "%1" == "Win64" (set "arch= %1") else (set "arch=")
-cmake -G "Visual Studio 10%arch%"
+@if /I "%1" == "ENABLE_64BIT" (set "arch= Win64") else (set "arch=")
+@set "DEFINE="
+@for %%n in (%*) do @call :concat %%n
+cmake -G "Visual Studio 10%arch%" %DEFINE%
+@goto :eof
+:concat
+@set "DEFINE=%DEFINE% -D%1=1"
+@goto :eof

+ 8 - 2
cmake_vs2012.bat

@@ -1,3 +1,9 @@
 @del /F CMakeCache.txt
-@if "%1" == "Win64" (set "arch= %1") else (set "arch=")
-cmake -G "Visual Studio 11%arch%"
+@if /I "%1" == "ENABLE_64BIT" (set "arch= Win64") else (set "arch=")
+@set "DEFINE="
+@for %%n in (%*) do @call :concat %%n
+cmake -G "Visual Studio 11%arch%" %DEFINE%
+@goto :eof
+:concat
+@set "DEFINE=%DEFINE% -D%1=1"
+@goto :eof