Create .frameworks for macOS and iOS differently

FossilOrigin-Name: 5abbdc7a0a39925071a56d373ab4b27ac1b952b782b923d6cf6ab8c2fb459583
This commit is contained in:
Jonathan Schleifer 2023-09-10 23:30:05 +00:00
parent 4f1b6289ee
commit b723a43c45
2 changed files with 59 additions and 32 deletions

View file

@ -153,6 +153,7 @@ AC_DEFUN([BUILDSYS_CHECK_IOS], [
#endif #endif
], [ ], [
host_is_ios="yes" host_is_ios="yes"
AC_SUBST(HOST_IS_IOS, yes)
], [ ], [
host_is_ios="no" host_is_ios="no"
]) ])
@ -318,11 +319,10 @@ AC_DEFUN([BUILDSYS_FRAMEWORK], [
case "$host_os" in case "$host_os" in
darwin*) darwin*)
FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
AS_IF([test x"$host_is_ios" = x"yes"], [ AS_IF([test x"$host_is_ios" = x"yes"], [
FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/Frameworks/$$out/$${out%.framework}' FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/Frameworks/$$out/$${out%.framework}'
], [ ], [
FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/../Frameworks/$$out/$${out%.framework}' FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/../Frameworks/$$out/$${out%.framework}'
]) ])

View file

@ -208,37 +208,64 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
${FRAMEWORK} ${FRAMEWORK_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${FRAMEWORK} ${FRAMEWORK_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
${LINK_STATUS} ${LINK_STATUS}
out="$@"; \ out="$@"; \
if rm -fr $@ && \ if test x"@HOST_IS_IOS@" = x"yes"; then \
${MKDIR_P} $@/Versions/${LIB_MAJOR} && \ if rm -fr $@ && \
${LN_S} ${LIB_MAJOR} $@/Versions/Current && \ ${MAKE} @MAKEFLAGS_SILENT@ \
${MAKE} @MAKEFLAGS_SILENT@ \ COPY_HEADERS_IF_SUBDIR=${includesubdir} \
COPY_HEADERS_IF_SUBDIR=${includesubdir} \ COPY_HEADERS_DESTINATION=$$PWD/$@/Headers \
COPY_HEADERS_DESTINATION=$$PWD/$@/Versions/${LIB_MAJOR}/Headers\ copy-headers-into-framework && \
copy-headers-into-framework && \ if test -f Info.plist; then \
${LN_S} Versions/Current/Headers $@/Headers && \ ${INSTALL} -m 644 Info.plist $@/Info.plist; \
if test -f Info.plist; then \ fi && \
${MKDIR_P} $@/Versions/${LIB_MAJOR}/Resources && \ if test -f module.modulemap; then \
${INSTALL} -m 644 Info.plist \ ${MKDIR_P} $@/Modules && \
$@/Versions/${LIB_MAJOR}/Resources/Info.plist && \ ${INSTALL} -m 644 module.modulemap \
${LN_S} Versions/Current/Resources $@/Resources; \ $@/Modules/module.modulemap; \
fi && \ fi && \
if test -f module.modulemap; then \ ${LD} -o $@/$${out%.framework} \
${MKDIR_P} $@/Versions/${LIB_MAJOR}/Modules && \ ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${FRAMEWORK_LDFLAGS} \
${INSTALL} -m 644 module.modulemap \ ${FRAMEWORK_LDFLAGS_INSTALL_NAME} ${LDFLAGS} \
$@/Versions/${LIB_MAJOR}/Modules/module.modulemap && \ ${FRAMEWORK_LIBS} && \
${LN_S} Versions/Current/Modules $@/Modules; \ ${CODESIGN} -fs ${CODESIGN_IDENTITY} $@; then \
fi && \ ${LINK_OK}; \
${LD} -o $@/Versions/${LIB_MAJOR}/$${out%.framework} ${LIB_OBJS} \ else \
${LIB_OBJS_EXTRA} ${FRAMEWORK_LDFLAGS} \ rm -fr $$out; false; \
${FRAMEWORK_LDFLAGS_INSTALL_NAME} ${LDFLAGS} \ ${LINK_FAILED}; \
${FRAMEWORK_LIBS} && \ fi; \
${LN_S} Versions/Current/$${out%.framework} \
$@/$${out%.framework} && \
${CODESIGN} -fs ${CODESIGN_IDENTITY} $@; then \
${LINK_OK}; \
else \ else \
rm -fr $$out; false; \ versiondir="$@/Versions/${LIB_MAJOR}"; \
${LINK_FAILED}; \ if rm -fr $@ && \
${MKDIR_P} $$versiondir && \
${LN_S} ${LIB_MAJOR} $@/Versions/Current && \
${MAKE} @MAKEFLAGS_SILENT@ \
COPY_HEADERS_IF_SUBDIR=${includesubdir} \
COPY_HEADERS_DESTINATION=$$PWD/$$versiondir/Headers \
copy-headers-into-framework && \
${LN_S} Versions/Current/Headers $@/Headers && \
if test -f Info.plist; then \
${MKDIR_P} $$versiondir/Resources && \
${INSTALL} -m 644 Info.plist \
$$versiondir/Resources/Info.plist && \
${LN_S} Versions/Current/Resources $@/Resources; \
fi && \
if test -f module.modulemap; then \
${MKDIR_P} $$versiondir/Modules && \
${INSTALL} -m 644 module.modulemap \
$$versiondir/Modules/module.modulemap && \
${LN_S} Versions/Current/Modules $@/Modules; \
fi && \
${LD} -o $$versiondir/$${out%.framework} \
${LIB_OBJS} ${LIB_OBJS_EXTRA} ${FRAMEWORK_LDFLAGS} \
${FRAMEWORK_LDFLAGS_INSTALL_NAME} ${LDFLAGS} \
${FRAMEWORK_LIBS} && \
${LN_S} Versions/Current/$${out%.framework} \
$@/$${out%.framework} && \
${CODESIGN} -fs ${CODESIGN_IDENTITY} $@; then \
${LINK_OK}; \
else \
rm -fr $$out; false; \
${LINK_FAILED}; \
fi; \
fi fi
copy-headers-into-framework: copy-headers-into-framework: