23
23
# FRAMEWORK_INCLUDES (Darwin only) :=
24
24
# CFLAGS_EXTRAS :=
25
25
# LD_EXTRAS :=
26
- # SWIFTFLAGS_EXTRAS :=
27
- # SWIFT_BRIDGING_HEADER :=
28
- # SWIFT_PRECOMPILE_BRIDGING_HEADER := NO
29
- # SWIFT_OBJC_HEADER := Foo-Swift.h
30
26
# SPLIT_DEBUG_SYMBOLS := YES
31
27
# CROSS_COMPILE :=
32
28
# USE_PRIVATE_MODULE_CACHE := YES
@@ -154,25 +150,6 @@ ifeq "$(OS)" "Darwin"
154
150
CLANG_RT_DIR := $(LLDB_LIBS_DIR)/lldb/clang/lib/darwin/
155
151
endif
156
152
157
- #----------------------------------------------------------------------
158
- # SWIFTC defaults to swift.
159
- # TODO:
160
- # If you change the defaults of SWIFTC, be sure to also change it in the file
161
- # test/plugins/builder_base.py, which provides a Python way to return the
162
- # value of the make variable SWIFTC -- getSwiftCompiler().
163
- #
164
- # See also these functions:
165
- # o cxx_compiler
166
- # o cxx_linker
167
- #----------------------------------------------------------------------
168
- SWIFTC ?= $(shell $(VPATH)/$(LEVEL)/find-swift.py)
169
- ifeq "$(SDKROOT)" ""
170
- SWIFTSDKROOT = $(shell $(VPATH)/$(LEVEL)/find-swift.py -s)
171
- else
172
- SWIFTSDKROOT = $(SDKROOT)
173
- endif
174
- PYTHON ?= python3
175
-
176
153
#----------------------------------------------------------------------
177
154
# ARCHFLAG is the flag used to tell the compiler which architecture
178
155
# to compile for. The default is the flag that clang accepts.
@@ -261,7 +238,6 @@ endif
261
238
DEBUG_INFO_FLAG ?= -g
262
239
263
240
CFLAGS ?= $(DEBUG_INFO_FLAG) -O0 -fno-builtin
264
- SWIFTFLAGS ?= $(DEBUG_INFO_FLAG) -Onone -Xfrontend -serialize-debugging-options
265
241
266
242
ifeq "$(OS)" "Darwin"
267
243
ifneq "$(SDKROOT)" ""
@@ -282,53 +258,7 @@ ifndef NO_TEST_COMMON_H
282
258
CFLAGS += -include $(THIS_FILE_DIR)/test_common.h
283
259
endif
284
260
285
- # If C++ interop is enabled, the generated header file will try to include
286
- # SWIFT_LIBS_DIR/swiftToCxx/_SwiftCxxInteroperability.h
287
- ifneq "$(SWIFT_CXX_INTEROP)" ""
288
- CFLAGS += -I$(SWIFT_LIBS_DIR)
289
- endif
290
-
291
261
CFLAGS += $(NO_LIMIT_DEBUG_INFO_FLAGS) $(ARCH_CFLAGS)
292
- SWIFTFLAGS += $(SWIFTFLAGS_EXTRAS)
293
- SWIFTFLAGS += $(FRAMEWORK_INCLUDES)
294
- ifeq "$(findstring -target,$(SWIFTFLAGS))" ""
295
- SWIFTFLAGS += $(TARGET_SWIFTFLAGS)
296
- endif
297
-
298
- ifneq "$(SWIFT_ENABLE_EXPLICIT_MODULES)" ""
299
- SWIFTFLAGS += -explicit-module-build
300
- endif
301
-
302
- # Swift bridging headers.
303
- ifneq "$(SWIFT_BRIDGING_HEADER)" ""
304
- # These are incompatible.
305
- DISABLE_SWIFT_INTERFACE = YES
306
- ifneq "$(SWIFT_PRECOMPILE_BRIDGING_HEADER)" "NO"
307
- # With PCH.
308
- SWIFT_HFLAGS = -import-objc-header $(SRCDIR)/$(SWIFT_BRIDGING_HEADER) -enable-bridging-pch -pch-output-dir $(BUILDDIR)
309
- else
310
- # From source.
311
- SWIFT_HFLAGS = -import-objc-header $(SRCDIR)/$(SWIFT_BRIDGING_HEADER) -disable-bridging-pch
312
- endif
313
- else
314
- # No bridging header.
315
- SWIFT_HFLAGS :=
316
- endif
317
-
318
- # Clang headers generated from Swift sources.
319
- ifneq "$(SWIFT_OBJC_HEADER)" ""
320
- SWIFTFLAGS += -emit-objc-header-path $(SWIFT_OBJC_HEADER)
321
- endif
322
- ifneq "$(SWIFT_CXX_HEADER)" ""
323
- SWIFTFLAGS += -emit-clang-header-path $(SWIFT_CXX_HEADER)
324
- $(SWIFT_CXX_HEADER): $(strip $(SWIFT_SOURCES:.swift=.swift.o))
325
- endif
326
-
327
- ifeq "$(OS)" "Linux"
328
- SWIFT_HOSTDIR = $(shell dirname $(SWIFTC))/../lib/swift/linux
329
- else
330
- SWIFT_HOSTDIR = $(shell dirname $(SWIFTC))/../lib/swift/host
331
- endif
332
262
333
263
# Use this one if you want to build one part of the result without debug information:
334
264
ifeq "$(OS)" "Darwin"
347
277
THE_CLANG_MODULE_CACHE_DIR := $(CLANG_MODULE_CACHE_DIR)
348
278
endif
349
279
350
- SWIFT_MODULE_CACHE_FLAGS ?= -module-cache-path $(THE_CLANG_MODULE_CACHE_DIR)
351
- SWIFTFLAGS += $(SWIFT_MODULE_CACHE_FLAGS)
352
-
353
280
MODULE_BASE_FLAGS := -fmodules -gmodules -fmodules-cache-path=$(THE_CLANG_MODULE_CACHE_DIR)
354
281
MANDATORY_MODULE_BUILD_CFLAGS := $(MODULE_BASE_FLAGS) -gmodules
355
282
# Build flags for building with C++ modules.
@@ -367,11 +294,7 @@ endif
367
294
368
295
CFLAGS += $(CFLAGS_EXTRAS)
369
296
370
- ifeq "$(SWIFT_CXX_INTEROP)" "1"
371
- CXXFLAGS += -std=c++17
372
- else
373
297
CXXFLAGS += -std=c++11
374
- endif
375
298
CXXFLAGS += $(CFLAGS) $(ARCH_CXXFLAGS)
376
299
377
300
LD = $(CC)
@@ -593,71 +516,6 @@ ifneq "$(strip $(OBJC_SOURCES))" ""
593
516
LDFLAGS +=-lobjc
594
517
endif
595
518
596
- #----------------------------------------------------------------------
597
- # Check if we have any Swift source files
598
- #----------------------------------------------------------------------
599
- ifneq "$(strip $(SWIFT_SOURCES))" ""
600
- OBJECTS +=$(strip $(SWIFT_SOURCES:.swift=.swift.o))
601
- USESWIFTDRIVER = 1
602
- endif
603
-
604
- ifneq "$(strip $(DYLIB_SWIFT_SOURCES))" ""
605
- DYLIB_OBJECTS +=$(strip $(DYLIB_SWIFT_SOURCES:.swift=.swift.o))
606
- USESWIFTDRIVER = 1
607
- endif
608
-
609
- ifneq "$(strip $(SWIFT_SOURCES_FOR_CXX_HEADER))" ""
610
- SWIFT_CXX_HEADER =$(strip $(SWIFT_SOURCES:.swift=.swift.o))
611
- USESWIFTDRIVER = 1
612
- endif
613
-
614
- ifeq "$(USESWIFTDRIVER)" "1"
615
- LDFLAGS +=-L"$(SWIFTLIBS)"
616
- ifeq "$(OS)" "Darwin"
617
- SWIFTFLAGS += -sdk "$(SWIFTSDKROOT)"
618
- endif
619
- SWIFTFLAGS += -tools-directory "$(shell dirname $(CC))"
620
- endif
621
-
622
- #----------------------------------------------------------------------
623
- # Check if we need the Swift/ObjC interop features
624
- #----------------------------------------------------------------------
625
- ifeq "$(SWIFT_OBJC_INTEROP)" "1"
626
- ifeq "$(OS)" "Darwin"
627
- SWIFTFLAGS += -link-objc-runtime -framework Foundation -framework CoreGraphics
628
- LDFLAGS += -lswiftObjectiveC -lswiftFoundation -framework Foundation -framework CoreGraphics
629
- else
630
- # CFLAGS_EXTRAS is used via "dotest.py -E" to pass the -I and -L paths
631
- # for Foundation and libdispatch on Linux.
632
- SWIFTFLAGS += $(CFLAGS_EXTRAS)
633
- LDFLAGS += $(CFLAGS_EXTRAS)
634
- endif
635
-
636
- endif
637
-
638
- #----------------------------------------------------------------------
639
- # Check if we need the Swift/C++ interop features
640
- #----------------------------------------------------------------------
641
- ifeq "$(SWIFT_CXX_INTEROP)" "1"
642
- SWIFTFLAGS += -Xfrontend -enable-experimental-cxx-interop -Xfrontend -validate-tbd-against-ir=none
643
- SWIFTFLAGS += -Xcc -std=c++17
644
- endif
645
-
646
- #----------------------------------------------------------------------
647
- # Check if we should compile in Swift embedded mode
648
- #----------------------------------------------------------------------
649
- ifeq "$(SWIFT_EMBEDDED_MODE)" "1"
650
- SWIFTFLAGS += -gdwarf-types -enable-experimental-feature Embedded -Xfrontend -disable-objc-interop -runtime-compatibility-version none
651
- SWIFT_WMO = 1
652
- endif
653
-
654
- #----------------------------------------------------------------------
655
- # Set up variables to run the Swift frontend directly.
656
- #----------------------------------------------------------------------
657
- SWIFT=$(shell dirname $(SWIFTC))/swift
658
- SWIFT_FEFLAGS = $(shell echo $(patsubst -Xfrontend,,$(SWIFTFLAGS)) | sed -e 's/-Xlinker [^ ]*//g')
659
- SWIFT_FE=$(SWIFT) -frontend
660
-
661
519
#----------------------------------------------------------------------
662
520
# Check if we have any ObjC++ source files
663
521
#----------------------------------------------------------------------
@@ -689,89 +547,8 @@ endif
689
547
#----------------------------------------------------------------------
690
548
# Compile the executable from all the objects.
691
549
#----------------------------------------------------------------------
692
- ifeq "$(USESWIFTDRIVER)" "1"
693
- #----------------------------------------------------------------------
694
- ifeq "$(DYLIB_NAME)" ""
695
- MODULENAME?=$(shell basename $(EXE) .out)
696
- else
697
- EXE = $(DYLIB_FILENAME)
698
- MODULENAME?=$(DYLIB_NAME)
699
- PARSE_AS_LIBRARY = -parse-as-library
700
- endif
701
-
702
- VPATHSOURCES=$(patsubst %,$(VPATH)/%,$(SWIFT_SOURCES)) $(patsubst %,$(VPATH)/%,$(DYLIB_SWIFT_SOURCES))
703
-
704
- ALL_SWIFT_SOURCES = $(SWIFT_SOURCES) $(DYLIB_SWIFT_SOURCES)
705
- SWIFT_OBJECTS = $(strip $(ALL_SWIFT_SOURCES:.swift=.swift.o))
706
-
707
- ifeq "$(DISABLE_SWIFT_INTERFACE)" ""
708
- SWIFT_INTERFACE_FLAGS=-emit-module-interface-path $(BUILDDIR)/$(MODULENAME).swiftinterface
709
- endif
710
-
711
- ifeq "$(SWIFT_WMO)" "1"
712
- SWIFTC_OUTPUT=-wmo -o $@
713
- else
714
- SWIFTC_OUTPUT=-output-file-map $(BUILDDIR)/$(MODULENAME)-output-file-map.json
715
- endif
716
-
717
- # The Swift object files are named .swift.o so they don't conflict
718
- # with the wrapped Swift module $(MODULENAME).o
719
-
720
- $(SWIFT_OBJECTS): $(SWIFT_SOURCES) $(DYLIB_SWIFT_SOURCES)
721
- ifneq "$(SWIFT_WMO)" "1"
722
- @echo "### Generating output file map"
723
- $(PYTHON) $(THIS_FILE_DIR)/gen-output-map.py $^ $(patsubst %,$(BUILDDIR)/%,$(SWIFT_OBJECTS)) >$(BUILDDIR)/$(MODULENAME)-output-file-map.json
724
- endif
725
- @echo "### Compiling" $^
726
- @echo "### Swift driver expanded incovation will be:"
727
- $(SWIFTC) -emit-object $^ $(SWIFTC_OUTPUT) \
728
- $(SWIFTFLAGS) $(SWIFT_HFLAGS) $(PARSE_AS_LIBRARY) \
729
- -module-name $(MODULENAME) \
730
- -emit-module-path $(BUILDDIR)/$(MODULENAME).swiftmodule \
731
- $(SWIFT_INTERFACE_FLAGS) -###
732
- @echo "### Swift driver invocation:"
733
- $(SWIFTC) -emit-object $^ $(SWIFTC_OUTPUT) \
734
- $(SWIFTFLAGS) $(SWIFT_HFLAGS) $(PARSE_AS_LIBRARY) \
735
- -module-name $(MODULENAME) \
736
- -emit-module-path $(BUILDDIR)/$(MODULENAME).swiftmodule \
737
- $(SWIFT_INTERFACE_FLAGS)
738
- ifneq "$(OS)" "Darwin"
739
- @echo "### Wrapping Swift module:"
740
- $(SWIFT) -modulewrap $(BUILDDIR)/$(MODULENAME).swiftmodule \
741
- -o $(BUILDDIR)/$(MODULENAME).o
742
- endif
743
-
744
- ifeq "$(OS)" "Darwin"
745
- ifeq "$(HIDE_SWIFTMODULE)" ""
746
- SWIFTMODULE = $(MODULENAME).swiftmodule
747
- LD_SWIFTFLAGS = -Xlinker -add_ast_path -Xlinker $(SWIFTMODULE)
748
- else
749
- SWIFTMODULE =
750
- LD_SWIFTFLAGS =
751
- endif
752
- $(EXE): $(OBJECTS)
753
- @echo "### Linking" $(EXE)
754
- $(SWIFTC) $(LD_EXTRAS) $(LD_SWIFTFLAGS) $(OBJECTS) $(patsubst -g,,$(SWIFTFLAGS)) -o "$(EXE)"
755
- ifneq "$(CODESIGN)" ""
756
- $(CODESIGN) -s - "$(EXE)"
757
- endif
758
- ifneq "$(HIDE_SWIFTMODULE)" ""
759
- rm -f $(MODULENAME).swiftmodule
760
- endif
761
- else # OS = Linux
762
- ifeq "$(HIDE_SWIFTMODULE)" ""
763
- WRAPPED_SWIFTMODULE = $(MODULENAME).o
764
- endif
765
-
766
- $(EXE): $(OBJECTS)
767
- @echo "### Linking" $(EXE)
768
- $(SWIFTC) $(LD_EXTRAS) $(LD_SWIFTFLAGS) $(WRAPPED_SWIFTMODULE) $^ $(patsubst -g,,$(SWIFTFLAGS)) -o "$(EXE)"
769
- ifneq "$(HIDE_SWIFTMODULE)" ""
770
- rm -f $(MODULENAME).swiftmodule
771
- endif
772
- endif
773
-
774
- else # USESWIFTDRIVER = 0
550
+ include Swift.rules
551
+ ifneq "$(USESWIFTDRIVER)" "1"
775
552
#----------------------------------------------------------------------
776
553
777
554
ifneq "$(DYLIB_NAME)" ""
@@ -791,6 +568,7 @@ ifneq "$(CODESIGN)" ""
791
568
$(CODESIGN) -s - "$(EXE)"
792
569
endif
793
570
endif
571
+
794
572
endif
795
573
#----------------------------------------------------------------------
796
574
# Make the dSYM file from the executable if $(MAKE_DSYM) != "NO"
@@ -808,57 +586,10 @@ ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
808
586
endif
809
587
endif
810
588
589
+ ifneq "$(USESWIFTDRIVER)" "1"
811
590
#----------------------------------------------------------------------
812
591
# Make the dylib
813
592
#----------------------------------------------------------------------
814
- #----------------------------------------------------------------------
815
- ifeq "$(USESWIFTDRIVER)" "1"
816
- #----------------------------------------------------------------------
817
- ifeq "$(OS)" "Darwin"
818
- DYLIB_SWIFT_FLAGS= \
819
- -Xlinker -dylib \
820
- -Xlinker -install_name -Xlinker "$(DYLIB_INSTALL_NAME)" \
821
- $(LD_EXTRAS)
822
- ifeq "$(DYLIB_HIDE_SWIFTMODULE)" ""
823
- DYLIB_SWIFT_FLAGS+= -Xlinker -add_ast_path -Xlinker $(MODULENAME).swiftmodule
824
- endif
825
- else
826
- DYLIB_SWIFT_FLAGS=$(LD_EXTRAS)
827
- ifeq "$(DYLIB_HIDE_SWIFTMODULE)" ""
828
- DYLIB_OBJECTS += $(BUILDDIR)/$(MODULENAME).o
829
- endif
830
- endif
831
-
832
- $(DYLIB_FILENAME) : $(DYLIB_OBJECTS) $(MODULE_INTERFACE)
833
- @echo "### Linking dynamic library $(DYLIB_NAME)"
834
- ifneq "$(FRAMEWORK)" ""
835
- mkdir -p $(FRAMEWORK).framework/Versions/A/Headers
836
- mkdir -p $(FRAMEWORK).framework/Versions/A/Modules
837
- mkdir -p $(FRAMEWORK).framework/Versions/A/Resources
838
- ifneq "$(MODULENAME)" ""
839
- mkdir -p $(FRAMEWORK).framework/Versions/A/Modules/$(MODULENAME).swiftmodule
840
- cp -r $(MODULENAME).swiftmodule $(FRAMEWORK).framework/Versions/A/Modules/$(MODULENAME).swiftmodule/$(ARCH).swiftmodule
841
- endif
842
- (cd $(FRAMEWORK).framework/Versions; ln -sf A Current)
843
- (cd $(FRAMEWORK).framework/; ln -sf Versions/A/Headers Headers)
844
- (cd $(FRAMEWORK).framework/; ln -sf Versions/A/Modules Modules)
845
- (cd $(FRAMEWORK).framework/; ln -sf Versions/A/Resources Resources)
846
- (cd $(FRAMEWORK).framework/; ln -sf Versions/A/$(FRAMEWORK) $(FRAMEWORK))
847
- endif
848
- $(SWIFTC) $(patsubst -g,,$(SWIFTFLAGS)) \
849
- -emit-library $(DYLIB_SWIFT_FLAGS) -o $@ $(DYLIB_OBJECTS)
850
- ifneq "$(CODESIGN)" ""
851
- $(CODESIGN) -s - "$(DYLIB_FILENAME)"
852
- endif
853
- ifneq "$(MAKE_DSYM)" "NO"
854
- ifneq "$(DS)" ""
855
- "$(DS)" $(DSFLAGS) "$(DYLIB_FILENAME)"
856
- endif
857
- endif
858
-
859
- #----------------------------------------------------------------------
860
- else # Non-Swift llvm.org part.
861
- #----------------------------------------------------------------------
862
593
$(DYLIB_OBJECTS) : CFLAGS += -DCOMPILING_LLDB_TEST_DLL
863
594
864
595
ifneq "$(OS)" "Windows_NT"
@@ -900,7 +631,11 @@ ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
900
631
$(OBJCOPY) --strip-debug --add-gnu-debuglink="$(DYLIB_FILENAME).debug" "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME)"
901
632
endif
902
633
endif
903
- endif
634
+
635
+ #----------------------------------------------------------------------
636
+ endif # !USESWIFTDRIVER
637
+ #----------------------------------------------------------------------
638
+
904
639
#----------------------------------------------------------------------
905
640
# Make the precompiled header and compile C++ sources against it
906
641
#----------------------------------------------------------------------
0 commit comments