]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - Makefile
fix unnecessary rebuilding
[xonotic/netradiant.git] / Makefile
index e10eaf1d3baed1f1109edb865c1274edb24ba25f..a9feedc38a183bc7c099d844b9b294b00fae143e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,45 @@
-#CFLAGS = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -g3 -fPIC
-CFLAGS = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -fPIC -O3
-LDFLAGS = -s
-CXXFLAGS = $(CFLAGS) -Wno-non-virtual-dtor -Wreorder -fno-exceptions -fno-rtti
-#CPPFLAGS = -DPOSIX -DXWINDOWS -D_DEBUG -D_LINUX
+include Makefile.conf
+
+CFLAGS   = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -fPIC
 CPPFLAGS = -DPOSIX -DXWINDOWS -D_LINUX
-#LDFLAGS_DLL = -fPIC -Wl,-fini,fini_stub -static-libgcc -ldl
-LDFLAGS_DLL = -fPIC -ldl
-LIBS_COMMON = -lpthread
+CXXFLAGS = $(CFLAGS) -Wno-non-virtual-dtor -Wreorder -fno-exceptions -fno-rtti
 
-EXE = x86
-A = a
-DLL = so
-NETAPI = berkley
+CFLAGS_OPT ?= -O3
+
+ifeq ($(BUILD),debug)
+       CFLAGS += -g3
+       CPPFLAGS += -D_DEBUG
+else ifeq ($(BUILD),release)
+       CFLAGS += $(CFLAGS_OPT)
+       LDFLAGS += -s
+else
+       $(error Unsupported build type)
+endif
+
+ifeq ($(OS),Linux)
+       LDFLAGS_DLL = -fPIC -ldl
+       LIBS = -lpthread
+       EXE = x86
+       A = a
+       DLL = so
+       NETAPI = berkley
+       CPPFLAGS_GLIB = `pkg-config glib-2.0 --cflags`
+       LIBS_GLIB = `pkg-config glib-2.0 --libs-only-l --libs-only-L`
+       CPPFLAGS_XML = `xml2-config --cflags`
+       LIBS_XML = `xml2-config --libs`
+       CPPFLAGS_PNG = `libpng-config --cflags`
+       LIBS_PNG = `libpng-config --libs`
+       CPPFLAGS_GTK = `pkg-config gtk+-2.0 --cflags`
+       LIBS_GTK = `pkg-config gtk+-2.0 --libs-only-l --libs-only-L`
+       CPPFLAGS_GTKGLEXT = `pkg-config gtkglext-1.0 --cflags`
+       LIBS_GTKGLEXT = `pkg-config gtkglext-1.0 --libs-only-l --libs-only-L`
+else ifeq ($(OS),Win32)
+       $(error Unsupported build OS)
+else ifeq ($(OS),Darwin)
+       $(error Unsupported build OS)
+else
+       $(error Unsupported build OS)
+endif
 
 RADIANT_ABOUTMSG = Custom build
 
@@ -23,24 +51,8 @@ MKDIR ?= mkdir -p
 CP ?= cp
 CP_R ?= $(CP) -r
 RM_R ?= $(RM) -r
-
 TEE_STDERR ?= | tee /dev/stderr
 
-CPPFLAGS_GLIB = `pkg-config glib-2.0 --cflags`
-LIBS_GLIB = `pkg-config glib-2.0 --libs-only-l --libs-only-L`
-
-CPPFLAGS_XML = `xml2-config --cflags`
-LIBS_XML = `xml2-config --libs`
-
-CPPFLAGS_PNG = `libpng-config --cflags`
-LIBS_PNG = `libpng-config --libs`
-
-CPPFLAGS_GTK = `pkg-config gtk+-2.0 --cflags`
-LIBS_GTK = `pkg-config gtk+-2.0 --libs-only-l --libs-only-L`
-
-CPPFLAGS_GTKGLEXT = `pkg-config gtkglext-1.0 --cflags`
-LIBS_GTKGLEXT = `pkg-config gtkglext-1.0 --libs-only-l --libs-only-L`
-
 # from qe3.cpp: const char* const EXECUTABLE_TYPE = 
 # from qe3.cpp: #if defined(__linux__) || defined (__FreeBSD__)
 # from qe3.cpp: "x86"
@@ -53,7 +65,6 @@ LIBS_GTKGLEXT = `pkg-config gtkglext-1.0 --libs-only-l --libs-only-L`
 # from qe3.cpp: #endif
 # from qe3.cpp: ;
 
-
 .PHONY: all
 all: \
        makeversion \
@@ -676,15 +687,28 @@ makeversion:
        ver=`cat include/version.default`; \
        major=`echo $$ver | cut -d . -f 2`; \
        minor=`echo $$ver | cut -d . -f 3 | cut -d - -f 1`; \
-       echo "// generated header, see Makefile" > include/version.h; \
-       echo "#define RADIANT_VERSION \"$$ver\"" >> include/version.h; \
-       echo "#define RADIANT_MAJOR_VERSION \"$$major\"" >> include/version.h; \
-       echo "#define RADIANT_MINOR_VERSION \"$$minor\"" >> include/version.h; \
-       echo "$$major" > include/RADIANT_MAJOR; \
-       echo "$$minor" > include/RADIANT_MINOR; \
-       echo "$$ver" > include/version; \
-       echo "// generated header, see Makefile" > include/aboutmsg.h; \
-       echo "#define RADIANT_ABOUTMSG \"$(RADIANT_ABOUTMSG)\"" >> include/aboutmsg.h; \
+       echo "// generated header, see Makefile" > include/version.h.new; \
+       echo "#define RADIANT_VERSION \"$$ver\"" >> include/version.h.new; \
+       echo "#define RADIANT_MAJOR_VERSION \"$$major\"" >> include/version.h.new; \
+       echo "#define RADIANT_MINOR_VERSION \"$$minor\"" >> include/version.h.new; \
+       echo "$$major" > include/RADIANT_MAJOR.new; \
+       echo "$$minor" > include/RADIANT_MINOR.new; \
+       echo "$$ver" > include/version.new; \
+       echo "// generated header, see Makefile" > include/aboutmsg.h.new; \
+       echo "#define RADIANT_ABOUTMSG \"$(RADIANT_ABOUTMSG)\"" >> include/aboutmsg.h.new; \
+       mv_if_diff() \
+       { \
+               if diff $$1 $$2 >/dev/null 2>&1; then \
+                       rm -f $$1; \
+               else \
+                       mv $$1 $$2; \
+               fi; \
+       }; \
+       mv_if_diff include/version.h.new include/version.h; \
+       mv_if_diff include/RADIANT_MAJOR.new include/RADIANT_MAJOR; \
+       mv_if_diff include/RADIANT_MINOR.new include/RADIANT_MINOR; \
+       mv_if_diff include/version.new include/version; \
+       mv_if_diff include/aboutmsg.h.new include/aboutmsg.h
 
 .PHONY: install-data
 install-data:
@@ -703,4 +727,4 @@ install-data:
        $(CP_R) setup/data/tools/* install/
        $(FIND) install/ -name .svn -exec $(RM_R) {} \; -prune; \
 
--include $(shell `find . -name \*.d`)
+-include $(shell find . -name \*.d)