X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=Makefile;h=7bd232ccc2ecaf5632905af08c9cf86c79b89d49;hb=ef9e16cdb9e2e971abc7a39c8757e1b32cdf848a;hp=058d993c051293e23d1813cb2f3e089310e0680e;hpb=cf7024d5af25e3b9081eca58efbb08684bc63334;p=xonotic%2Fnetradiant.git diff --git a/Makefile b/Makefile index 058d993c..7bd232cc 100644 --- a/Makefile +++ b/Makefile @@ -4,9 +4,10 @@ # user customizable stuf # you may override this in Makefile.conf or the environment BUILD ?= debug -# or: release +# or: release, or: extradebug, or: profile OS ?= $(shell uname) # or: Linux, Win32, Darwin +LDFLAGS ?= CFLAGS ?= CXXFLAGS ?= CPPFLAGS ?= @@ -15,23 +16,31 @@ RADIANT_ABOUTMSG ?= Custom build CC ?= gcc CXX ?= g++ -LDD ?= ldd # nothing on Win32 RANLIB ?= ranlib AR ?= ar +LDD ?= ldd # nothing on Win32 +WINDRES ?= # only used on Win32 + PKGCONFIG ?= pkg-config PKG_CONFIG_PATH ?= -FIND ?= find -MKDIR ?= mkdir -p -CP ?= cp -CAT ?= cat -SH ?= sh +SH ?= $(SHELL) ECHO ?= echo ECHO_NOLF ?= echo -n -DIFF ?= diff +CAT ?= cat +MKDIR ?= mkdir -p +CP ?= cp CP_R ?= $(CP) -r +RM ?= rm RM_R ?= $(RM) -r TEE_STDERR ?= | tee /dev/stderr +TR ?= tr +FIND ?= find +DIFF ?= diff + +# optional: +SVNVERSION ?= svnversion + STDOUT_TO_DEVNULL ?= >/dev/null STDERR_TO_DEVNULL ?= 2>/dev/null STDERR_TO_STDOUT ?= 2>&1 @@ -59,6 +68,8 @@ LIBS_DL ?= -ldl # nothing on Win32 CPPFLAGS_ZLIB ?= LIBS_ZLIB ?= -lz DEPEND_ON_MAKEFILE ?= yes +DEPENDENCIES_CHECK ?= quiet +# or: off, verbose # these are used on Win32 only GTKDIR ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --variable=prefix $(STDERR_TO_DEVNULL)) @@ -76,9 +87,35 @@ LIBS_COMMON = CXXFLAGS_COMMON = -Wno-non-virtual-dtor -Wreorder -fno-exceptions -fno-rtti ifeq ($(BUILD),debug) +ifeq ($(findstring $(CFLAGS),-g),) + CFLAGS_COMMON += -g + # only add -g if no -g flag is in $(CFLAGS) +endif +ifeq ($(findstring $(CFLAGS),-O),) + CFLAGS_COMMON += -O + # only add -O if no -O flag is in $(CFLAGS) +endif + CPPFLAGS_COMMON += + LDFLAGS_COMMON += +else ifeq ($(BUILD),extradebug) +ifeq ($(findstring $(CFLAGS),-g),) CFLAGS_COMMON += -g3 + # only add -g3 if no -g flag is in $(CFLAGS) +endif CPPFLAGS_COMMON += -D_DEBUG LDFLAGS_COMMON += +else ifeq ($(BUILD),profile) +ifeq ($(findstring $(CFLAGS),-g),) + CFLAGS_COMMON += -g + # only add -g if no -g flag is in $(CFLAGS) +endif +ifeq ($(findstring $(CFLAGS),-O),) + CFLAGS_COMMON += -O + # only add -O if no -O flag is in $(CFLAGS) +endif + CFLAGS_COMMON += -pg + CPPFLAGS_COMMON += + LDFLAGS_COMMON += -pg else ifeq ($(BUILD),release) ifeq ($(findstring $(CFLAGS),-O),) CFLAGS_COMMON += -O3 @@ -123,9 +160,15 @@ $(error Unsupported build OS: $(OS)) endif # VERSION! -RADIANT_VERSION = 1.5.0-div0 +RADIANT_VERSION = 1.5.0 RADIANT_MAJOR_VERSION = 5 RADIANT_MINOR_VERSION = 0 + +SVN_VERSION := $(shell $(SVNVERSION) -n $(STDERR_TO_DEVNULL) | $(TR) -cd 0-9:) +ifneq ($(SVN_VERSION),) + RADIANT_VERSION := $(RADIANT_VERSION)-svn$(SVN_VERSION) +endif + CPPFLAGS += -DRADIANT_VERSION="\"$(RADIANT_VERSION)\"" -DRADIANT_MAJOR_VERSION="\"$(RADIANT_MAJOR_VERSION)\"" -DRADIANT_MINOR_VERSION="\"$(RADIANT_MINOR_VERSION)\"" -DRADIANT_ABOUTMSG="\"$(RADIANT_ABOUTMSG)\"" .PHONY: all @@ -136,53 +179,78 @@ all: \ install-dll \ .PHONY: dependencies-check +ifeq ($(findstring $(DEPENDENCIES_CHECK),off),off) +dependencies-check: + @$(ECHO) dependencies checking disabled, good luck... +else dependencies-check: @$(ECHO) - @$(ECHO) checking that the system tools exist - $(FIND) --help $(TO_DEVNULL); [ $$? != 127 ] - $(MKDIR) --help $(TO_DEVNULL); [ $$? != 127 ] - $(CP) --help $(TO_DEVNULL); [ $$? != 127 ] - $(CAT) --help $(TO_DEVNULL); [ $$? != 127 ] - $(SH) --help $(TO_DEVNULL); [ $$? != 127 ] - $(ECHO) --help $(TO_DEVNULL); [ $$? != 127 ] - $(ECHO_NOLF) --help $(TO_DEVNULL); [ $$? != 127 ] - $(DIFF) --help $(TO_DEVNULL); [ $$? != 127 ] - $(CP_R) --help $(TO_DEVNULL); [ $$? != 127 ] - $(RM_R) --help $(TO_DEVNULL); [ $$? != 127 ] - $(ECHO) 42 $(TEE_STDERR) $(TO_DEVNULL); [ $$? != 127 ] - @$(ECHO) - @$(ECHO) checking that the build tools exist - $(CC) --help $(TO_DEVNULL); [ $$? != 127 ] - $(CXX) --help $(TO_DEVNULL); [ $$? != 127 ] - [ -n "$(LDD)" ] && $(LDD) --help $(TO_DEVNULL); [ $$? != 127 ] - $(RANLIB) --help $(TO_DEVNULL); [ $$? != 127 ] - $(AR) --help $(TO_DEVNULL); [ $$? != 127 ] + @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \ + checkbinary() \ + { \ + $(ECHO_NOLF) "Checking for $$2 ($$1)... "; \ + $$2 --help $(TO_DEVNULL); \ + if [ $$? != 127 ]; then \ + $(ECHO) "found."; \ + else \ + $(ECHO) "not found, please install it or set PATH right!"; \ + $(ECHO) "To see the failed commands, set DEPENDENCIES_CHECK=verbose"; \ + $(ECHO) "To proceed anyway, set DEPENDENCIES_CHECK=off"; \ + exit 1; \ + fi; \ + }; \ + $(ECHO) checking that the build tools exist; \ + checkbinary "bash (or another shell)" "$(SH)"; \ + checkbinary coreutils "$(ECHO)"; \ + checkbinary coreutils "$(ECHO_NOLF)"; \ + checkbinary coreutils "$(CAT)"; \ + checkbinary coreutils "$(MKDIR)"; \ + checkbinary coreutils "$(CP)"; \ + checkbinary coreutils "$(CP_R)"; \ + checkbinary coreutils "$(RM)"; \ + checkbinary coreutils "$(RM_R)"; \ + checkbinary coreutils "$(ECHO) test $(TEE_STDERR)"; \ + checkbinary coreutils "$(TR)"; \ + checkbinary findutils "$(FIND)"; \ + checkbinary diff "$(DIFF)"; \ + checkbinary gcc "$(CC)"; \ + checkbinary g++ "$(CXX)"; \ + checkbinary binutils "$(RANLIB)"; \ + checkbinary binutils "$(AR)"; \ + [ "$(OS)" = "Win32" ] && checkbinary mingw32 "$(WINDRES)"; \ + [ "$(OS)" != "Win32" ] && checkbinary libc6 "$(LDD)"; \ + $(ECHO) All required tools have been found! @$(ECHO) - @$(ECHO) checking that the dependencies exist + @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \ checkheader() \ { \ - $(ECHO_NOLF) "Checking for $$1... "; \ + $(ECHO_NOLF) "Checking for $$2 ($$1)... "; \ if \ $(CXX) conftest.cpp $(CFLAGS) $(CXXFLAGS) $(CFLAGS_COMMON) $(CXXFLAGS_COMMON) $(CPPFLAGS) $(CPPFLAGS_COMMON) $$4 -DCONFTEST_HEADER="<$$2>" -DCONFTEST_SYMBOL="$$3" $(TARGET_ARCH) $(LDFLAGS) -c -o conftest.o $(TO_DEVNULL) && \ - $(CXX) conftest.o $(LDFLAGS_COMMON) $$5 $(LIBS_COMMON) $(LIBS) -o conftest $(TO_DEVNULL); \ + $(CXX) conftest.o $(LDFLAGS) $(LDFLAGS_COMMON) $$5 $(LIBS_COMMON) $(LIBS) -o conftest $(TO_DEVNULL); \ then \ - $(RM) conftest conftest.o; \ + $(RM) conftest conftest.o conftest.d; \ $(ECHO) "found."; \ else \ - $(RM) conftest conftest.o; \ + $(RM) conftest conftest.o conftest.d; \ $(ECHO) "not found, please install it or set PKG_CONFIG_PATH right!"; \ + $(ECHO) "To see the failed commands, set DEPENDENCIES_CHECK=verbose"; \ + $(ECHO) "To proceed anyway, set DEPENDENCIES_CHECK=off"; \ exit 1; \ fi; \ }; \ - checkheader glib glib/gutils.h g_path_is_absolute "$(CPPFLAGS_GLIB)" "$(LIBS_GLIB)"; \ - checkheader libxml2 libxml/xpath.h xmlXPathInit "$(CPPFLAGS_XML)" "$(LIBS_XML)"; \ - checkheader libpng png.h png_create_struct "$(CPPFLAGS_PNG)" "$(LIBS_PNG)"; \ - checkheader libGL GL/gl.h glClear "$(CPPFLAGS_GL)" "$(LIBS_GL)"; \ - checkheader gtk2 gtk/gtkdialog.h gtk_dialog_run "$(CPPFLAGS_GTK)" "$(LIBS_GTK)"; \ - checkheader gtkglext gtk/gtkglwidget.h gtk_widget_get_gl_context "$(CPPFLAGS_GTKGLEXT)" "$(LIBS_GTKGLEXT)"; \ - [ "$(OS)" != "Win32" ] && checkheader libdl dlfcn.h dlopen "$(CPPFLAGS_DL)" "$(LIBS_DL)"; \ - checkheader zlib libz.h deflateInit "$(CPPFLAGS_ZLIB)" "$(LIBS_ZLIB)"; \ + $(ECHO) checking that the dependencies exist; \ + checkheader libglib2.0-dev glib/gutils.h g_path_is_absolute "$(CPPFLAGS_GLIB)" "$(LIBS_GLIB)"; \ + checkheader libxml2-dev libxml/xpath.h xmlXPathInit "$(CPPFLAGS_XML)" "$(LIBS_XML)"; \ + checkheader libpng12-dev png.h png_create_read_struct "$(CPPFLAGS_PNG)" "$(LIBS_PNG)"; \ + checkheader "mesa-common-dev (or another OpenGL library)" GL/gl.h glClear "$(CPPFLAGS_GL)" "$(LIBS_GL)"; \ + checkheader libgtk2.0-dev gtk/gtkdialog.h gtk_dialog_run "$(CPPFLAGS_GTK)" "$(LIBS_GTK)"; \ + checkheader libgtkglext1-dev gtk/gtkglwidget.h gtk_widget_get_gl_context "$(CPPFLAGS_GTKGLEXT)" "$(LIBS_GTKGLEXT)"; \ + [ "$(OS)" != "Win32" ] && checkheader libc6-dev dlfcn.h dlopen "$(CPPFLAGS_DL)" "$(LIBS_DL)"; \ + checkheader zlib1g-dev zlib.h zlibVersion "$(CPPFLAGS_ZLIB)" "$(LIBS_ZLIB)"; \ $(ECHO) All required libraries have been found! + @$(ECHO) +endif .PHONY: binaries binaries: \ @@ -217,6 +285,7 @@ binaries: \ clean: $(RM_R) install/ $(FIND) . \( -name \*.o -o -name \*.d -o -name \*.$(DLL) -o -name \*.$(A) -o -name \*.$(EXE) \) -exec $(RM) {} \; + $(RM) icons/*.rc %.$(EXE): file=$@; $(MKDIR) $${file%/*} @@ -232,6 +301,14 @@ clean: $(CXX) $^ $(LDFLAGS) $(LDFLAGS_COMMON) $(LDFLAGS_EXTRA) $(LDFLAGS_DLL) $(LIBS_EXTRA) $(LIBS_COMMON) $(LIBS) -shared -o $@ [ -z "$(LDD)" ] || [ -z "`$(LDD) -r $@ $(STDERR_TO_STDOUT) $(STDOUT_TO_DEVNULL) $(TEE_STDERR)`" ] || { $(RM) $@; exit 1; } +%.rc: %.ico + $(ECHO) '1 ICON "$<"' > $@ + +ifeq ($(OS),Win32) +%.o: %.rc + $(WINDRES) $< $@ +endif + %.o: %.cpp $(if $(findstring $(DEPEND_ON_MAKEFILE),yes),$(wildcard Makefile*),) $(CXX) $< $(CFLAGS) $(CXXFLAGS) $(CFLAGS_COMMON) $(CXXFLAGS_COMMON) $(CPPFLAGS) $(CPPFLAGS_COMMON) $(CPPFLAGS_EXTRA) $(TARGET_ARCH) -c -o $@ @@ -293,6 +370,7 @@ install/q3map2.$(EXE): \ libl_net.$(A) \ libmathlib.$(A) \ libpicomodel.$(A) \ + $(if $(findstring $(OS),Win32),icons/q3map2.o,) \ libmathlib.$(A): CPPFLAGS_EXTRA := -Ilibs libmathlib.$(A): \ @@ -387,6 +465,7 @@ install/q3data.$(EXE): \ tools/quake3/q3data/video.o \ libl_net.$(A) \ libmathlib.$(A) \ + $(if $(findstring $(OS),Win32),icons/q3data.o,) \ install/radiant.$(EXE): LDFLAGS_EXTRA := $(MWINDOWS) install/radiant.$(EXE): LIBS_EXTRA := $(LIBS_GL) $(LIBS_DL) $(LIBS_XML) $(LIBS_GLIB) $(LIBS_GTK) $(LIBS_GTKGLEXT) @@ -479,6 +558,7 @@ install/radiant.$(EXE): \ libmathlib.$(A) \ libprofile.$(A) \ libxmllib.$(A) \ + $(if $(findstring $(OS),Win32),icons/radiant.o,) \ libcmdlib.$(A): CPPFLAGS_EXTRA := -Ilibs libcmdlib.$(A): \ @@ -719,6 +799,7 @@ install/qdata3.$(EXE): \ tools/quake2/qdata/tables.o \ tools/quake2/qdata/video.o \ libl_net.$(A) \ + $(if $(findstring $(OS),Win32),icons/qdata3.o,) \ install/q2map.$(EXE): LIBS_EXTRA := $(LIBS_XML) install/q2map.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/common -Ilibs -Iinclude @@ -756,6 +837,7 @@ install/q2map.$(EXE): \ tools/quake2/q2map/tree.o \ tools/quake2/q2map/writebsp.o \ libl_net.$(A) \ + $(if $(findstring $(OS),Win32),icons/q2map.o,) \ install/plugins/ufoaiplug.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(LIBS_GTK) install/plugins/ufoaiplug.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) -Ilibs -Iinclude @@ -765,6 +847,13 @@ install/plugins/ufoaiplug.$(DLL): \ contrib/ufoaiplug/ufoai_level.o \ contrib/ufoaiplug/ufoai.o \ +#install/plugins/bkgrnd2d.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(LIBS_GTK) +#install/plugins/bkgrnd2d.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) -Ilibs -Iinclude +#install/plugins/bkgrnd2d.$(DLL): \ +# contrib/bkgrnd2d/bkgrnd2d.o \ +# contrib/bkgrnd2d/dialog.o \ +# contrib/bkgrnd2d/plugin.o \ + install/heretic2/h2data.$(EXE): LIBS_EXTRA := $(LIBS_XML) install/heretic2/h2data.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/qdata_heretic2/common -Itools/quake2/qdata_heretic2/qcommon -Itools/quake2/qdata_heretic2 -Itools/quake2/common -Ilibs -Iinclude install/heretic2/h2data.$(EXE): \ @@ -799,6 +888,7 @@ install/heretic2/h2data.$(EXE): \ tools/quake2/qdata_heretic2/tmix.o \ tools/quake2/qdata_heretic2/video.o \ libl_net.$(A) \ + $(if $(findstring $(OS),Win32),icons/h2data.o,) \ .PHONY: install-data install-data: binaries