makefile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # Makefile for Open Asset Import Library (GNU-make)
  2. # [email protected]
  3. #
  4. # Usage: make <target> <macros>
  5. # TARGETS:
  6. # all Build a shared so from the whole library
  7. # clean Cleanup object files, prepare for rebuild
  8. # static Build a static library (*.a)
  9. # install SDK will be installed to /usr/bin/assimp
  10. # MACROS: (make clean before you change one)
  11. # NOBOOST=1 Build against boost workaround
  12. # SINGLETHREADED=1 Build single-threaded library
  13. # DEBUG=1 Build debug build of library
  14. # C++ object files
  15. OBJECTS := $(patsubst %.cpp,%.o, $(wildcard *.cpp))
  16. OBJECTS += $(patsubst %.cpp,%.o, $(wildcard extra/*.cpp))
  17. OBJECTS += $(patsubst %.cpp,%.o, $(wildcard ./../contrib/irrXML/*.cpp))
  18. # C object files
  19. OBJECTSC := $(patsubst %.c,%.oc, $(wildcard ./../contrib/zlib/*.c))
  20. OBJECTSC += $(patsubst %.c,%.oc, $(wildcard ./../contrib/ConvertUTF/*.c))
  21. # Directory for install
  22. INSTALLDIR = /usr/bin/assimp
  23. # Include flags for gcc
  24. INCLUDEFLAGS =
  25. # Preprocessor defines for gcc
  26. DEFINEFLAGS =
  27. # Suffix for the output binary, represents build type
  28. NAMESUFFIX =
  29. # Output path for binaries
  30. BINPATH = ../bin/gcc
  31. INCPATH = ../include
  32. # GCC compiler flags
  33. CPPFLAGS=-Wall
  34. # Setup environment for noboost build
  35. ifeq ($(NOBOOST),1)
  36. SINGLETHREADED = 1
  37. INCLUDEFLAGS += -I../include/BoostWorkaround/
  38. DEFINEFLAGS += -DASSIMP_BUILD_BOOST_WORKAROUND
  39. # NAMESUFFIX += -noboost
  40. # else
  41. # INCLUDEFLAGS += -I"C:/Program Files/boost/boost_1_35_0"
  42. endif
  43. # Setup environment for st build
  44. ifeq ($(SINGLETHREADED),1)
  45. DEFINEFLAGS += -DASSIMP_BUILD_SINGLETHREADED
  46. # NAMESUFFIX += -st
  47. endif
  48. # Setup environment for debug build
  49. ifeq ($(DEBUG),1)
  50. DEFINEFLAGS += -D_DEBUG -DDEBUG
  51. # NAMESUFFIX += -debug
  52. else
  53. CPPFLAGS += -O3
  54. DEFINEFLAGS += -DNDEBUG -D_NDEBUG
  55. endif
  56. OUTPUT_NAME = dummy
  57. # Output name of shared library
  58. SHARED_TARGET = $(BINPATH)/libassimp$(NAMESUFFIX).so
  59. # Output name of static library
  60. STATIC = $(BINPATH)/libassimp$(NAMESUFFIX).a
  61. # target: all
  62. # usage : build a shared library (*.so)
  63. all: $(SHARED_TARGET)
  64. $(SHARED_TARGET): $(OBJECTS) $(OBJECTSC)
  65. gcc -o $@ $(OBJECTS) $(OBJECTSC) -shared -lstdc++
  66. %.o:%.cpp
  67. $(CXX) -g -c $(CPPFLAGS) $? -o $@ $(INCLUDEFLAGS) $(DEFINEFLAGS) -fPIC
  68. %.oc:%.c
  69. $(CXX) -x c -g -c -ansi $(CPPFLAGS) $? -o $@ -fPIC
  70. # target: clean
  71. # usage : cleanup all object files, prepare for a rebuild
  72. .PHONY: clean
  73. clean:
  74. -rm -f $(OBJECTS) $(OBJECTSC) $(TARGET)
  75. # target: static
  76. # usage : build a static library (*.a)
  77. static: $(STATIC)
  78. $(STATIC): $(OBJECTS) $(OBJECTSC)
  79. ar rcs $@ $(OBJECTS) $(OBJECTSC)
  80. install:
  81. mkdir -p $(INSTALLDIR)
  82. mkdir -p $(INSTALLDIR)/include
  83. mkdir -p $(INSTALLDIR)/lib
  84. cp $(BINPATH)/libassimp$(NAMESUFFIX).* $(INSTALLDIR)/lib
  85. cp $(INCPATH)/* $(INSTALLDIR)/include