Makefile.mingw 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # Makefile for win32 platforms with mingw under win32
  2. TARGET = sdlpal.exe
  3. TEST_TARGET = sdlpal-tests.exe
  4. HOST =
  5. TEST_CCFLAGS =
  6. GCCV6P := $(shell expr `$(HOST)g++ -dumpversion | cut -f1 -d.` \>= 6)
  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. TEST_CPPFILES = $(wildcard ../tests/*.cpp)
  13. TEST_OBJFILES = $(TEST_CPPFILES:.cpp=.o)
  14. override CCFLAGS += -g -msse2 -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS)
  15. CXXFLAGS = $(CCFLAGS)
  16. CFLAGS = $(CCFLAGS) -std=gnu99
  17. # GCC v6 or higher has already defaults to gnu++14
  18. ifeq "$(GCCV6P)" "0"
  19. CXXFLAGS += -std=gnu++14
  20. else
  21. CXXFLAGS += -std=c++11
  22. endif
  23. LDFLAGS = -lmingw32 -lSDL2main -lSDL2 -mwindows -lm -lwinmm -lole32 -loleaut32 -limm32 -lcomctl32 -luuid -ldxguid -lversion -static -static-libgcc -static-libstdc++
  24. TEST_CXXFLAGS += -isystem $(GTEST_DIR)/include -I $(GTEST_DIR) -g -Wall -Wextra -pthread
  25. .PHONY : all clean check
  26. all: $(TARGET)
  27. $(TARGET): $(OBJFILES)
  28. @echo [LD] $@
  29. @$(HOST)g++ $^ -o $@ $(LDFLAGS)
  30. gtest-all.o : $(GTEST_DIR)/src/gtest-all.cc
  31. @echo [CC] $^
  32. @$(HOST)g++ $(TEST_CXXFLAGS) -c $^ -o $@
  33. %.o: %.c
  34. @echo [CC] $^
  35. @$(HOST)gcc $(CFLAGS) -c $^ -o $@
  36. %.o: %.cpp
  37. @echo [CC] $^
  38. @$(HOST)g++ $(CXXFLAGS) -c $^ -o $@
  39. %.o: %.rc
  40. @echo [RES] $^
  41. @$(HOST)windres -i $^ -o $@
  42. $(TEST_TARGET): $(OBJFILES) $(TEST_OBJFILES) gtest-all.o
  43. @echo [LD] $@
  44. @$(HOST)g++ $^ -o $@ $(LDFLAGS) -pthread
  45. clean:
  46. -del /Q $(subst /,\,$(TARGET)) $(subst /,\,$(TEST_TARGET)) $(subst /,\,$(OBJFILES)) $(subst /,\,$(TEST_OBJFILES))
  47. check: TEST_CCFLAGS = -DUNIT_TEST=1 -isystem $(GTEST_DIR)/include
  48. check: $(TEST_TARGET)
  49. @echo [EXEC] $(TEST_TARGET)
  50. @chmod +x $(TEST_TARGET)
  51. @exec $(TEST_TARGET)