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. 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. .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 $(EXTRA_DIRS); \
  59. do \
  60. echo "cd $$p" ; \
  61. $(MAKE) -C $$p $(DEBUG); \
  62. done
  63. #############################################################################
  64. # SOURCE
  65. #############################################################################
  66. CPP_FILES=$(wildcard include/igl/*.cpp)
  67. H_FILES=$(wildcard include/igl/*.h)
  68. OBJ_FILES=$(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
  69. # include igl headers
  70. INC+=-Iinclude/
  71. #############################################################################
  72. # DEPENDENCIES
  73. #############################################################################
  74. INC+=$(OPENGL_INC)
  75. # Eigen dependency
  76. ifndef EIGEN3_INC
  77. EIGEN3_INC=-I$(DEFAULT_PREFIX)/include/eigen3 -I$(DEFAULT_PREFIX)/include/eigen3/unsupported
  78. endif
  79. INC+=$(EIGEN3_INC)
  80. # AntTweakBar dependency
  81. #ANTTWEAKBAR_INC=-I$(DEFAULT_PREFIX)/include
  82. ANTTWEAKBAR_INC=-Iexternal/AntTweakBar/include
  83. INC+=$(ANTTWEAKBAR_INC)
  84. ## OpenGL dependency
  85. #LIB+=-framework OpenGL
  86. #LIB+=-framework GLUT
  87. #LIB+=-framework AppKit
  88. obj:
  89. mkdir -p obj
  90. lib/libigl.a: $(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/*.o
  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