Makefile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # Makefile for LU Decomposition
  2. #
  3. #
  4. # DEBUG can be set to YES to include debugging info, or NO otherwise
  5. DEBUG := YES
  6. # PROFILE can be set to YES to include profiling info, or NO otherwise
  7. PROFILE := NO
  8. # ------------ name of the executable ----------------------------------------
  9. EXECUTABLE := lud_base
  10. # ------------ list of all source files --------------------------------------
  11. SOURCES := lud.c lud_base.c ../common/common.c
  12. # ------------ compiler ------------------------------------------------------
  13. CC := gcc
  14. CXX := g++
  15. # ------------ compiler flags ------------------------------------------------
  16. DEBUG_CFLAGS := -Wall -O0 -g
  17. RELEASE_CFLAGS := -Wall -O3
  18. COMMON_CFLAGS :=
  19. # ------------ compiler defs ------------------------------------------------
  20. DEBUG_CDEFS := -D_DEBUG_RESULT
  21. RELEASE_CDEFS :=
  22. COMMON_CDEFS :=
  23. # ------------ linker flags --------------------------------------------------
  24. DEBUG_LDFLAGS := -g
  25. RELEASE_LDFLAGS :=
  26. COMMON_LDFLAGS :=
  27. ifeq (YES, ${DEBUG})
  28. CFLAGS := ${DEBUG_CFLAGS} ${DEBUG_CDEFS}
  29. CXXFLAGS := ${DEBUG_CXXFLAGS} ${DEBUG_CDEFS}
  30. LDFLAGS := ${DEBUG_LDFLAGS}
  31. else
  32. CFLAGS := ${RELEASE_CFLAGS} ${RELEASE_CDEFS}
  33. CXXFLAGS := ${RELEASE_CXXFLAGS} ${RELEASE_CDEFS}
  34. LDFLAGS := ${RELEASE_LDFLAGS}
  35. endif
  36. CFLAGS := ${CFLAGS} ${COMMON_CFLAGS}
  37. CXXFLAGS := ${CXXFLAGS} ${COMMON_CFLAGS}
  38. LDFLAGS := ${LDFLAGS} ${COMMON_LDFLAGS}
  39. ifeq (YES, ${PROFILE})
  40. CFLAGS := ${CFLAGS} -pg -O3
  41. CXXFLAGS := ${CXXFLAGS} -pg -O3
  42. LDFLAGS := ${LDFLAGS} -pg
  43. endif
  44. # ------------ additional system include directories -------------------------
  45. GLOBAL_INC_DIR =
  46. # ------------ private include directories -----------------------------------
  47. LOCAL_INC_DIR = ../common
  48. # ------------ system libraries (e.g. -lm ) ---------------------------------
  49. SYS_LIBS =
  50. # ------------ additional system library directories -------------------------
  51. GLOBAL_LIB_DIR =
  52. # ------------ additional system libraries -----------------------------------
  53. GLOBAL_LIBS =
  54. # ------------ private library directories -----------------------------------
  55. LOCAL_LIB_DIR =
  56. # ------------ private libraries (e.g. libxyz.a ) ---------------------------
  57. LOCAL_LIBS =
  58. C_SOURCES = $(filter %.c, $(SOURCES))
  59. CPP_SOURCES = $(filter-out %.c, $(SOURCES))
  60. ALL_INC_DIR = $(addprefix -I, $(LOCAL_INC_DIR) $(GLOBAL_INC_DIR))
  61. ALL_LIB_DIR = $(addprefix -L, $(LOCAL_LIB_DIR) $(GLOBAL_LIB_DIR))
  62. GLOBAL_LIBSS = $(addprefix $(GLOBAL_LIB_DIR)/, $(GLOBAL_LIBS))
  63. LOCAL_LIBSS = $(addprefix $(LOCAL_LIB_DIR)/, $(LOCAL_LIBS))
  64. ALL_CFLAGS = $(CFLAGS) $(ALL_INC_DIR)
  65. ALL_LFLAGS = $(LDFLAGS) $(ALL_LIB_DIR)
  66. BASENAMES = $(basename $(SOURCES))
  67. # ------------ generate the names of the object files ------------------------
  68. OBJECTS = $(addsuffix .o,$(BASENAMES))
  69. # ------------ make the executable (the default goal) ------------------------
  70. $(EXECUTABLE): $(OBJECTS)
  71. ifeq ($(strip $(CPP_SOURCES)),)
  72. $(CC) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
  73. else
  74. $(CXX) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
  75. endif
  76. # ------------ make the objects ----------------------------------------------
  77. %.o: %.c
  78. $(CC) -c $(ALL_CFLAGS) $< -o $@
  79. %.o: %.cc
  80. $(CXX) -c $(ALL_CFLAGS) $< -o $@
  81. %.o: %.cpp
  82. $(CXX) -c $(ALL_CFLAGS) $< -o $@
  83. %.o: %.C
  84. $(CXX) -c $(ALL_CFLAGS) $< -o $@
  85. clean:
  86. -rm --force $(EXECUTABLE) $(OBJECTS) *~
  87. .PHONY: clean
  88. # ==============================================================================
  89. # vim: set tabstop=2: set shiftwidth=2: