Makefile 2.9 KB

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