# # brain.make # # Determine the core libraries. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley # # 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. # Handle abbreviations for library combinations ifndef library_combo ifdef LIBRARY_COMBO library_combo:=$(LIBRARY_COMBO) endif endif ifdef library_combo the_library_combo=$(library_combo) else the_library_combo=$(default_library_combo) endif ifeq ($(library_combo),nx) the_library_combo=nx-nx-nx-nil endif ifeq ($(library_combo),gnu-xdps) the_library_combo=gnu-gnu-gnu-xdps endif ifeq ($(library_combo),fd-xdps) the_library_combo=gnu-fd-gnu-xdps endif ifeq ($(library_combo),gnu-xraw) the_library_combo=gnu-gnu-gnu-xraw endif ifeq ($(library_combo),fd-xraw) the_library_combo=gnu-fd-gnu-xraw endif ifeq ($(the_library_combo),) the_library_combo=$(library_combo) endif ifeq ($(gc), yes) the_library_combo := $(the_library_combo)-gc endif # Strip out the individual libraries from the combo string combo_list = $(subst -, ,$(the_library_combo)) OBJC_RUNTIME_LIB = $(word 1,$(combo_list)) FOUNDATION_LIB = $(word 2,$(combo_list)) GUI_LIB = $(word 3,$(combo_list)) GUI_BACKEND_LIB = $(word 4,$(combo_list)) # # Allow user specify the runtime, foundation, gui and backend libraries in # separate variables. # ifneq ($(runtime),) OBJC_RUNTIME_LIB = $(runtime) endif ifneq ($(foundation),) FOUNDATION_LIB = $(foundation) endif ifneq ($(gui),) GUI_LIB = $(gui) endif ifneq ($(backend),) GUI_BACKEND_LIB = $(backend) endif ifeq ($(gc), yes) export LIBRARY_COMBO = $(OBJC_RUNTIME_LIB)-$(FOUNDATION_LIB)-$(GUI_LIB)-$(GUI_BACKEND_LIB)-gc else export LIBRARY_COMBO = $(OBJC_RUNTIME_LIB)-$(FOUNDATION_LIB)-$(GUI_LIB)-$(GUI_BACKEND_LIB) endif OBJC_LDFLAGS = OBJC_LIBS = # # Set the appropriate ObjC runtime library and other information # ifeq ($(OBJC_RUNTIME_LIB), gnu) OBJC_LDFLAGS = OBJC_LIB_DIR = OBJC_LIBS = -lobjc OBJC_RUNTIME = GNU RUNTIME_DEFINE = -DGNU_RUNTIME=1 endif ifeq ($(OBJC_RUNTIME_LIB), nx) OBJC_RUNTIME = NeXT RUNTIME_DEFINE = -DNeXT_RUNTIME=1 endif ifeq ($(OBJC_RUNTIME_LIB), sun) OBJC_RUNTIME = Sun RUNTIME_DEFINE = -DSun_RUNTIME=1 endif FND_LDFLAGS = FND_LIBS = # # Set the appropriate Foundation library # ifeq ($(FOUNDATION_LIB),gnu) FND_LDFLAGS = FND_LIBS = -lgnustep-base FND_DEFINE = -DGNUSTEP_BASE_LIBRARY=1 GNUSTEP_DEFINE = -DGNUSTEP # If gc=yes was passed, use the appropriate library and defines ifeq ($(gc), yes) OBJC_LIBS = -lobjc_gc -lgc AUXILIARY_CPPFLAGS += -DGS_WITH_GC=1 endif endif ifeq ($(FOUNDATION_LIB),fd) -include $(GNUSTEP_MAKEFILES)/libFoundation.make FND_DEFINE = -DLIB_FOUNDATION_LIBRARY=1 FND_LDFLAGS = FND_LIBS = -lFoundation # If gc=yes was passed and libFoundation was compiled with Boehm's # GC support, use the appropriate libraries ifeq ($(gc), yes) ifeq ($(LIBFOUNDATION_WITH_GC), yes) OBJC_LIBS = -lobjc $(LIBFOUNDATION_GC_LIBRARY) ifeq ($(leak), yes) AUXILIARY_CPPFLAGS += -DLIB_FOUNDATION_LEAK_GC=1 else AUXILIARY_CPPFLAGS += -DLIB_FOUNDATION_BOEHM_GC=1 endif endif endif endif ifeq ($(FOUNDATION_LIB),nx) FND_LDFLAGS = -framework Foundation FND_LIBS = FND_DEFINE = -DNeXT_Foundation_LIBRARY=1 endif ifeq ($(FOUNDATION_LIB), sun) FND_DEFINE = -DSun_Foundation_LIBRARY=1 endif # # Set the WO library flags # WO_LDFLAGS = WO_LIBS = -lNGObjWeb -lNGHttp -lNGMime -lNGZlib \ -lNGNet -lNGStreams -lNGExtensions WO_DEFINE = -DNGObjWeb_LIBRARY=1 GUI_LDFLAGS = GUI_LIBS = # # Set the GUI library # ifeq ($(GUI_LIB),gnu) GUI_LDFLAGS = GUI_LIBS = -lgnustep-gui -lgmodel -lgnustep-gui GUI_DEFINE = -DGNU_GUI_LIBRARY=1 GNUSTEP_DEFINE = -DGNUSTEP endif ifeq ($(GUI_LIB),nx) GUI_DEFINE = -DNeXT_GUI_LIBRARY=1 ifneq ($(INTERNAL_app_NAME),) # If we're building an application pass the following additional flags to # the linker GUI_LDFLAGS = -sectcreate __ICON __header $(INTERNAL_app_NAME).iconheader \ -segprot __ICON r r -sectcreate __ICON app /NextLibrary/Frameworks/AppKit.framework/Resources/NSDefaultApplicationIcon.tiff \ -framework AppKit GUI_LIBS = endif endif BACKEND_LDFLAGS = BACKEND_LIBS = # # Set the GUI Backend library # ifeq ($(GUI_BACKEND_LIB),xdps) BACKEND_LDFLAGS = BACKEND_LIBS = -lgnustep-xdps BACKEND_DEFINE = -DXDPS_BACKEND_LIBRARY=1 endif ifeq ($(GUI_BACKEND_LIB),xraw) BACKEND_LDFLAGS = BACKEND_LIBS = -lgnustep-xraw BACKEND_DEFINE = -DXRAW_BACKEND_LIBRARY=1 endif ifeq ($(GUI_BACKEND_LIB),xgps) BACKEND_LDFLAGS = BACKEND_LIBS = -lgnustep-xgps BACKEND_DEFINE = -DXGPS_BACKEND_LIBRARY=1 endif ifeq ($(GUI_BACKEND_LIB),w32) BACKEND_LDFLAGS = BACKEND_LIBS = -lMBKit endif SYSTEM_INCLUDES = SYSTEM_LDFLAGS = SYSTEM_LIB_DIR = SYSTEM_LIBS = # # If the backend GUI library is X based # then add X headers and libraries # ifeq ($(GUI_BACKEND_LIB),xdps) SYSTEM_INCLUDES = $(GRAPHIC_CFLAGS) SYSTEM_LDFLAGS = SYSTEM_LIB_DIR = $(GRAPHIC_LFLAGS) SYSTEM_LIBS = -ldpstk -ldps -lpsres -lXt $(X_PRE_LIBS) $(GRAPHIC_LIBS) endif # # If the backend GUI library is X (only) based # then add X headers and libraries # ifeq ($(GUI_BACKEND_LIB),xraw) SYSTEM_INCLUDES = $(GRAPHIC_CFLAGS) SYSTEM_LDFLAGS = SYSTEM_LIB_DIR = $(GRAPHIC_LFLAGS) SYSTEM_LIBS = $(GRAPHIC_LIBS) endif ifeq ($(GUI_BACKEND_LIB),xgps) SYSTEM_INCLUDES = $(GRAPHIC_CFLAGS) SYSTEM_LDFLAGS = SYSTEM_LIB_DIR = $(GRAPHIC_LFLAGS) SYSTEM_LIBS = $(GRAPHIC_LIBS) endif # # If the backend GUI library is Win32 based # then add Win32 headers and libraries # ifeq ($(GUI_BACKEND_LIB),w32) SYSTEM_INCLUDES = SYSTEM_LDFLAGS = SYSTEM_LIB_DIR = SYSTEM_LIBS = -ltiff -lwsock32 -ladvapi32 -lcomctl32 -luser32 \ -lgdi32 -lcomdlg32 endif ## Local variables: ## mode: makefile ## End: