Makefile 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. ################################################
  2. #
  3. # Vision
  4. #
  5. # This makefile is free software; you can redistribute it and/or
  6. # modify it under the terms of the enclosed JBQ code license.
  7. # See data/LICENSE.Makefile
  8. #
  9. # This makefile is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # License for more details.
  13. #
  14. #
  15. ################################################
  16. # the file name, ...
  17. BINARY := Vision
  18. VERSION := 0.9.7-H-20140108
  19. BUILDDATE := $(shell date +%b_%d_%Y)
  20. BUILD_TYPE := Release
  21. # system libs
  22. REG_LIBS := -lbe -ltranslation -ltextencoding -ltracker -lnetwork -lroot
  23. # lua
  24. LUA_LIBS := -L./src/lua/lib -llua -llualib
  25. ################################################
  26. # output directories
  27. OBJDIR := obj
  28. DEPDIR := dep
  29. SRCDIR := src
  30. DATADIR := data
  31. TEMPDEPFILE := /tmp/vision_temp_deps
  32. LIBLUA_PATH := ./src/lua/lib/liblua.a
  33. # compiler, linker, ...
  34. CC := gcc -c -pipe
  35. CFLAGS := -D_ZETA_TS_FIND_DIR_ -DVERSION_STRING=\"$(VERSION)\" -D_ZETA_USING_DEPRECATED_API_
  36. # These can be set from the shell to change the build type
  37. ifeq ($(CHECK_MEM),true)
  38. CFLAGS += -fcheck-memory-usage -D_NO_INLINE_ASM=1
  39. BUILD_DEBUG=true
  40. endif
  41. ifeq ($(BUILD_DEBUG),true)
  42. CFLAGS += -g -O0
  43. ifeq ($(shell uname -r), 5.1)
  44. CFLAGS += -fno-debug-opt
  45. endif
  46. BUILD_TYPE = Debug
  47. else
  48. CFLAGS += -O1
  49. endif
  50. ifeq ($(CHECK_MEM),true)
  51. BUILD_TYPE = MemCheck
  52. endif
  53. CFLAGS += -DBEOS_BUILD
  54. CFLAGS += -DBUILD_DATE=\"$(BUILDDATE)\"
  55. CFLAGS += -fPIC
  56. CFLAGS += -ffast-math
  57. CFLAGS += -Wall -W -Wno-multichar -Wpointer-arith
  58. CFLAGS += -Wwrite-strings -Woverloaded-virtual
  59. CFLAGS += -Wconversion -Wpointer-arith
  60. CFLAGS += -Wmissing-declarations
  61. CFLAGS += -Wcast-qual -Wshadow
  62. # be able to add flags from the env at will without chaging the makefile
  63. CFLAGS += $(VISION_ADDL_BUILD_FLAGS)
  64. LD := gcc
  65. LDFLAGS := $(REG_LIBS) -nodefaultlibs
  66. CFLAGS += -DUSE_INFOPOPPER=1
  67. DEP := gcc -MM -DBEOS_BUILD
  68. # create the dep dir.
  69. MAKEDEP := $(shell mkdir -p $(DEPDIR))
  70. ZIP := zip -r -9 -y
  71. ################################################
  72. # the engine
  73. MAKEFILE := Makefile
  74. FULLNAME := $(subst \ ,_,$(BINARY))-$(VERSION)
  75. DATA := $(shell find $(DATADIR) -type f)
  76. EXTRADATA:= $(wildcard data.zip)
  77. BASESOURCES := $(shell cd $(SRCDIR) && ls -1 *.cpp)
  78. SOURCES := $(addprefix $(SRCDIR)/,$(BASESOURCES))
  79. OBJECTS := $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(BASESOURCES))))
  80. DEPENDS := $(addprefix $(DEPDIR)/,$(addsuffix .d,$(basename $(BASESOURCES))))
  81. BASEHEADERS := $(shell cd $(SRCDIR) && ls -1 *.h)
  82. HEADERS := $(addprefix $(SRCDIR)/,$(BASEHEADERS))
  83. .PHONY : default release clean binarchive sourcearchive all
  84. .DELETE_ON_ERROR : $(BINARY)
  85. default : build
  86. build : $(BINARY)
  87. # rule to create the object file directory if needed
  88. $(OBJDIR)::
  89. @[ -d $(OBJDIR) ] || mkdir $(OBJDIR) > /dev/null 2>&1
  90. clean :
  91. @echo cleaning
  92. @rm -rf $(BINARY) $(OBJDIR) $(DEPDIR) $(filter-out data.zip,$(wildcard *.zip)) *.zip~
  93. all : sourcearchive binarchive
  94. sourcearchive : $(FULLNAME)-src.zip
  95. binarchive : $(FULLNAME).zip
  96. cvsup:
  97. @echo CVS up -d
  98. @cvs up -d
  99. $(BINARY) : $(OBJDIR) $(OBJECTS)
  100. @rm -f $(TEMPDEPFILE)
  101. @echo linking $@
  102. @$(LD) -o $@ $(OBJECTS) $(LDFLAGS)
  103. @echo merging resources
  104. @xres -o $@ $(SRCDIR)/Vision.rsrc
  105. @mimeset -f $@
  106. $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
  107. @echo compiling [$(BUILD_TYPE) Build] : $@
  108. @$(CC) $< $(CFLAGS) -o $@
  109. $(DEPDIR)/%.d : $(SRCDIR)/%.cpp
  110. @/bin/echo generating dependencies for $<
  111. @/bin/echo $@ $(OBJDIR)/$(shell $(DEP) $<) > $(TEMPDEPFILE)
  112. @/bin/echo $(OBJDIR)/$(basename $(@F))".o : $(MAKEFILE)" | /bin/cat - $(TEMPDEPFILE) > $@
  113. $(FULLNAME).zip : $(BINARY) $(DATA) $(EXTRADATA) $(MAKEFILE)
  114. @rm -rf $@~
  115. @mkdir -p $@~/$(FULLNAME)/
  116. @copyattr -d -r $(BINARY) $(DATADIR)/* $@~/$(FULLNAME)/
  117. ifneq "$(EXTRADATA)" ""
  118. @unzip $(EXTRADATA) -d $@~/$(FULLNAME)/
  119. endif
  120. @find $@~ -type f | xargs mimeset
  121. @rm -rf $@~/$(FULLNAME)/CVS $@~/$(FULLNAME)/protocol/CVS $@~/$(FULLNAME)/help/CVS $@~/$(FULLNAME)/scripts/CVS
  122. @rm -rf $@~/$(FULLNAME)/CVS $@~/$(FULLNAME)/help/content/CVS $@~/$(FULLNAME)/help/images/CVS
  123. @cd $@~ && $(ZIP) $@ $(FULLNAME)
  124. @mv -f $@~/$@ .
  125. @rm -rf $@~
  126. $(FULLNAME)-src.zip : $(SOURCES) $(HEADERS) $(DATA) $(EXTRADATA) $(MAKEFILE)
  127. @rm -rf $@~
  128. @mkdir -p $@~/$(FULLNAME)-src/
  129. @copyattr -d -r $(SRCDIR) $(DATADIR) $(MAKEFILE) $@~/$(FULLNAME)-src/
  130. ifneq "$(EXTRADATA)" ""
  131. @copyattr -d -r $(EXTRADATA) $@~/$(FULLNAME)-src/
  132. endif
  133. @find $@~ -type f | xargs mimeset
  134. @rm -rf $@~/$(FULLNAME)-src/src/CVS $@~/$(FULLNAME)-src/data/CVS
  135. @rm -rf $@~/$(FULLNAME)-src/CVS $@~/$(FULLNAME)-src/data/protocol/CVS $@~/$(FULLNAME)-src/data/help/CVS $@~/$(FULLNAME)-src/data/scripts/CVS
  136. @rm -rf $@~/$(FULLNAME)-src/CVS $@~/$(FULLNAME)-src/data/help/content/CVS $@~/$(FULLNAME)-src/data/help/images/CVS
  137. @cd $@~ && $(ZIP) $@ $(FULLNAME)-src
  138. @mv -f $@~/$@ .
  139. @rm -rf $@~
  140. ifneq ($(MAKECMDGOALS),clean)
  141. ifneq ($(MAKECMDGOALS),depend)
  142. ifneq ($(MAKECMDGOALS),sourcearchive)
  143. -include $(DEPENDS)
  144. endif
  145. endif
  146. endif