home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OpenStep 4.2J (Developer)
/
os42jdev.iso
/
NextDeveloper
/
Makefiles
/
app
/
library.make
< prev
next >
Wrap
Text File
|
1995-03-22
|
7KB
|
226 lines
#
# library.make
#
# Defaults for NeXT-specific Release Control options
SRCROOT = .
SYMROOT = .
OBJROOT = .
PRODUCT_ROOT = $(SYMROOT)
LIB_NAME = lib$(NAME).a
LIBRARY_DIR = .
set_libdir = \
if [ "$(PRODUCT_ROOT)" != "." ]; then \
libdir="$(PRODUCT_ROOT)" ; \
else \
libdir="$(LIBRARY_DIR)" ; \
fi
APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
include $(APP_MAKEFILE_DIR)/common.make
include $(APP_MAKEFILE_DIR)/specialrules.make
all:: library
bundle:: library # temporary hack until PB supports Libraries
library::
@($(process_target_archs)_obj ; \
$(set_libdir) ; \
$(set_language_cflags) ; \
$(MAKE) project \
"DSTROOT = $(DSTROOT)" \
"INSTALLDIR = $(INSTALLDIR)" \
"TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
"LIBRARY_DIR = $$libdir" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"REL_OFILE_DIR = $$obj_dir" \
"PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
"MAKEFILEDIR = $(MAKEFILEDIR)" \
"BUNDLE_EXTENSION = $$bundle_ext" \
"DEVROOT = $(DEVROOT)" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" \
"LIB_NAME = $(LIB_NAME)" \
"BUILD_TARGET = $@" \
"SRCROOT = $(SRCROOT)" \
"OBJROOT = $(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" )
debug::
@($(process_target_archs)_debug_obj ; \
$(set_bundle_ext) ; \
$(set_libdir) ; \
$(set_language_cflags) ; \
$(MAKE) project \
"DSTROOT = $(DSTROOT)" \
"INSTALLDIR = $(INSTALLDIR)" \
"TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
"LIBRARY_DIR = $$libdir" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"REL_OFILE_DIR = $$obj_dir" \
"PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
"MAKEFILEDIR = $(MAKEFILEDIR)" \
"BUNDLE_EXTENSION = $$bundle_ext" \
"DEVROOT = $(DEVROOT)" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" \
"LIB_NAME = $(LIB_NAME)" \
"BUILD_TARGET = $@" \
"SRCROOT = $(SRCROOT)" \
"OBJROOT = $(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" )
profile::
@($(process_target_archs)_profile_obj ; \
$(set_bundle_ext) ; \
$(set_libdir) ; \
$(set_language_cflags) ; \
$(MAKE) project \
"DSTROOT = $(DSTROOT)" \
"INSTALLDIR = $(INSTALLDIR)" \
"TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
"LIBRARY_DIR = $$libdir" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"REL_OFILE_DIR = $$obj_dir" \
"PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
"MAKEFILEDIR = $(MAKEFILEDIR)" \
"BUNDLE_EXTENSION = $$bundle_ext" \
"DEVROOT = $(DEVROOT)" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" \
"LIB_NAME = $(LIB_NAME)" \
"BUILD_TARGET = $@" \
"SRCROOT = $(SRCROOT)" \
"OBJROOT = $(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" )
# 'project' in library.make builds tools last, so that they can depend on
# the library being built
project:: $(INITIAL_TARGETS) toplevel_subcomponents resources $(LIBRARY_DIR)/$(LIB_NAME) tools
-@($(RM) -f $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE) ; \
$(ECHO) "$(OFILE_DIR)" > $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE))
toplevel_subcomponents:: subprojs
$(LIBRARY_DIR)/$(LIB_NAME): $(LIBRARY_NAME) $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS)
libtool -static -o $@ $(OFILES) $(OTHER_OFILES)
# Restriction: Libraries don't have sub-libraries
depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) $(BUNDLES:.bproj=.depend) $(TOOLS:.tproj=.depend)
$(PRODUCT_ROOT) \
$(DSTROOT)$(INSTALLDIR) \
$(LIBRARY_DIR):
$(MKDIRS) $@
THING_TO_STRIP = $(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)
strip_myself::
@(if [ -f $(THING_TO_STRIP) ] ; then \
cmd="$(STRIP) $(LIBRARY_STRIP_OPTS) $(THING_TO_STRIP)" ; \
echo $$cmd ; $$cmd ; \
else \
echo Warning: Not able to strip $(THING_TO_STRIP) ; \
fi)
.bproj.strip .tproj.strip:
@(cd $<; \
$(MAKE_CMD) strip \
"DSTROOT = $(DSTROOT)" \
"INSTALLDIR = $(INSTALLDIR)" \
"PARENT_DIR = $(PARENT_DIR)" \
"NAME=$*")
before_install:: $(DSTROOT)$(INSTALLDIR)
$(RM) -f $(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)
after_install::
# Note that the following will not correctly install a standalone
# bundle under a Jasper build.
install:: library before_install installhdrs $(OTHER_INSTALL_DEPENDS)
@($(set_libdir) ; \
lib_name="$(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)" ; \
$(MKDIRS) $(DSTROOT)$(INSTALLDIR) ; \
cmd="$(CP) -p $$libdir/$(LIB_NAME) $$lib_name" ; \
$(ECHO) $$cmd ; $$cmd || exit 1; \
if [ "$(INSTALL_STRIP)" != "" ] ; then \
$(MAKE) strip \
"DSTROOT = $(DSTROOT)" \
"INSTALLDIR = $(INSTALLDIR)" \
"PARENT_DIR = $(INSTALLDIR)" ; \
fi ; \
cmd="$(CHOWN) -f $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) $$lib_name" ; \
$(ECHO) $$cmd ; \
$$cmd || $(ECHO) Couldn\'t chown $$lib_name ; \
cmd="$(CHMOD) -f go-w $$lib_name" ; \
$(ECHO) $$cmd ; \
$$cmd || $(ECHO) Couldn\'t chmod $$lib_name ; \
if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
$(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) $$lib_name ; \
$(CHMOD) -f $(INSTALL_PERMISSIONS) $$lib_name ; \
fi ; \
$(process_target_archs)_obj ; \
$(set_bundle_ext) ; \
$(MAKE) after_install \
"DSTROOT=$(DSTROOT)" \
"OBJROOT=$(OBJROOT)" \
"DEVROOT = $(DEVROOT)" \
"BUILD_TARGET = $@" \
"SYMROOT=$(SYMROOT)" \
"INSTALLDIR = $(INSTALLDIR)" \
"PRODUCT_ROOT = $(PRODUCT_ROOT)" \
"SYM_DIR = $(SYMROOT)/sym" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"PROJ_CFLAGS = $(NORMAL_CFLAGS)" \
"APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" )
#.DEFAULT
help:
@if (test "$<"); then \
$(ECHO) 'ERROR: Unrecognized Makefile target "$<"'; \
fi
@$(ECHO) 'The following targets are available:'
@$(ECHO)
@$(ECHO) ' all Makes the library target (below). This is the default target.'
@$(ECHO)
@$(ECHO) ' library Compiles and links an optimized (and debuggable) version of the'
@$(ECHO) ' library into $(NAME).a'
@$(ECHO)
@$(ECHO) ' depend Generates an optional Makefile.dependencies file for every level'
@$(ECHO) ' of the library to reflect the complete dependency graph'
@$(ECHO) ' (including headers).'
@$(ECHO)
@$(ECHO) ' install Builds (if needed) and copies <LibraryName>.a'
@$(ECHO) ' into the installation directory, setting permissions'
@$(ECHO) ' and owners as appropriate.'
@$(ECHO)
@$(ECHO) ' installsrc Installs the source files for the library into the directory'
@$(ECHO) ' specified in the SRCROOT variable in a command-line argument.'
@$(ECHO) ' Note: the target directory will be removed and recreated.'
@$(ECHO)
@$(ECHO) ' installhdrs Installs the header files for the library.'
@$(ECHO)
@$(ECHO) ' clean Removes all files in the library derived from previous builds.'
@$(ECHO)
@$(ECHO) ' help Lists these targets with their descriptions.'
@$(ECHO)
@$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'