mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-23 14:20:50 +00:00
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:
parent
719d499426
commit
814bc42b8e
12 changed files with 148 additions and 11 deletions
13
ChangeLog
13
ChangeLog
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'` \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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::
|
||||
|
|
|
@ -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)
|
||||
|
||||
#
|
||||
|
|
17
rules.make
17
rules.make
|
@ -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))
|
||||
|
||||
|
|
|
@ -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
95
subproject.make
Normal 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
|
|
@ -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); \
|
||||
|
|
|
@ -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::
|
||||
|
|
Loading…
Reference in a new issue