Makefile 2.5 KB

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