Add support for building ObjC (non GNUstep) based programs.

Eliminate use of stamp files.
Numerous bug fixes.
Threads library must now be specified by user when running configure


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@2593 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Scott Christley 1997-10-30 22:43:44 +00:00
parent 9ff7102dd8
commit 3201c9c5c4
12 changed files with 237 additions and 71 deletions

View file

@ -1,3 +1,21 @@
Thu Oct 30 13:23:31 1997 Scott Christley <scottc@net-community.com>
* objc.make: New file.
* GNUmakefile.in: Install new file. Add targets to regenerate
automatically generated files.
* aggregate.make: Have make stop when error occurs.
* bundle.make: Elminate stamp files.
* config.make.in: Save any LIBS specified by user.
* configure.in: Correct default library combo.
* configure: Regenerate for configure.in changes.
* rules.make: Add ObjC program support. Have make stop when
error occurs. Correct variables that are being passed to
recursive makes.
* target.make: Do not specify the thread library; instead the
user should define it when running configure with the LIBS
environment variable.
* test.make: Eliminate stamp files. Correct bundle rules.
Thu Oct 30 09:35:34 1997 Ovidiu Predescu <ovidiu@net-community.com>
* common.make: Add the cpu/os/runtime include flag only for

View file

@ -51,7 +51,7 @@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
all: which_lib
all: generated-files which_lib
which_lib: which_lib.c
$(CC) -O2 -Wall -o $@ $^
@ -70,7 +70,7 @@ install: all
$(INSTALL_PROGRAM) -m 755 debugapp $(tooldir); \
for f in aggregate.make application.make bundle.make clean.make \
common.make brain.make library.make rules.make target.make \
tool.make test.make names.make MediaBook.func; do \
tool.make test.make names.make objc.make MediaBook.func; do \
$(INSTALL_DATA) $$f $(makedir); \
done
$(INSTALL_DATA) config.site $(prefix)/share
@ -86,5 +86,22 @@ distclean: clean
rm -f GNUmakefile config.make
rm -f config.cache config.log config.status
generated-files: GNUmakefile GNUstep.sh config.h config.make debugapp openapp
GNUmakefile: GNUmakefile.in config.status
$(SHELL) config.status
GNUstep.sh: GNUstep.sh.in
$(SHELL) config.status
config.h: config.h.in
$(SHELL) config.status
config.make: config.make.in
$(SHELL) config.status
debugapp: debugapp.in
$(SHELL) config.status
openapp: openapp.in
$(SHELL) config.status

View file

@ -38,5 +38,5 @@ internal-all internal-install internal-uninstall internal-clean \
@(target=`echo $@ | sed 's/internal-//'`; \
for f in $(SUBPROJECTS); do \
echo Making $$target in $$f...;\
(cd $$f; $(MAKE) $$target); \
(cd $$f; $(MAKE) --no-keep-going $$target); \
done)

View file

@ -32,17 +32,12 @@ include $(GNUSTEP_SYSTEM_ROOT)/Makefiles/rules.make
BUNDLE_DIR_NAME := $(BUNDLE_NAME:=$(BUNDLE_EXTENSION))
BUNDLE_FILE := $(BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_DIR)/$(LIBRARY_COMBO)/$(BUNDLE_NAME)
BUNDLE_STAMPS := $(foreach bundle,$(BUNDLE_NAME),stamp-bundle-$(bundle))
BUNDLE_STAMPS := $(addprefix $(GNUSTEP_OBJ_DIR)/,$(BUNDLE_STAMPS))
BUNDLE_RESOURCE_DIRS = $(foreach d,$(RESOURCE_DIRS),$(BUNDLE_DIR_NAME)/$(d))
#
# Internal targets
#
$(GNUSTEP_OBJ_DIR)/stamp-bundle-% : $(BUNDLE_FILE) bundle-resource-files
touch $@
$(BUNDLE_FILE) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
$(LDOUT)$(BUNDLE_FILE) \
@ -63,12 +58,10 @@ build-bundle-dir::
@$(GNUSTEP_MAKEFILES)/mkinstalldirs \
$(BUNDLE_DIR_NAME) \
$(BUNDLE_DIR_NAME)/Resources \
$(BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_CPU) \
$(BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_DIR) \
$(BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_DIR)/$(LIBRARY_COMBO) \
$(BUNDLE_RESOURCE_DIRS)
build-bundle:: $(GNUSTEP_OBJ_DIR)/stamp-bundle-$(BUNDLE_NAME)
build-bundle:: $(BUNDLE_FILE) bundle-resource-files
bundle-resource-files::
for f in $(RESOURCE_FILES); do \

View file

@ -63,3 +63,6 @@ library_combo = @ac_cv_library_combo@
#
X_INCLUDE := @X_INCLUDE@
X_LIBS := @X_LIBS@
# Any user specified libs, like thread libraries
CONFIG_SYSTEM_LIBS = @LIBS@

2
configure vendored
View file

@ -1468,7 +1468,7 @@ if test "$ac_cv_library_combo" = ""; then
if test $host_os = nextstep4; then
ac_cv_library_combo=nx-nx-nx-nil
else
ac_cv_library_combo=gnu-gnu-gnu-xdp
ac_cv_library_combo=gnu-gnu-gnu-xdps
fi
fi

View file

@ -101,7 +101,7 @@ if test "$ac_cv_library_combo" = ""; then
if test $host_os = nextstep4; then
ac_cv_library_combo=nx-nx-nx-nil
else
ac_cv_library_combo=gnu-gnu-gnu-xdp
ac_cv_library_combo=gnu-gnu-gnu-xdps
fi
fi
AC_SUBST(ac_cv_library_combo)

View file

@ -45,6 +45,8 @@ internal-all:: $(LIBRARY_NAME:=.buildlib)
internal-install:: all $(LIBRARY_NAME:=.installlib)
internal-uninstall:: $(LIBRARY_NAME:=.uninstalllib)
#
# Cleaning targets
#

79
objc.make Normal file
View file

@ -0,0 +1,79 @@
#
# objc.make
#
# Makefile rules to build ObjC-based (but not GNUstep) programs.
#
# Copyright (C) 1997 Free Software Foundation, Inc.
#
# Author: Scott Christley <scottc@net-community.com>
#
# 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.
#
# Include in the common makefile rules
#
include $(GNUSTEP_SYSTEM_ROOT)/Makefiles/rules.make
# This is the directory where the objc programss get installed. If you
# don't specify a directory they will get installed in the GNUstep
# system root.
OBJC_PROGRAM_INSTALLATION_DIR = \
$(GNUSTEP_INSTALLATION_DIR)/Tools
#
# The name of the ObjC program is in the OBJC_PROGRAM_NAME variable.
#
# xxx We need to prefix the target name when cross-compiling
#
OBJC_PROGRAM_LIST := $(OBJC_PROGRAM_NAME:=.buildobjc)
OBJC_PROGRAM_FILE = $(OBJC_PROGRAM_LIST)
#
# Internal targets
#
$(OBJC_PROGRAM_NAME) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$(OBJC_PROGRAM_NAME) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_OBJC_LIBS)
#
# Compilation targets
#
internal-all:: $(GNUSTEP_OBJ_DIR) $(OBJC_PROGRAM_LIST)
internal-objc-all:: build-objc-program
internal-install:: all internal-install-objc-dirs internal-install-objc-program
internal-install-objc-dirs::
$(GNUSTEP_MAKEFILES)/mkinstalldirs $(OBJC_PROGRAM_INSTALLATION_DIR)
internal-install-objc-program::
for f in $(OBJC_PROGRAM_NAME); do \
$(INSTALL_PROGRAM) -m 0755 $$f $(OBJC_PROGRAM_INSTALLATION_DIR); \
done
build-objc-program:: $(OBJC_PROGRAM_NAME)
#
# Cleaning targets
#
internal-clean::
rm -f $(OBJC_PROGRAM_NAME)
rm -rf $(GNUSTEP_OBJ_PREFIX)
internal-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

View file

@ -46,6 +46,9 @@ ALL_LIB_DIRS = $(ADDITIONAL_LIB_DIRS) \
-L$(GNUSTEP_SYSTEM_LIBRARIES) -L$(GNUSTEP_SYSTEM_LIBRARIES_ROOT) \
$(SYSTEM_LIB_DIR)
ALL_OBJC_LIBS = $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
$(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)
ALL_TOOL_LIBS = $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) \
$(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)
@ -58,6 +61,11 @@ LIB_DIRS_NO_SYSTEM = $(ADDITIONAL_LIB_DIRS) \
-L$(GNUSTEP_LOCAL_LIBRARIES) -L$(GNUSTEP_LOCAL_LIBRARIES_ROOT) \
-L$(GNUSTEP_SYSTEM_LIBRARIES) -L$(GNUSTEP_SYSTEM_LIBRARIES_ROOT)
ALL_OBJC_LIBS := \
$(shell $(WHICH_LIB_SCRIPT) $(LIB_DIRS_NO_SYSTEM) $(ALL_OBJC_LIBS) \
debug=$(debug) profile=$(profile) shared=$(shared) libext=$(LIBEXT) \
shared_libext=$(SHARED_LIBEXT))
ALL_TOOL_LIBS := \
$(shell $(WHICH_LIB_SCRIPT) $(LIB_DIRS_NO_SYSTEM) $(ALL_TOOL_LIBS) \
debug=$(debug) profile=$(profile) shared=$(shared) libext=$(LIBEXT) \
@ -88,10 +96,10 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m
%.c : %.psw
pswrap -h $*.h -o $@ $<
# The magical app rule, thank you GNU make!
# The magical application rules, thank you GNU make!
%.buildapp:
@echo Making $*...
@$(MAKE) --no-print-directory internal-all \
@$(MAKE) --no-print-directory --no-keep-going internal-all \
INTERNAL_APP_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
@ -99,9 +107,10 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m
RESOURCE_FILES="$($*_RESOURCES)" \
RESOURCE_DIRS="$($*_RESOURCE_DIRS)"
# library recursive make rules
%.buildlib:
@echo Making $*...
@$(MAKE) internal-all \
@$(MAKE) --no-print-directory --no-keep-going internal-all \
INTERNAL_LIBRARY_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
@ -112,7 +121,7 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m
%.installlib:
@echo Making $*...
@$(MAKE) --no-print-directory internal-install \
@$(MAKE) --no-print-directory --no-keep-going internal-install \
INTERNAL_LIBRARY_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
@ -121,14 +130,35 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m
HEADER_FILES_DIR="$($*_HEADER_FILES_DIR)" \
HEADER_FILES_INSTALL_DIR="$($*_HEADER_FILES_INSTALL_DIR)"
%.uninstalllib:
@echo Making $*...
@$(MAKE) --no-print-directory --no-keep-going internal-uninstall \
INTERNAL_LIBRARY_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)" \
HEADER_FILES="$($*_HEADER_FILES)" \
HEADER_FILES_DIR="$($*_HEADER_FILES_DIR)" \
HEADER_FILES_INSTALL_DIR="$($*_HEADER_FILES_INSTALL_DIR)"
# tool recursive make rules
%.buildtool : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory internal-tool-all \
@$(MAKE) --no-print-directory --no-keep-going internal-tool-all \
TOOL_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)"
# ObjC program recursive make rules
%.buildobjc : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory --no-keep-going internal-objc-all \
OBJC_PROGRAM_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)"
#
# The bundle extension (default is .bundle) is defined by BUNDLE_EXTENSION.
#
@ -136,9 +166,10 @@ ifeq ($(strip $(BUNDLE_EXTENSION)),)
BUNDLE_EXTENSION = .bundle
endif
# bundle recursive make rules
%$(BUNDLE_EXTENSION) : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory internal-bundle-all \
$(MAKE) --no-print-directory --no-keep-going internal-bundle-all \
BUNDLE_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
@ -156,8 +187,7 @@ ALL_TEST_LIBRARY_LIBS = $(ADDITIONAL_LIBRARY_LIBS) $(AUXILIARY_LIBS) \
-lobjc-test \
$(AUXILIARY_TOOL_LIBS) $(FND_LIBS) $(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)
ALL_TEST_BUNDLE_LIBS = $(ADDITIONAL_BUNDLE_LIBS) $(AUXILIARY_TOOL_LIBS) \
$(FND_LIBS) $(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)
ALL_TEST_BUNDLE_LIBS = $(ADDITIONAL_BUNDLE_LIBS)
ALL_TEST_TOOL_LIBS = $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
$(FND_LIBS) $(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)
@ -188,61 +218,61 @@ ALL_TEST_GUI_LIBS := \
%.testlib : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory internal-testlib-all \
@$(MAKE) --no-print-directory --no-keep-going internal-testlib-all \
TEST_LIBRARY_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)" \
ADDITIONAL_INCLUDE_DIRS="$($*_INCLUDE_DIRS)" \
ADDITIONAL_INCLUDE_DIRS="$(ADDITIONAL_INCLUDE_DIRS) $($*_INCLUDE_DIRS)" \
ADDITIONAL_LIBRARY_LIBS="$($*_LIBS)" \
ADDITIONAL_LIB_DIRS="$($*_LIB_DIRS)" \
ADDITIONAL_LIB_DIRS="$(ADDITIONAL_LIB_DIRS) $($*_LIB_DIRS)" \
SCRIPTS_DIRECTORY="$($*_SCRIPTS_DIRECTORY)"
%.testbundle : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory internal-testbundle-all \
@$(MAKE) --no-print-directory --no-keep-going internal-testbundle-all \
TEST_BUNDLE_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)" \
RESOURCE_FILES="$($*_RESOURCES)" \
RESOURCE_DIRS="$($*_RESOURCE_DIRS)" \
ADDITIONAL_INCLUDE_DIRS="$($*_INCLUDE_DIRS)" \
ADDITIONAL_INCLUDE_DIRS="$(ADDITIONAL_INCLUDE_DIRS) $($*_INCLUDE_DIRS)" \
ADDITIONAL_BUNDLE_LIBS="$($*_LIBS)" \
ADDITIONAL_LIB_DIRS="$($*_LIB_DIRS)" \
ADDITIONAL_LIB_DIRS="$(ADDITIONAL_LIB_DIRS) $($*_LIB_DIRS)" \
SCRIPTS_DIRECTORY="$($*_SCRIPTS_DIRECTORY)"
%.testtool : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory internal-testtool-all \
@$(MAKE) --no-print-directory --no-keep-going internal-testtool-all \
TEST_TOOL_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)" \
ADDITIONAL_INCLUDE_DIRS="$($*_INCLUDE_DIRS)" \
ADDITIONAL_INCLUDE_DIRS="$(ADDITIONAL_INCLUDE_DIRS) $($*_INCLUDE_DIRS)" \
ADDITIONAL_TOOL_LIBS="$($*_LIBS)" \
ADDITIONAL_LIB_DIRS="$($*_LIB_DIRS)" \
ADDITIONAL_LIB_DIRS="$(ADDITIONAL_LIB_DIRS) $($*_LIB_DIRS)" \
SCRIPTS_DIRECTORY="$($*_SCRIPTS_DIRECTORY)"
%.testapp : FORCE
@echo Making $*...
@$(MAKE) --no-print-directory internal-testapp-all \
@$(MAKE) --no-print-directory --no-keep-going internal-testapp-all \
TEST_APP_NAME=$* \
OBJC_FILES="$($*_OBJC_FILES)" \
C_FILES="$($*_C_FILES)" \
PSWRAP_FILES="$($*_PSWRAP_FILES)" \
RESOURCE_FILES="$($*_RESOURCES)" \
RESOURCE_DIRS="$($*_RESOURCE_DIRS)" \
ADDITIONAL_INCLUDE_DIRS="$($*_INCLUDE_DIRS)" \
ADDITIONAL_INCLUDE_DIRS="$(ADDITIONAL_INCLUDE_DIRS) $($*_INCLUDE_DIRS)" \
ADDITIONAL_GUI_LIBS="$($*_LIBS)" \
ADDITIONAL_LIB_DIRS="$($*_LIB_DIRS)" \
ADDITIONAL_LIB_DIRS="$(ADDITIONAL_LIB_DIRS) $($*_LIB_DIRS)" \
SCRIPTS_DIRECTORY="$($*_SCRIPTS_DIRECTORY)"
# These are for running the tests
%.checklib : FORCE
@echo Checking $*...
@$(MAKE) --no-print-directory internal-check-LIBRARY \
@$(MAKE) --no-print-directory --no-keep-going internal-check-LIBRARY \
TEST_LIBRARY_NAME=$* \
ADDITIONAL_LD_LIB_DIRS="$($*_LD_LIB_DIRS)" \
CHECK_SCRIPT_DIRS="$($*_SCRIPT_DIRS)" \
@ -250,7 +280,7 @@ ALL_TEST_GUI_LIBS := \
%.checkbundle : FORCE
@echo Checking $*...
@$(MAKE) --no-print-directory internal-check-BUNDLE \
@$(MAKE) --no-print-directory --no-keep-going internal-check-BUNDLE \
TEST_BUNDLE_NAME=$* \
ADDITIONAL_LD_LIB_DIRS="$($*_LD_LIB_DIRS)" \
CHECK_SCRIPT_DIRS="$($*_SCRIPT_DIRS)" \
@ -258,7 +288,7 @@ ALL_TEST_GUI_LIBS := \
%.checktool : FORCE
@echo Checking $*...
@$(MAKE) --no-print-directory internal-check-TOOL \
@$(MAKE) --no-print-directory --no-keep-going internal-check-TOOL \
TEST_TOOL_NAME=$* \
ADDITIONAL_LD_LIB_DIRS="$($*_LD_LIB_DIRS)" \
CHECK_SCRIPT_DIRS="$($*_SCRIPT_DIRS)" \
@ -266,7 +296,7 @@ ALL_TEST_GUI_LIBS := \
%.checkapp : FORCE
@echo Checking $*...
@$(MAKE) --no-print-directory internal-check-APP \
@$(MAKE) --no-print-directory --no-keep-going internal-check-APP \
TEST_APP_NAME=$* \
ADDITIONAL_LD_LIB_DIRS="$($*_LD_LIB_DIRS)" \
CHECK_SCRIPT_DIRS="$($*_SCRIPT_DIRS)" \
@ -304,7 +334,7 @@ uninstall:: before-uninstall internal-uninstall after-uninstall
clean:: before-clean internal-clean after-clean
distclean:: before-distclean internal-distclean after-distclean
distclean:: clean before-distclean internal-distclean after-distclean
check:: before-check internal-check after-check

View file

@ -36,15 +36,10 @@ endif
# Target specific libraries
#
ifeq ($(GNUSTEP_TARGET_OS),linux-gnu)
ifeq ($(GNUSTEP_TARGET_CPU),ix86)
TARGET_SYSTEM_LIBS := -lpcthread -ldl -lm
endif
ifeq ($(GNUSTEP_TARGET_CPU),alpha)
TARGET_SYSTEM_LIBS := -ldl -lm
endif
TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -ldl -lm
endif
ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris)
TARGET_SYSTEM_LIBS := -lthread -lsocket -lnsl -ldl -lm
TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -ldl -lm
endif
#
@ -132,7 +127,7 @@ SHARED_CFLAGS += -dynamic
SHARED_LIBEXT = .a
ifneq ($(OBJC_COMPILER), NeXT)
TARGET_SYSTEM_LIBS += -lgcc
TARGET_SYSTEM_LIBS += $(CONFIG_SYSTEM_LIBS) -lgcc
endif
BUNDLE_LD = ld

View file

@ -75,23 +75,18 @@ include $(GNUSTEP_SYSTEM_ROOT)/Makefiles/rules.make
TEST_LIBRARY_LIST := $(TEST_LIBRARY_NAME:=.testlib)
CHECK_LIBRARY_LIST := $(TEST_LIBRARY_NAME:=.checklib)
TEST_LIBRARY_STAMPS := $(foreach lib,$(TEST_LIBRARY_NAME),stamp-testlib-$(lib))
TEST_LIBRARY_STAMPS := $(addprefix $(GNUSTEP_OBJ_DIR)/,$(TEST_LIBRARY_STAMPS))
TEST_BUNDLE_LIST := $(TEST_BUNDLE_NAME:=.testbundle)
CHECK_BUNDLE_LIST := $(TEST_BUNDLE_NAME:=.checkbundle)
TEST_BUNDLE_STAMPS := $(foreach b,$(TEST_BUNDLE_NAME),stamp-testbundle-$(b))
TEST_BUNDLE_STAMPS := $(addprefix $(GNUSTEP_OBJ_DIR)/,$(TEST_BUNDLE_STAMPS))
TEST_BUNDLE_DIR_NAME := $(TEST_BUNDLE_NAME:=$(BUNDLE_EXTENSION))
TEST_BUNDLE_FILE := $(TEST_BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_DIR)/$(LIBRARY_COMBO)/$(TEST_BUNDLE_NAME)
TEST_BUNDLE_RESOURCE_DIRS = $(foreach d,$(RESOURCE_DIRS),$(TEST_BUNDLE_DIR_NAME)/$(d))
TEST_TOOL_LIST := $(TEST_TOOL_NAME:=.testtool)
CHECK_TOOL_LIST := $(TEST_TOOL_NAME:=.checktool)
TEST_TOOL_STAMPS := $(foreach tool,$(TEST_TOOL_NAME),stamp-testtool-$(tool))
TEST_TOOL_STAMPS := $(addprefix $(GNUSTEP_OBJ_DIR)/,$(TEST_TOOL_STAMPS))
TEST_APP_LIST := $(TEST_APP_NAME:=.testapp)
CHECK_APP_LIST := $(TEST_APP_NAME:=.checkapp)
TEST_APP_STAMPS := $(foreach app,$(TEST_APP_NAME),stamp-testapp-$(app))
TEST_APP_STAMPS := $(addprefix $(GNUSTEP_OBJ_DIR)/,$(TEST_APP_STAMPS))
ifeq ($(SCRIPTS_DIRECTORY),)
SCRIPTS_DIRECTORY = .
@ -101,29 +96,33 @@ endif
# Internal targets
#
$(GNUSTEP_OBJ_DIR)/stamp-testlib-% : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
ifneq ($(TEST_LIBRARY_NAME),)
$(GNUSTEP_OBJ_DIR)/$(TEST_LIBRARY_NAME) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$(GNUSTEP_OBJ_DIR)/$(TEST_LIBRARY_NAME) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_TEST_LIBRARY_LIBS)
touch $@
endif
$(GNUSTEP_OBJ_DIR)/stamp-testbundle-%: $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
ifneq ($(TEST_BUNDLE_NAME),)
$(TEST_BUNDLE_NAME): $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
$(LDOUT)$(BUNDLE_FILE) $(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(ALL_LIB_DIRS) $(BUNDLE_LIBS)
touch $@
$(LDOUT)$(TEST_BUNDLE_FILE) $(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_TEST_BUNDLE_LIBS)
endif
$(GNUSTEP_OBJ_DIR)/stamp-testtool-% : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$(GNUSTEP_OBJ_DIR)/$(TEST_TOOL_NAME) \
ifneq ($(TEST_TOOL_NAME),)
$(TEST_TOOL_NAME) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$(TEST_TOOL_NAME) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_TEST_TOOL_LIBS)
touch $@
endif
$(GNUSTEP_OBJ_DIR)/stamp-testapp-% : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$(GNUSTEP_OBJ_DIR)/$(TEST_APP_NAME) \
ifneq ($(TEST_APP_NAME),)
$(TEST_APP_NAME) : $(C_OBJ_FILES) $(OBJC_OBJ_FILES)
$(LD) $(ALL_LDFLAGS) $(LDOUT)$(TEST_APP_NAME) \
$(C_OBJ_FILES) $(OBJC_OBJ_FILES) \
$(ALL_LIB_DIRS) $(ALL_TEST_APP_LIBS)
touch $@
endif
#
# Compilation targets
@ -163,14 +162,27 @@ test-tools:: $(TEST_TOOL_LIST)
test-apps:: $(TEST_APP_LIST)
internal-testlib-all:: $(GNUSTEP_OBJ_DIR)/stamp-testlib-$(TEST_LIBRARY_NAME)
internal-testlib-all:: $(GNUSTEP_OBJ_DIR)/$(TEST_LIBRARY_NAME)
internal-testbundle-all:: \
$(GNUSTEP_OBJ_DIR)/stamp-testbundle-$(TEST_BUNDLE_NAME)
internal-testbundle-all:: build-testbundle-dir build-testbundle
internal-testtool-all:: $(GNUSTEP_OBJ_DIR)/stamp-testtool-$(TEST_TOOL_NAME)
build-testbundle-dir::
@$(GNUSTEP_MAKEFILES)/mkinstalldirs \
$(TEST_BUNDLE_DIR_NAME) \
$(TEST_BUNDLE_DIR_NAME)/Resources \
$(TEST_BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_DIR)/$(LIBRARY_COMBO) \
$(TEST_BUNDLE_RESOURCE_DIRS)
internal-testapp-all:: $(GNUSTEP_OBJ_DIR)/stamp-testapp-$(TEST_APP_NAME)
build-testbundle:: $(TEST_BUNDLE_NAME) testbundle-resource-files
testbundle-resource-files::
for f in $(RESOURCE_FILES); do \
$(INSTALL_DATA) $$f $(TEST_BUNDLE_DIR_NAME)/$$f ;\
done
internal-testtool-all:: $(TEST_TOOL_NAME)
internal-testapp-all:: $(TEST_APP_NAME)
#
# Check targets (actually running the tests)
@ -201,3 +213,20 @@ internal-check-%:: $(SCRIPTS_DIRECTORY)/config/unix.exp
$(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS); \
fi; \
done)
#
# Cleaning targets
#
internal-clean::
rm -f $(TEST_LIBRARY_NAME)
for f in $(TEST_BUNDLE_DIR_NAME); do \
rm -rf $$f ; \
done
rm -f $(TEST_TOOL_NAME)
rm -f $(TEST_APP_NAME)
rm -rf $(GNUSTEP_OBJ_PREFIX)
internal-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