Makefile 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. .PHONY: all
  2. all: lib extras examples
  3. GG=g++
  4. #GG=/usr/bin/g++ 17s
  5. #GG=/usr/bin/clang++ 14s
  6. #GG=g++-mp-4.3 15.5s
  7. #GG=g++-mp-4.7 19.9s
  8. # Shared flags etc.
  9. include Makefile.conf
  10. $(info Hello, $(IGL_USERNAME)!)
  11. # optimized default settings
  12. all: LFLAGS +=
  13. OPTFLAGS=-O3 -DNDEBUG
  14. #debug: OPTFLAGS= -g -Wall -Werror
  15. debug: OPTFLAGS= -g -Wall -Weffc++
  16. CFLAGS += $(OPTFLAGS)
  17. EXTRA_DIRS=
  18. ifeq ($(IGL_WITH_TETGEN),1)
  19. # append tetgen extra dir
  20. EXTRA_DIRS+=include/igl/tetgen
  21. endif
  22. ifeq ($(IGL_WITH_MATLAB),1)
  23. # append matlab extra dir
  24. EXTRA_DIRS+=include/igl/matlab
  25. endif
  26. ifeq ($(IGL_WITH_MOSEK),1)
  27. # append mosek extra dir
  28. EXTRA_DIRS+=include/igl/mosek
  29. endif
  30. ifeq ($(IGL_WITH_PNG),1)
  31. # append mosek extra dir
  32. EXTRA_DIRS+=include/igl/png
  33. endif
  34. .PHONY: examples
  35. .PHONY: extras
  36. debug: lib
  37. lib: obj lib/libigl.a
  38. examples: lib
  39. make -C examples
  40. extras: extras
  41. for p in $(EXTRA_DIRS); \
  42. do \
  43. echo "cd $$p" ; \
  44. $(MAKE) -C $$p ; \
  45. done
  46. #############################################################################
  47. # SOURCE
  48. #############################################################################
  49. CPP_FILES=$(wildcard include/igl/*.cpp)
  50. OBJ_FILES=$(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
  51. # include igl headers
  52. INC+=-Iinclude/
  53. #############################################################################
  54. # DEPENDENCIES
  55. #############################################################################
  56. INC+=$(OPENGL_INC)
  57. # Eigen dependency
  58. EIGEN3_INC=-I$(DEFAULT_PREFIX)/include/eigen3 -I$(DEFAULT_PREFIX)/include/eigen3/unsupported
  59. INC+=$(EIGEN3_INC)
  60. # AntTweakBar dependency
  61. #ANTTWEAKBAR_INC=-I$(DEFAULT_PREFIX)/include
  62. ANTTWEAKBAR_INC=-Iexternal/AntTweakBar/include
  63. INC+=$(ANTTWEAKBAR_INC)
  64. ## OpenGL dependency
  65. #LIB+=-framework OpenGL
  66. #LIB+=-framework GLUT
  67. #LIB+=-framework AppKit
  68. obj:
  69. mkdir -p obj
  70. lib/libigl.a: $(OBJ_FILES)
  71. mkdir -p lib
  72. rm -f $@
  73. ar cqs $@ $(OBJ_FILES)
  74. obj/%.o: include/igl/%.cpp include/igl/%.h obj
  75. $(GG) $(CFLAGS) $(AFLAGS) -c -o $@ $< $(INC)
  76. clean:
  77. rm -f obj/*.o
  78. rm -f lib/libigl.a
  79. make -C examples clean
  80. for p in $(EXTRA_DIRS); \
  81. do \
  82. echo "cd $$p" ; \
  83. $(MAKE) -C $$p clean; \
  84. done