Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. # BUILD SETTINGS ###############################################################
  2.  
  3. ifneq ($(filter Msys Cygwin, $(shell uname -o)), )
  4.     PLATFORM := WIN32
  5.     TYRIAN_DIR = C:\\TYRIAN
  6. else
  7.     PLATFORM := UNIX
  8.     TYRIAN_DIR = $(gamesdir)/tyrian
  9. endif
  10.  
  11. WITH_NETWORK := true
  12.  
  13. ################################################################################
  14.  
  15. # see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
  16.  
  17. SHELL = /bin/sh
  18.  
  19. CC ?= gcc
  20. INSTALL ?= install
  21. PKG_CONFIG ?= pkg-config
  22.  
  23. VCS_IDREV ?= (git describe --tags || git rev-parse --short HEAD)
  24.  
  25. INSTALL_PROGRAM ?= $(INSTALL)
  26. INSTALL_DATA ?= $(INSTALL) -m 644
  27.  
  28. prefix ?= /usr/local
  29. exec_prefix ?= $(prefix)
  30.  
  31. bindir ?= $(exec_prefix)/bin
  32. datarootdir ?= $(prefix)/share
  33. datadir ?= $(datarootdir)
  34. docdir ?= $(datarootdir)/doc/opentyrian
  35. mandir ?= $(datarootdir)/man
  36. man6dir ?= $(mandir)/man6
  37. man6ext ?= .6
  38.  
  39. # see http://www.pathname.com/fhs/pub/fhs-2.3.html
  40.  
  41. gamesdir ?= $(datadir)/games
  42.  
  43. ###
  44.  
  45. TARGET := opentyrian
  46.  
  47. SRCS := $(wildcard src/*.c)
  48. OBJS := $(SRCS:src/%.c=obj/%.o)
  49. DEPS := $(SRCS:src/%.c=obj/%.d)
  50.  
  51. ###
  52.  
  53. ifeq ($(WITH_NETWORK), true)
  54.     EXTRA_CPPFLAGS += -DWITH_NETWORK
  55. endif
  56.  
  57. OPENTYRIAN_VERSION := $(shell $(VCS_IDREV) 2>/dev/null && \
  58.                               touch src/opentyrian_version.h)
  59. ifneq ($(OPENTYRIAN_VERSION), )
  60.     EXTRA_CPPFLAGS += -DOPENTYRIAN_VERSION='"$(OPENTYRIAN_VERSION)"'
  61. endif
  62.  
  63. CPPFLAGS := -DNDEBUG
  64. CFLAGS := -pedantic
  65. CFLAGS += -MMD
  66. CFLAGS += -Wall \
  67.           -Wextra \
  68.           -Wno-missing-field-initializers
  69. CFLAGS += -O2
  70. CFLAGS += -DuSDL_Delay=SDL_Delay
  71.  
  72. LDFLAGS :=
  73. LDLIBS :=
  74.  
  75. ifeq ($(WITH_NETWORK), true)
  76.     SDL_CPPFLAGS := $(shell $(PKG_CONFIG) sdl SDL_net --cflags)
  77.     SDL_LDFLAGS := $(shell $(PKG_CONFIG) sdl SDL_net --libs-only-L --libs-only-other)
  78.     SDL_LDLIBS := $(shell $(PKG_CONFIG) sdl SDL_net --libs-only-l)
  79. else
  80.     SDL_CPPFLAGS := $(shell $(PKG_CONFIG) sdl --cflags)
  81.     SDL_LDFLAGS := $(shell $(PKG_CONFIG) sdl --libs-only-L --libs-only-other)
  82.     SDL_LDLIBS := $(shell $(PKG_CONFIG) sdl --libs-only-l)
  83. endif
  84.  
  85. ALL_CPPFLAGS = -DTARGET_$(PLATFORM) \
  86.                -DTYRIAN_DIR='"$(TYRIAN_DIR)"' \
  87.                $(EXTRA_CPPFLAGS) \
  88.                $(SDL_CPPFLAGS) \
  89.                $(CPPFLAGS)
  90. ALL_CFLAGS = -std=iso9899:1999 \
  91.              $(CFLAGS)
  92. ALL_LDFLAGS = $(SDL_LDFLAGS) \
  93.               $(LDFLAGS)
  94. ALL_LDLIBS = -lm \
  95.              $(SDL_LDLIBS) \
  96.              $(LDLIBS)
  97.  
  98. ###
  99.  
  100. .PHONY : all
  101. all : $(TARGET)
  102.  
  103. .PHONY : debug
  104. debug : CPPFLAGS += -UNDEBUG
  105. debug : CFLAGS += -Werror
  106. debug : CFLAGS += -O0
  107. debug : CFLAGS += -g3
  108. debug : all
  109.  
  110. .PHONY : installdirs
  111. installdirs :
  112.         mkdir -p $(DESTDIR)$(bindir)
  113.         mkdir -p $(DESTDIR)$(docdir)
  114.         mkdir -p $(DESTDIR)$(man6dir)
  115.  
  116. .PHONY : install
  117. install : $(TARGET) installdirs
  118.         $(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(bindir)/
  119.         $(INSTALL_DATA) CREDITS NEWS README $(DESTDIR)$(docdir)/
  120.         $(INSTALL_DATA) linux/man/opentyrian.6 $(DESTDIR)$(man6dir)/opentyrian$(man6ext)
  121.  
  122. .PHONY : uninstall
  123. uninstall :
  124.         rm -f $(DESTDIR)$(bindir)/$(TARGET)
  125.         rm -f $(DESTDIR)$(docdir)/{CREDITS,NEWS,README}
  126.         rm -f $(DESTDIR)$(man6dir)/opentyrian$(man6ext)
  127.  
  128. .PHONY : clean
  129. clean :
  130.         rm -f $(OBJS)
  131.         rm -f $(DEPS)
  132.         rm -f $(TARGET)
  133.  
  134. $(TARGET) : $(OBJS)
  135.         $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -o $@ $^ $(ALL_LDLIBS)
  136.  
  137. -include $(DEPS)
  138.  
  139. obj/%.o : src/%.c
  140.         @mkdir -p "$(dir $@)"
  141.         $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
  142.