# Shared make information between Build engine and games ENGINELIB=libengine.a EDITORLIB=libbuild.a SDLCONFIG = /usr/local/bin/sdl-config SDLNAME = SDL ifeq ($(wildcard $(SDLCONFIG)),$(SDLCONFIG)) # $(info Detected locally installed SDL 1.X) SDLROOT = /usr/local else # Swap the commenting in the following two lines to # enable SDL 2.X detection SDLCONFIG = /usr/local/file_that_does_not_exist # SDLCONFIG = /usr/local/bin/sdl2-config ifeq ($(wildcard $(SDLCONFIG)),$(SDLCONFIG)) # $(info Detected locally installed SDL 2.X) SDLROOT = /usr/local SDLNAME = SDL2 else # $(info Detected system-wide installed SDL 1.X) SDLCONFIG = /usr/bin/sdl-config endif endif SDL_FRAMEWORK = 0 ifeq (4,$(GCC_MAJOR)) L_SSP := -lssp endif BUILDCFLAGS=$(ARCH) BUILDLDFLAGS=$(ARCH) ifeq ($(PLATFORM),LINUX) STDCPPLIB= else # Overridden for OSes that don't have the cutdown stdc++ that is supc++ STDCPPLIB= -lsupc++ endif ifeq ($(PLATFORM),LINUX) RENDERTYPE=SDL BUILDCFLAGS+= -DHAVE_INTTYPES GTKCOMPAT32=0 ifeq ($(findstring x86_64,$(shell uname -m)),x86_64) ifeq (1,$(BUILD32_ON_64)) # On my 64bit Gentoo these are the 32bit emulation libs LIBS+= -m32 -L/emul/linux/x86/usr/lib BUILDCFLAGS+= -m32 # Override WITHOUT_GTK=0 GTKCOMPAT32=1 else override NOASM=1 endif endif endif ifeq ($(PLATFORM),DARWIN) RENDERTYPE = SDL STDCPPLIB = -lstdc++ BUILDCFLAGS += -DHAVE_INTTYPES GTKCOMPAT32 = 0 SDL_FRAMEWORK = 1 ifeq (1,$(DARWIN9)) BUILDCFLAGS += -DDARWIN9 endif ifeq (1,$(BUILD32_ON_64)) ARCH=-arch i386 else # ASM won't work on PowerPC or x86_64 override NOASM = 1 endif endif ifeq ($(PLATFORM),WINDOWS) RENDERTYPE ?= WIN BUILDCFLAGS+= -DHAVE_INTTYPES EXESUFFIX=.exe LIBS+= -lmingwex -lwinmm -L$(DXROOT)/lib -lwsock32 -lcomctl32 #-lshfolder # STDCPPLIB=-lstdc++ endif ifeq ($(PLATFORM),BSD) RENDERTYPE=SDL BUILDCFLAGS+= -DHAVE_INTTYPES ifneq ($(findstring i386, $(SYSARCH)), i386) override NOASM=1 endif STDCPPLIB=-lstdc++ endif ifeq ($(PLATFORM),BEOS) RENDERTYPE=SDL STDCPPLIB=-lstdc++ endif ifeq ($(PLATFORM),SKYOS) RENDERTYPE=SDL EXESUFFIX=.app override NOASM=1 BUILDCFLAGS+= -DUNDERSCORES SDLCONFIG= SDLCONFIG_CFLAGS=-I/boot/programs/sdk/include/sdl LIBS+= -lSDL -lnet endif ifeq ($(PLATFORM),WII) ifeq ($(strip $(DEVKITPPC)),) $(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC") endif include $(DEVKITPPC)/wii_rules RANLIB=powerpc-eabi-ranlib STRIP=powerpc-eabi-strip RENDERTYPE=SDL EXESUFFIX=.elf override USE_OPENGL=0 override NOASM=1 override WITHOUT_GTK=1 # -msdata=eabi BUILDCFLAGS+= -g -mtune=750 -meabi -mhard-float \ -DGEKKO -DHAVE_INTTYPES -D__POWERPC__ \ -I$(LIBOGC_INC) -I$(LIBOGC_INC)/SDL -I$(PORTLIBS)/include SDLCONFIG= LIBS+= -lSDL_mixer -lsmpeg -lSDL -laesnd endif ifeq ($(PLATFORM),QNX) RENDERTYPE=SDL override USE_OPENGL=0 override NOASM=1 STDCPPLIB=-lstdc++ LIBS+= -lsocket endif ifeq ($(PLATFORM),SUNOS) RENDERTYPE=SDL override USE_OPENGL=0 override NOASM=1 STDCPPLIB=-lstdc++ LIBS+= -lsocket -lnsl endif ifeq ($(PLATFORM),SYLLABLE) RENDERTYPE=SDL override USE_OPENGL=0 override NOASM=1 endif ifeq ($(RENDERTYPE),SDL) ifeq ($(SDL_FRAMEWORK),1) LIBS += -Wl,-framework,SDL SDLCONFIG_CFLAGS+= -I$(APPLE_FRAMEWORKS)/SDL.framework/Headers else ifneq ($(SDLCONFIG),) SDLCONFIG_LIBS+= $(shell $(SDLCONFIG) --libs) LIBS+= $(SDLCONFIG_LIBS) SDLCONFIG_CFLAGS+=$(shell $(SDLCONFIG) --cflags) endif endif ifeq (1,$(WITHOUT_GTK)) HAVE_GTK2=0 else ifneq (No,$(shell pkg-config --exists gtk+-2.0 || echo No)) HAVE_GTK2=1 # On my 64bit Gentoo box I have Cairo enabled which means the libs list includes # -lpangocairo-1.0 and -lcairo, however the 32bit compatibility libraries don't # include cairo, so we need to filter out those -l switches in order to link ifneq ($(LINKED_GTK),0) ifeq ($(GTKCOMPAT32),1) LIBS+= $(shell pkg-config --libs gtk+-2.0 | sed 's/\s-l\(pango\)\{0,1\}cairo\S*\s/ /g') else LIBS+= $(shell pkg-config --libs gtk+-2.0) endif endif else HAVE_GTK2=0 endif endif else ifeq ($(RENDERTYPE),WIN) LIBS+= -mwindows -ldxguid endif endif BUILDCFLAGS+= -DRENDERTYPE$(RENDERTYPE)=1 $(W_STRICT_OVERFLOW) ifneq (0,$(USE_OPENGL)) BUILDCFLAGS+= -DUSE_OPENGL endif ifneq (0,$(NOASM)) BUILDCFLAGS+= -DNOASM endif ifneq (0,$(LINKED_GTK)) BUILDCFLAGS+= -DLINKED_GTK endif ifneq (0,$(POLYMER)) ifneq (0,$(USE_OPENGL)) BUILDCFLAGS+= -DPOLYMER endif endif ifneq ($(EXESUFFIX_OVERRIDE),) EXESUFFIX=$(EXESUFFIX_OVERRIDE) endif STATICSTDCPP?= ifeq (1,$(STATICSTDCPP)) STATICSTDCPP= -static endif ifeq (0,$(STATICSTDCPP)) STATICSTDCPP= -shared endif ifneq ($(PLATFORM),WINDOWS) ifneq ($(PLATFORM),WII) LIBS+= -ldl endif LIBS+= -pthread endif ifeq ($(PLATFORM),WINDOWS) ifneq ($(USE_LIBPNG),0) # XXX: these assume that the compiler runs from build/. Ugh. LIBS+= -L../Windows/lib -lpng_mini -lz_mini BUILDCFLAGS+= -I../Windows/include endif else ifeq ($(PLATFORM),DARWIN) ifneq ($(USE_LIBPNG),0) BUILDCFLAGS+= -I/opt/local/include -I/sw/include -I/usr/local/include LIBS+= -L/opt/local/lib -L/usr/local/lib -lpng # -lz endif else ifneq ($(USE_LIBPNG),0) LIBS+= -lpng -lz endif endif endif ifeq ($(PLATFORM),WINDOWS) LIBS+= $(L_SSP) -Wl,--enable-auto-import LIBS+= -lwsock32 -lws2_32 -lwinmm #-L$(ENETROOT) endif ifeq ($(PRETTY_OUTPUT),1) BUILD_SETTINGS_COMPILER = \033[1;36mcompiler: \033[0;36m\"$(INVOCATION) $(OURCFLAGS)\" BUILD_SETTINGS_ASSEMBLER = \033[1;36massembler: \033[0;36m\"$(AS) $(OURASFLAGS)\" BUILD_SETTINGS_LINKER = \033[1;36mlinker: \033[0;36m\"$(OURLDFLAGS) $(LIBS) $(STATICSTDCPP) $(STDCPPLIB)\" ifeq (0,$(NOASM)) BUILD_SETTINGS = printf "$(BUILD_SETTINGS_COMPILER)\n$(BUILD_SETTINGS_ASSEMBLER)\n$(BUILD_SETTINGS_LINKER)\033[0m\n" else BUILD_SETTINGS = printf "$(BUILD_SETTINGS_COMPILER)\n$(BUILD_SETTINGS_LINKER)\033[0m\n" endif BUILD_STARTED = printf "\033[K\033[1;36mBuild started using:\033[0m\n"; $(BUILD_SETTINGS) BUILD_ECHOFLAGS = printf "\033[K\033[1;36mEnded compilation in this directory using:\n$(BUILD_SETTINGS_COMPILER)\033[0m\n" BUILD_FINISHED = printf "\033[K\033[1;36mBuild successful:\033[0m\n" COMPILE_STATUS = printf "\033[K\033[0mBuilding object \033[1m$@\033[0m...\033[0m\r" ONESTEP_STATUS = printf "\033[K\033[0mBuilding executable \033[1m$@\033[0m...\033[0m\r" COMPILE_OK = printf "\033[K\033[0;32mBuilt object \033[1;32m$@\033[0;32m \033[0m\n" ONESTEP_OK = printf "\033[K\033[0;32mBuilt executable \033[1;32m$@\033[0;32m \033[0m\n" COMPILE_FAILED = printf "\033[K\033[0;31mFailed building \033[1;31m$@\033[0;31m from\033[0m \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 ARCHIVE_STATUS = printf "\033[K\033[0mCreating library archive \033[1m$@\033[0m...\033[0m\r" ARCHIVE_OK = printf "\033[K\033[0;32mCreated library archive \033[1;32m$@\033[0;32m \033[0m\n" ARCHIVE_FAILED = printf "\033[K\033[0;31mFailed creating library archive \033[1;31m$@\033[0;31m from\033[0m \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 LINK_STATUS = printf "\033[K\033[0;0mLinking executable \033[1m$@\033[0;0m...\033[0m\r" LINK_OK = printf "\033[K\033[0;32mLinked executable \033[1;32m$@\033[0;32m \033[0m\n" LINK_FAILED = printf "\033[K\033[0;31mFailed linking executable \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1 else BUILD_STARTED = BUILD_ECHOFLAGS = BUILD_FINISHED = COMPILE_STATUS = ONESTEP_STATUS = COMPILE_OK = true ONESTEP_OK = true COMPILE_FAILED = false; exit 1 ARCHIVE_STATUS = ARCHIVE_OK = true ARCHIVE_FAILED = false; exit 1 LINK_STATUS = LINK_OK = true LINK_FAILED = false; exit 1 endif