Skip to content

Commit 9849010

Browse files
committed
feat(Makefile): add xcframework target
1 parent bf28d8c commit 9849010

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

Makefile

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,64 @@ github: extension
159159
clean:
160160
rm -rf $(BUILD_DIR) $(DIST_DIR)
161161

162+
.NOTPARALLEL: %.dylib
163+
%.dylib:
164+
rm -rf $(BUILD_DIR) && $(MAKE) PLATFORM=$*
165+
mv $(DIST_DIR)/agent.dylib $(DIST_DIR)/$@
166+
167+
define PLIST
168+
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
169+
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\
170+
<plist version=\"1.0\">\
171+
<dict>\
172+
<key>CFBundleDevelopmentRegion</key>\
173+
<string>en</string>\
174+
<key>CFBundleExecutable</key>\
175+
<string>agent</string>\
176+
<key>CFBundleIdentifier</key>\
177+
<string>ai.sqlite.agent</string>\
178+
<key>CFBundleInfoDictionaryVersion</key>\
179+
<string>6.0</string>\
180+
<key>CFBundlePackageType</key>\
181+
<string>FMWK</string>\
182+
<key>CFBundleSignature</key>\
183+
<string>????</string>\
184+
<key>CFBundleVersion</key>\
185+
<string>$(shell make version)</string>\
186+
<key>CFBundleShortVersionString</key>\
187+
<string>$(shell make version)</string>\
188+
<key>MinimumOSVersion</key>\
189+
<string>11.0</string>\
190+
</dict>\
191+
</plist>
192+
endef
193+
194+
define MODULEMAP
195+
framework module agent {\
196+
umbrella header \"sqlite-agent.h\"\
197+
export *\
198+
}
199+
endef
200+
201+
LIB_NAMES = ios.dylib ios-sim.dylib macos.dylib
202+
FMWK_NAMES = ios-arm64 ios-arm64_x86_64-simulator macos-arm64_x86_64
203+
$(DIST_DIR)/%.xcframework: $(LIB_NAMES)
204+
@$(foreach i,1 2 3,\
205+
lib=$(word $(i),$(LIB_NAMES)); \
206+
fmwk=$(word $(i),$(FMWK_NAMES)); \
207+
mkdir -p $(DIST_DIR)/$$fmwk/agent.framework/Headers; \
208+
mkdir -p $(DIST_DIR)/$$fmwk/agent.framework/Modules; \
209+
cp $(SRC_DIR)/sqlite-agent.h $(DIST_DIR)/$$fmwk/agent.framework/Headers; \
210+
printf "$(PLIST)" > $(DIST_DIR)/$$fmwk/agent.framework/Info.plist; \
211+
printf "$(MODULEMAP)" > $(DIST_DIR)/$$fmwk/agent.framework/Modules/module.modulemap; \
212+
mv $(DIST_DIR)/$$lib $(DIST_DIR)/$$fmwk/agent.framework/agent; \
213+
install_name_tool -id "@rpath/agent.framework/agent" $(DIST_DIR)/$$fmwk/agent.framework/agent; \
214+
)
215+
xcodebuild -create-xcframework $(foreach fmwk,$(FMWK_NAMES),-framework $(DIST_DIR)/$(fmwk)/agent.framework) -output $@
216+
rm -rf $(foreach fmwk,$(FMWK_NAMES),$(DIST_DIR)/$(fmwk))
217+
218+
xcframework: $(DIST_DIR)/agent.xcframework
219+
162220
# Extract version from header
163221
version:
164222
@echo $(shell sed -n 's/^#define SQLITE_AGENT_VERSION[[:space:]]*"\([^"]*\)".*/\1/p' $(SRC_DIR)/sqlite-agent.h)

0 commit comments

Comments
 (0)