Makefile 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. VPATH=cybootloaderutils ../SCSI2SD/src
  2. VERSION=4.4.0
  3. NAME=scsi2sd-util
  4. ifeq ($(USE_SYSTEM), Yes)
  5. USE_SYSTEM_HIDAPI = Yes
  6. USE_SYSTEM_ZLIB = Yes
  7. USE_SYSTEM_WX = Yes
  8. endif
  9. ifeq ($(USE_SYSTEM_HIDAPI), Yes)
  10. CPPFLAGS_HIDAPI=$(shell pkg-config hidapi-hidraw --cflags)
  11. LDFLAGS_HIDAPI=$(shell pkg-config hidapi-hidraw --libs)
  12. else
  13. CPPFLAGS_HIDAPI=-I hidapi/hidapi
  14. LDFLAGS_HIDAPI=
  15. endif
  16. ifeq ($(USE_SYSTEM_ZLIB), Yes)
  17. CPPFLAGS_ZLIB=$(shell pkg-config zlib --cflags)
  18. LDFLAGS_ZLIB=$(shell pkg-config zlib --libs)
  19. LIBZIPPER_CONFIG = --disable-shared LDFLAGS="$(LDFLAGS_ZLIB)" CPPFLAGS="$(CPPFLAGS_ZLIB)"
  20. else
  21. CPPFLAGS_ZLIB=-I$(BUILD)/zlib
  22. LDFLAGS_ZLIB=-L$(BUILD)/zlib -lz
  23. LIBZIPPER_CONFIG = --disable-shared LDFLAGS="-L../zlib" CPPFLAGS="-I../zlib"
  24. endif
  25. ifeq ($(USE_SYSTEM_WX),Yes)
  26. LDFLAGS_WX=$(shell wx-config-3.0 --libs)
  27. else
  28. LDFLAGS_WX=$(shell $(BUILD)/wx/wx-config --libs)
  29. endif
  30. CPPFLAGS = -I cybootloaderutils $(CPPFLAGS_HIDAPI) -I. -I ../include -Ilibzipper-1.0.4 $(CPPFLAGS_ZLIB)
  31. CFLAGS += -Wall -Wno-pointer-sign -O2 -g
  32. CXXFLAGS += -Wall -O2 -g -std=c++0x
  33. LDFLAGS += -L$(BUILD)/libzipper/.libs -lzipper $(LDFLAGS_ZLIB) $(LDFLAGS_HIDAPI)
  34. # wxWidgets 3.0.2 uses broken Webkit headers under OSX Yosemeti
  35. # liblzma not available on OSX 10.7
  36. WX_CONFIG=--disable-webkit --disable-webviewwebkit \
  37. --without-libtiff --without-libjbig --without-liblzma --without-opengl \
  38. --enable-monolithic --enable-stl --disable-shared
  39. TARGET ?= $(shell uname -s)
  40. ifeq ($(TARGET),Win32)
  41. VPATH += hidapi/windows
  42. LDFLAGS += -static -mconsole -mwindows -lsetupapi
  43. BUILD := $(PWD)/build/windows/32bit
  44. CC=i686-w64-mingw32-gcc
  45. CXX=i686-w64-mingw32-g++
  46. LIBZIPPER_CONFIG+=--host=i686-w64-mingw32
  47. EXE=.exe
  48. WX_CONFIG+=--host=i686-w64-mingw32
  49. endif
  50. ifeq ($(TARGET),Win64)
  51. VPATH += hidapi/windows
  52. LDFLAGS += -static -mconsole -mwindows -lsetupapi
  53. BUILD := $(PWD)/build/windows/64bit
  54. CC=x86_64-w64-mingw32-gcc
  55. CXX=x86_64-w64-mingw32-g++
  56. LIBZIPPER_CONFIG+=--host=x86_64-w64-mingw32
  57. EXE=.exe
  58. WX_CONFIG+=--host=x86_64-w64-mingw32
  59. endif
  60. ifeq ($(TARGET),Linux)
  61. VPATH += hidapi/linux
  62. LDFLAGS += -ludev -lexpat
  63. BUILD := $(PWD)/build/linux
  64. endif
  65. ifeq ($(TARGET),Darwin)
  66. # Should match OSX
  67. VPATH += hidapi-mac
  68. LDFLAGS += -framework IOKit -framework CoreFoundation -lexpat
  69. CC=clang -mmacosx-version-min=10.7
  70. CXX=clang++ -stdlib=libc++ -mmacosx-version-min=10.7
  71. WX_CONFIG += --with-macosx-version-min=10.7
  72. BUILD := $(PWD)/build/mac
  73. endif
  74. export CC CXX
  75. all: $(BUILD)/scsi2sd-util$(EXE) $(BUILD)/scsi2sd-monitor$(EXE)
  76. CYAPI = \
  77. $(BUILD)/cybtldr_api2.o \
  78. $(BUILD)/cybtldr_api.o \
  79. $(BUILD)/cybtldr_command.o \
  80. $(BUILD)/cybtldr_parse.o \
  81. ifneq ($(USE_SYSTEM_HIDAPI),Yes)
  82. HIDAPI = \
  83. $(BUILD)/hid.o
  84. endif
  85. OBJ = \
  86. $(CYAPI) $(HIDAPI) \
  87. $(BUILD)/ConfigUtil.o \
  88. $(BUILD)/Firmware.o \
  89. $(BUILD)/BoardPanel.o \
  90. $(BUILD)/TargetPanel.o \
  91. $(BUILD)/SCSI2SD_Bootloader.o \
  92. $(BUILD)/SCSI2SD_HID.o \
  93. $(BUILD)/hidpacket.o \
  94. EXEOBJ = \
  95. $(BUILD)/scsi2sd-util.o \
  96. $(BUILD)/scsi2sd-monitor.o \
  97. ifneq ($(USE_SYSTEM_ZLIB),Yes)
  98. $(OBJ): $(BUILD)/zlib/buildstamp
  99. $(EXEOBJ): $(BUILD)/zlib/buildstamp
  100. $(BUILD)/zlib/buildstamp:
  101. mkdir -p $(dir $@)
  102. ( \
  103. cd $(dir $@) && \
  104. cp -a $(CURDIR)/zlib-1.2.8/* . && \
  105. ./configure --static && \
  106. $(MAKE) \
  107. ) && \
  108. touch $@
  109. endif
  110. ifneq ($(USE_SYSTEM_WX),Yes)
  111. $(OBJ): $(BUILD)/wx/buildstamp
  112. $(EXEOBJ): $(BUILD)/wx/buildstamp
  113. ifneq ($(USE_SYSTEM_ZLIB),Yes)
  114. $(BUILD)/wx/buildstamp: $(BUILD)/zlib/buildstamp
  115. else
  116. $(BUILD)/wx/buildstamp:
  117. endif
  118. mkdir -p $(dir $@)
  119. ( \
  120. cd $(dir $@) && \
  121. $(CURDIR)/wxWidgets/configure $(WX_CONFIG) CPPFLAGS="$(CPPFLAGS_ZLIB)" LDFLAGS="$(LDFLAGS_ZLIB)" && \
  122. $(MAKE) \
  123. ) && \
  124. touch $@
  125. endif
  126. ifneq ($(USE_SYSTEM_ZLIB),Yes)
  127. LIBZIPPER_STATIC=-enable-static
  128. endif
  129. $(OBJ): $(BUILD)/libzipper/buildstamp
  130. $(EXEOBJ): $(BUILD)/libzipper/buildstamp
  131. ifneq ($(USE_SYSTEM_ZLIB),Yes)
  132. $(BUILD)/libzipper/buildstamp: $(BUILD)/zlib/buildstamp
  133. else
  134. $(BUILD)/libzipper/buildstamp:
  135. endif
  136. mkdir -p $(dir $@)
  137. ( \
  138. cd $(dir $@) && \
  139. $(CURDIR)/libzipper-1.0.4/configure ${LIBZIPPER_CONFIG} --disable-shared $(LIBZIPPER_STATIC) && \
  140. $(MAKE) libzipper.la \
  141. ) && \
  142. touch $@
  143. $(BUILD)/%.o: %.c
  144. mkdir -p $(dir $@)
  145. $(CC) $(CPPFLAGS) $(CFLAGS) $< -c -o $@
  146. $(BUILD)/%.o: %.cc
  147. mkdir -p $(dir $@)
  148. ifneq ($(USE_SYSTEM_WX),Yes)
  149. $(CXX) $(CPPFLAGS) $(CXXFLAGS) `$(BUILD)/wx/wx-config --cxxflags` $< -c -o $@
  150. else
  151. $(CXX) $(CPPFLAGS) $(CXXFLAGS) `wx-config-3.0 --cxxflags` $< -c -o $@
  152. endif
  153. $(BUILD)/scsi2sd-util$(EXE): $(OBJ) $(BUILD)/scsi2sd-util.o
  154. mkdir -p $(dir $@)
  155. $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) $(LDFLAGS_WX) -o $@
  156. $(BUILD)/scsi2sd-monitor$(EXE): $(OBJ) $(BUILD)/scsi2sd-monitor.o
  157. mkdir -p $(dir $@)
  158. $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) $(LDFLAGS_WX) -o $@
  159. clean:
  160. rm $(BUILD)/scsi2sd-util$(EXE) $(OBJ) $(BUILD)/libzipper/buildstamp
  161. PREFIX=/usr
  162. install:
  163. install -d $(DESTDIR)/$(PREFIX)/bin
  164. install build/linux/scsi2sd-util $(DESTDIR)/$(PREFIX)/bin
  165. install build/linux/scsi2sd-monitor $(DESTDIR)/$(PREFIX)/bin
  166. dist:
  167. rm -fr $(NAME)-$(VERSION)
  168. mkdir $(NAME)-$(VERSION)
  169. cp -pr build.sh ConfigUtil.cc ConfigUtil.hh scsi2sd-util.spec \
  170. ../SCSI2SD/src/hidpacket.c ../include/hidpacket.h ../include/scsi2sd.h \
  171. cybootloaderutils Firmware.cc Firmware.hh libzipper-1.0.4 Makefile \
  172. SCSI2SD_Bootloader.cc SCSI2SD_Bootloader.hh SCSI2SD_HID.cc SCSI2SD_HID.hh \
  173. scsi2sd-monitor.cc scsi2sd-util.cc TargetPanel.cc TargetPanel.hh \
  174. BoardPanel.cc BoardPanel.hh \
  175. $(NAME)-$(VERSION)
  176. tar jcvf $(NAME)-$(VERSION).tar.bz2 $(NAME)-$(VERSION)