diff --git a/ProjFS.Mac/PrjFS.xcodeproj/project.pbxproj b/ProjFS.Mac/PrjFS.xcodeproj/project.pbxproj index 78492f96f8..3da96f6990 100644 --- a/ProjFS.Mac/PrjFS.xcodeproj/project.pbxproj +++ b/ProjFS.Mac/PrjFS.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXAggregateTarget section */ - 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */ = { + 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */ = { isa = PBXAggregateTarget; - buildConfigurationList = 26A7DE95229363EA004F6252 /* Build configuration list for PBXAggregateTarget "GeneratePrjFSVersion" */; + buildConfigurationList = 26A7DE95229363EA004F6252 /* Build configuration list for PBXAggregateTarget "GeneratePrjFSVersionFiles" */; buildPhases = ( 26A7DE96229363F2004F6252 /* ShellScript */, ); dependencies = ( ); - name = GeneratePrjFSVersion; + name = GeneratePrjFSVersionFiles; productName = GeneratePrjFSVersion; }; 4391F90021E436210008103C /* Build All */ = { @@ -241,6 +241,7 @@ 265504CE224ADE11005FAD74 /* MockPerfTracing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MockPerfTracing.cpp; sourceTree = ""; }; 26786AE5228B815E00F53311 /* JsonWriter.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = JsonWriter.hpp; sourceTree = ""; }; 26786AE6228B816E00F53311 /* JsonWriter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JsonWriter.cpp; sourceTree = ""; }; + 26BBD24B22E282EA007273D9 /* PrjFSConfig.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = PrjFSConfig.xcconfig; path = ../../BuildOutput/PrjFSConfig.xcconfig; sourceTree = ""; }; 43057C5B21E439C700487681 /* prjfs-log.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "prjfs-log.cpp"; sourceTree = ""; }; 43057C5C21E439C700487681 /* kext-perf-tracing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "kext-perf-tracing.cpp"; sourceTree = ""; }; 43057C5D21E439C700487681 /* kext-perf-tracing.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = "kext-perf-tracing.hpp"; sourceTree = ""; }; @@ -411,6 +412,7 @@ 4391F87521E4278C0008103C = { isa = PBXGroup; children = ( + 26BBD24B22E282EA007273D9 /* PrjFSConfig.xcconfig */, 4391F8C221E4306D0008103C /* PrjFSLib */, 4391F88D21E42AA70008103C /* PrjFSKext */, 4A08256921E77B7F00E21AFD /* PrjFSKextLogDaemon */, @@ -783,7 +785,7 @@ F5E39C7621F1118D006D65C2 /* PrjFSKextTests */, 4A8C139F21F23EE800002878 /* PrjFSKextTestable */, 264E723822930E660059E150 /* PrjFSLibTests */, - 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */, + 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */, ); }; /* End PBXProject section */ @@ -820,12 +822,13 @@ ); inputPaths = ( "${BUILD_ROOT}/../../PrjFSVersion.h", + "${BUILD_ROOT}/../../PrjFSConfig.xcconfig", ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ ! -f \"${BUILD_ROOT}/../../PrjFSVersion.h\" ]; then\n \"${PROJECT_DIR}/Scripts/GeneratePrjFSVersionHeader.sh\"\nfi"; + shellScript = "if [ ! -f \"${BUILD_ROOT}/../../PrjFSVersion.h\" ]; then\n \"${PROJECT_DIR}/Scripts/GeneratePrjFSVersionHeader.sh\"\nfi\nif [ ! -f \"${BUILD_ROOT}/../../PrjFSConfig.xcconfig\" ]; then\n \"${PROJECT_DIR}/Scripts/GeneratePrjFSXCConfig.sh\"\nfi"; }; 43057C6021E43CC100487681 /* Run Script - Check kext linkage */ = { isa = PBXShellScriptBuildPhase; @@ -951,37 +954,37 @@ }; 26A7DE982293643F004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DE972293643F004F6252 /* PBXContainerItemProxy */; }; 26A7DE9A2293644B004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DE992293644B004F6252 /* PBXContainerItemProxy */; }; 26A7DE9C22936451004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DE9B22936451004F6252 /* PBXContainerItemProxy */; }; 26A7DE9E22936459004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DE9D22936459004F6252 /* PBXContainerItemProxy */; }; 26A7DEA222936473004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DEA122936473004F6252 /* PBXContainerItemProxy */; }; 26A7DEA422936496004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DEA322936496004F6252 /* PBXContainerItemProxy */; }; 26A7DEA62293649E004F6252 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersion */; + target = 26A7DE91229363EA004F6252 /* GeneratePrjFSVersionFiles */; targetProxy = 26A7DEA52293649E004F6252 /* PBXContainerItemProxy */; }; 4391F90521E4362B0008103C /* PBXTargetDependency */ = { @@ -1096,6 +1099,7 @@ }; 43057C5221E437F300487681 /* Profiling(Release) */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 26BBD24B22E282EA007273D9 /* PrjFSConfig.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -1219,6 +1223,7 @@ }; 4391F88521E4278C0008103C /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 26BBD24B22E282EA007273D9 /* PrjFSConfig.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -1290,6 +1295,7 @@ }; 4391F88621E4278C0008103C /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 26BBD24B22E282EA007273D9 /* PrjFSConfig.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -1651,7 +1657,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 26A7DE95229363EA004F6252 /* Build configuration list for PBXAggregateTarget "GeneratePrjFSVersion" */ = { + 26A7DE95229363EA004F6252 /* Build configuration list for PBXAggregateTarget "GeneratePrjFSVersionFiles" */ = { isa = XCConfigurationList; buildConfigurations = ( 26A7DE92229363EA004F6252 /* Debug */, diff --git a/ProjFS.Mac/PrjFSKext/Info.plist b/ProjFS.Mac/PrjFSKext/Info.plist index 5703b2f766..3cbc627187 100644 --- a/ProjFS.Mac/PrjFSKext/Info.plist +++ b/ProjFS.Mac/PrjFSKext/Info.plist @@ -15,9 +15,9 @@ CFBundlePackageType KEXT CFBundleShortVersionString - 1.0 + $(PRJFS_BUNDLE_SHORT_VERSION_STRING) CFBundleVersion - 1 + $(PRJFS_BUNDLE_VERSION) NSHumanReadableCopyright Copyright © Microsoft IOKitPersonalities diff --git a/ProjFS.Mac/PrjFSKextLogDaemon/Info.plist b/ProjFS.Mac/PrjFSKextLogDaemon/Info.plist index 64ea754df4..8e47e55e25 100644 --- a/ProjFS.Mac/PrjFSKextLogDaemon/Info.plist +++ b/ProjFS.Mac/PrjFSKextLogDaemon/Info.plist @@ -7,8 +7,10 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleVersion - 0.1 + $(PRJFS_BUNDLE_VERSION) CFBundleName PrjFSKextLogDaemon + CFBundleShortVersionString + $(PRJFS_BUNDLE_SHORT_VERSION_STRING) diff --git a/ProjFS.Mac/Scripts/Build.sh b/ProjFS.Mac/Scripts/Build.sh index a85697e82a..08e4c08e9e 100755 --- a/ProjFS.Mac/Scripts/Build.sh +++ b/ProjFS.Mac/Scripts/Build.sh @@ -21,6 +21,9 @@ PROJFS=$SRCDIR/ProjFS.Mac echo "Generating PrjFSVersion.h as $VERSION..." $SCRIPTDIR/GeneratePrjFSVersionHeader.sh $VERSION || exit 1 +echo "Generating PrjFSConfig.xcconfig for $VERSION..." +$SCRIPTDIR/GeneratePrjFSXCConfig.sh $VERSION || exit 1 + xcodebuild -configuration $CONFIGURATION -project $PROJFS/PrjFS.xcodeproj -scheme 'Build All' -derivedDataPath $ROOTDIR/BuildOutput/ProjFS.Mac/Native build || exit 1 if !(gem list --local | grep xcpretty); then diff --git a/ProjFS.Mac/Scripts/GeneratePrjFSXCConfig.sh b/ProjFS.Mac/Scripts/GeneratePrjFSXCConfig.sh new file mode 100755 index 0000000000..8f7a74345c --- /dev/null +++ b/ProjFS.Mac/Scripts/GeneratePrjFSXCConfig.sh @@ -0,0 +1,25 @@ +VERSION=$1 +if [ -z $VERSION ]; then + VERSION="0.2.173.2" +fi + +if [[ $VERSION =~ ([0-9])\.([0-9]*)\.([0-9]*)\.([0-9]*) ]] +then + BUNDLE_VERSION="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}" +else + echo "Failed to determine BUNDLE_VERSION from $VERSION" + exit 1 +fi + +# Generate PrjFSConfig.xcconfig +SCRIPTDIR=$(dirname ${BASH_SOURCE[0]}) +VERSIONCONFIG=$SCRIPTDIR/../../../BuildOutput/PrjFSConfig.xcconfig + +echo "Generating $VERSIONCONFIG with bundle version $BUNDLE_VERSION and bundle short version string $VERSION" + +cat >$VERSIONCONFIG <