Makefile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #-------------------------------------------------------------------#
  2. # Makefile to build UsedPort exe
  3. #-------------------------------------------------------------------#
  4. # 1.0 Laurent Destailleur Creation
  5. #-------------------------------------------------------------------#
  6. # Works with GCC CYGWIN, GCC MINGW
  7. #-------------------------------------------------------------------#
  8. # Project options
  9. #-----------------
  10. # "GCC" to use GCC GNU C++ (Cygwin or Linux), "MINGW" to use MINGW, "VC" to use Microsoft Visual C+
  11. COMP=MINGW
  12. # DEBUG=1 for debug
  13. DEBUG=0
  14. # Directories
  15. SRCDIR = ./
  16. RUNDIR = ./
  17. INCDIR = ./
  18. LIBDIR = ./
  19. INCLUDES= -I$(INCDIR)
  20. LIBS = -L$(LIBDIR) -L../lib
  21. # Program files to build (Ex: $(RUNDIR)prog)
  22. PROGRAM = $(RUNDIR)UsedPort
  23. # Object files to build (Ex: $(LIBDIR)yyy.o $(LIBDIR)zzz.o ...)
  24. OBJLIST = $(LIBDIR)UsedPort.o$(BJ)
  25. # Archive file for o files (Ex: $(LIBDIR)libxxx.a)
  26. ifeq "$(OS)" "Windows_NT"
  27. ARCHIVE = "mylib.a"
  28. else
  29. ARCHIVE = "mylib.a"
  30. endif
  31. # Compilation/Link by GCC
  32. #------------------------
  33. ifeq "$(COMP)" "GCC"
  34. CC = gcc
  35. CPP = g++
  36. RSC = g++
  37. AR = ar r
  38. OUT=-o
  39. ifeq "$(DEBUG)" "1"
  40. COPTIONS=-Wall -g -DDEBUG
  41. else
  42. COPTIONS=-O3
  43. endif
  44. ifeq "$(OS)" "Windows_NT"
  45. # wsock32 required only if _WIN32 defined in source code and use WSA* functions
  46. LOPTIONS=-Bstatic
  47. endif
  48. ifeq "$(MACHTYPE)" "sparc"
  49. LOPTIONS=-lsocket -Bstatic
  50. endif
  51. ifeq "$(PROCESSOR_ARCHITECTURE)" "x86"
  52. LOPTIONS2=-m486
  53. endif
  54. endif
  55. # Compilation/Link by MINGW
  56. #--------------------------
  57. ifeq "$(COMP)" "MINGW"
  58. CC = mingw32-gcc.exe
  59. CPP = mingw32-g++.exe
  60. RSC = mingw32-g++.exe
  61. AR = ar r
  62. OUT=-o
  63. ifeq "$(DEBUG)" "1"
  64. COPTIONS=-Wall -g -DDEBUG
  65. else
  66. COPTIONS=-O3
  67. endif
  68. LOPTIONS=-lwsock32 -Bstatic
  69. ifeq "$(PROCESSOR_ARCHITECTURE)" "x86"
  70. LOPTIONS2=-m486
  71. endif
  72. endif
  73. # Compilation/Link by VC
  74. #-----------------------
  75. ifeq "$(COMP)" "VC"
  76. CC = cl.exe
  77. CPP = cl.exe
  78. RSC = rc.exe
  79. ifeq "$(COMP)" "GCC"
  80. COPTIONS= /nologo /ML /W3 /O2 /Yd /D "DEBUG" /D "WIN32" /D "_CONSOLE" /c
  81. else
  82. COPTIONS= /nologo /G4 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /c
  83. endif
  84. LOPTIONS= /nologo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
  85. advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
  86. odbccp32.lib wsock32.lib
  87. BJ = bj
  88. OUT=/Fo
  89. endif
  90. # New rules
  91. #-----------------
  92. ifeq "$(OS)" "Windows_NT"
  93. RM = rm -f
  94. CFLAGS = $(COPTIONS) $(INCLUDES)
  95. else
  96. RM = rm -f
  97. CFLAGS = $(COPTIONS) $(INCLUDES)
  98. endif
  99. LDFLAGS = $(LOPTIONS) $(LOPTIONS2) $(LIBS)
  100. $(LIBDIR)%.o: %.cpp
  101. @echo ----- Compilation C++ by $(COMP) $(CPP) - $@
  102. @echo CPP=$(CPP)
  103. @echo CFLAGS=$(CFLAGS)
  104. $(CPP) -c $(CFLAGS) $(SRC)$< $(OUT)$@
  105. # @echo ----- Archivage en $(ARCHIVE)
  106. # $(AR) $(ARCHIVE) $@
  107. $(LIBDIR)%.obj: %.cpp
  108. @echo ----- Compilation C++ by $(COMP) $(CPP) - $@
  109. @echo CPP=$(CPP)
  110. @echo CFLAGS=$(CFLAGS)
  111. $(CPP) -c $(CFLAGS) $(SRC)$< $(OUT)$@
  112. # @echo ----- Archivage en $(ARCHIVE)
  113. # $(AR) $(ARCHIVE) $@
  114. $(LIBDIR)%.o: %.c
  115. @echo ----- Compilation C by $(COMP) $(CC) - $@
  116. @echo CC=$(CC)
  117. @echo CFLAGS=$(CFLAGS)
  118. $(CC) -c $(CFLAGS) $(SRC)$< $(OUT)$@
  119. # @echo ----- Archivage en $(ARCHIVE)
  120. # $(AR) $(ARCHIVE) $@
  121. $(LIBDIR)%.obj: %.c
  122. @echo ----- Compilation C by $(COMP) $(CC) - $@
  123. @echo CPP=$(CPP)
  124. @echo CFLAGS=$(CFLAGS)
  125. $(CC) -c $(CFLAGS) $(SRC)$< $(OUT)$@
  126. # @echo ----- Archivage en $(ARCHIVE)
  127. # $(AR) $(ARCHIVE) $@
  128. # Targets
  129. #-----------------
  130. # Default target (Ex: $(PROGRAM) or $(OBJLIST))
  131. all: $(PROGRAM)
  132. # Program (if PROGRAM is just one exe)
  133. #$(PROGRAM1): $(OBJLIST1)
  134. # @echo ----- Link by $(COMP) $(CC) - $@
  135. # rm -f $(RUNDIR)$@
  136. # $(CC) -o $(RUNDIR)$@ $(OBJLIST) $(LDFLAGS) $(ARCHIVE)
  137. # Program (if PROGRAM are several exe)
  138. $(PROGRAM): $(OBJLIST)
  139. @echo ----- Link by $(COMP) $(CC) - $@
  140. @echo LIBDIR=$(LIBDIR)
  141. @echo LDFLAGS=$(LDFLAGS)
  142. rm -f $(RUNDIR)$@
  143. # $(CC) -o $(RUNDIR)$@ $(LIBDIR)$@.o$(BJ) $(LDFLAGS) $(ARCHIVE)
  144. $(CC) -o $(RUNDIR)$@ $(LIBDIR)$@.o$(BJ) $(LDFLAGS)
  145. # Clean
  146. clean:
  147. @echo ----- Clean
  148. $(RM) $(LIBDIR)*.a $(LIBDIR)*.o $(LIBDIR)*.obj $(RUNDIR)UsedPort.exe $(RUNDIR)core $(OBJLIST)
  149. # Dependencies xxx.o: xxx.c xxxa.h xxxb.h
  150. #$(LIBDIR)UsedPort.o: $(SRCDIR)UsedPort.cpp