From ff1f20233313fa367a006b46ef9a67cb712be827 Mon Sep 17 00:00:00 2001 From: Nicola Pero Date: Sat, 15 Sep 2001 12:03:12 +0000 Subject: [PATCH] Implemented support for C++ files; define OBJ_FILES_TO_LINK so that other makefiles can use it when they link rather than attempting to list all object files to list manually (btw that fixes omissions in those makefiles) git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@10907 72102866-910b-0410-8b05-ffd578937521 --- rules.make | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/rules.make b/rules.make index b12e3d8d1..652e9ce40 100644 --- a/rules.make +++ b/rules.make @@ -211,6 +211,9 @@ ALL_CFLAGS = $(INTERNAL_CFLAGS) $(ADDITIONAL_CFLAGS) \ $(GNUSTEP_LOCAL_HEADERS_FLAG) $(GNUSTEP_NETWORK_HEADERS_FLAG) \ -I$(GNUSTEP_SYSTEM_HEADERS) +# if you need, you can define ADDITIONAL_CCFLAGS to add C++ specific flags +ALL_CCFLAGS = $(ADDITIONAL_CCFLAGS) $(AUXILIARY_CCFLAGS) + INTERNAL_CLASSPATHFLAGS = -classpath ./$(subst ::,:,:$(strip $(ADDITIONAL_CLASSPATH)):)$(CLASSPATH) ALL_JAVACFLAGS = $(INTERNAL_CLASSPATHFLAGS) $(ADDITIONAL_JAVACFLAGS) \ @@ -255,7 +258,7 @@ endif # General rules VPATH = . -.SUFFIXES: .m .c .psw .java .h +.SUFFIXES: .m .c .psw .java .h .cpp .cxx .C .cc .cp .PRECIOUS: %.c %.h $(GNUSTEP_OBJ_DIR)/%${OEXT} @@ -265,6 +268,21 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.c $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_OBJCFLAGS) -o $@ +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.C + $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(ALL_CCFLAGS) -o $@ + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cc + $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(ALL_CCFLAGS) -o $@ + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cpp + $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(ALL_CCFLAGS) -o $@ + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cxx + $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(ALL_CCFLAGS) -o $@ + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cp + $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(ALL_CCFLAGS) -o $@ + %.class : %.java $(JAVAC) $(ALL_JAVACFLAGS) $< @@ -336,6 +354,7 @@ $(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ _SUBPROJECTS="$($(basename $(basename $*))_SUBPROJECTS)" \ OBJC_FILES="$($(basename $(basename $*))_OBJC_FILES)" \ C_FILES="$($(basename $(basename $*))_C_FILES)" \ + CC_FILES="$($(basename $(basename $*))_CC_FILES)" \ JAVA_FILES="$($(basename $(basename $*))_JAVA_FILES)" \ JAVA_JNI_FILES="$($(basename $(basename $*))_JAVA_JNI_FILES)" \ OBJ_FILES="$($(basename $(basename $*))_OBJ_FILES)" \ @@ -470,6 +489,9 @@ fi # The list of C source files to be compiled # are in the C_FILES variable. # +# The list of C++ source files to be compiled +# are in the CC_FILES variable. +# # The list of PSWRAP source files to be compiled # are in the PSWRAP_FILES variable. # @@ -516,6 +538,21 @@ PSWRAP_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(PSWRAP_OBJS)) C_OBJS = $(C_FILES:.c=${OEXT}) C_OBJ_FILES = $(PSWRAP_OBJ_FILES) $(addprefix $(GNUSTEP_OBJ_DIR)/,$(C_OBJS)) +# C++ files might end in .C, .cc, .cpp, .cxx, .cp so we replace multiple times +CC_OBJS = $(patsubst %.cc,%${OEXT},\ + $(patsubst %.C,%${OEXT},\ + $(patsubst %.cp,%${OEXT},\ + $(patsubst %.cpp,%${OEXT},\ + $(patsubst %.cxx,%${OEXT},$(CC_FILES)))))) +CC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(CC_OBJS)) + +# OBJ_FILES_TO_LINK is the set of all .o files which will be linked +# into the result - please note that you can add to OBJ_FILES_TO_LINK +# by defining manually some special xxx_OBJ_FILES for your +# tool/app/whatever +OBJ_FILES_TO_LINK = $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(CC_OBJ_FILES) \ + $(SUBPROJECT_OBJ_FILES) $(OBJ_FILES) + ifeq ($(WITH_DLL),yes) TMP_LIBS := $(LIBRARIES_DEPEND_UPON) $(BUNDLE_LIBS) $(ADDITIONAL_GUI_LIBS) $(ADDITIONAL_OBJC_LIBS) $(ADDITIONAL_LIBRARY_LIBS) TMP_LIBS := $(filter -l%, $(TMP_LIBS))