Skip to content

Commit bd87918

Browse files
committed
Rework makefile to split JavaKit targets from jextract-swift targets
The JavaKit targets (Swift calling into Java via JNI) have fewer requirements (for JVM installations and development toolchains) and are a bit easier to get started with. Split those targets out, and turn `make` with no specified target into a little help target. Fixes issue #68.
1 parent fab398b commit bd87918

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

Makefile

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,17 @@ endif
5353

5454
SAMPLES_DIR := "Samples"
5555

56-
all: generate-all
56+
all:
57+
@echo "Welcome to swift-java! There are several makefile targets to choose from:"
58+
@echo " javakit-run: Run the JavaKit example program that uses Java libraries from Swift."
59+
@echo " javakit-generate: Regenerate the Swift wrapper code for the various JavaKit libraries from Java. This only has to be done when changing the Java2Swift tool."
60+
@echo " jextract-run: Run the Java example code that uses the wrapped Swift library. NOTE: this requires development toolchain described in the README."
61+
@echo " jextract-generate: Generate Java wrapper code for the example Swift library allowing Swift to be called from Java. NOTE: this requires development toolchain described in the README."
5762

5863
$(BUILD_DIR)/debug/libJavaKit.$(LIB_SUFFIX) $(BUILD_DIR)/debug/Java2Swift:
5964
swift build
6065

61-
run: $(BUILD_DIR)/debug/libJavaKit.$(LIB_SUFFIX) $(BUILD_DIR)/debug/libExampleSwiftLibrary.$(LIB_SUFFIX)
66+
javakit-run: $(BUILD_DIR)/debug/libJavaKit.$(LIB_SUFFIX) $(BUILD_DIR)/debug/libExampleSwiftLibrary.$(LIB_SUFFIX)
6267
./gradlew Samples:JavaKitSampleApp:run
6368

6469
Java2Swift: $(BUILD_DIR)/debug/Java2Swift
@@ -79,8 +84,8 @@ generate-JavaKitNetwork: Java2Swift generate-JavaKit
7984
mkdir -p Sources/JavaKitNetwork/generated
8085
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitNetwork --manifests Sources/JavaKit/generated/JavaKit.swift2java -o Sources/JavaKitNetwork/generated java.net.URI java.net.URL java.net.URLClassLoader
8186

82-
generate-all: generate-JavaKit generate-JavaKitReflection generate-JavaKitJar generate-JavaKitNetwork \
83-
jextract-swift
87+
javakit-generate: generate-JavaKit generate-JavaKitReflection generate-JavaKitJar generate-JavaKitNetwork
88+
8489
clean:
8590
rm -rf .build; \
8691
rm -rf Samples/SwiftKitExampleApp/src/generated/java/*
@@ -112,11 +117,11 @@ jextract-swift: generate-JExtract-interface-files
112117
swift build
113118

114119
generate-JExtract-interface-files: $(BUILD_DIR)/debug/libJavaKit.$(LIB_SUFFIX)
115-
echo "Generate .swiftinterface files..."
120+
@echo "Generate .swiftinterface files..."
116121
@$(call make_swiftinterface, "ExampleSwiftLibrary", "MySwiftLibrary")
117122
@$(call make_swiftinterface, "SwiftKitSwift", "SwiftKit")
118123

119-
jextract-run: jextract-swift generate-JExtract-interface-files
124+
jextract-generate: jextract-swift generate-JExtract-interface-files
120125
swift run jextract-swift \
121126
--package-name com.example.swift.generated \
122127
--swift-module ExampleSwiftLibrary \
@@ -129,5 +134,5 @@ jextract-run: jextract-swift generate-JExtract-interface-files
129134
$(BUILD_DIR)/jextract/SwiftKitSwift/SwiftKit.swiftinterface
130135

131136

132-
jextract-run-java: jextract-swift generate-JExtract-interface-files
137+
jextract-run: jextract-generate generate-JExtract-interface-files
133138
./gradlew Samples:SwiftKitSampleApp:run

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ This project contains quite a few builds, Swift, Java, and depends on some custo
6767
Easiest way to get going is to:
6868

6969
```bash
70-
make
70+
make javakit-run # Run the JavaKit example of Swift code using Java libraries
71+
make jextract-run # Run the jextract-swift example of Java code using Swift libraries
7172
swift test # test all Swift code, e.g. jextract-swift
7273
./gradlew test # test all Java code, including integration tests that actually use jextract-ed sources
7374
```

0 commit comments

Comments
 (0)