Makefile
上传用户:sunlush021
上传日期:2022-06-22
资源大小:90k
文件大小:3k
源码类别:

操作系统开发

开发平台:

C/C++

  1. #-----------------------------------------------------------------------------------------
  2. # Copyright (c) 2010 Marcus Geelnard
  3. #
  4. # This software is provided 'as-is', without any express or implied
  5. # warranty. In no event will the authors be held liable for any damages
  6. # arising from the use of this software.
  7. #
  8. # Permission is granted to anyone to use this software for any purpose,
  9. # including commercial applications, and to alter it and redistribute it
  10. # freely, subject to the following restrictions:
  11. #
  12. #     1. The origin of this software must not be misrepresented; you must not
  13. #     claim that you wrote the original software. If you use this software
  14. #     in a product, an acknowledgment in the product documentation would be
  15. #     appreciated but is not required.
  16. #
  17. #     2. Altered source versions must be plainly marked as such, and must not be
  18. #     misrepresented as being the original software.
  19. #
  20. #     3. This notice may not be removed or altered from any source
  21. #     distribution.
  22. #-----------------------------------------------------------------------------------------
  23. # A simple hack to check if we are on Windows or not (i.e. are we using mingw32-make?)
  24. ifeq ($(findstring mingw32, $(MAKE)), mingw32)
  25. WINDOWS=1
  26. endif
  27. # Compiler settings
  28. CPP = g++
  29. CPPFLAGS = -W -O3 -c -I../source
  30. LFLAGS =
  31. LIBS =
  32. # Non-windows systems need pthread
  33. ifndef WINDOWS
  34. LIBS += -lpthread
  35. endif
  36. # MinGW32 GCC 4.5 link problem fix
  37. ifdef WINDOWS
  38. ifeq ($(findstring 4.5.,$(shell g++ -dumpversion)), 4.5.)
  39. LFLAGS += -static-libstdc++ -static-libgcc
  40. endif
  41. endif
  42. # Misc. system commands
  43. ifdef WINDOWS
  44. RM = del /Q
  45. else
  46. RM = rm -f
  47. endif
  48. # File endings
  49. ifdef WINDOWS
  50. EXE = .exe
  51. else
  52. EXE =
  53. endif
  54. # Object files for the hello program
  55. HELLO_OBJS = hello.o
  56. # Object files for the test program
  57. TEST_OBJS = test.o
  58. # Object files for the hello program
  59. FRACAL_OBJS = fractal.o
  60. # TinyThread++ object files
  61. TINYTHREAD_OBJS = tinythread.o
  62. all: hello$(EXE) test$(EXE) fractal$(EXE)
  63. clean:
  64. $(RM) hello$(EXE) test$(EXE) fractal$(EXE) $(HELLO_OBJS) $(TEST_OBJS) $(FRACAL_OBJS) $(TINYTHREAD_OBJS)
  65. test$(EXE): $(TEST_OBJS) $(TINYTHREAD_OBJS)
  66. $(CPP) $(LFLAGS) -o $@ $(TEST_OBJS) $(TINYTHREAD_OBJS) $(LIBS)
  67. hello$(EXE): $(HELLO_OBJS) $(TINYTHREAD_OBJS)
  68. $(CPP) $(LFLAGS) -o $@ $(HELLO_OBJS) $(TINYTHREAD_OBJS) $(LIBS)
  69. fractal$(EXE): $(FRACAL_OBJS) $(TINYTHREAD_OBJS)
  70. $(CPP) $(LFLAGS) -o $@ $(FRACAL_OBJS) $(TINYTHREAD_OBJS) $(LIBS)
  71. %.o: %.cpp
  72. $(CPP) $(CPPFLAGS) $<
  73. %.o: ../source/%.cpp
  74. $(CPP) $(CPPFLAGS) $<
  75. # Dependencies
  76. hello.o: hello.cpp ../source/tinythread.h
  77. test.o: test.cpp ../source/tinythread.h ../source/fast_mutex.h
  78. fractal.o: fractal.cpp ../source/tinythread.h
  79. tinythread.o: ../source/tinythread.cpp ../source/tinythread.h