Makefile 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # Makefile for win32 platforms with mingw under msys or linux
  2. TARGET = sdlpal.exe
  3. TEST_TARGET = sdlpal-tests.exe
  4. HOST =
  5. TEST_CCFLAGS =
  6. DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td
  7. GTEST_DIR = ../3rd/googletest/googletest
  8. CFILES = $(wildcard ../adplug/*.c) $(wildcard ../libmad/*.c) $(wildcard ../liboggvorbis/src/*.c) $(wildcard ../*.c) $(wildcard ../native_midi/*.c) $(wildcard ../win32/*.c)
  9. CPPFILES = $(wildcard ../adplug/*.cpp) $(wildcard ../*.cpp) $(wildcard ./*.cpp)
  10. RCFILES = $(wildcard ./sdlpal.rc)
  11. OBJFILES = $(CFILES:.c=.o) $(CPPFILES:.cpp=.o) $(RCFILES:.rc=.o)
  12. DEPFILES = $(CFILES:.c=.d) $(CPPFILES:.cpp=.d)
  13. TEST_CPPFILES = $(wildcard ../tests/*.cpp)
  14. TEST_OBJFILES = $(TEST_CPPFILES:.cpp=.o)
  15. override CCFLAGS += `sdl2-config --cflags` -g -msse2 -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS)
  16. CXXFLAGS = $(CCFLAGS) -std=c++11
  17. CFLAGS = $(CCFLAGS) -std=gnu99
  18. LDFLAGS = `sdl2-config --libs` -lm -lwinmm -lole32 -loleaut32 -limm32 -lcomctl32 -luuid -ldxguid -lversion -static -static-libgcc -static-libstdc++
  19. TEST_CXXFLAGS += -isystem $(GTEST_DIR)/include -I $(GTEST_DIR) -g -Wall -Wextra -pthread
  20. POSTCOMPILE = @mv -f $*.Td $*.d && touch $@
  21. .PHONY : all clean check
  22. all: $(TARGET)
  23. $(TARGET): $(OBJFILES)
  24. @echo [LD] $@
  25. @$(HOST)g++ $^ -o $@ $(LDFLAGS)
  26. gtest-all.o : $(GTEST_DIR)/src/gtest-all.cc %.d
  27. @echo [CC] $<
  28. @$(HOST)g++ $(DEPFLAGS) $(TEST_CXXFLAGS) -c $< -o $@
  29. $(POSTCOMPILE)
  30. %.o: %.c %.d
  31. @echo [CC] $<
  32. @$(HOST)gcc $(DEPFLAGS) $(CFLAGS) -c $< -o $@
  33. $(POSTCOMPILE)
  34. %.o: %.cpp %.d
  35. @echo [CC] $<
  36. @$(HOST)g++ $(DEPFLAGS) $(CXXFLAGS) -c $< -o $@
  37. $(POSTCOMPILE)
  38. %.o: %.rc
  39. @echo [RES] $^
  40. @$(HOST)windres -i $^ -o $@
  41. $(TEST_TARGET): $(OBJFILES) $(TEST_OBJFILES) gtest-all.o
  42. @echo [LD] $@
  43. @$(HOST)g++ $^ -o $@ $(LDFLAGS) -pthread
  44. clean:
  45. -rm -f $(TARGET) $(TEST_TARGET) $(OBJFILES) $(TEST_OBJFILES) $(DEPFILES)
  46. %.d: ;
  47. .PRECIOUS: %.d
  48. -include $(DEPFILES)
  49. check: TEST_CCFLAGS = -DUNIT_TEST=1 -isystem $(GTEST_DIR)/include
  50. check: $(TEST_TARGET)
  51. @echo [EXEC] $(TEST_TARGET)
  52. @chmod +x $(TEST_TARGET)
  53. @exec $(TEST_TARGET)