Browse Source

Merge pull request #84 from AtomicGameEngine/D3DCompiler_Fix

D3D Compiler DLL fix
JoshEngebretson 10 years ago
parent
commit
d268424be5

BIN
Build/Windows/Binaries/x64/D3DCompiler_47.dll


+ 2 - 0
CMake/Modules/AtomicWindows.cmake

@@ -4,6 +4,8 @@ include(AtomicDesktop)
 
 set (CMAKE_DEBUG_POSTFIX _d)
 
+set (D3DCOMPILER_47_DLL ${CMAKE_SOURCE_DIR}/Build/Windows/Binaries/x64/D3DCompiler_47.dll)
+
 add_definitions(-DATOMIC_PLATFORM_WINDOWS -D_CRT_SECURE_NO_WARNINGS -DATOMIC_TBUI)
 
 list (APPEND ATOMIC_LINK_LIBRARIES MojoShader user32 gdi32 winmm imm32 ole32 oleaut32 version uuid d3d9 d3dcompiler Ws2_32)

+ 6 - 0
Source/AtomicEditor/CMakeLists.txt

@@ -35,6 +35,12 @@ elseif(LINUX)
     target_link_libraries(AtomicEditor curl nativefiledialog ${GTK3_LIBRARIES})
 else()
     target_link_libraries(AtomicEditor libcurl Iphlpapi Wldap32)
+    
+    # pre-Windows 8 can't count on D3DCompiler_47.dll being on system
+    add_custom_command (TARGET AtomicEditor POST_BUILD
+    COMMAND ${CMAKE_COMMAND}
+    ARGS -E copy \"${D3DCOMPILER_47_DLL}\" \"$<TARGET_FILE_DIR:AtomicEditor>/D3DCompiler_47.dll\")
+
 endif()
 
 if (TARGET_PROPERTIES)

+ 17 - 1
Source/AtomicEditor/Source/Main.cpp

@@ -78,7 +78,23 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, PSTR cmdLine, in
 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, PSTR cmdLine, int showCmd)
 {
     Atomic::ParseArguments(GetCommandLineW());
-    return function;
+
+    const Vector<String>& arguments = GetArguments();
+
+    bool runPlayer = false;
+    for (unsigned i = 0; i < arguments.Size();i++)
+    {
+        if (arguments.At(i) == "--player")
+        {
+            runPlayer = true;
+            break;
+        }
+    }
+
+    if (runPlayer)
+        return RunPlayerApplication();
+
+    return RunEditorApplication();
 }
 // Linux or OS X: use main
 #else

+ 13 - 1
Source/AtomicJS/JSBind/CMakeLists.txt

@@ -11,7 +11,19 @@ add_executable(JSBind ${SOURCE_FILES})
 
 target_link_libraries(JSBind ${ATOMIC_LINK_LIBRARIES})
 
+if (MSVC)
+    # pre-Windows 8 can't count on D3DCompiler_47.dll being on system
+    # TODO: Remove this dependency
+    add_custom_command (TARGET JSBind POST_BUILD
+    COMMAND ${CMAKE_COMMAND}
+    ARGS -E copy \"${D3DCOMPILER_47_DLL}\" \"$<TARGET_FILE_DIR:JSBind>/D3DCompiler_47.dll\")
+endif()
+
 #TODO: finer grained dependencies
 add_custom_command(TARGET JSBind POST_BUILD
                    COMMAND $<TARGET_FILE:JSBind> "\"${CMAKE_SOURCE_DIR}\"" "${JAVASCRIPT_BINDINGS_PLATFORM}"
-                   COMMENT "Generating Javascript Bindings")
+                   COMMENT "Generating Javascript Bindings")
+                   
+                   
+        
+                   

+ 7 - 0
Source/AtomicTool/CMakeLists.txt

@@ -12,6 +12,13 @@ add_dependencies(AtomicTool AtomicEditor)
 
 if (MSVC)
     target_link_libraries(AtomicTool libcurl Iphlpapi Wldap32)
+    
+    # pre-Windows 8 can't count on D3DCompiler_47.dll being on system
+    # TODO: Remove this dependency
+    add_custom_command (TARGET AtomicTool POST_BUILD
+    COMMAND ${CMAKE_COMMAND}
+    ARGS -E copy \"${D3DCOMPILER_47_DLL}\" \"$<TARGET_FILE_DIR:AtomicTool>/D3DCompiler_47.dll\")
+    
 else()
     target_link_libraries(AtomicTool curl)
 endif()

+ 2 - 2
Source/ThirdParty/TurboBadger/tb_str.h

@@ -27,7 +27,7 @@ protected:
 public:
 	TBStrC(const char *str) : s(const_cast<char *>(str)) {}
 
-	inline int Length() const							{ return strlen(s); }
+	inline int Length() const							{ return (int) strlen(s); }
 	inline bool IsEmpty() const							{ return s[0] == 0; }
 
 	inline int Compare(const char* str) const			{ return strcmp(s, str); }
@@ -66,7 +66,7 @@ public:
 
 	void Remove(int ofs, int len);
 	bool Insert(int ofs, const char *ins, int ins_len = TB_ALL_TO_TERMINATION);
-	bool Append(const char *ins, int ins_len = TB_ALL_TO_TERMINATION)	{ return Insert(strlen(s), ins, ins_len); }
+	bool Append(const char *ins, int ins_len = TB_ALL_TO_TERMINATION)	{ return Insert((int)strlen(s), ins, ins_len); }
 
 	inline operator char *() const						{ return s; }
 	char *CStr() const									{ return s; }