[Lldb-commits] [lldb] r372669 - [Make] Add support for building NeXT-style frameworks
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Mon Sep 23 15:31:16 PDT 2019
Author: jdevlieghere
Date: Mon Sep 23 15:31:16 2019
New Revision: 372669
URL: http://llvm.org/viewvc/llvm-project?rev=372669&view=rev
Log:
[Make] Add support for building NeXT-style frameworks
This patch extends the Makefile.rules to build NeXT-style frameworks. It
also fixes a bug in the clean logic that would accidentally delete the
.mm source file instead of the .o object file.
Thanks a lot to Adrian who was instrumental is getting this to work!
Modified:
lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules
Modified: lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules?rev=372669&r1=372668&r2=372669&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules Mon Sep 23 15:31:16 2019
@@ -13,6 +13,12 @@
# the building of the a.out executable program. For example,
# DYLIB_ONLY := YES
#
+# Specifying FRAMEWORK and its variants has the effect of building a NeXT-style
+# framework.
+# FRAMEWORK := "Foo"
+# FRAMEWORK_HEADERS := "Foo.h"
+# FRAMEWORK_MODULES := "module.modulemap"
+#
# Also might be of interest:
# FRAMEWORK_INCLUDES (Darwin only) :=
# CFLAGS_EXTRAS :=
@@ -346,10 +352,19 @@ endif
OBJECTS =
EXE ?= a.out
+ifneq "$(FRAMEWORK)" ""
+ DYLIB_NAME ?= $(FRAMEWORK).framework/Versions/A/$(FRAMEWORK)
+ DYLIB_FILENAME ?= $(FRAMEWORK).framework/Versions/A/$(FRAMEWORK)
+endif
+
ifneq "$(DYLIB_NAME)" ""
ifeq "$(OS)" "Darwin"
- DYLIB_FILENAME = lib$(DYLIB_NAME).dylib
- DYLIB_EXECUTABLE_PATH ?= @executable_path
+ ifneq "$(FRAMEWORK)" ""
+ DYLIB_INSTALL_NAME ?= @executable_path/$(FRAMEWORK).framework/Versions/A/$(FRAMEWORK)
+ else
+ DYLIB_FILENAME = lib$(DYLIB_NAME).dylib
+ DYLIB_INSTALL_NAME ?= @executable_path/$(DYLIB_FILENAME)
+ endif
else ifeq "$(OS)" "Windows_NT"
DYLIB_FILENAME = $(DYLIB_NAME).dll
else
@@ -467,16 +482,11 @@ endif
#----------------------------------------------------------------------
# dylib settings
#----------------------------------------------------------------------
-ifneq "$(strip $(DYLIB_C_SOURCES))" ""
- DYLIB_OBJECTS +=$(strip $(DYLIB_C_SOURCES:.c=.o))
-endif
-
-ifneq "$(strip $(DYLIB_OBJC_SOURCES))" ""
- DYLIB_OBJECTS +=$(strip $(DYLIB_OBJC_SOURCES:.m=.o))
-endif
+DYLIB_OBJECTS +=$(strip $(DYLIB_C_SOURCES:.c=.o))
+DYLIB_OBJECTS +=$(strip $(DYLIB_OBJC_SOURCES:.m=.o))
ifneq "$(strip $(DYLIB_CXX_SOURCES))" ""
- DYLIB_OBJECTS +=$(strip $(DYLIB_CXX_SOURCES:.cpp=.o))
+ DYLIB_OBJECTS +=$(strip $(patsubst %.mm, %.o, $(DYLIB_CXX_SOURCES:.cpp=.o)))
CXX = $(call cxx_compiler,$(CC))
LD = $(call cxx_linker,$(CC))
endif
@@ -650,7 +660,23 @@ endif
$(DYLIB_FILENAME) : $(DYLIB_OBJECTS)
ifeq "$(OS)" "Darwin"
- $(LD) $(DYLIB_OBJECTS) $(LDFLAGS) -install_name "$(DYLIB_EXECUTABLE_PATH)/$(DYLIB_FILENAME)" -dynamiclib -o "$(DYLIB_FILENAME)"
+ifneq "$(FRAMEWORK)" ""
+ mkdir -p $(FRAMEWORK).framework/Versions/A/Headers
+ mkdir -p $(FRAMEWORK).framework/Versions/A/Modules
+ mkdir -p $(FRAMEWORK).framework/Versions/A/Resources
+ifneq "$(FRAMEWORK_MODULES)" ""
+ cp -r $(FRAMEWORK_MODULES) $(FRAMEWORK).framework/Versions/A/Modules
+endif
+ifneq "$(FRAMEWORK_HEADERS)" ""
+ cp -r $(FRAMEWORK_HEADERS) $(FRAMEWORK).framework/Versions/A/Headers
+endif
+ (cd $(FRAMEWORK).framework/Versions; ln -sf A Current)
+ (cd $(FRAMEWORK).framework/; ln -sf Versions/A/Headers Headers)
+ (cd $(FRAMEWORK).framework/; ln -sf Versions/A/Modules Modules)
+ (cd $(FRAMEWORK).framework/; ln -sf Versions/A/Resources Resources)
+ (cd $(FRAMEWORK).framework/; ln -sf Versions/A/$(FRAMEWORK) $(FRAMEWORK))
+endif
+ $(LD) $(DYLIB_OBJECTS) $(LDFLAGS) -install_name "$(DYLIB_INSTALL_NAME)" -dynamiclib -o "$(DYLIB_FILENAME)"
ifneq "$(CODESIGN)" ""
$(CODESIGN) -s - "$(DYLIB_FILENAME)"
endif
@@ -743,6 +769,9 @@ ifneq "$(DYLIB_NAME)" ""
$(RM) -r $(DYLIB_FILENAME).dSYM
$(RM) $(DYLIB_OBJECTS) $(DYLIB_PREREQS) $(DYLIB_PREREQS:.d=.d.tmp) $(DYLIB_DWOS) $(DYLIB_FILENAME) $(DYLIB_FILENAME).debug
endif
+ifneq "$(FRAMEWORK)" ""
+ $(RM) -rf $(FRAMEWORK).framework
+endif
ifneq "$(PCH_OUTPUT)" ""
$(RM) $(PCH_OUTPUT)
endif
More information about the lldb-commits
mailing list