Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 2.22 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Dynamic Makefile variable assignment
  2. include Makefile.inc
  3.  
  4. DIRS    = applib
  5. EXE_APPFS       = appfs
  6. EXE_APPMOUNT    = appmount
  7. EXE_APPINSPECT  = appinspect
  8. EXE_APPCREATE   = appcreate
  9. BUILD_APPFS     =
  10. BUILD_APPMOUNT  = -DAPPMOUNT
  11. OBJS_APPFS      = main.o appfs.o
  12. OBJS_APPMOUNT   = main.o appmount.o
  13. OBJS_APPINSPECT = appinspect.o
  14. OBJS_APPCREATE  = appcreate.o
  15. OBJLIBS = libapp.a
  16. LIBS    = -L. -lpthread -lstdc++ -ldl -lrt -largtable2 -lm ./libapp.a     /usr/lib64/libfuse.a
  17.  
  18. # Optimization settings.
  19. debug: CPPFLAGS=$(CPPFLAGS_DEBUG)
  20. debug: CFLAGS=$(CFLAGS_DEBUG)
  21. debug:
  22.     @true
  23.  
  24. optimal: CPPFLAGS=$(CPPFLAGS_OPTIMAL)
  25. optimal: CFLAGS=$(CFLAGS_OPTIMAL)
  26. optimal:
  27.     @true
  28.  
  29. appfs: appfs.o $(OBJLIBS)
  30.     @echo "stuff is done here"
  31.  
  32. appmount: appmount.o $(OBJLIBS)
  33.     @echo "stuff is done here"
  34.  
  35. appmount_optimal: optimal appmount
  36.        
  37. debug: CPPFLAGS=$(CPPFLAGS_DEBUG)
  38. debug: CFLAGS=$(CFLAGS_DEBUG)
  39.  
  40. optimal: CPPFLAGS=$(CPPFLAGS_OPTIMAL)
  41. optimal: CFLAGS=$(CFLAGS_OPTIMAL)
  42.        
  43. debug: CPPFLAGS=$(CPPFLAGS_DEBUG)
  44. debug: CFLAGS=$(CFLAGS_DEBUG)
  45. debug: appfs appmount
  46.  
  47. optimal: CPPFLAGS=$(CPPFLAGS_OPTIMAL)
  48. optimal: CFLAGS=$(CFLAGS_OPTIMAL)
  49. optimal: appfs appmount
  50.        
  51. CPPFLAGS_debug = <debug CPPFLAGS>
  52. CFLAGS_debug = <debug CFLAGS>
  53.  
  54. CPPFLAGS_optimal = <optimal CPPFLAGS>
  55. CFLAGS_optimal = <optimal CFLAGS>
  56.  
  57. STYLE := $(firstword $(filter debug optimal,$(MAKECMDGOALS)))
  58. $(if $(STYLE),,$(error No style "debug" or "optimal" set))
  59.  
  60. CPPFLAGS = $(CPPFLAGS_$(STYLE))
  61. CFLAGS = $(CFLAGS_$(STYLE))
  62.  
  63. debug optimal:
  64. .PHONY: debug optimal
  65.        
  66. STYLE := $(firstword $(filter optimal,$(MAKECMDGOALS)) debug)
  67.        
  68. # Optimization settings.
  69. debug:
  70.     +$(MAKE) CPPFLAGS="$(CPPFLAGS_DEBUG)" CFLAGS="$(CFLAGS_DEBUG)"
  71.  
  72. optimal:
  73.     +$(MAKE) CPPFLAGS="$(CPPFLAGS_OPTIMAL)" CFLAGS="$(CFLAGS_OPTIMAL)"
  74.        
  75. # Optimization settings.
  76. debug:
  77.     +$(MAKE) CPPFLAGS="$(CPPFLAGS_DEBUG)" CFLAGS="$(CFLAGS_DEBUG)" debug_build
  78.  
  79. optimal:
  80.     +$(MAKE) CPPFLAGS="$(CPPFLAGS_OPTIMAL)" CFLAGS="$(CFLAGS_OPTIMAL)" optimal_build
  81.        
  82. BUILD_TARGET = all
  83.  
  84. # Optimization settings.
  85. debug:
  86.     +$(MAKE) CPPFLAGS="$(CPPFLAGS_DEBUG)" CFLAGS="$(CFLAGS_DEBUG)" $(BUILD_TARGET)
  87.  
  88. optimal:
  89.     +$(MAKE) CPPFLAGS="$(CPPFLAGS_OPTIMAL)" CFLAGS="$(CFLAGS_OPTIMAL)" $(BUILD_TARGET)
  90.        
  91. make optimal BUILD_TARGET="appmount totherprog"