| @@ -11,6 +11,8 @@ AR ?= ar | |||||
| CC ?= gcc | CC ?= gcc | ||||
| CXX ?= g++ | CXX ?= g++ | ||||
| WINECC ?= winegcc | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Auto-detect OS if not defined | # Auto-detect OS if not defined | ||||
| @@ -10,8 +10,6 @@ include ../modules/Makefile.mk | |||||
| # ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
| WINECC ?= winegcc | |||||
| BUILD_CXX_FLAGS += $(JACKBRIDGE_FLAGS) | BUILD_CXX_FLAGS += $(JACKBRIDGE_FLAGS) | ||||
| LINK_FLAGS += $(JACKBRIDGE_LIBS) | LINK_FLAGS += $(JACKBRIDGE_LIBS) | ||||
| @@ -29,14 +29,24 @@ else | |||||
| OBJS += $(OBJDIR)/Window.cpp.o | OBJS += $(OBJDIR)/Window.cpp.o | ||||
| endif | endif | ||||
| OBJS_wine = \ | |||||
| $(OBJDIR)/Application.cpp-wine.o \ | |||||
| $(OBJDIR)/Color.cpp-wine.o \ | |||||
| $(OBJDIR)/Geometry.cpp-wine.o \ | |||||
| $(OBJDIR)/Image.cpp-wine.o \ | |||||
| $(OBJDIR)/ImageWidgets.cpp-wine.o \ | |||||
| $(OBJDIR)/Widget.cpp-wine.o \ | |||||
| $(OBJDIR)/Window.cpp-wine.o | |||||
| # ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
| all: $(MODULEDIR)/$(MODULENAME).a | |||||
| all: $(MODULEDIR)/$(MODULENAME).a | |||||
| wine: $(MODULEDIR)/$(MODULENAME).wine.a | |||||
| # ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
| clean: | clean: | ||||
| rm -f $(OBJDIR)/*.o $(MODULEDIR)/$(MODULENAME)*.a | |||||
| rm -f $(OBJDIR)/*.o $(MODULEDIR)/$(MODULENAME)*.a $(MODULEDIR)/$(MODULENAME).wine.a | |||||
| debug: | debug: | ||||
| $(MAKE) DEBUG=true | $(MAKE) DEBUG=true | ||||
| @@ -49,6 +59,12 @@ $(MODULEDIR)/$(MODULENAME).a: $(OBJS) | |||||
| @rm -f $@ | @rm -f $@ | ||||
| @$(AR) crs $@ $^ | @$(AR) crs $@ $^ | ||||
| $(MODULEDIR)/$(MODULENAME).wine.a: $(OBJS_wine) | |||||
| -@mkdir -p $(MODULEDIR) | |||||
| @echo "Creating $(MODULENAME).wine.a" | |||||
| @rm -f $@ | |||||
| @$(AR) crs $@ $^ | |||||
| # ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
| $(OBJDIR)/%.cpp.o: src/%.cpp | $(OBJDIR)/%.cpp.o: src/%.cpp | ||||
| @@ -56,11 +72,17 @@ $(OBJDIR)/%.cpp.o: src/%.cpp | |||||
| @echo "Compiling $<" | @echo "Compiling $<" | ||||
| @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | ||||
| $(OBJDIR)/%.cpp-wine.o: src/%.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling $< (Wine)" | |||||
| @$(WINECC) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||||
| $(OBJDIR)/Window.mm.o: src/Window.cpp | $(OBJDIR)/Window.mm.o: src/Window.cpp | ||||
| -@mkdir -p $(OBJDIR) | -@mkdir -p $(OBJDIR) | ||||
| @echo "Compiling $<" | @echo "Compiling $<" | ||||
| @$(CXX) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@ | @$(CXX) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@ | ||||
| -include $(OBJS:%.o=%.d) | -include $(OBJS:%.o=%.d) | ||||
| -include $(OBJS_wine:%.o=%.d) | |||||
| # ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -32,6 +32,8 @@ | |||||
| #if defined(DISTRHO_OS_WINDOWS) | #if defined(DISTRHO_OS_WINDOWS) | ||||
| # include "pugl/pugl_win.cpp" | # include "pugl/pugl_win.cpp" | ||||
| # undef max | |||||
| # undef min | |||||
| #elif defined(DISTRHO_OS_MAC) | #elif defined(DISTRHO_OS_MAC) | ||||
| # define PuglWindow DISTRHO_JOIN_MACRO(PuglWindow, DGL_NAMESPACE) | # define PuglWindow DISTRHO_JOIN_MACRO(PuglWindow, DGL_NAMESPACE) | ||||
| # define PuglOpenGLView DISTRHO_JOIN_MACRO(PuglOpenGLView, DGL_NAMESPACE) | # define PuglOpenGLView DISTRHO_JOIN_MACRO(PuglOpenGLView, DGL_NAMESPACE) | ||||
| @@ -573,7 +575,7 @@ struct Window::PrivateData { | |||||
| #if defined(DISTRHO_OS_WINDOWS) | #if defined(DISTRHO_OS_WINDOWS) | ||||
| const int winFlags = WS_POPUPWINDOW | WS_CAPTION | (fResizable ? WS_SIZEBOX : 0x0); | const int winFlags = WS_POPUPWINDOW | WS_CAPTION | (fResizable ? WS_SIZEBOX : 0x0); | ||||
| RECT wr = { 0, 0, static_cast<long>(width), static_cast<long>(height) }; | |||||
| RECT wr = { 0, 0, static_cast<LONG>(width), static_cast<LONG>(height) }; | |||||
| AdjustWindowRectEx(&wr, fUsingEmbed ? WS_CHILD : winFlags, FALSE, WS_EX_TOPMOST); | AdjustWindowRectEx(&wr, fUsingEmbed ? WS_CHILD : winFlags, FALSE, WS_EX_TOPMOST); | ||||
| SetWindowPos(hwnd, 0, 0, 0, wr.right-wr.left, wr.bottom-wr.top, | SetWindowPos(hwnd, 0, 0, 0, wr.right-wr.left, wr.bottom-wr.top, | ||||
| @@ -111,7 +111,11 @@ puglCreateWindow(PuglView* view, const char* title) | |||||
| static int wc_count = 0; | static int wc_count = 0; | ||||
| char classNameBuf[256]; | char classNameBuf[256]; | ||||
| std::srand((std::time(NULL))); | std::srand((std::time(NULL))); | ||||
| #ifdef __WINE__ | |||||
| std::snprintf(classNameBuf, sizeof(classNameBuf), "%s_%d-%d", title, std::rand(), ++wc_count); | |||||
| #else | |||||
| _snprintf(classNameBuf, sizeof(classNameBuf), "%s_%d-%d", title, std::rand(), ++wc_count); | _snprintf(classNameBuf, sizeof(classNameBuf), "%s_%d-%d", title, std::rand(), ++wc_count); | ||||
| #endif | |||||
| classNameBuf[sizeof(classNameBuf)-1] = '\0'; | classNameBuf[sizeof(classNameBuf)-1] = '\0'; | ||||
| impl->wc.style = CS_OWNDC; | impl->wc.style = CS_OWNDC; | ||||