Makefile 2.8 KB

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