Skip to content

Commit b4311b1

Browse files
committed
Added gitignore, Use swift toolchain tools, CMake cleanup
1 parent ae8175d commit b4311b1

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
build/
2+
managed_components/
3+
dependencies.lock
4+
sdkconfig

main/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ DerivedData/
66
.swiftpm/configuration/registries.json
77
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
88
.netrc
9+
Package.resolved

main/CMakeLists.txt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,22 @@ set(SWIFT_PRODUCT_BUILD "${COMPONENT_DIR}/.build")
5151
set(SWIFT_PRODUCT_RELEASE "${SWIFT_PRODUCT_BUILD}/release")
5252
set(SWIFT_PRODUCT_ARCHIVE "${SWIFT_PRODUCT_RELEASE}/lib${SWIFT_PRODUCT_NAME}.a")
5353

54+
# Get swift toolchain location
55+
execute_process(COMMAND which swift OUTPUT_VARIABLE _SWIFT_LOCATION OUTPUT_STRIP_TRAILING_WHITESPACE)
56+
execute_process(COMMAND realpath ${_SWIFT_LOCATION} OUTPUT_VARIABLE _SWIFT_ABS_LOCATION OUTPUT_STRIP_TRAILING_WHITESPACE)
57+
execute_process(COMMAND dirname ${_SWIFT_ABS_LOCATION} OUTPUT_VARIABLE SWIFT_TOOLCHAIN OUTPUT_STRIP_TRAILING_WHITESPACE)
58+
5459
# Generate Archive
5560
add_custom_target(swift-archive
5661
COMMAND
5762
# Remove the archive. Swift does not overwrite this on building but merges them.
5863
# If the file with app_main gets renamed, both objectfiles (old and new) will be in the archive, potentially causing problems
5964
rm -f ${SWIFT_PRODUCT_ARCHIVE}
6065
&&
61-
swift package update
66+
${SWIFT_TOOLCHAIN}/swift package update
6267
--package-path ${COMPONENT_DIR}
6368
&&
64-
swift build
69+
${SWIFT_TOOLCHAIN}/swift build
6570
--configuration=release
6671
--package-path ${COMPONENT_DIR}
6772

@@ -88,7 +93,8 @@ add_custom_target(swift-archive
8893
# Generate all necessary include paths for LSP
8994
add_custom_target(swift-compile-flags
9095
COMMAND
91-
echo '' &&
96+
echo ''
97+
&&
9298
\( echo '${SWIFT_INCLUDES}' && \( echo '$<TARGET_PROPERTY:__idf_main,INCLUDE_DIRECTORIES>' | tr '\;' '\\n' | sed -e 's/\\\(.*\\\)/-Xcc -I\\1/g' \) \)
9399
| tr ' ' '\\n' | grep '^-I' > ${SWIFT_PRODUCT_RELEASE}/compile_flags.txt
94100
BYPRODUCTS
@@ -98,12 +104,10 @@ add_custom_target(swift-compile-flags
98104
# Create needed symlinks so LSP finds the module information
99105
add_custom_target(swift-lsp-symlink
100106
COMMAND
101-
echo '' &&
102-
\( ln -sfT ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET} ${SWIFT_PRODUCT_BUILD}/${SWIFT_LSP_TARGET} 2>/dev/null ||
103-
\( rm -rf ${SWIFT_PRODUCT_BUILD}/${SWIFT_LSP_TARGET} && ln -sf ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET} ${SWIFT_PRODUCT_BUILD}/${SWIFT_LSP_TARGET} \)
104-
\) && \( ln -sfT ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/release ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/debug 2>/dev/null ||
105-
\( rm -rf ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/debug && ln -sf ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/release ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/debug \)
106-
\)
107+
rm -rf ${SWIFT_PRODUCT_BUILD}/${SWIFT_LSP_TARGET}
108+
&& ln -sf ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET} ${SWIFT_PRODUCT_BUILD}/${SWIFT_LSP_TARGET}
109+
&& rm -rf ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/debug
110+
&& ln -sf ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/release ${SWIFT_PRODUCT_BUILD}/${SWIFT_TARGET}/debug
107111
DEPENDS
108112
swift-archive
109113
)
@@ -117,7 +121,7 @@ add_custom_command(
117121
OUTPUT ${SWIFT_PRODUCT_RELEASE}/_main_swiftcode.o
118122
COMMAND
119123
# Extract first .o which defines the 'app_main' symbol
120-
ar x ${SWIFT_PRODUCT_ARCHIVE} $$\( nm --defined-only -A ${SWIFT_PRODUCT_ARCHIVE} | grep -m 1 ' T app_main' | cut -d: -f2 \) --output ${SWIFT_PRODUCT_RELEASE}
124+
${SWIFT_TOOLCHAIN}/llvm-ar x ${SWIFT_PRODUCT_ARCHIVE} $$\( nm --defined-only -A ${SWIFT_PRODUCT_ARCHIVE} | grep -m 1 ' T app_main' | cut -d: -f2 \) --output ${SWIFT_PRODUCT_RELEASE}
121125
# Rename it to a predicatble file
122126
&& \( mv -f -T ${SWIFT_PRODUCT_RELEASE}/$$\( nm --defined-only -A ${SWIFT_PRODUCT_ARCHIVE} | grep -m 1 ' T app_main' | cut -d: -f2 \) ${SWIFT_PRODUCT_RELEASE}/_main_swiftcode.o 2>/dev/null || \(
123127
rm -rf ${SWIFT_PRODUCT_RELEASE}/_main_swiftcode.o && mv -f ${SWIFT_PRODUCT_RELEASE}/$$\( nm --defined-only -A ${SWIFT_PRODUCT_ARCHIVE} | grep -m 1 ' T app_main' | cut -d: -f2 \) ${SWIFT_PRODUCT_RELEASE}/_main_swiftcode.o \)

0 commit comments

Comments
 (0)