Makefile 2.4 KB

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