aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
authorVincent Bénony2015-12-09 15:32:52 +0100
committerVincent Bénony2016-01-06 16:17:36 +0100
commitee73bb428f6f23b921e8c832778b0225618c35b8 (patch)
tree24767fffc2254526a383125dc9bcbc013fd16057 /devtools
parent66c195f55e0ddb1130a40219452287ea9165c84d (diff)
downloadscummvm-rg350-ee73bb428f6f23b921e8c832778b0225618c35b8.tar.gz
scummvm-rg350-ee73bb428f6f23b921e8c832778b0225618c35b8.tar.bz2
scummvm-rg350-ee73bb428f6f23b921e8c832778b0225618c35b8.zip
IOS: Compute MD5 identifiers instead of random
To avoid recompiling the wole project each time we use the create_project tool.
Diffstat (limited to 'devtools')
-rw-r--r--devtools/create_project/xcode.cpp25
-rw-r--r--devtools/create_project/xcode.h3
-rw-r--r--devtools/create_project/xcode/create_project.xcodeproj/project.pbxproj19
3 files changed, 39 insertions, 8 deletions
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index db91bb873d..1239974d11 100644
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -26,6 +26,12 @@
#include <fstream>
#include <algorithm>
+#ifdef MACOSX
+#include <sstream>
+#include <iomanip>
+#include <CommonCrypto/CommonCrypto.h>
+#endif
+
namespace CreateProjectTool {
#define DEBUG_XCODE_HASH 0
@@ -1008,7 +1014,6 @@ void XcodeProvider::setupDefines(const BuildSetup &setup) {
// Object hash
//////////////////////////////////////////////////////////////////////////
-// TODO use md5 to compute a file hash (and fall back to standard key generation if not passed a file)
std::string XcodeProvider::getHash(std::string key) {
#if DEBUG_XCODE_HASH
@@ -1020,7 +1025,12 @@ std::string XcodeProvider::getHash(std::string key) {
return hashIterator->second;
// Generate a new key from the file hash and insert it into the dictionary
+#ifdef MACOSX
+ std::string hash = md5(key);
+#else
std::string hash = newHash();
+#endif
+
_hashDictionnary[key] = hash;
return hash;
@@ -1029,6 +1039,19 @@ std::string XcodeProvider::getHash(std::string key) {
bool isSeparator (char s) { return (s == '-'); }
+#ifdef MACOSX
+std::string XcodeProvider::md5(std::string key) {
+ unsigned char md[CC_MD5_DIGEST_LENGTH];
+ CC_MD5(key.c_str(), (CC_LONG) key.length(), md);
+ std::stringstream stream;
+ stream << std::hex << std::setfill('0') << std::setw(2);
+ for (int i=0; i<CC_MD5_DIGEST_LENGTH; i++) {
+ stream << (unsigned int) md[i];
+ }
+ return stream.str();
+}
+#endif
+
std::string XcodeProvider::newHash() const {
std::string hash = createUUID();
diff --git a/devtools/create_project/xcode.h b/devtools/create_project/xcode.h
index c4cb035b98..c97e31064b 100644
--- a/devtools/create_project/xcode.h
+++ b/devtools/create_project/xcode.h
@@ -340,6 +340,9 @@ private:
// Hash generation
std::string getHash(std::string key);
+#ifdef MACOSX
+ std::string md5(std::string key);
+#endif
std::string newHash() const;
// Output
diff --git a/devtools/create_project/xcode/create_project.xcodeproj/project.pbxproj b/devtools/create_project/xcode/create_project.xcodeproj/project.pbxproj
index 83cd0c327b..4f06a5e469 100644
--- a/devtools/create_project/xcode/create_project.xcodeproj/project.pbxproj
+++ b/devtools/create_project/xcode/create_project.xcodeproj/project.pbxproj
@@ -141,6 +141,7 @@
F9A66C1E1396D36100CEE494 /* Project object */ = {
isa = PBXProject;
attributes = {
+ LastUpgradeCheck = 0720;
};
buildConfigurationList = F9A66C211396D36100CEE494 /* Build configuration list for PBXProject "create_project" */;
compatibilityVersion = "Xcode 3.2";
@@ -179,12 +180,14 @@
F9A66C2E1396D36100CEE494 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ POSIX,
+ MACOSX,
+ );
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
@@ -197,9 +200,11 @@
F9A66C2F1396D36100CEE494 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ POSIX,
+ MACOSX,
+ );
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
@@ -216,8 +221,8 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
+ "$(inherited)",
DEBUG,
- POSIX,
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
@@ -230,7 +235,7 @@
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
- GCC_PREPROCESSOR_DEFINITIONS = POSIX;
+ GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;