Makefile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. .PHONY: all
  2. all: lib extras examples
  3. framework: lib extras lib/igl.framework/
  4. GG=g++
  5. #GG=clang++
  6. #GG=/usr/bin/g++ 17s
  7. #GG=/usr/bin/clang++ 14s
  8. #GG=g++-mp-4.3 15.5s
  9. #GG=g++-mp-4.7 19.9s
  10. # Shared flags etc.
  11. include Makefile.conf
  12. $(info Hello, $(IGL_USERNAME)!)
  13. # optimized default settings
  14. all: LFLAGS +=
  15. OPTFLAGS+=-O3 -DNDEBUG $(OPENMP)
  16. #debug: OPTFLAGS= -g -Wall -Werror
  17. debug: OPTFLAGS= -g -Wall
  18. debug: DEBUG=debug
  19. CFLAGS += $(OPTFLAGS)
  20. #CFLAGS += -DIGL_NO_OPENGL -DIGL_NO_ANTTWEAKBAR
  21. # We use well-supported features of c++11
  22. CFLAGS += -std=c++11
  23. EXTRA_DIRS=
  24. ifeq ($(IGL_WITH_TETGEN),1)
  25. # append tetgen extra dir
  26. EXTRA_DIRS+=include/igl/tetgen
  27. EXTRAS += tetgen
  28. endif
  29. ifeq ($(IGL_WITH_MATLAB),1)
  30. EXTRA_DIRS+=include/igl/matlab
  31. EXTRAS += matlab
  32. endif
  33. ifeq ($(IGL_WITH_BBW),1)
  34. EXTRA_DIRS+=include/igl/bbw
  35. EXTRAS += bbw
  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_XML),1)
  46. EXTRA_DIRS+=include/igl/xml
  47. EXTRAS += xml
  48. endif
  49. ifeq ($(IGL_WITH_EMBREE),1)
  50. EXTRA_DIRS+=include/igl/embree
  51. EXTRAS += embree
  52. endif
  53. ifeq ($(IGL_WITH_BOOST),1)
  54. EXTRA_DIRS+=include/igl/boost
  55. EXTRAS += boost
  56. endif
  57. .PHONY: examples
  58. .PHONY: extras
  59. debug: lib extras
  60. lib: lib/libigl.a
  61. examples: lib extras
  62. make -C examples
  63. extras:
  64. for p in $(EXTRA_DIRS); \
  65. do \
  66. echo "cd $$p" ; \
  67. $(MAKE) -C $$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+=-Iinclude/
  77. #############################################################################
  78. # DEPENDENCIES
  79. #############################################################################
  80. INC+=$(OPENGL_INC)
  81. # Eigen dependency
  82. ifndef EIGEN3_INC
  83. EIGEN3_INC=-I$(DEFAULT_PREFIX)/include/eigen3 -I$(DEFAULT_PREFIX)/include/eigen3/unsupported
  84. endif
  85. INC+=$(EIGEN3_INC)
  86. # AntTweakBar dependency
  87. #ANTTWEAKBAR_INC=-I$(DEFAULT_PREFIX)/include
  88. ANTTWEAKBAR_INC=-Iexternal/AntTweakBar/include
  89. INC+=$(ANTTWEAKBAR_INC)
  90. ## OpenGL dependency
  91. #LIB+=-framework OpenGL
  92. #LIB+=-framework GLUT
  93. #LIB+=-framework AppKit
  94. obj:
  95. mkdir -p obj
  96. lib/libigl.a: $(OBJ_FILES)
  97. mkdir -p lib
  98. rm -f $@
  99. ar cqs $@ $(OBJ_FILES)
  100. obj/%.o: include/igl/%.cpp include/igl/%.h
  101. $(GG) $(CFLAGS) $(AFLAGS) -c -o $@ $< $(INC)
  102. lib/igl.framework/:
  103. mkdir -p $@
  104. cp lib/*.a $@
  105. mv $@/libigl.a $@/igl
  106. mkdir -p $@/Libraries
  107. mv $@/*.a $@/Libraries
  108. mkdir -p $@/Headers
  109. cp $(H_FILES) $@/Headers
  110. for p in $(EXTRAS); \
  111. do \
  112. mkdir $@/Headers/$$p; \
  113. cp include/igl/$$p/*.h $@/Headers/$$p; \
  114. done
  115. clean:
  116. rm -rf lib/igl.framework/
  117. rm -f obj/*.o
  118. rm -f lib/libigl.a
  119. make -C examples clean
  120. for p in $(EXTRA_DIRS); \
  121. do \
  122. echo "cd $$p" ; \
  123. $(MAKE) -C $$p clean; \
  124. done