Browse Source

added mingw makefile ( static build )

Pal Lockheart 7 years ago
parent
commit
f2233d05bb
5 changed files with 69 additions and 33 deletions
  1. 2 0
      common.h
  2. 2 0
      resampler.c
  3. 30 0
      win32/Makefile
  4. 33 33
      win32/sdlpal.rc
  5. 2 0
      win32/win32.cpp

+ 2 - 0
common.h

@@ -64,6 +64,7 @@ extern "C"
 
 #endif
 
+#if !defined(__cplusplus)
 #ifndef max
 #define max(a, b)    (((a) > (b)) ? (a) : (b))
 #endif
@@ -71,6 +72,7 @@ extern "C"
 #ifndef min
 #define min(a, b)    (((a) < (b)) ? (a) : (b))
 #endif
+#endif
 
 /* This is need when compiled with SDL 1.2 */
 #ifndef SDL_FORCE_INLINE

+ 2 - 0
resampler.c

@@ -2,10 +2,12 @@
 #include <string.h>
 #define _USE_MATH_DEFINES
 #include <math.h>
+#if !defined(__MINGW32__) && !defined(__EMSCRIPTEN__)
 #if (defined(_M_IX86) || defined(__i386__) || defined(_M_X64) || defined(__amd64__))
 #include <xmmintrin.h>
 #define RESAMPLER_SSE
 #endif
+#endif
 
 #ifdef _MSC_VER
 #define ALIGNED     _declspec(align(16))

+ 30 - 0
win32/Makefile

@@ -0,0 +1,30 @@
+# Makefile for win32 platforms with mingw
+
+TARGET = sdlpal.exe
+
+HOST =
+
+CFILES = $(wildcard ../adplug/*.c) $(wildcard ../libmad/*.c) $(wildcard ../liboggvorbis/src/*.c) $(wildcard ../*.c) ../native_midi/native_midi_win32.c ../native_midi/native_midi_common.c
+CPPFILES = $(wildcard ../adplug/*.cpp) $(wildcard ../*.cpp) $(wildcard ./*.cpp)
+OBJFILES = $(CFILES:.c=.o) $(CPPFILES:.cpp=.o) sdlpal.o
+
+override CCFLAGS += `sdl2-config --cflags` -msse -Wall -O2 -fno-strict-aliasing -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS
+CXXFLAGS = $(CCFLAGS) -std=c++11
+CFLAGS = $(CCFLAGS) -std=gnu99
+LDFLAGS = `sdl2-config --libs` -lm -lwinmm -lole32 -loleaut32 -limm32 -lcomctl32 -luuid -ldxguid -lversion -static -static-libgcc -static-libstdc++
+
+$(TARGET): $(OBJFILES)
+	$(HOST)g++ $(OBJFILES) -o $(TARGET) $(LDFLAGS)
+	$(HOST)strip $(TARGET)
+
+%.o: %.c
+	$(HOST)gcc $(CFLAGS) -c $< -o $@
+
+%.o: %.cpp
+	$(HOST)g++ $(CXXFLAGS) -c $< -o $@
+	
+%.o: %.rc
+	windres -i $< -o $@
+
+clean:
+	-rm -f $(TARGET) *.o ../*.o ../adplug/*.o ../libmad/*.o ../liboggvorbis/src/*.o

+ 33 - 33
win32/sdlpal.rc

@@ -110,22 +110,22 @@ END
 
 IDD_LAUNCHER DLGINIT
 BEGIN
-    IDC_CD, 0x403, 4, 0
+    IDC_CD, 0x403, 4, 0,
 0x504d, 0x0033, 
-    IDC_CD, 0x403, 4, 0
+    IDC_CD, 0x403, 4, 0,
 0x474f, 0x0047, 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 4, 0,
 0x4952, 0x0058, 
-    IDC_BGM, 0x403, 5, 0
-0x494d, 0x4944, "\000" 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 5, 0,
+0x494d, 0x4944, "\000", 
+    IDC_BGM, 0x403, 4, 0,
 0x504d, 0x0033, 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 4, 0,
 0x474f, 0x0047, 
-    IDC_OPL, 0x403, 7, 0
-0x4f44, 0x4253, 0x584f, "\000" 
-    IDC_OPL, 0x403, 5, 0
-0x414d, 0x454d, "\000" 
+    IDC_OPL, 0x403, 7, 0,
+0x4f44, 0x4253, 0x584f, "\000", 
+    IDC_OPL, 0x403, 5, 0,
+0x414d, 0x454d, "\000", 
     0
 END
 
@@ -247,22 +247,22 @@ END
 
 IDD_LAUNCHER DLGINIT
 BEGIN
-    IDC_CD, 0x403, 4, 0
+    IDC_CD, 0x403, 4, 0,
 0x504d, 0x0033, 
-    IDC_CD, 0x403, 4, 0
+    IDC_CD, 0x403, 4, 0,
 0x474f, 0x0047, 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 4, 0,
 0x4952, 0x0058, 
-    IDC_BGM, 0x403, 5, 0
-0x494d, 0x4944, "\000" 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 5, 0,
+0x494d, 0x4944, "\000", 
+    IDC_BGM, 0x403, 4, 0,
 0x504d, 0x0033, 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 4, 0,
 0x474f, 0x0047, 
-    IDC_OPL, 0x403, 7, 0
-0x4f44, 0x4253, 0x584f, "\000" 
-    IDC_OPL, 0x403, 5, 0
-0x414d, 0x454d, "\000" 
+    IDC_OPL, 0x403, 7, 0,
+0x4f44, 0x4253, 0x584f, "\000", 
+    IDC_OPL, 0x403, 5, 0,
+0x414d, 0x454d, "\000", 
     0
 END
 
@@ -459,22 +459,22 @@ END
 
 IDD_LAUNCHER DLGINIT
 BEGIN
-    IDC_CD, 0x403, 4, 0
+    IDC_CD, 0x403, 4, 0,
 0x504d, 0x0033, 
-    IDC_CD, 0x403, 4, 0
+    IDC_CD, 0x403, 4, 0,
 0x474f, 0x0047, 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 4, 0,
 0x4952, 0x0058, 
-    IDC_BGM, 0x403, 5, 0
-0x494d, 0x4944, "\000" 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 5, 0,
+0x494d, 0x4944, "\000", 
+    IDC_BGM, 0x403, 4, 0,
 0x504d, 0x0033, 
-    IDC_BGM, 0x403, 4, 0
+    IDC_BGM, 0x403, 4, 0,
 0x474f, 0x0047, 
-    IDC_OPL, 0x403, 7, 0
-0x4f44, 0x4253, 0x584f, "\000" 
-    IDC_OPL, 0x403, 5, 0
-0x414d, 0x454d, "\000" 
+    IDC_OPL, 0x403, 7, 0,
+0x4f44, 0x4253, 0x584f, "\000", 
+    IDC_OPL, 0x403, 5, 0,
+0x414d, 0x454d, "\000", 
     0
 END
 

+ 2 - 0
win32/win32.cpp

@@ -266,6 +266,7 @@ INT_PTR CALLBACK LauncherDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPAR
 extern "C" int UTIL_Platform_Init(int argc, char* argv[])
 {
 	g_hInstance = GetModuleHandle(nullptr);
+#ifndef __MINGW32__ // mingw's windows sdk dont support GetThreadUILanguage, since it's a vista+ API
 	g_wLanguage = GetThreadUILanguage();
 	if (PRIMARYLANGID(g_wLanguage) == LANG_CHINESE)
 	{
@@ -275,6 +276,7 @@ extern "C" int UTIL_Platform_Init(int argc, char* argv[])
 			g_wLanguage = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL);
 	}
 	else
+#endif
 		g_wLanguage = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
 	auto dlg = (LPCDLGTEMPLATE)LockResource(LoadResource(g_hInstance, FindResourceEx(g_hInstance, RT_DIALOG, MAKEINTRESOURCE(IDD_LAUNCHER), g_wLanguage)));
 	if (gConfig.fLaunchSetting && DialogBoxIndirect(GetModuleHandle(nullptr), dlg, nullptr, LauncherDialogProc) != IDOK)