Index: ObjFW.xcodeproj/project.pbxproj ================================================================== --- ObjFW.xcodeproj/project.pbxproj +++ ObjFW.xcodeproj/project.pbxproj @@ -592,11 +592,11 @@ 4B2C22A61DA292BE00735907 /* OFThread+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6C8AD517BD5C2E00B194F2 /* OFThread+Private.h */; }; 4B2C22A71DA292BE00735907 /* OFTimer+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6C8AD617BD5C2E00B194F2 /* OFTimer+Private.h */; }; 4B2C22A81DA292BE00735907 /* OFZIPArchiveEntry+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6C8AD717BD5C2E00B194F2 /* OFZIPArchiveEntry+Private.h */; }; 4B2C22A91DA292BE00735907 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDF37B41338055600F9A81A /* config.h */; }; 4B2C22AA1DA292BE00735907 /* socket_helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B7DD58118942FE200990FD6 /* socket_helpers.h */; }; - 4B2C22AC1DA292BE00735907 /* module.map in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BEAF52519A8107500B61868 /* module.map */; }; + 4B2C22AC1DA292BE00735907 /* module.modulemap in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BEAF52519A8107500B61868 /* module.modulemap */; }; 4B2C728B1B888B8300717583 /* OFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2C72891B888B6900717583 /* OFFileManager.m */; }; 4B2C728C1B888B8700717583 /* OFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2C72881B888B6900717583 /* OFFileManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B325EDD1605F3A0007836CA /* OFRunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B325ED91605F3A0007836CA /* OFRunLoop.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B325EDE1605F3A0007836CA /* OFRunLoop.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B325EDA1605F3A0007836CA /* OFRunLoop.m */; }; 4B325EDF1605F3A0007836CA /* OFTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B325EDB1605F3A0007836CA /* OFTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -829,13 +829,13 @@ 4B6D0A8A1D4459D900901D8D /* OFHMAC.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B6D0A881D4459D900901D8D /* OFHMAC.m */; }; 4B7161AD17A6FC7600B74970 /* OFHTTPResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B7161AB17A6FC7600B74970 /* OFHTTPResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B7161AE17A6FC7600B74970 /* OFHTTPResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B7161AC17A6FC7600B74970 /* OFHTTPResponse.m */; }; 4B72F7DE1AD9311B00CE253C /* OFStatItemFailedException.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B72F7DC1AD9311B00CE253C /* OFStatItemFailedException.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B72F7DF1AD9311B00CE253C /* OFStatItemFailedException.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B72F7DD1AD9311B00CE253C /* OFStatItemFailedException.m */; }; - 4B7327771F93EC3A00E1607F /* module.map in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B7327731F93EBC400E1607F /* module.map */; }; - 4B7327791F93EC5700E1607F /* module.map in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BEAF52519A8107500B61868 /* module.map */; }; - 4B73277B1F93EC6A00E1607F /* module.map in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B7327731F93EBC400E1607F /* module.map */; }; + 4B7327771F93EC3A00E1607F /* module.modulemap in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B7327731F93EBC400E1607F /* module.modulemap */; }; + 4B7327791F93EC5700E1607F /* module.modulemap in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BEAF52519A8107500B61868 /* module.modulemap */; }; + 4B73277B1F93EC6A00E1607F /* module.modulemap in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B7327731F93EBC400E1607F /* module.modulemap */; }; 4B745BA5168B25E600A6C20E /* OFSystemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B745BA3168B25E600A6C20E /* OFSystemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B745BA6168B25E600A6C20E /* OFSystemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B745BA4168B25E600A6C20E /* OFSystemInfo.m */; }; 4B7769ED1895C07D00D12284 /* resolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B7769EB1895C07D00D12284 /* resolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B7769EE1895C07D00D12284 /* resolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B7769EC1895C07D00D12284 /* resolver.m */; }; 4B7769F11895ED0C00D12284 /* OFUDPSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B7769EF1895ED0C00D12284 /* OFUDPSocket.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -1146,14 +1146,14 @@ /* Begin PBXCopyFilesBuildPhase section */ 4B2C22AB1DA292BE00735907 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = ObjFW.framework; + dstPath = ObjFW.framework/Modules; dstSubfolderSpec = 16; files = ( - 4B2C22AC1DA292BE00735907 /* module.map in CopyFiles */, + 4B2C22AC1DA292BE00735907 /* module.modulemap in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; 4B5D70791DA2F93F00B3B2D7 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -1166,34 +1166,34 @@ runOnlyForDeploymentPostprocessing = 0; }; 4B7327761F93EC1E00E1607F /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = ObjFW_Bridge.framework; + dstPath = ObjFW_Bridge.framework/Modules; dstSubfolderSpec = 16; files = ( - 4B7327771F93EC3A00E1607F /* module.map in CopyFiles */, + 4B7327771F93EC3A00E1607F /* module.modulemap in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; 4B7327781F93EC4100E1607F /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = ObjFW.framework; + dstPath = ObjFW.framework/Modules; dstSubfolderSpec = 16; files = ( - 4B7327791F93EC5700E1607F /* module.map in CopyFiles */, + 4B7327791F93EC5700E1607F /* module.modulemap in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; 4B73277A1F93EC6100E1607F /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = ObjFW_Bridge.framework; + dstPath = ObjFW_Bridge.framework/Modules; dstSubfolderSpec = 16; files = ( - 4B73277B1F93EC6A00E1607F /* module.map in CopyFiles */, + 4B73277B1F93EC6A00E1607F /* module.modulemap in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BD9CA2E1DA2CF1D00E5AD52 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -1569,11 +1569,11 @@ 4B6EF685123535C80076B512 /* test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = test.m; path = tests/objc_sync/test.m; sourceTree = SOURCE_ROOT; }; 4B7161AB17A6FC7600B74970 /* OFHTTPResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFHTTPResponse.h; path = src/OFHTTPResponse.h; sourceTree = ""; }; 4B7161AC17A6FC7600B74970 /* OFHTTPResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFHTTPResponse.m; path = src/OFHTTPResponse.m; sourceTree = ""; }; 4B72F7DC1AD9311B00CE253C /* OFStatItemFailedException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFStatItemFailedException.h; path = src/exceptions/OFStatItemFailedException.h; sourceTree = ""; }; 4B72F7DD1AD9311B00CE253C /* OFStatItemFailedException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFStatItemFailedException.m; path = src/exceptions/OFStatItemFailedException.m; sourceTree = ""; }; - 4B7327731F93EBC400E1607F /* module.map */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = module.map; path = src/bridge/module.map; sourceTree = ""; }; + 4B7327731F93EBC400E1607F /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = src/bridge/module.modulemap; sourceTree = ""; }; 4B745BA3168B25E600A6C20E /* OFSystemInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFSystemInfo.h; path = src/OFSystemInfo.h; sourceTree = ""; }; 4B745BA4168B25E600A6C20E /* OFSystemInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFSystemInfo.m; path = src/OFSystemInfo.m; sourceTree = ""; }; 4B76F4751DA2C2BB00CFF831 /* Tests (iOS).app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Tests (iOS).app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4B7769EB1895C07D00D12284 /* resolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = resolver.h; path = src/resolver.h; sourceTree = ""; }; 4B7769EC1895C07D00D12284 /* resolver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = resolver.m; path = src/resolver.m; sourceTree = ""; }; @@ -1727,11 +1727,11 @@ 4BE5F0D812DF4225005C7A0C /* OFConstantString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFConstantString.m; path = src/OFConstantString.m; sourceTree = SOURCE_ROOT; }; 4BE5F0D912DF4225005C7A0C /* OFDate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFDate.h; path = src/OFDate.h; sourceTree = SOURCE_ROOT; }; 4BE5F0DA12DF4225005C7A0C /* OFDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFDate.m; path = src/OFDate.m; sourceTree = SOURCE_ROOT; }; 4BE5F0E412DF4259005C7A0C /* OFBlockTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFBlockTests.m; path = tests/OFBlockTests.m; sourceTree = SOURCE_ROOT; }; 4BE5F0E512DF4259005C7A0C /* OFDateTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFDateTests.m; path = tests/OFDateTests.m; sourceTree = SOURCE_ROOT; }; - 4BEAF52519A8107500B61868 /* module.map */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = module.map; path = src/module.map; sourceTree = SOURCE_ROOT; }; + 4BEAF52519A8107500B61868 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = src/module.modulemap; sourceTree = SOURCE_ROOT; }; 4BEC83B719B7CB7100E4BB08 /* OFRIPEMD160Hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFRIPEMD160Hash.h; path = src/OFRIPEMD160Hash.h; sourceTree = ""; }; 4BEC83B819B7CB7100E4BB08 /* OFRIPEMD160Hash.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFRIPEMD160Hash.m; path = src/OFRIPEMD160Hash.m; sourceTree = ""; }; 4BEC83BB19B7CBDE00E4BB08 /* OFRIPEMD160HashTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFRIPEMD160HashTests.m; path = tests/OFRIPEMD160HashTests.m; sourceTree = ""; }; 4BF0749512DFAFCA00A4ADD1 /* OFURLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFURLTests.m; path = tests/OFURLTests.m; sourceTree = SOURCE_ROOT; }; 4BF0DD731D44645D001D9949 /* OFHMACTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFHMACTests.m; path = tests/OFHMACTests.m; sourceTree = ""; }; @@ -2017,11 +2017,11 @@ 4B187E5F163EA42A0049A832 /* Supporting Files */ = { isa = PBXGroup; children = ( 4B187E23163EA3DA0049A832 /* Info.plist */, 4B187E24163EA3DA0049A832 /* Makefile */, - 4B7327731F93EBC400E1607F /* module.map */, + 4B7327731F93EBC400E1607F /* module.modulemap */, ); name = "Supporting Files"; sourceTree = ""; }; 4B1F61B11F66239200278BCB /* Invocation */ = { @@ -2053,11 +2053,11 @@ isa = PBXGroup; children = ( 4B3D23BB1337FC5800DD29B8 /* Info.plist */, 4B19023A1338D6A2000374C9 /* Makefile */, 4BDF37B41338055600F9A81A /* config.h */, - 4BEAF52519A8107500B61868 /* module.map */, + 4BEAF52519A8107500B61868 /* module.modulemap */, 4BD98C011338140B0048DD5B /* objfw-defs.h */, ); name = "Supporting Files"; sourceTree = ""; }; Index: buildsys.mk.in ================================================================== --- buildsys.mk.in +++ buildsys.mk.in @@ -313,19 +313,28 @@ for i in $$ars; do \ dir=".$$(echo $$i | sed 's/\//_/g').objs"; \ rm -fr $$dir; \ done; \ ${MAKE} includedir=$$PWD/$$out/Headers INSTALL_INCLUDES_IF_SUBDIR=${includesubdir} install-includes; \ - for i in Info.plist module.map; do \ - test -f $$i || continue; \ + if test -f Info.plist; then \ + i=Info.plist; \ ${INSTALL_STATUS}; \ if ${INSTALL} -m 644 $$i $$out/$$i; then \ ${INSTALL_OK}; \ else \ ${INSTALL_FAILED}; \ fi \ - done + fi; \ + if test -f module.modulemap; then \ + i=module.modulemap; \ + ${INSTALL_STATUS}; \ + if ${MKDIR_P} $$out/Modules && ${INSTALL} -m 644 $$i $$out/Modules/$$i; then \ + ${INSTALL_OK}; \ + else \ + ${INSTALL_FAILED}; \ + fi \ + fi ${MORPHOS_LIB} ${MORPHOS_LIB_NOINST}: ${EXT_DEPS} ${MORPHOS_LIB_OBJS} ${MORPHOS_LIB_OBJS_EXTRA} ${LINK_STATUS} out="$@"; \ objs=""; \ DELETED src/bridge/module.map Index: src/bridge/module.map ================================================================== --- src/bridge/module.map +++ src/bridge/module.map @@ -1,5 +0,0 @@ -framework module ObjFW_Bridge { - umbrella header "ObjFW_Bridge/ObjFW_Bridge.h" - - export * -} ADDED src/bridge/module.modulemap Index: src/bridge/module.modulemap ================================================================== --- src/bridge/module.modulemap +++ src/bridge/module.modulemap @@ -0,0 +1,5 @@ +framework module ObjFW_Bridge { + umbrella header "ObjFW_Bridge/ObjFW_Bridge.h" + + export * +} DELETED src/module.map Index: src/module.map ================================================================== --- src/module.map +++ src/module.map @@ -1,16 +0,0 @@ -framework module ObjFW { - umbrella header "ObjFW/ObjFW.h" - - /* - * These are included by atomic.h, but should never be included - * directly. - */ - exclude header "atomic_builtins.h" - exclude header "atomic_no_threads.h" - exclude header "atomic_osatomic.h" - exclude header "atomic_powerpc.h" - exclude header "atomic_sync_builtins.h" - exclude header "atomic_x86.h" - - export * -} ADDED src/module.modulemap Index: src/module.modulemap ================================================================== --- src/module.modulemap +++ src/module.modulemap @@ -0,0 +1,16 @@ +framework module ObjFW { + umbrella header "ObjFW/ObjFW.h" + + /* + * These are included by atomic.h, but should never be included + * directly. + */ + exclude header "atomic_builtins.h" + exclude header "atomic_no_threads.h" + exclude header "atomic_osatomic.h" + exclude header "atomic_powerpc.h" + exclude header "atomic_sync_builtins.h" + exclude header "atomic_x86.h" + + export * +}