feat(kernel): Add Objective C development support
This commit is contained in:
+11
-2
@@ -23,6 +23,9 @@ CC := cc
|
|||||||
# User controllable C++ compiler command.
|
# User controllable C++ compiler command.
|
||||||
CXX := c++
|
CXX := c++
|
||||||
|
|
||||||
|
# User controllable Objective C compiler command.
|
||||||
|
OBJC := g++
|
||||||
|
|
||||||
# User controllable archiver command.
|
# User controllable archiver command.
|
||||||
AR := ar
|
AR := ar
|
||||||
|
|
||||||
@@ -200,15 +203,16 @@ override LDFLAGS += \
|
|||||||
override SRCFILES := $(shell cd src && find -L * -type f | LC_ALL=C sort)
|
override SRCFILES := $(shell cd src && find -L * -type f | LC_ALL=C sort)
|
||||||
override CFILES := $(filter %.c,$(SRCFILES))
|
override CFILES := $(filter %.c,$(SRCFILES))
|
||||||
override CXXFILES := $(filter %.cpp,$(SRCFILES))
|
override CXXFILES := $(filter %.cpp,$(SRCFILES))
|
||||||
|
override OBJCFILES := $(filter %.mm,$(SRCFILES))
|
||||||
override ASFILES := $(filter %.S,$(SRCFILES))
|
override ASFILES := $(filter %.S,$(SRCFILES))
|
||||||
ifeq ($(ARCH),x86_64)
|
ifeq ($(ARCH),x86_64)
|
||||||
override NASMFILES := $(filter %.asm,$(SRCFILES))
|
override NASMFILES := $(filter %.asm,$(SRCFILES))
|
||||||
endif
|
endif
|
||||||
override OBJ := $(addprefix obj-$(ARCH)/,$(CFILES:.c=.c.o) $(CXXFILES:.cpp=.cpp.o) $(ASFILES:.S=.S.o))
|
override OBJ := $(addprefix obj-$(ARCH)/,$(CFILES:.c=.c.o) $(CXXFILES:.cpp=.cpp.o) $(OBJCFILES:.mm=.mm.o) $(ASFILES:.S=.S.o))
|
||||||
ifeq ($(ARCH),x86_64)
|
ifeq ($(ARCH),x86_64)
|
||||||
override OBJ += $(addprefix obj-$(ARCH)/,$(NASMFILES:.asm=.asm.o))
|
override OBJ += $(addprefix obj-$(ARCH)/,$(NASMFILES:.asm=.asm.o))
|
||||||
endif
|
endif
|
||||||
override HEADER_DEPS := $(addprefix obj-$(ARCH)/,$(CFILES:.c=.c.d) $(CXXFILES:.cpp=.cpp.d) $(ASFILES:.S=.S.d))
|
override HEADER_DEPS := $(addprefix obj-$(ARCH)/,$(CFILES:.c=.c.d) $(CXXFILES:.cpp=.cpp.d) $(OBJCFILES:.mm=.mm.d) $(ASFILES:.S=.S.d))
|
||||||
|
|
||||||
# Default target. This must come first, before header dependencies.
|
# Default target. This must come first, before header dependencies.
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
@@ -254,6 +258,11 @@ obj-$(ARCH)/%.asm.o: src/%.asm GNUmakefile
|
|||||||
nasm $(NASMFLAGS) $< -o $@
|
nasm $(NASMFLAGS) $< -o $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Compilation rules for *.mm (Objective C) files.
|
||||||
|
obj-$(ARCH)/%.mm.o: src/%.mm GNUmakefile
|
||||||
|
mkdir -p "$$(dirname $@)"
|
||||||
|
$(OBJC) $(CXXFLAGS) $(CPPFLAGS_CXX) -c $< -o $@
|
||||||
|
|
||||||
# Remove object files and the final executable.
|
# Remove object files and the final executable.
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
extern "C" {
|
||||||
|
int foobar(){
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user