makefile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # UNTESTED!!!!
  2. # Makefile for Open Asset Import Library (GNU-make)
  3. # [email protected]
  4. #
  5. # Usage: make <target> <macros>
  6. # TARGETS:
  7. # all Build a shared so from the whole library
  8. # clean Cleanup object files, prepare for rebuild
  9. # static Build a static library (*.a)
  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. #
  15. # C++ object files
  16. OBJECTS := $(patsubst %.cpp,%.o, $(wildcard *.cpp))
  17. OBJECTS += $(patsubst %.cpp,%.o, $(wildcard extra/*.cpp))
  18. OBJECTS += $(patsubst %.cpp,%.o, $(wildcard ./../contrib/irrXML/*.cpp))
  19. # C object files (mainly from zlib)
  20. OBJECTSC := $(patsubst %.c,%.oc, $(wildcard ./../contrib/zlib/*.c))
  21. # Include flags for gcc
  22. INCLUDEFLAGS =
  23. # Preprocessor defines for gcc
  24. DEFINEFLAGS =
  25. # Suffix for the output binary, represents build type
  26. NAMESUFFIX =
  27. # Output path for binaries
  28. BINPATH = ../bin/gcc/
  29. # GCC compiler flags
  30. CPPFLAGS=-Wall
  31. # Setup environment for noboost build
  32. ifeq ($(NOBOOST),1)
  33. SINGLETHREADED = 1
  34. INCLUDEFLAGS += -I../include/BoostWorkaround/
  35. DEFINEFLAGS += -DASSIMP_BUILD_BOOST_WORKAROUND
  36. # NAMESUFFIX += -noboost
  37. # else
  38. # INCLUDEFLAGS += -I"C:/Program Files/boost/boost_1_35_0"
  39. endif
  40. # Setup environment for st build
  41. ifeq ($(SINGLETHREADED),1)
  42. DEFINEFLAGS += -DASSIMP_BUILD_SINGLETHREADED
  43. # NAMESUFFIX += -st
  44. endif
  45. # Setup environment for debug build
  46. ifeq ($(DEBUG),1)
  47. DEFINEFLAGS += -D_DEBUG -DDEBUG
  48. # NAMESUFFIX += -debug
  49. else
  50. CPPFLAGS += -o3
  51. DEFINEFLAGS += -DNDEBUG -D_NDEBUG
  52. endif
  53. # Output name of shared library
  54. SHARED_TARGET = $(BINPATH)/libassimp$(NAMESUFFIX).so
  55. # Output name of static library
  56. STATIC = $(BINPATH)/libassimp$(NAMESUFFIX).a
  57. # target: all
  58. # usage : build a shared library (*.so)
  59. all: $(SHARED_TARGET)
  60. $(SHARED_TARGET): $(OBJECTS) $(OBJECTSC)
  61. gcc -o $@ $(OBJECTS) $(OBJECTSC) -shared -lstdc++
  62. %.o:%.cpp
  63. $(CXX) -g -c $(CPPFLAGS) $? -o $@ $(INCLUDEFLAGS) $(DEFINEFLAGS) -fPIC
  64. %.oc:%.c
  65. $(CXX) -x c -g -c -ansi $(CPPFLAGS) $? -o $@ -fPIC
  66. # target: clean
  67. # usage : cleanup all object files, prepare for a rebuild
  68. .PHONY: clean
  69. clean:
  70. -rm -f $(OBJECTS) $(OBJECTSC) $(TARGET)
  71. # target: static
  72. # usage : build a static library (*.a)
  73. static: $(STATIC)
  74. $(STATIC): $(OBJECTS) $(OBJECTSC)
  75. ar rcs $@ $(OBJECTS) $(OBJECTSC)