Factor platform specific makefile directives out into their own makefile

fragments.  This is gross, but having tons of confusing conditionals all
throughout the build system seems worst.

Credits got to Casey Carter for the idea.

llvm-svn: 3705
This commit is contained in:
Chris Lattner 2002-09-13 22:14:47 +00:00
parent d7ccee7961
commit 64ea4a3bd2
4 changed files with 60 additions and 34 deletions

18
Makefile.Linux Normal file
View File

@ -0,0 +1,18 @@
#===-- Makefile.Linux - Linux specific makefile options ---*- makefile -*--====#
#
# This file is included by all other files, through Makefile.common, but only
# when compiling on a Linux based platform.
#
#===-----------------------------------------------------------------------====#
# MakeSharedObjectOption - This option is passed to the linker by
# Makefile.common when compiling a shared object.
#
MakeSharedObjectOption := -shared
# ExportSymbols - This is used by tools that need to make sure that all of their
# symbols are exported for use at runtime by dlsym.
#
ExportSymbols := -Wl,--export-dynamic

18
Makefile.SunOS Normal file
View File

@ -0,0 +1,18 @@
#===-- Makefile.SunOS - SunOS specific makefile options ---*- makefile -*--====#
#
# This file is included by all other files, through Makefile.common, but only
# when compiling on a solaris based platform.
#
#===-----------------------------------------------------------------------====#
# MakeSharedObjectOption - This option is passed to the linker by
# Makefile.common when compiling a shared object.
#
MakeSharedObjectOption := -G
# ExportSymbols - This is used by tools that need to make sure that all of their
# symbols are exported for use at runtime by dlsym.
#
ExportSymbols :=

View File

@ -46,6 +46,14 @@ include $(LEVEL)/Makefile.config
#
#ENABLE_OPTIMIZED = 1
# Figure out how to do platform specific stuff on this platform. This is really
# gross and should be autoconfiscated (automake actually), but should hopefully
# work on Linux and solaris (SunOS).
#
UNAME := $(shell uname)
include $(LEVEL)/Makefile.$(UNAME)
ifdef SHARED_LIBRARY
# if SHARED_LIBRARY is specified, the default is to build the dynamic lib
dynamic ::
@ -142,6 +150,10 @@ LinkO := $(Link) -O3 -L $(LIBRELEASE)
# Create one .o file from a bunch of .o files...
Relink = ld -r
# MakeSO - Create a .so file from a .o files...
MakeSO := $(CXX) $(MakeSharedObjectOption) $(PROFILE)
MakeSOO := $(MakeSO) -O3
# Create dependancy file from CPP file, send to stdout.
Depend := $(CXX) -MM -I$(LEVEL)/include $(CPPFLAGS)
@ -194,23 +206,6 @@ endif
ifdef LIBRARYNAME
# Figure out how to make a .so file on this platform. This is really gross and
# should be autoconfiscated (automake actually), but should hopefully work on
# linux and solaris.
#
# Create a .so file from a .o files...
UNAME := $(shell uname)
ifeq ($(UNAME), SunOS)
MakeSO := $(CXX) -G $(PROFILE)
else
MakeSO := $(CXX) -shared $(PROFILE)
endif
MakeSOO := $(MakeSO) -O3
LIBNAME_O := $(LIBRELEASE)/lib$(LIBRARYNAME).so
LIBNAME_G := $(LIBDEBUG)/lib$(LIBRARYNAME).so
LIBNAME_AO := $(LIBRELEASE)/lib$(LIBRARYNAME).a

View File

@ -46,6 +46,14 @@ include $(LEVEL)/Makefile.config
#
#ENABLE_OPTIMIZED = 1
# Figure out how to do platform specific stuff on this platform. This is really
# gross and should be autoconfiscated (automake actually), but should hopefully
# work on Linux and solaris (SunOS).
#
UNAME := $(shell uname)
include $(LEVEL)/Makefile.$(UNAME)
ifdef SHARED_LIBRARY
# if SHARED_LIBRARY is specified, the default is to build the dynamic lib
dynamic ::
@ -142,6 +150,10 @@ LinkO := $(Link) -O3 -L $(LIBRELEASE)
# Create one .o file from a bunch of .o files...
Relink = ld -r
# MakeSO - Create a .so file from a .o files...
MakeSO := $(CXX) $(MakeSharedObjectOption) $(PROFILE)
MakeSOO := $(MakeSO) -O3
# Create dependancy file from CPP file, send to stdout.
Depend := $(CXX) -MM -I$(LEVEL)/include $(CPPFLAGS)
@ -194,23 +206,6 @@ endif
ifdef LIBRARYNAME
# Figure out how to make a .so file on this platform. This is really gross and
# should be autoconfiscated (automake actually), but should hopefully work on
# linux and solaris.
#
# Create a .so file from a .o files...
UNAME := $(shell uname)
ifeq ($(UNAME), SunOS)
MakeSO := $(CXX) -G $(PROFILE)
else
MakeSO := $(CXX) -shared $(PROFILE)
endif
MakeSOO := $(MakeSO) -O3
LIBNAME_O := $(LIBRELEASE)/lib$(LIBRARYNAME).so
LIBNAME_G := $(LIBDEBUG)/lib$(LIBRARYNAME).so
LIBNAME_AO := $(LIBRELEASE)/lib$(LIBRARYNAME).a