| # Makefile for GNU Objective C runtime library. |
| # Copyright (C) 1993-2022 Free Software Foundation, Inc. |
| |
| #This file is part of GCC. |
| |
| #GCC 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 3, or (at your option) |
| #any later version. |
| |
| #GCC is distributed in the hope that it will be useful, |
| #but WITHOUT ANY WARRANTY; without even the implied warranty of |
| #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| #GNU General Public License for more details. |
| |
| #You should have received a copy of the GNU General Public License |
| #along with GCC; see the file COPYING3. If not see |
| #<http://www.gnu.org/licenses/>. |
| |
| #This was cribbed from the libchill, libiberty and libstdc++ |
| #Makefile.in files. Some of this stuff may be unnecessary and |
| #worthless. |
| |
| SHELL = @SHELL@ |
| MAKEOVERRIDES= |
| |
| #### Start of system configuration section. #### |
| |
| srcdir = @glibcpp_srcdir@ |
| VPATH = @glibcpp_srcdir@ |
| prefix = @prefix@ |
| exec_prefix = @exec_prefix@ |
| target_noncanonical = @target_noncanonical@ |
| gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) |
| host_subdir = @host_subdir@ |
| top_srcdir = @top_srcdir@ |
| multi_basedir = @multi_basedir@ |
| toolexecdir = @toolexecdir@ |
| # Toolexecdir is used only by toolexeclibdir |
| toolexeclibdir = @toolexeclibdir@ |
| |
| includedirname = @includedirname@ |
| libsuffix = @libsuffix@ |
| |
| lt_host_flags = @lt_host_flags@ |
| extra_ldflags_libobjc = @extra_ldflags_libobjc@ |
| |
| top_builddir = . |
| |
| libdir = $(exec_prefix)/lib |
| libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) |
| |
| # Multilib support variables. |
| MULTISRCTOP = |
| MULTIBUILDTOP = |
| MULTIDIRS = |
| MULTISUBDIR = |
| MULTIDO = true |
| MULTICLEAN = true |
| |
| # Not configured per top-level version, since that doesn't get passed |
| # down at configure time, but overrridden by the top-level install |
| # target. |
| INSTALL = @INSTALL@ |
| INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
| INSTALL_DATA = @INSTALL_DATA@ |
| |
| AR = @AR@ |
| AR_FLAGS = rc |
| |
| RANLIB = @RANLIB@ |
| |
| CC = @CC@ |
| CFLAGS = @CFLAGS@ |
| XCFLAGS = @XCFLAGS@ |
| WARN_CFLAGS = -W -Wall -Wwrite-strings -Wstrict-prototypes |
| ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) \ |
| $(XCFLAGS) $(CFLAGS) $(WARN_CFLAGS) \ |
| -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions |
| |
| # Libtool |
| # The following strings describe the version of the obj-C library |
| # begin compiled and compatibility issues. |
| # Please refer to Libtool documentation about how to manage these |
| # numbers. |
| LIBOBJC_VERSION = @VERSION@ |
| LIBOBJC_GC_VERSION = @VERSION@ |
| LIBTOOL = @LIBTOOL@ $(LIBTOOLFLAGS) |
| LIBTOOL_COMPILE = $(LIBTOOL) --mode=compile |
| LIBTOOL_LINK = $(LIBTOOL) --mode=link |
| LIBTOOL_INSTALL = $(LIBTOOL) --mode=install |
| LIBTOOL_CLEAN = $(LIBTOOL) --mode=clean |
| #LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall |
| |
| OBJC_GCFLAGS=@OBJC_GCFLAGS@ |
| OBJC_BOEHM_GC=@OBJC_BOEHM_GC@ |
| OBJC_BOEHM_GC_INCLUDES=@OBJC_BOEHM_GC_INCLUDES@ |
| OBJC_BOEHM_GC_LIBS=@OBJC_BOEHM_GC_LIBS@ |
| |
| INCLUDES = -I$(srcdir)/$(MULTISRCTOP)../gcc \ |
| -I$(srcdir)/$(MULTISRCTOP)../gcc/config \ |
| -I$(MULTIBUILDTOP)../../$(host_subdir)/gcc \ |
| -I$(srcdir)/$(MULTISRCTOP)../libgcc \ |
| -I$(MULTIBUILDTOP)../libgcc \ |
| -I$(srcdir)/$(MULTISRCTOP)../include \ |
| $(OBJC_BOEHM_GC_INCLUDES) |
| |
| ## |
| ## The list of header/source files |
| ## |
| |
| # User-visible header files, from the objc/ directory |
| OBJC_H = \ |
| objc.h \ |
| objc-exception.h \ |
| objc-sync.h \ |
| \ |
| NXConstStr.h \ |
| Object.h \ |
| Protocol.h \ |
| message.h \ |
| objc-decls.h \ |
| runtime.h \ |
| thr.h |
| |
| # Objective-C source files to compile |
| OBJC_SOURCE_FILES = \ |
| NXConstStr.m \ |
| Object.m \ |
| Protocol.m \ |
| accessors.m \ |
| linking.m |
| |
| # C source files to compile |
| C_SOURCE_FILES = \ |
| class.c \ |
| encoding.c \ |
| error.c \ |
| gc.c \ |
| hash.c \ |
| init.c \ |
| ivars.c \ |
| memory.c \ |
| methods.c \ |
| nil_method.c \ |
| objc-foreach.c \ |
| objc-sync.c \ |
| objects.c \ |
| protocols.c \ |
| sarray.c \ |
| selector.c \ |
| sendmsg.c \ |
| thr.c \ |
| exception.c |
| |
| # Object files to link (when the library is linked with no GC (Garbage Collection)) |
| OBJS = \ |
| $(patsubst %.m,%.lo,$(OBJC_SOURCE_FILES)) \ |
| $(patsubst %.c,%.lo,$(C_SOURCE_FILES)) |
| |
| # Object files to link (when the library is linked with GC (Garbage Collection)) |
| OBJS_GC = \ |
| $(patsubst %.m,%_gc.lo,$(OBJC_SOURCE_FILES)) \ |
| $(patsubst %.c,%_gc.lo,$(C_SOURCE_FILES)) |
| |
| |
| ## |
| ## The rules to build |
| ## |
| |
| # Flags to pass to a recursive make. |
| FLAGS_TO_PASS = \ |
| "AR=$(AR)" \ |
| "AR_FLAGS=$(AR_FLAGS)" \ |
| "CC=$(CC)" \ |
| "CFLAGS=$(CFLAGS)" \ |
| "DESTDIR=$(DESTDIR)" \ |
| "LIBCFLAGS=$(LIBCFLAGS)" \ |
| "EXTRA_OFILES=$(EXTRA_OFILES)" \ |
| "HDEFINES=$(HDEFINES)" \ |
| "INSTALL=$(INSTALL)" \ |
| "INSTALL_DATA=$(INSTALL_DATA)" \ |
| "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ |
| "LDFLAGS=$(LDFLAGS)" \ |
| "LIBTOOL=$(LIBTOOL)" \ |
| "LOADLIBES=$(LOADLIBES)" \ |
| "PICFLAG=$(PICFLAG)" \ |
| "RANLIB=$(RANLIB)" \ |
| "SHELL=$(SHELL)" \ |
| "prefix=$(prefix)" \ |
| "exec_prefix=$(exec_prefix)" \ |
| "libdir=$(libdir)" \ |
| "libsubdir=$(libsubdir)" \ |
| "tooldir=$(tooldir)" |
| |
| # The 'all' rule must be the first one so that it is executed if |
| # nothing is specified on the command-line. |
| all: libobjc$(libsuffix).la $(OBJC_BOEHM_GC) |
| : $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all |
| |
| .SUFFIXES: |
| .SUFFIXES: .c .m .lo |
| |
| %.lo: %.c |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) \ |
| -o $@ |
| |
| %_gc.lo: %.c |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) \ |
| -o $@ |
| |
| %.lo: %.m |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) -fgnu-runtime \ |
| -o $@ |
| |
| %_gc.lo: %.m |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) -fgnu-runtime \ |
| -o $@ |
| |
| # sendmsg has a special rule because it depends on runtime-info.h. |
| runtime-info.h: |
| echo "" > tmp-runtime.m |
| echo "/* This file is automatically generated */" > $@ |
| $(CC) $(MULTIFLAGS) -print-objc-runtime-info -S tmp-runtime.m >> $@ |
| rm -f tmp-runtime.m tmp-runtime.s |
| |
| sendmsg.lo: sendmsg.c runtime-info.h |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) \ |
| -o $@ |
| |
| sendmsg_gc.lo: sendmsg.c runtime-info.h |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) \ |
| -o $@ |
| |
| # These files have separate rules because they require special |
| # compiler flags. |
| |
| exception.lo: exception.c |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) -fexceptions \ |
| -o $@ |
| |
| exception_gc.lo: exception.c |
| $(LIBTOOL_COMPILE) $(CC) $< -c \ |
| $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) -fexceptions \ |
| -o $@ |
| |
| doc: info dvi pdf html |
| |
| # No install-html or install-pdf support |
| .PHONY: install-html install-pdf install-info |
| install-html: |
| install-pdf: |
| install-info: |
| |
| LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) |
| |
| libobjc$(libsuffix).la: $(OBJS) |
| $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ |
| -Wc,-shared-libgcc -rpath $(toolexeclibdir) \ |
| -version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) \ |
| $(LTLDFLAGS) |
| |
| libobjc_gc$(libsuffix).la: $(OBJS_GC) |
| $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) $(OBJC_BOEHM_GC_LIBS) \ |
| -Wc,-shared-libgcc -rpath $(toolexeclibdir) \ |
| -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) \ |
| $(LTLDFLAGS) |
| |
| info: |
| dvi: |
| pdf: |
| html: |
| |
| Makefile: Makefile.in config.status |
| $(SHELL) config.status |
| |
| config.status: configure |
| rm -f config.cache |
| CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \ |
| CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck |
| |
| AUTOCONF = autoconf |
| ACLOCAL = aclocal |
| ACLOCAL_AMFLAGS = -I ../config -I .. |
| aclocal_deps = \ |
| $(srcdir)/../config/multi.m4 \ |
| $(srcdir)/../config/override.m4 \ |
| $(srcdir)/../config/proginstall.m4 \ |
| $(srcdir)/../config/toolexeclibdir.m4 \ |
| $(srcdir)/../ltoptions.m4 \ |
| $(srcdir)/../ltsugar.m4 \ |
| $(srcdir)/../ltversion.m4 \ |
| $(srcdir)/../lt~obsolete.m4 \ |
| $(srcdir)/../config/cet.m4 \ |
| $(srcdir)/acinclude.m4 |
| |
| $(srcdir)/configure: @MAINT@ configure.ac $(srcdir)/aclocal.m4 |
| rm -f config.cache |
| cd $(srcdir) && $(AUTOCONF) |
| |
| $(srcdir)/aclocal.m4: @MAINT@ $(aclocal_deps) |
| cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) |
| |
| install: install-libs install-headers |
| |
| install-libs: installdirs |
| $(SHELL) $(multi_basedir)/mkinstalldirs $(DESTDIR)$(toolexeclibdir) |
| $(LIBTOOL_INSTALL) $(INSTALL) libobjc$(libsuffix).la $(DESTDIR)$(toolexeclibdir); |
| if [ "$(OBJC_BOEHM_GC)" ]; then \ |
| $(LIBTOOL_INSTALL) $(INSTALL) libobjc_gc$(libsuffix).la \ |
| $(DESTDIR)$(toolexeclibdir);\ |
| fi |
| $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@" |
| @-$(LIBTOOL) --mode=finish $(DESTDIR)$(toolexeclibdir) |
| |
| # Copy Objective-C headers to installation include directory. |
| install-headers: |
| $(SHELL) $(multi_basedir)/mkinstalldirs $(DESTDIR)$(libsubdir)/$(includedirname)/objc |
| for file in $(OBJC_H); do \ |
| realfile=$(srcdir)/objc/$${file}; \ |
| $(INSTALL_DATA) $${realfile} $(DESTDIR)$(libsubdir)/$(includedirname)/objc; \ |
| done |
| |
| check uninstall install-strip dist installcheck installdirs: |
| |
| mostlyclean: |
| -$(LIBTOOL_CLEAN) rm -f libobjc$(libsuffix).la libobjc_gc$(libsuffix).la *.lo |
| -rm -f runtime-info.h tmp-runtime.s *.o *.lo libobjc* xforward \ |
| fflags *.aux *.cp *.dvi *.pdf *.fn *.info *.ky *.log *.pg \ |
| *.toc *.tp *.vr *.html libobj.exp |
| @$(MULTICLEAN) multi-clean DO=mostlyclean |
| |
| clean: mostlyclean |
| rm -f config.log |
| @$(MULTICLEAN) multi-clean DO=clean |
| |
| distclean: clean |
| @$(MULTICLEAN) multi-clean DO=distclean |
| rm -f config.cache config.status Makefile configure |
| |
| maintainer-clean realclean: distclean |
| |
| .PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \ |
| install-strip dist installcheck installdirs |
| |
| # Don't export variables to the environment, in order to not confuse |
| # configure. |
| .NOEXPORT: |