subprojects, testing fiex

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@3762 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Adam Fedor 1999-02-19 21:47:15 +00:00
parent 719d499426
commit 814bc42b8e
12 changed files with 148 additions and 11 deletions

View file

@ -1,3 +1,16 @@
1999-02-19 Adam Fedor <fedor@gnu.org>
* subproject.make: New file.
* common.make (SUBPROJECT_PRODUCT): New variable so all
makefiles agree on the name of the object a subproject produces.
* rules.make: Added recursive invokation of subproject makefiles
in the %.build target.
* application.make, library.make, ... (SUBPROJECT_OBJ_FILES): New
dependency.
* target.make (OBJ_MERGE_CMD): For merging subproject
files. (patches from Jonathan Gapen
<jagapen@whitewater.chem.wisc.edu>).
Wed Feb 17 17:15:47 1999 Adam Fedor <fedor@ultra.doc.com>
* bundle.make (PRINCIPAL_CLASS): Override if not set (Report from

View file

@ -90,7 +90,7 @@ install: all
for f in aggregate.make application.make bundle.make service.make \
common.make brain.make library.make rules.make target.make \
tool.make test-library.make names.make objc.make \
test-application.make test-tool.make \
test-application.make test-tool.make subproject.make \
documentation.make MediaBook.func; do \
$(INSTALL_DATA) $$f $(makedir); \
done
@ -113,7 +113,7 @@ uninstall:
for f in aggregate.make application.make bundle.make \
common.make brain.make library.make rules.make target.make \
tool.make test-library.make names.make objc.make \
test-application.make test-tool.make \
test-application.make test-tool.make subproject.make \
documentation.make MediaBook.func; do \
rm -f $(makedir)/$$f; \
done

View file

@ -99,8 +99,9 @@ endif
# Internal targets
#
$(APP_FILE): $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(APP_FILE): $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$@ $(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(SUBPROJECT_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_GUI_LIBS)
ifeq ($(OBJC_COMPILER), NeXT)
@$(TRANSFORM_PATHS_SCRIPT) `echo $(ALL_LIB_DIRS) | sed 's/-L//g'` \

View file

@ -94,10 +94,10 @@ build-bundle-dir::
build-bundle:: $(BUNDLE_FILE) bundle-resource-files
$(BUNDLE_FILE) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(BUNDLE_FILE) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
$(LDOUT)$(BUNDLE_FILE) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_BUNDLE_LIBS)
bundle-resource-files:: $(BUNDLE_DIR_NAME)/Resources/Info-gnustep.plist

View file

@ -306,6 +306,9 @@ GNUSTEP_TEXI2HTML_FLAGS = -split_chapter -expandinfo
GNUSTEP_DVIPS = dvips
GNUSTEP_DVIPS_FLAGS =
#
# Common variables for subprojects
SUBPROJECT_PRODUCT = subproject$(OEXT)
## Local variables:
## mode: makefile

View file

@ -92,7 +92,7 @@ internal-library-all:: before-all before-$(TARGET)-all $(GNUSTEP_OBJ_DIR) \
$(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) import-library \
after-$(TARGET)-all after-all
$(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE): $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE): $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
$(LIB_LINK_CMD)
before-$(TARGET)-all::

View file

@ -74,9 +74,9 @@ ALL_OBJC_LIBS := \
#
$(GNUSTEP_OBJ_DIR)/$(INTERNAL_objc_program_NAME)$(EXEEXT): \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$@ \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_OBJC_LIBS)
#

View file

@ -173,9 +173,21 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m
# The magical application rules, thank you GNU make!
%.build:
@(echo Making $(OPERATION) for $(TARGET_TYPE) $*...; \
for f in $($*_SUBPROJECTS); do \
mf=$(MAKEFILE_NAME); \
if [ ! -f $$f/$$mf -a -f $$f/Makefile ]; then \
mf=Makefile; \
echo "WARNING: No $(MAKEFILE_NAME) found for subproject $$f; using 'Makefile'"; \
fi; \
if $(MAKE) -C $$f -f $$mf --no-keep-going $(OPERATION); then \
:; \
else exit $$?; \
fi; \
done; \
$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-$(TARGET_TYPE)-$(OPERATION) \
INTERNAL_$(TARGET_TYPE)_NAME=$* \
SUBPROJECTS="$($*_SUBPROJECTS)" \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)" \
@ -214,6 +226,11 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m
# The list of PSWRAP source files to be compiled
# are in the PSWRAP_FILES variable.
ifneq ($(SUBPROJECTS),)
SUBPROJECT_OBJ_FILES = $(foreach d, $(SUBPROJECTS), \
$(addprefix $(d)/, $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT)))
endif
OBJC_OBJS = $(OBJC_FILES:.m=${OEXT})
OBJC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(OBJC_OBJS))

View file

@ -83,8 +83,9 @@ endif
SERVICE_FILE = $(SERVICE_DIR_NAME)/$(GNUSTEP_TARGET_DIR)/$(LIBRARY_COMBO)/$(INTERNAL_svc_NAME)
$(SERVICE_FILE): $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(SERVICE_FILE): $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$@ $(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(SUBPROJECT_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_GUI_LIBS)
#

95
subproject.make Normal file
View file

@ -0,0 +1,95 @@
#
# subproject.make
#
# Makefile rules to build subprojects in GNUstep projects.
#
# Copyright (C) 1998 Free Software Foundation, Inc.
#
# Author: Jonathan Gapen <jagapen@whitewater.chem.wisc.edu>
#
# This file is part of the GNUstep Makefile Package.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# prevent multiple inclusions
ifeq ($(SUBPROJECT_MAKE_LOADED),)
SUBPROJECT_MAKE_LOADED=yes
#
# Include in the common makefile rules
#
include $(GNUSTEP_MAKEFILES)/rules.make
#
# The names of the subproject is in the SUBPROJECT_NAME variable.
#
SUBPROJECT_NAME:=$(strip $(SUBPROJECT_NAME))
ifeq ($(INTERNAL_subproj_NAME),)
# This part is included the first time make is invoked.
internal-all:: $(SUBPROJECT_NAME:=.all.subproj.variables)
internal-clean:: $(SUBPROJECT_NAME:=.clean.subproj.variables)
internal-distclean:: $(SUBPROJECT_NAME:=.distclean.subproj.variables)
$(SUBPROJECT_NAME):
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.subproj.variables
else
# This part gets included the second time make is invoked.
#
# Internal targets
#
#
# Compilation targets
#
internal-subproj-all:: before-all before-$(TARGET)-all $(GNUSTEP_OBJ_DIR) \
$(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) \
after-$(TARGET)-all after-all
$(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT): $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(OBJ_MERGE_CMD)
before-$(TARGET)-all::
after-$(TARGET)-all::
after-all::
#
# Installation targets
#
#
# Cleaning targets
#
internal-subproj-clean::
rm -rf $(GNUSTEP_OBJ_DIR)
internal-subproj-distclean::
rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \
static_debug_obj static_profile_obj shared_profile_debug_obj \
static_profile_debug_obj
#
# Testing targets
#
endif
endif
# subproject.make loaded

View file

@ -266,6 +266,8 @@ AFTER_INSTALL_SHARED_LIB_COMMAND = \
$(LN_S) $(VERSION_LIBRARY_FILE) $(SONAME_LIBRARY_FILE); \
$(LN_S) $(SONAME_LIBRARY_FILE) $(LIBRARY_FILE); \
)
OBJ_MERGE_CMD = \
$(CC) -nostdlib -r -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -293,6 +295,8 @@ SHARED_LIB_LINK_CMD = \
(cd $(GNUSTEP_OBJ_DIR); \
rm -f $(LIBRARY_FILE); \
$(LN_S) $(VERSION_LIBRARY_FILE) $(LIBRARY_FILE))
OBJ_MERGE_CMD = \
$(CC) -nostdlib -r -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -444,6 +448,9 @@ SHARED_LIB_LINK_CMD = \
)
AFTER_INSTALL_SHARED_LIB_COMMAND = \
(cd $(GNUSTEP_LIBRARIES); \
rm -f $(LIBRARY_FILE) $(SONAME_LIBRARY_FILE); \
$(LN_S) $(VERSION_LIBRARY_FILE) $(SONAME_LIBRARY_FILE); \
$(LN_S) $(SONAME_LIBRSTEP_LIBRARIES); \
rm -f $(LIBRARY_FILE) $(SONAME_LIBRARY_FILE); \
$(LN_S) $(VERSION_LIBRARY_FILE) $(SONAME_LIBRARY_FILE); \
$(LN_S) $(SONAME_LIBRARY_FILE) $(LIBRARY_FILE); \

View file

@ -75,9 +75,9 @@ ALL_TOOL_LIBS := \
internal-tool-all:: before-$(TARGET)-all $(GNUSTEP_OBJ_DIR) \
$(GNUSTEP_OBJ_DIR)/$(INTERNAL_tool_NAME)$(EXEEXT) after-$(TARGET)-all
$(GNUSTEP_OBJ_DIR)/$(INTERNAL_tool_NAME)$(EXEEXT): $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(GNUSTEP_OBJ_DIR)/$(INTERNAL_tool_NAME)$(EXEEXT): $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$@ \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_TOOL_LIBS)
before-$(TARGET)-all::