]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - Makefile
fix make -j
[xonotic/netradiant.git] / Makefile
index 9c259aadfd8fb471ec4c92dbf6a3f4161ad61a73..630968430d5ccded38aacacd477c1e4278dce1be 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,46 @@
-#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
+include Makefile.conf
+
+CFLAGS   = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -fPIC
+CPPFLAGS = 
 CXXFLAGS = $(CFLAGS) -Wno-non-virtual-dtor -Wreorder -fno-exceptions -fno-rtti
-#CPPFLAGS = -DPOSIX -DXWINDOWS -D_DEBUG -D_LINUX
-CPPFLAGS = -DPOSIX -DXWINDOWS -D_LINUX
-#LDFLAGS_DLL = -fPIC -Wl,-fini,fini_stub -static-libgcc -ldl
-LDFLAGS_DLL = -fPIC -ldl
-LIBS = -lpthread
 
-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)
+       CPPFLAGS += -DPOSIX -DXWINDOWS -D_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 +52,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,10 +66,8 @@ LIBS_GTKGLEXT = `pkg-config gtkglext-1.0 --libs-only-l --libs-only-L`
 # from qe3.cpp: #endif
 # from qe3.cpp: ;
 
-
 .PHONY: all
 all: \
-       makeversion \
        install/heretic2/h2data.$(EXE) \
        install/modules/archivepak.$(DLL) \
        install/modules/archivewad.$(DLL) \
@@ -104,10 +115,10 @@ clean:
        $(CXX) -shared -o $@ $^ $(LDFLAGS) $(LDFLAGS_DLL) $(LIBS) $(LIBS_EXTRA)
        [ -z "$(LDD)" ] || [ -z "`$(LDD) -r $@ 2>&1 >/dev/null $(TEE_STDERR)`" ] || { $(RM) $@; exit 1; }
 
-%.o: %.cpp
+%.o: %.cpp makeversion
        $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(CPPFLAGS_EXTRA)
 
-%.o: %.c
+%.o: %.c makeversion
        $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) $(CPPFLAGS_EXTRA)
 
 install/q3map2.$(EXE): LIBS_EXTRA := $(LIBS_XML) $(LIBS_GLIB) $(LIBS_PNG)
@@ -676,21 +687,38 @@ 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:
+install-data: makeversion
        $(MKDIR) install/games
+       $(FIND) install/ -name .svn -exec $(RM_R) {} \; -prune; \
        set -ex; \
        for GAME in games/*; do \
+               if [ -d "$$GAME/tools" ]; then \
+                       GAME=$$GAME/tools; \
+               fi; \
                for GAMEFILE in $$GAME/games/*.game; do \
                        $(CP) "$$GAMEFILE" install/games/; \
                done; \