# (C) Copyright Rene Rivera 2002. Permission to copy, use, # modify, sell and distribute this software is granted provided this # copyright notice appears in all copies. This software is provided # "as is" without express or implied warranty, and with no claim as # to its suitability for any purpose. # singleton variables... #> set-as-singleton _XX_ ; # For adding framwork libraries; like Python, Carbon, etc. free-feature framework ; # Specify the loader for bundles. free-feature bundle-loader ; flags darwin CFLAGS ; flags darwin C++FLAGS ; flags darwin DEFINES ; flags darwin UNDEFS ; flags darwin HDRS ; flags darwin STDHDRS ; flags darwin LINKFLAGS ; flags darwin LIBPATH ; flags darwin NEEDLIBS ; flags darwin FINDLIBS ; flags darwin ARFLAGS ; flags darwin TARGET_TYPE ; flags darwin FRAMEWORKS ; flags darwin DLLVERSION ; flags darwin BUNDLE_LOADER ; ARFLAGS ?= "" ; DLLVERSION = $(DLLVERSION[1]) ; DLLVERSION ?= $(BOOST_VERSION) ; flags darwin CFLAGS : -Wno-long-double -no-cpp-precomp ; flags darwin C++FLAGS : -fcoalesce-templates ; flags darwin LINKFLAGS static : -static-libgcc ; flags darwin CFLAGS on : -g ; flags darwin LINKFLAGS on : -g ; flags darwin LINKFLAGS off : -Wl,-x ; flags darwin CFLAGS off : -O0 ; flags darwin CFLAGS speed : -O3 ; flags darwin CFLAGS space : -Os ; flags darwin CFLAGS off : -fno-inline ; flags darwin CFLAGS on : -Wno-inline ; flags darwin CFLAGS full : -finline-functions -Wno-inline ; flags darwin CFLAGS on : -pg ; flags darwin LINKFLAGS on : -pg ; flags darwin C++FLAGS off : -fno-rtti ; flags darwin C++FLAGS on : -fvtable-thunks ; flags darwin C++FLAGS off : -fvtable-thunks=0 ; flags darwin CFLAGS true : -fPIC ; if $(BUNDLE_LOADER) { flags darwin LINKFLAGS $(SHARED_TYPES) : -bundle ; } else { flags darwin LINKFLAGS $(SHARED_TYPES) : -Wl,-dynamic -nostartfiles -Wl,-dylib -Wl,-ldylib1.o ; } #### Link #### rule Link-action { _ on $(<) = " " ; DEPENDS $(<) : $(NEEDLIBS) $(NEEDIMPS) ; if $(DLLVERSION) && $(TARGET_TYPE) in $(SHARED_TYPES) && ! $(BUNDLE_LOADER) { DLLFLAGS on $(<) = "-Wl,-dylib_compatibility_version,$(DLLVERSION) -W,l-dylib_current_version,$(DLLVERSION)" ; darwin-Link-DyLib-action $(<) : $(>) ; } else { DLLFLAGS on $(<) = ; darwin-Link-action $(<) : $(>) ; } } actions darwin-Link-action bind NEEDLIBS NEEDIMPS { $(SHELL_SET)$(gSHELL_LIBPATH)=$(RUN_LD_LIBRARY_PATH) $(SHELL_EXPORT)$(gSHELL_LIBPATH) c++ $(LINKFLAGS) -o "$(<[1])" "$(>)" \ -L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) \ -framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)" } actions darwin-Link-DyLib-action bind NEEDLIBS NEEDIMPS { $(SHELL_SET)$(gSHELL_LIBPATH)=$(RUN_LD_LIBRARY_PATH) $(SHELL_EXPORT)$(gSHELL_LIBPATH) ld -dynamic -m -r -d -o "$(<[1]:S=.lo)" "$(>)" \ && \ c++ $(LINKFLAGS) $(DLLFLAGS) -o "$(<[1])" "$(<[1]:S=.lo)" \ -L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) \ -framework$(_)$(FRAMEWORKS) \ && \ rm -f "$(<[1]:S=.lo)" } #### Cc ##### rule Cc-action { _ on $(<) = " " ; darwin-Cc-action $(<) : $(>) ; } actions darwin-Cc-action { cc -c -Wall -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } #### C++ #### rule C++-action { _ on $(<) = " " ; darwin-C++-action $(<) : $(>) ; } actions darwin-C++-action { c++ -c -Wall -ftemplate-depth-100 -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } #### Archive #### rule Archive-action { darwin-Archive-action $(<) : $(>) ; } actions updated together piecemeal darwin-Archive-action { ar -r -s $(ARFLAGS) "$(<:T)" "$(>:T)" }