123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- # Makefile for GNU Objective C runtime library.
- # Copyright (C) 1993-2015 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 cat $(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 = .
- -include ../boehm-gc/threads.mk
- 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@
- WARN_CFLAGS = -W -Wall -Wwrite-strings -Wstrict-prototypes
- ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(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=../boehm-gc/libgcjgc_convenience.la $(thread_libs_and_flags)
- 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)/../ltoptions.m4 \
- $(srcdir)/../ltsugar.m4 \
- $(srcdir)/../ltversion.m4 \
- $(srcdir)/../lt~obsolete.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:
|