Makefile 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. .PHONY: all
  2. all: lib extras examples
  3. GG=g++
  4. #GG=/usr/bin/g++ 17s
  5. #GG=/usr/bin/clang++ 14s
  6. #GG=g++-mp-4.3 15.5s
  7. #GG=g++-mp-4.7 19.9s
  8. # Shared flags etc.
  9. include Makefile.conf
  10. $(info Hello, $(IGL_USERNAME)!)
  11. # optimized default settings
  12. all: LFLAGS +=
  13. OPTFLAGS=-O3 -DNDEBUG
  14. debug: OPTFLAGS= -g -Wall -Werror
  15. CFLAGS += $(OPTFLAGS)
  16. EXTRA_DIRS=
  17. ifeq ($(IGL_WITH_TETGEN),1)
  18. # append tetgen extra dir
  19. EXTRA_DIRS+=include/igl/tetgen
  20. endif
  21. ifeq ($(IGL_WITH_MATLAB),1)
  22. # append matlab extra dir
  23. EXTRA_DIRS+=include/igl/matlab
  24. endif
  25. ifeq ($(IGL_WITH_MOSEK),1)
  26. # append mosek extra dir
  27. EXTRA_DIRS+=include/igl/mosek
  28. endif
  29. ifeq ($(IGL_WITH_PNG),1)
  30. # append mosek extra dir
  31. EXTRA_DIRS+=include/igl/png
  32. endif
  33. .PHONY: examples
  34. .PHONY: extras
  35. debug: lib
  36. lib: obj lib/libigl.a
  37. examples:
  38. make -C examples
  39. extras:
  40. for p in $(EXTRA_DIRS); \
  41. do \
  42. echo "cd $$p" ; \
  43. $(MAKE) -C $$p ; \
  44. done
  45. #############################################################################
  46. # SOURCE
  47. #############################################################################
  48. CPP_FILES=$(wildcard include/igl/*.cpp)
  49. OBJ_FILES=$(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
  50. # include igl headers
  51. INC+=-Iinclude/
  52. #############################################################################
  53. # DEPENDENCIES
  54. #############################################################################
  55. INC+=$(OPENGL_INC)
  56. # Eigen dependency
  57. EIGEN3_INC=-I$(DEFAULT_PREFIX)/include/eigen3 -I$(DEFAULT_PREFIX)/include/eigen3/unsupported
  58. INC+=$(EIGEN3_INC)
  59. # AntTweakBar dependency
  60. #ANTTWEAKBAR_INC=-I$(DEFAULT_PREFIX)/include
  61. ANTTWEAKBAR_INC=-Iexternal/AntTweakBar/include
  62. INC+=$(ANTTWEAKBAR_INC)
  63. ## OpenGL dependency
  64. #LIB+=-framework OpenGL
  65. #LIB+=-framework GLUT
  66. #LIB+=-framework AppKit
  67. obj:
  68. mkdir -p obj
  69. lib/libigl.a: $(OBJ_FILES)
  70. mkdir -p lib
  71. rm -f $@
  72. ar cqs $@ $(OBJ_FILES)
  73. obj/%.o: include/igl/%.cpp include/igl/%.h
  74. $(GG) $(CFLAGS) $(AFLAGS) -c -o $@ $< $(INC)
  75. clean:
  76. rm -f obj/*.o
  77. rm -f lib/libigl.a
  78. make -C examples clean
  79. for p in $(EXTRA_DIRS); \
  80. do \
  81. echo "cd $$p" ; \
  82. $(MAKE) -C $$p clean; \
  83. done