Makefile 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. EXTRA_DIRS=
  17. ifeq ($(IGL_WITH_BBW),1)
  18. EXTRA_DIRS+=include/igl/bbw
  19. EXTRAS += bbw
  20. endif
  21. ifeq ($(IGL_WITH_BOOST),1)
  22. EXTRA_DIRS+=include/igl/boost
  23. EXTRAS += boost
  24. endif
  25. ifeq ($(IGL_WITH_CGAL),1)
  26. EXTRA_DIRS+=include/igl/cgal
  27. EXTRAS += cgal
  28. endif
  29. ifeq ($(IGL_WITH_EMBREE),1)
  30. EXTRA_DIRS+=include/igl/embree
  31. EXTRAS += embree
  32. endif
  33. ifeq ($(IGL_WITH_MATLAB),1)
  34. EXTRA_DIRS+=include/igl/matlab
  35. EXTRAS += matlab
  36. endif
  37. ifeq ($(IGL_WITH_MOSEK),1)
  38. EXTRA_DIRS+=include/igl/mosek
  39. EXTRAS += mosek
  40. endif
  41. ifeq ($(IGL_WITH_PNG),1)
  42. EXTRA_DIRS+=include/igl/png
  43. EXTRAS += png
  44. endif
  45. ifeq ($(IGL_WITH_SVD3X3),1)
  46. EXTRA_DIRS+=include/igl/svd3x3
  47. EXTRAS += svd3x3
  48. endif
  49. ifeq ($(IGL_WITH_TETGEN),1)
  50. # append tetgen extra dir
  51. EXTRA_DIRS+=include/igl/tetgen
  52. EXTRAS += tetgen
  53. endif
  54. ifeq ($(IGL_WITH_VIEWER),1)
  55. EXTRA_DIRS+=include/igl/viewer
  56. EXTRAS += viewer
  57. endif
  58. ifeq ($(IGL_WITH_XML),1)
  59. EXTRA_DIRS+=include/igl/xml
  60. EXTRAS += xml
  61. endif
  62. .PHONY: examples
  63. .PHONY: extras
  64. debug: lib extras
  65. lib: lib/libigl.a
  66. examples: lib extras
  67. make -C examples
  68. extras:
  69. for p in $(EXTRA_DIRS); \
  70. do \
  71. echo "cd $$p" ; \
  72. $(MAKE) -C $$p $(DEBUG); \
  73. done
  74. #############################################################################
  75. # SOURCE
  76. #############################################################################
  77. CPP_FILES=$(wildcard include/igl/*.cpp)
  78. H_FILES=$(wildcard include/igl/*.h)
  79. OBJ_FILES=$(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
  80. # include igl headers
  81. INC+=-Iinclude/
  82. #############################################################################
  83. # DEPENDENCIES
  84. #############################################################################
  85. INC+=$(OPENGL_INC)
  86. # Eigen dependency
  87. ifndef EIGEN3_INC
  88. EIGEN3_INC=-I$(DEFAULT_PREFIX)/include/eigen3 -I$(DEFAULT_PREFIX)/include/eigen3/unsupported
  89. endif
  90. INC+=$(EIGEN3_INC)
  91. # AntTweakBar dependency
  92. #ANTTWEAKBAR_INC=-I$(DEFAULT_PREFIX)/include
  93. ANTTWEAKBAR_INC=-Iexternal/AntTweakBar/include
  94. INC+=$(ANTTWEAKBAR_INC)
  95. ## OpenGL dependency
  96. #LIB+=-framework OpenGL
  97. #LIB+=-framework GLUT
  98. #LIB+=-framework AppKit
  99. .PHONY: obj
  100. obj:
  101. mkdir -p obj
  102. lib/libigl.a: obj $(OBJ_FILES)
  103. mkdir -p lib
  104. rm -f $@
  105. ar cqs $@ $(OBJ_FILES)
  106. obj/%.o: include/igl/%.cpp include/igl/%.h
  107. $(GG) $(CFLAGS) $(AFLAGS) -c -o $@ $< $(INC)
  108. lib/igl.framework/:
  109. mkdir -p $@
  110. cp lib/*.a $@
  111. mv $@/libigl.a $@/igl
  112. mkdir -p $@/Libraries
  113. mv $@/*.a $@/Libraries
  114. mkdir -p $@/Headers
  115. cp $(H_FILES) $@/Headers
  116. for p in $(EXTRAS); \
  117. do \
  118. mkdir $@/Headers/$$p; \
  119. cp include/igl/$$p/*.h $@/Headers/$$p; \
  120. done
  121. clean:
  122. rm -rf lib/igl.framework/
  123. rm -f obj/*.o
  124. rm -f lib/libigl.a
  125. make -C examples clean
  126. for p in $(EXTRA_DIRS); \
  127. do \
  128. echo "cd $$p" ; \
  129. $(MAKE) -C $$p clean; \
  130. done