]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - Makefile
fix type cast
[xonotic/netradiant.git] / Makefile
index 4dad41808a8f2ae43429420219dbc18aea9e8f4c..3323a90da34369b40826316e9d4bb0cc0e5bd1b1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -48,10 +48,11 @@ GIT                ?= git
 SVN                ?= svn
 WGET               ?= wget
 MV                 ?= mv
-UNZIP              ?= unzip
+UNZIPPER           ?= unzip
 
-STDOUT_TO_DEVNULL  ?= >/dev/null
-STDERR_TO_DEVNULL  ?= 2>/dev/null
+FD_TO_DEVNULL      ?= >/dev/null
+STDOUT_TO_DEVNULL  ?= 1$(FD_TO_DEVNULL)
+STDERR_TO_DEVNULL  ?= 2$(FD_TO_DEVNULL)
 STDERR_TO_STDOUT   ?= 2>&1
 TO_DEVNULL         ?= $(STDOUT_TO_DEVNULL) $(STDERR_TO_STDOUT)
 
@@ -67,6 +68,9 @@ LIBS_PNG           ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) li
 CPPFLAGS_GTK       ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --cflags $(STDERR_TO_DEVNULL))
 LIBS_GTK           ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --libs-only-L $(STDERR_TO_DEVNULL)) \
                       $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --libs-only-l $(STDERR_TO_DEVNULL))
+CPPFLAGS_PANGOFT2  ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) pangoft2 --cflags $(STDERR_TO_DEVNULL))
+LIBS_PANGOFT2      ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) pangoft2 --libs-only-L $(STDERR_TO_DEVNULL)) \
+                      $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) pangoft2 --libs-only-l $(STDERR_TO_DEVNULL))
 CPPFLAGS_GTKGLEXT  ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtkglext-1.0 --cflags $(STDERR_TO_DEVNULL))
 LIBS_GTKGLEXT      ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtkglext-1.0 --libs-only-L $(STDERR_TO_DEVNULL)) \
                       $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtkglext-1.0 --libs-only-l $(STDERR_TO_DEVNULL))
@@ -174,8 +178,8 @@ else
 ifeq ($(OS),Win32)
        CPPFLAGS_COMMON += -DWIN32 -D_WIN32 -D_inline=inline
        CFLAGS_COMMON += -mms-bitfields
-       LDFLAGS_DLL = --dll -Wl,--add-stdcall-alias
-       LIBS_COMMON = -lws2_32 -luser32 -lgdi32
+       LDFLAGS_DLL = -Wl,--add-stdcall-alias
+       LIBS_COMMON = -lws2_32 -luser32 -lgdi32 -lole32
        EXE ?= exe
        A = a
        DLL = dll
@@ -220,7 +224,8 @@ endif
 endif
 
 # VERSION!
-RADIANT_VERSION = 1.5.0n
+RADIANT_VERSION_NUMBER = 1.5.0
+RADIANT_VERSION = $(RADIANT_VERSION_NUMBER)n
 RADIANT_MAJOR_VERSION = 5
 RADIANT_MINOR_VERSION = 0
 Q3MAP_VERSION = 2.5.17n
@@ -250,12 +255,12 @@ dependencies-check:
 else
 dependencies-check:
        @$(ECHO)
-       @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \
+       @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; exec 3>&2; else exec 3$(FD_TO_DEVNULL); fi; \
        failed=0; \
        checkbinary() \
        { \
                $(ECHO_NOLF) "Checking for $$2 ($$1)... "; \
-               $$2 --help $(TO_DEVNULL); \
+               $$2 --help >&3 $(STDERR_TO_STDOUT); \
                if [ $$? != 127 ]; then \
                        $(ECHO) "found."; \
                else \
@@ -285,7 +290,7 @@ dependencies-check:
        checkbinary binutils "$(RANLIB)"; \
        checkbinary binutils "$(AR)"; \
        checkbinary pkg-config "$(PKGCONFIG)"; \
-       checkbinary unzip "$(UNZIP)"; \
+       checkbinary unzip "$(UNZIPPER)"; \
        checkbinary git-core "$(GIT)"; \
        checkbinary subversion "$(SVN)"; \
        checkbinary wget "$(WGET)"; \
@@ -294,17 +299,26 @@ dependencies-check:
        [ -n "$(OTOOL)" ] && checkbinary xcode "$(OTOOL)"; \
        [ "$$failed" = "0" ] && $(ECHO) All required tools have been found!
        @$(ECHO)
-       @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \
+       @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; exec 3>&2; else exec 3$(FD_TO_DEVNULL); fi; \
        failed=0; \
        checkheader() \
        { \
                $(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) $(LDFLAGS_COMMON) $$5 $(LIBS_COMMON) $(LIBS) -o conftest $(TO_DEVNULL); \
+                       $(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 >&3 $(STDERR_TO_STDOUT); \
                then \
-                       $(RM) conftest conftest.o conftest.d; \
-                       $(ECHO) "found."; \
+                       if \
+                               $(CXX) conftest.o $(LDFLAGS) $(LDFLAGS_COMMON) $$5 $(LIBS_COMMON) $(LIBS) -o conftest >&3 $(STDERR_TO_STDOUT); \
+                       then \
+                               $(RM) conftest conftest.o conftest.d; \
+                               $(ECHO) "found and links."; \
+                       else \
+                               $(RM) conftest.o conftest.d; \
+                               $(ECHO) "found but does not link, 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"; \
+                               failed=1; \
+                       fi; \
                else \
                        $(RM) conftest conftest.o conftest.d; \
                        $(ECHO) "not found, please install it or set PKG_CONFIG_PATH right!"; \
@@ -319,6 +333,7 @@ dependencies-check:
        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 libpango1.0-dev pango/pangoft2.h pango_ft2_font_map_new "$(CPPFLAGS_PANGOFT2)" "$(LIBS_PANGOFT2)"; \
        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)"; \
@@ -328,7 +343,17 @@ endif
 
 .PHONY: binaries
 binaries: \
-       $(INSTALLDIR)/heretic2/h2data.$(EXE) \
+       binaries-tools \
+       binaries-radiant \
+
+.PHONY: binaries-radiant-all
+binaries-radiant: \
+       binaries-radiant-modules \
+       binaries-radiant-plugins \
+       binaries-radiant-core \
+
+.PHONY: binaries-radiant-modules
+binaries-radiant-modules: \
        $(INSTALLDIR)/modules/archivepak.$(DLL) \
        $(INSTALLDIR)/modules/archivewad.$(DLL) \
        $(INSTALLDIR)/modules/archivezip.$(DLL) \
@@ -343,17 +368,56 @@ binaries: \
        $(INSTALLDIR)/modules/model.$(DLL) \
        $(INSTALLDIR)/modules/shaders.$(DLL) \
        $(INSTALLDIR)/modules/vfspk3.$(DLL) \
+
+.PHONY: binaries-radiant-plugins
+binaries-radiant-plugins: \
        $(INSTALLDIR)/plugins/bobtoolz.$(DLL) \
        $(INSTALLDIR)/plugins/brushexport.$(DLL) \
        $(INSTALLDIR)/plugins/prtview.$(DLL) \
        $(INSTALLDIR)/plugins/shaderplug.$(DLL) \
        $(INSTALLDIR)/plugins/sunplug.$(DLL) \
        $(INSTALLDIR)/plugins/ufoaiplug.$(DLL) \
+
+.PHONY: binaries-radiant
+binaries-radiant-core: \
+       $(INSTALLDIR)/radiant.$(EXE) \
+
+.PHONY: binaries-tools
+binaries-tools: \
+       binaries-tools-quake2 \
+       binaries-tools-quake3 \
+
+.PHONY: binaries-tools-quake2
+binaries-tools-quake2: \
+       binaries-q2map \
+       binaries-qdata3 \
+       binaries-h2data \
+
+.PHONY: binaries-q2map
+binaries-q2map: \
        $(INSTALLDIR)/q2map.$(EXE) \
+
+.PHONY: binaries-qdata3
+binaries-qdata3: \
+       $(INSTALLDIR)/qdata3.$(EXE) \
+
+.PHONY: binaries-h2data
+binaries-h2data: \
+       $(INSTALLDIR)/heretic2/h2data.$(EXE)
+
+.PHONY: binaries-tools-quake3
+binaries-tools-quake3: \
+       binaries-q3data \
+       binaries-q3map2 \
+
+.PHONY: binaries-q3data
+binaries-q3data: \
        $(INSTALLDIR)/q3data.$(EXE) \
+
+.PHONY: binaries-q3map2
+binaries-q3map2: \
        $(INSTALLDIR)/q3map2.$(EXE) \
-       $(INSTALLDIR)/qdata3.$(EXE) \
-       $(INSTALLDIR)/radiant.$(EXE) \
+
 
 .PHONY: clean
 clean:
@@ -383,10 +447,10 @@ ifeq ($(OS),Win32)
        $(WINDRES) $< $@
 endif
 
-%.o: %.cpp $(if $(findstring $(DEPEND_ON_MAKEFILE),yes),$(wildcard Makefile*),)
+%.o: %.cpp $(if $(findstring $(DEPEND_ON_MAKEFILE),yes),$(wildcard Makefile*),) | dependencies-check
        $(CXX) $< $(CFLAGS) $(CXXFLAGS) $(CFLAGS_COMMON) $(CXXFLAGS_COMMON) $(CPPFLAGS_EXTRA) $(CPPFLAGS_COMMON) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@
 
-%.o: %.c $(if $(findstring $(DEPEND_ON_MAKEFILE),yes),$(wildcard Makefile*),)
+%.o: %.c $(if $(findstring $(DEPEND_ON_MAKEFILE),yes),$(wildcard Makefile*),) | dependencies-check
        $(CC) $< $(CFLAGS) $(CFLAGS_COMMON) $(CPPFLAGS_EXTRA) $(CPPFLAGS_COMMON) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@
 
 
@@ -410,6 +474,7 @@ $(INSTALLDIR)/q3map2.$(EXE): \
        tools/quake3/q3map2/bspfile_rbsp.o \
        tools/quake3/q3map2/bsp.o \
        tools/quake3/q3map2/convert_ase.o \
+       tools/quake3/q3map2/convert_obj.o \
        tools/quake3/q3map2/convert_map.o \
        tools/quake3/q3map2/decals.o \
        tools/quake3/q3map2/facebsp.o \
@@ -441,6 +506,7 @@ $(INSTALLDIR)/q3map2.$(EXE): \
        tools/quake3/q3map2/vis.o \
        tools/quake3/q3map2/writebsp.o \
        libddslib.$(A) \
+       libfilematch.$(A) \
        libjpeg6.$(A) \
        libl_net.$(A) \
        libmathlib.$(A) \
@@ -538,13 +604,14 @@ $(INSTALLDIR)/q3data.$(EXE): \
        tools/quake3/q3data/q3data.o \
        tools/quake3/q3data/stripper.o \
        tools/quake3/q3data/video.o \
+       libfilematch.$(A) \
        libl_net.$(A) \
        libmathlib.$(A) \
        $(if $(findstring $(OS),Win32),icons/q3data.o,) \
 
 $(INSTALLDIR)/radiant.$(EXE): LDFLAGS_EXTRA := $(MWINDOWS)
-$(INSTALLDIR)/radiant.$(EXE): LIBS_EXTRA := $(LIBS_GL) $(LIBS_DL) $(LIBS_XML) $(LIBS_GLIB) $(LIBS_GTK) $(LIBS_GTKGLEXT) $(LIBS_ZLIB)
-$(INSTALLDIR)/radiant.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_GL) $(CPPFLAGS_DL) $(CPPFLAGS_XML) $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_GTKGLEXT) -Ilibs -Iinclude
+$(INSTALLDIR)/radiant.$(EXE): LIBS_EXTRA := $(LIBS_GL) $(LIBS_DL) $(LIBS_XML) $(LIBS_GLIB) $(LIBS_GTK) $(LIBS_GTKGLEXT) $(LIBS_ZLIB) $(LIBS_PANGOFT2)
+$(INSTALLDIR)/radiant.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_GL) $(CPPFLAGS_DL) $(CPPFLAGS_XML) $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_GTKGLEXT) $(CPPFLAGS_PANGOFT2) -Ilibs -Iinclude
 $(INSTALLDIR)/radiant.$(EXE): \
        radiant/autosave.o \
        radiant/brushmanip.o \
@@ -635,6 +702,10 @@ $(INSTALLDIR)/radiant.$(EXE): \
        libxmllib.$(A) \
        $(if $(findstring $(OS),Win32),icons/radiant.o,) \
 
+libfilematch.$(A): CPPFLAGS_EXTRA := -Ilibs
+libfilematch.$(A): \
+       libs/filematch.o \
+
 libcmdlib.$(A): CPPFLAGS_EXTRA := -Ilibs
 libcmdlib.$(A): \
        libs/cmdlib/cmdlib.o \
@@ -644,7 +715,7 @@ libprofile.$(A): \
        libs/profile/file.o \
        libs/profile/profile.o \
 
-libgtkutil.$(A): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_GTKGLEXT) -Ilibs -Iinclude
+libgtkutil.$(A): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_GTKGLEXT) $(CPPFLAGS_PANGOFT2) -Ilibs -Iinclude
 libgtkutil.$(A): \
        libs/gtkutil/accelerator.o \
        libs/gtkutil/button.o \
@@ -791,6 +862,7 @@ $(INSTALLDIR)/modules/vfspk3.$(DLL): \
        plugins/vfspk3/archive.o \
        plugins/vfspk3/vfs.o \
        plugins/vfspk3/vfspk3.o \
+       libfilematch.$(A) \
 
 $(INSTALLDIR)/plugins/bobtoolz.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(LIBS_GTK)
 $(INSTALLDIR)/plugins/bobtoolz.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) -Ilibs -Iinclude
@@ -970,7 +1042,7 @@ install-data: binaries
        $(MKDIR) $(INSTALLDIR)/games
        $(FIND) $(INSTALLDIR_BASE)/ -name .svn -exec $(RM_R) {} \; -prune
        [ "$(OS)" != "Darwin" ] || $(CP_R) setup/data/osx/NetRadiant.app/* $(INSTALLDIR_BASE)/NetRadiant.app/
-       DOWNLOAD_GAMEPACKS="$(DOWNLOAD_GAMEPACKS)" GIT="$(GIT)" SVN="$(SVN)" WGET="$(WGET)" RM_R="$(RM_R)" MV="$(MV)" UNZIP="$(UNZIP)" ECHO="$(ECHO)" SH="$(SH)" CP="$(CP)" CP_R="$(CP_R)" $(SH) install-gamepacks.sh "$(INSTALLDIR)"
+       DOWNLOAD_GAMEPACKS="$(DOWNLOAD_GAMEPACKS)" GIT="$(GIT)" SVN="$(SVN)" WGET="$(WGET)" RM_R="$(RM_R)" MV="$(MV)" UNZIPPER="$(UNZIPPER)" ECHO="$(ECHO)" SH="$(SH)" CP="$(CP)" CP_R="$(CP_R)" $(SH) install-gamepacks.sh "$(INSTALLDIR)"
        $(ECHO) $(RADIANT_MINOR_VERSION) > $(INSTALLDIR)/RADIANT_MINOR
        $(ECHO) $(RADIANT_MAJOR_VERSION) > $(INSTALLDIR)/RADIANT_MAJOR
        $(CP_R) setup/data/tools/* $(INSTALLDIR)/
@@ -992,4 +1064,25 @@ install-dll: binaries
 endif
 endif
 
+# release building... NOT for general users
+# these may use tools not in the list that is checked by the build system
+release-src: BUILD_DATE := $(shell date +%Y%m%d)
+release-src: INSTALLDIR := netradiant-$(RADIANT_VERSION_NUMBER)-$(BUILD_DATE)
+release-src:
+       $(GIT) archive --format=tar --prefix=$(INSTALLDIR)/ HEAD | bzip2 > ../$(INSTALLDIR).tar.bz2
+
+release-win32: BUILD_DATE := $(shell date +%Y%m%d)
+release-win32: INSTALLDIR := netradiant-$(RADIANT_VERSION_NUMBER)-$(BUILD_DATE)
+release-win32:
+       $(MAKE) all INSTALLDIR=$(INSTALLDIR) MAKEFILE_CONF=cross-Makefile.conf RADIANT_ABOUTMSG="Official release build" BUILD=release
+       7za a -sfx../../../../../../../../../../$(HOME)/7z.sfx ../$(INSTALLDIR)-win32-7z.exe $(INSTALLDIR)/
+       chmod 644 ../$(INSTALLDIR)-win32-7z.exe # 7zip is evil
+       $(MAKE) clean INSTALLDIR=$(INSTALLDIR) MAKEFILE_CONF=cross-Makefile.conf RADIANT_ABOUTMSG="Official release build" BUILD=release
+
+release-all:
+       $(GIT) clean -xdf
+       $(MAKE) release-src
+       $(MAKE) release-win32
+
+# load dependency files
 -include $(shell find . -name \*.d)