├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── atadatem.m ├── atadatem.xcodeproj └── project.pbxproj └── atadatem_Prefix.pch /.gitignore: -------------------------------------------------------------------------------- 1 | /atadatem 2 | /atadatem.o 3 | /build/ 4 | .DS_Store 5 | *.pbxuser 6 | *.mode1 7 | *.mode1v3 8 | *.mode2v3 9 | *.perspective 10 | *.perspectivev3 11 | *.pbxuser 12 | *.xcworkspace 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | atadatem 2 | 3 | Copyright (c) 2012, Carsten Blüm 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright notice, this 12 | list of conditions and the following disclaimer in the documentation and/or 13 | other materials provided with the distribution. 14 | * Neither the name of Carsten Blüm nor the names of his 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | CC = cc 2 | CFLAGS = -arch i386 -arch x86_64 -include atadatem_Prefix.pch -I . 3 | 4 | all: atadatem 5 | 6 | atadatem: atadatem.o 7 | gcc -arch i386 -arch x86_64 -o atadatem $^ -framework Cocoa -framework Carbon 8 | 9 | install: cliclick 10 | cp cliclick /usr/local/bin/ 11 | 12 | clean: 13 | $(RM) -v *.o 14 | $(RM) -vr atadatem 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | atadatem Overview 2 | ================= 3 | 4 | Purpose 5 | ------- 6 | 7 | Atadatem (“metadata” backwards) is a tiny macOS / OS X / Mac OS X command-line tool for recursively removing certain types of metadata files from one or more directories. 8 | 9 | Using atadatem, you can remove any combination or all of the following: 10 | * `.DS_Store` files 11 | * Git-related metadata: `.git`, `.gitattributes`, `.gitmodules`, `.gitignore`, `.gitkeep` 12 | * `.svn` directories 13 | * Mac Icon files (actually, the name is `Icon\r`) 14 | * JavaScript-related configuration/metadata: `.jshintrc`, `.jslintrc`, `.babelrc` 15 | * Editor/IDE metadata: `.idea`, `.editorconfig` 16 | * Integration/analysis tools’ metadata: `.travis.yml`, `.scrutinizer.yml`, `.coveralls.yml`, `.codeclimate.yml` 17 | 18 | 19 | Usage 20 | ----- 21 | Invoke `atadatem` without any options or arguments or with option `-h` to see usage information. 22 | 23 | 24 | Examples 25 | -------- 26 | Removing all .DS_Store files below a directory: 27 | 28 | atadatem -d /path/to/directory 29 | 30 | Removing all the file and directory types listed above from two directories: 31 | 32 | atadatem -a /path/to/directory1 /path/to/directory2 33 | 34 | Testing what would have been removed if you selected to remove all: 35 | 36 | atadatem -t -a /path/to/directory 37 | 38 | Testing what Git and Subversion directories in your home directory would be removed: 39 | 40 | atadatem -gst ~ 41 | 42 | Compiling 43 | --------- 44 | The repository contains an Xcode 3.2 project which should compile out of the box. 45 | 46 | Author 47 | ----- 48 | Carsten Blüm, [www.bluem.net](https://www.bluem.net/) 49 | 50 | Project website: [www.bluem.net/jump/atadatem](https://www.bluem.net/jump/atadatem) 51 | 52 | 53 | License 54 | ---------- 55 | [BSD License](https://opensource.org/licenses/bsd-license.php) 56 | -------------------------------------------------------------------------------- /atadatem.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2012-2017, Carsten Blüm 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright notice, this 11 | * list of conditions and the following disclaimer in the documentation and/or 12 | * other materials provided with the distribution. 13 | * - Neither the name of Carsten Blüm nor the names of his contributors may be 14 | * used to endorse or promote products derived from this software without specific 15 | * prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 24 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | */ 28 | 29 | #import 30 | #include 31 | #include 32 | #include 33 | 34 | void clean(const char *fspath, BOOL testMode, BOOL removeDSStore, BOOL removeSvn, 35 | BOOL removeGit, BOOL removeIcons, BOOL removeJs, BOOL removeEditor, BOOL removeTools); 36 | 37 | void help(); 38 | 39 | int main (int argc, const char * argv[]) { 40 | 41 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 42 | 43 | static char options[] = "adcsjhegit"; 44 | BOOL removeDSStore = NO; 45 | BOOL removeGit = NO; 46 | BOOL removeJs = NO; 47 | BOOL removeEditor = NO; 48 | BOOL removeSvn = NO; 49 | BOOL removeIcons = NO; 50 | BOOL removeTools = NO; 51 | BOOL testMode = NO; 52 | unsigned int i, optchar; 53 | 54 | // Parse command line options 55 | while ((optchar = getopt(argc, (char * const *)argv, options)) != -1) { 56 | switch(optchar) { 57 | case 'h': 58 | help(); 59 | [pool release]; 60 | return EXIT_SUCCESS; 61 | case 'a': 62 | removeDSStore = YES; 63 | removeGit = YES; 64 | removeSvn = YES; 65 | removeJs = YES; 66 | removeIcons = YES; 67 | removeEditor = YES; 68 | removeTools = YES; 69 | break; 70 | case 'j': 71 | removeJs = YES; 72 | break; 73 | case 'e': 74 | removeEditor = YES; 75 | break; 76 | case 's': 77 | removeSvn = YES; 78 | break; 79 | case 't': 80 | testMode = YES; 81 | break; 82 | case 'c': 83 | removeTools = YES; 84 | break; 85 | case 'i': 86 | removeIcons = YES; 87 | break; 88 | case 'g': 89 | removeGit = YES; 90 | break; 91 | case 'd': 92 | removeDSStore = YES; 93 | break; 94 | default: 95 | printf("Invoke with -h to see the help\n"); 96 | return EXIT_FAILURE; 97 | } 98 | } 99 | 100 | if (argc == optind) { 101 | // No arguments given 102 | help(); 103 | [pool release]; 104 | return EXIT_SUCCESS; 105 | } 106 | 107 | // Loop over remaining arguments 108 | for (i = optind; i < argc; i ++) { 109 | clean(argv[i], testMode, removeDSStore, removeSvn, removeGit, removeIcons, removeJs, removeEditor, removeTools); 110 | } 111 | 112 | [pool release]; 113 | return 0; 114 | } 115 | 116 | 117 | void clean(const char *fspath, BOOL testMode, BOOL removeDSStore, BOOL removeSvn, 118 | BOOL removeGit, BOOL removeIcons, BOOL removeJs, BOOL removeEditor, BOOL removeTools) { 119 | 120 | NSFileManager *fMan = [NSFileManager defaultManager]; 121 | NSString *path = [fMan stringWithFileSystemRepresentation:fspath length:strlen(fspath)]; 122 | NSString *item; 123 | BOOL isDir; 124 | 125 | // Silently ignore anything that's not a directory 126 | if ([fMan fileExistsAtPath:path isDirectory:&isDir] && !isDir) { 127 | return; 128 | } 129 | 130 | NSMutableArray *removeDirs = [NSMutableArray arrayWithCapacity:4]; 131 | NSMutableArray *removeFiles = [NSMutableArray arrayWithCapacity:4]; 132 | 133 | if (removeSvn) { 134 | [removeDirs addObject:@".svn"]; 135 | } 136 | 137 | if (removeGit) { 138 | [removeDirs addObject:@".git"]; 139 | [removeFiles addObject:@".gitkeep"]; 140 | [removeFiles addObject:@".gitignore"]; 141 | [removeFiles addObject:@".gitattributes"]; 142 | [removeFiles addObject:@".gitmodules"]; 143 | } 144 | 145 | if (removeEditor) { 146 | [removeDirs addObject:@".idea"]; 147 | [removeFiles addObject:@".editorconfig"]; 148 | } 149 | 150 | if (removeTools) { 151 | [removeFiles addObject:@".travis.yml"]; 152 | [removeFiles addObject:@".scrutinizer.yml"]; 153 | [removeFiles addObject:@".coveralls.yml"]; 154 | [removeFiles addObject:@".codeclimate.yml"]; 155 | } 156 | 157 | if (removeDSStore) { 158 | [removeFiles addObject:@".DS_Store"]; 159 | } 160 | 161 | if (removeJs) { 162 | [removeFiles addObject:@".jshintrc"]; 163 | [removeFiles addObject:@".jslintrc"]; 164 | [removeFiles addObject:@".babelrc"]; 165 | [removeFiles addObject:@".eslintrc.js"]; 166 | [removeFiles addObject:@".eslintrc.yaml"]; 167 | [removeFiles addObject:@".eslintrc.yml"]; 168 | [removeFiles addObject:@".eslintrc.json"]; 169 | [removeFiles addObject:@".eslintrc"]; 170 | [removeFiles addObject:@".eslintignore"]; 171 | } 172 | 173 | if (removeIcons) { 174 | [removeFiles addObject:@"Icon\r"]; 175 | } 176 | 177 | NSDirectoryEnumerator *dEnum = [fMan enumeratorAtPath:path]; 178 | while (item = [dEnum nextObject]) { 179 | NSString *name = [item lastPathComponent]; 180 | if ([removeDirs containsObject:name]) { 181 | NSString *subPath = [path stringByAppendingPathComponent:item]; 182 | if ([fMan fileExistsAtPath:subPath isDirectory:&isDir] && isDir) { 183 | if (testMode) { 184 | printf("%s\n", [subPath UTF8String]); 185 | } else { 186 | [fMan removeFileAtPath:subPath handler:nil]; 187 | } 188 | } 189 | } else if ([removeFiles containsObject:name]) { 190 | NSString *subPath = [path stringByAppendingPathComponent:item]; 191 | NSDictionary *attributes = [fMan attributesOfItemAtPath:subPath error:nil]; 192 | if ([NSFileTypeRegular isEqualToString:[attributes objectForKey:NSFileType]]) { 193 | if (testMode) { 194 | printf("%s\n", [subPath UTF8String]); 195 | } else { 196 | [fMan removeFileAtPath:subPath handler:nil]; 197 | } 198 | } 199 | } 200 | } 201 | } 202 | 203 | void help() { 204 | NSString *help = @"\n" 205 | "atadatem recursively removes specific invisible metadata files/directories\n\n" 206 | "Usage: \n" 207 | " atadatem [-a -d -i -s -g] path1 [path2] [...]\n\n" 208 | "Options: \n" 209 | " -d Recursively remove .DS_Store files\n" 210 | " -i Recursively remove Mac Icon files (“Icon\\r”)\n" 211 | " -g Recursively remove Git-related metadata: .git, .gitattributes, .gitmodules, .gitignore, .gitkeep\n" 212 | " -s Recursively remove Subversion .svn directories\n" 213 | " -j Recursively remove JavaScript-related metadata: .jshintrc, .jslintrc, .babelrc, .eslintrc, .eslintrc.*, .eslintignore\n" 214 | " -e Recursively remove editor/IDE metadata: .idea, .editorconfig\n" 215 | " -c Recursively remove integration/analysis tools’ metadata: .travis.yml, .scrutinizer.yml, .coveralls.yml, .codeclimate.yml\n" 216 | " -a Recursively remove all of the above\n" 217 | " -t Test mode: removes nothing, only reports which files/directories would be deleted\n" 218 | "\n" 219 | "atadatem 2.0\n" 220 | "Carsten Bluem, 03/07/2017\n" 221 | "Website: www.bluem.net/jump/atadatem\n"; 222 | 223 | printf("%s", [help UTF8String]); 224 | } 225 | -------------------------------------------------------------------------------- /atadatem.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8DD76F9A0486AA7600D96B5E /* atadatem.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* atadatem.m */; settings = {ATTRIBUTES = (); }; }; 11 | 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; 12 | /* End PBXBuildFile section */ 13 | 14 | /* Begin PBXCopyFilesBuildPhase section */ 15 | 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { 16 | isa = PBXCopyFilesBuildPhase; 17 | buildActionMask = 8; 18 | dstPath = /usr/share/man/man1/; 19 | dstSubfolderSpec = 0; 20 | files = ( 21 | ); 22 | runOnlyForDeploymentPostprocessing = 1; 23 | }; 24 | /* End PBXCopyFilesBuildPhase section */ 25 | 26 | /* Begin PBXFileReference section */ 27 | 08FB7796FE84155DC02AAC07 /* atadatem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = atadatem.m; sourceTree = ""; }; 28 | 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 29 | 32A70AAB03705E1F00C91783 /* atadatem_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atadatem_Prefix.pch; sourceTree = ""; }; 30 | 8DD76FA10486AA7600D96B5E /* atadatem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = atadatem; sourceTree = BUILT_PRODUCTS_DIR; }; 31 | /* End PBXFileReference section */ 32 | 33 | /* Begin PBXFrameworksBuildPhase section */ 34 | 8DD76F9B0486AA7600D96B5E /* Frameworks */ = { 35 | isa = PBXFrameworksBuildPhase; 36 | buildActionMask = 2147483647; 37 | files = ( 38 | 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */, 39 | ); 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXFrameworksBuildPhase section */ 43 | 44 | /* Begin PBXGroup section */ 45 | 08FB7794FE84155DC02AAC07 /* atadatem */ = { 46 | isa = PBXGroup; 47 | children = ( 48 | 08FB7795FE84155DC02AAC07 /* Source */, 49 | C6859EA2029092E104C91782 /* Documentation */, 50 | 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, 51 | 1AB674ADFE9D54B511CA2CBB /* Products */, 52 | ); 53 | name = atadatem; 54 | sourceTree = ""; 55 | }; 56 | 08FB7795FE84155DC02AAC07 /* Source */ = { 57 | isa = PBXGroup; 58 | children = ( 59 | 32A70AAB03705E1F00C91783 /* atadatem_Prefix.pch */, 60 | 08FB7796FE84155DC02AAC07 /* atadatem.m */, 61 | ); 62 | name = Source; 63 | sourceTree = ""; 64 | }; 65 | 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = { 66 | isa = PBXGroup; 67 | children = ( 68 | 08FB779EFE84155DC02AAC07 /* Foundation.framework */, 69 | ); 70 | name = "External Frameworks and Libraries"; 71 | sourceTree = ""; 72 | }; 73 | 1AB674ADFE9D54B511CA2CBB /* Products */ = { 74 | isa = PBXGroup; 75 | children = ( 76 | 8DD76FA10486AA7600D96B5E /* atadatem */, 77 | ); 78 | name = Products; 79 | sourceTree = ""; 80 | }; 81 | C6859EA2029092E104C91782 /* Documentation */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | ); 85 | name = Documentation; 86 | sourceTree = ""; 87 | }; 88 | /* End PBXGroup section */ 89 | 90 | /* Begin PBXNativeTarget section */ 91 | 8DD76F960486AA7600D96B5E /* atadatem */ = { 92 | isa = PBXNativeTarget; 93 | buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "atadatem" */; 94 | buildPhases = ( 95 | 8DD76F990486AA7600D96B5E /* Sources */, 96 | 8DD76F9B0486AA7600D96B5E /* Frameworks */, 97 | 8DD76F9E0486AA7600D96B5E /* CopyFiles */, 98 | ); 99 | buildRules = ( 100 | ); 101 | dependencies = ( 102 | ); 103 | name = atadatem; 104 | productInstallPath = "$(HOME)/bin"; 105 | productName = atadatem; 106 | productReference = 8DD76FA10486AA7600D96B5E /* atadatem */; 107 | productType = "com.apple.product-type.tool"; 108 | }; 109 | /* End PBXNativeTarget section */ 110 | 111 | /* Begin PBXProject section */ 112 | 08FB7793FE84155DC02AAC07 /* Project object */ = { 113 | isa = PBXProject; 114 | attributes = { 115 | }; 116 | buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "atadatem" */; 117 | compatibilityVersion = "Xcode 3.2"; 118 | developmentRegion = English; 119 | hasScannedForEncodings = 1; 120 | knownRegions = ( 121 | English, 122 | Japanese, 123 | French, 124 | German, 125 | ); 126 | mainGroup = 08FB7794FE84155DC02AAC07 /* atadatem */; 127 | projectDirPath = ""; 128 | projectRoot = ""; 129 | targets = ( 130 | 8DD76F960486AA7600D96B5E /* atadatem */, 131 | ); 132 | }; 133 | /* End PBXProject section */ 134 | 135 | /* Begin PBXSourcesBuildPhase section */ 136 | 8DD76F990486AA7600D96B5E /* Sources */ = { 137 | isa = PBXSourcesBuildPhase; 138 | buildActionMask = 2147483647; 139 | files = ( 140 | 8DD76F9A0486AA7600D96B5E /* atadatem.m in Sources */, 141 | ); 142 | runOnlyForDeploymentPostprocessing = 0; 143 | }; 144 | /* End PBXSourcesBuildPhase section */ 145 | 146 | /* Begin XCBuildConfiguration section */ 147 | 1DEB927508733DD40010E9CD /* Debug */ = { 148 | isa = XCBuildConfiguration; 149 | buildSettings = { 150 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 151 | COPY_PHASE_STRIP = NO; 152 | GCC_DYNAMIC_NO_PIC = NO; 153 | GCC_ENABLE_FIX_AND_CONTINUE = YES; 154 | GCC_MODEL_TUNING = G5; 155 | GCC_OPTIMIZATION_LEVEL = 0; 156 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 157 | GCC_PREFIX_HEADER = atadatem_Prefix.pch; 158 | INSTALL_PATH = "$(HOME)/bin"; 159 | MACOSX_DEPLOYMENT_TARGET = 10.12; 160 | PRODUCT_NAME = atadatem; 161 | SDKROOT = macosx; 162 | ZERO_LINK = YES; 163 | }; 164 | name = Debug; 165 | }; 166 | 1DEB927608733DD40010E9CD /* Release */ = { 167 | isa = XCBuildConfiguration; 168 | buildSettings = { 169 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 170 | GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 171 | GCC_MODEL_TUNING = G5; 172 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 173 | GCC_PREFIX_HEADER = atadatem_Prefix.pch; 174 | INSTALL_PATH = "$(HOME)/bin"; 175 | MACOSX_DEPLOYMENT_TARGET = 10.12; 176 | PRODUCT_NAME = atadatem; 177 | SDKROOT = macosx; 178 | }; 179 | name = Release; 180 | }; 181 | 1DEB927908733DD40010E9CD /* Debug */ = { 182 | isa = XCBuildConfiguration; 183 | buildSettings = { 184 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 185 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 186 | GCC_WARN_UNUSED_VARIABLE = YES; 187 | MACOSX_DEPLOYMENT_TARGET = 10.12; 188 | PREBINDING = NO; 189 | SDKROOT = macosx; 190 | }; 191 | name = Debug; 192 | }; 193 | 1DEB927A08733DD40010E9CD /* Release */ = { 194 | isa = XCBuildConfiguration; 195 | buildSettings = { 196 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 197 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 198 | GCC_WARN_UNUSED_VARIABLE = YES; 199 | MACOSX_DEPLOYMENT_TARGET = 10.12; 200 | PREBINDING = NO; 201 | SDKROOT = macosx; 202 | }; 203 | name = Release; 204 | }; 205 | /* End XCBuildConfiguration section */ 206 | 207 | /* Begin XCConfigurationList section */ 208 | 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "atadatem" */ = { 209 | isa = XCConfigurationList; 210 | buildConfigurations = ( 211 | 1DEB927508733DD40010E9CD /* Debug */, 212 | 1DEB927608733DD40010E9CD /* Release */, 213 | ); 214 | defaultConfigurationIsVisible = 0; 215 | defaultConfigurationName = Release; 216 | }; 217 | 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "atadatem" */ = { 218 | isa = XCConfigurationList; 219 | buildConfigurations = ( 220 | 1DEB927908733DD40010E9CD /* Debug */, 221 | 1DEB927A08733DD40010E9CD /* Release */, 222 | ); 223 | defaultConfigurationIsVisible = 0; 224 | defaultConfigurationName = Release; 225 | }; 226 | /* End XCConfigurationList section */ 227 | }; 228 | rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; 229 | } 230 | -------------------------------------------------------------------------------- /atadatem_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'atadatem' target in the 'atadatem' project. 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | --------------------------------------------------------------------------------