Разогнался я домакоси Как кросскомпилировать из Linux для MacOS? ::) ага, вернулся пересобрать под mingw и что-то я не понял как быть
Сборка для linux идет без проблем если что. Сборка статической библиотеки для Windows также идёт без проблем, а вот .dll уже выплёвывает мне ошибки.
dron@gnu:~/egnaroc$ make TARGET=Windows -j24
x86_64-w64-mingw32-gcc obj/physics.o obj/egnaroc.o obj/ui.o obj/entity.o obj/threader.o obj/event.o obj/asset.o obj/network.o obj/graphics.o obj/engine.o obj/audio.o obj/ui_style.o obj/ui_slider.o obj/ui_container.o obj/nuklear.o obj/ui_toast.o obj/ui_line.o obj/ui_rectangle.o obj/ui_text.o obj/ui_option.o obj/ui_button.o obj/ui_listbox.o obj/ui_dialog.o obj/ui_textbox.o obj/ui_spinner.o obj/ui_browser.o obj/renderable.o obj/texture.o obj/sound.o obj/music.o obj/language.o obj/config.o obj/shader.o obj/animation.o obj/font.o obj/effect.o obj/material.o obj/cmesh.o obj/terrain.o obj/image.o obj/skeleton.o obj/mouse.o obj/dragdrop.o obj/keyboard.o obj/joystick.o obj/instance_object.o obj/landscape.o obj/animated_object.o obj/light.o obj/physics_object.o obj/particles.o obj/camera.o obj/static_object.o obj/list.o obj/dict.o obj/vertex_list.o obj/int_list.o obj/randf.o obj/trigger.o obj/vertex_hashtable.o obj/spline.o obj/renderer.o obj/sky.o obj/SDL_local.o -lmingw32 -lopengl32 -lSDL2main -lSDL2 -mwindows -lSDL2_mixer -lSDL2_net -shared -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/lib/ -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib/ -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/lib/ -o egnaroc.dll
/usr/bin/x86_64-w64-mingw32-ld: obj/texture.o:texture.c:(.text+0xc17): неопределённая ссылка на «__imp_glTexImage3D»
/usr/bin/x86_64-w64-mingw32-ld: obj/texture.o:texture.c:(.text+0x19fa): неопределённая ссылка на «__imp_glCompressedTexImage2D»
/usr/bin/x86_64-w64-mingw32-ld: obj/texture.o:texture.c:(.text+0x1ff4): неопределённая ссылка на «__imp_glTexImage3D»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x134b): неопределённая ссылка на «__imp_glActiveTexture»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x19e8): неопределённая ссылка на «__imp_glActiveTexture»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x1ae8): неопределённая ссылка на «__imp_glActiveTexture»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x1bc8): неопределённая ссылка на «__imp_glActiveTexture»
collect2: error: ld returned 1 exit status
make: *** [Makefile:101: egnaroc.dll] Ошибка 1
dron@gnu:~/egnaroc$
Тоже самое но с -v
dron@gnu:~/egnaroc$ make TARGET=Windows -j24
x86_64-w64-mingw32-gcc -v obj/physics.o obj/egnaroc.o obj/ui.o obj/entity.o obj/threader.o obj/event.o obj/asset.o obj/network.o obj/graphics.o obj/engine.o obj/audio.o obj/ui_style.o obj/ui_slider.o obj/ui_container.o obj/nuklear.o obj/ui_toast.o obj/ui_line.o obj/ui_rectangle.o obj/ui_text.o obj/ui_option.o obj/ui_button.o obj/ui_listbox.o obj/ui_dialog.o obj/ui_textbox.o obj/ui_spinner.o obj/ui_browser.o obj/renderable.o obj/texture.o obj/sound.o obj/music.o obj/language.o obj/config.o obj/shader.o obj/animation.o obj/font.o obj/effect.o obj/material.o obj/cmesh.o obj/terrain.o obj/image.o obj/skeleton.o obj/mouse.o obj/dragdrop.o obj/keyboard.o obj/joystick.o obj/instance_object.o obj/landscape.o obj/animated_object.o obj/light.o obj/physics_object.o obj/particles.o obj/camera.o obj/static_object.o obj/list.o obj/dict.o obj/vertex_list.o obj/int_list.o obj/randf.o obj/trigger.o obj/vertex_hashtable.o obj/spline.o obj/renderer.o obj/sky.o obj/SDL_local.o -lmingw32 -lopengl32 -lSDL2main -lSDL2 -mwindows -lSDL2_mixer -lSDL2_net -shared -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/lib/ -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib/ -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/lib/ -o egnaroc.dll
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/lto-wrapper
Target: x86_64-w64-mingw32
Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --with-headers=/usr/x86_64-w64-mingw32/include --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-lto --enable-threads=win32 --program-suffix=-win32 --program-prefix=x86_64-w64-mingw32- --target=x86_64-w64-mingw32 --with-as=/usr/bin/x86_64-w64-mingw32-as --with-ld=/usr/bin/x86_64-w64-mingw32-ld --enable-libatomic --enable-libstdcxx-filesystem-ts=yes --enable-dependency-tracking
Thread model: win32
gcc version 8.3-win32 20190709 (GCC)
COMPILER_PATH=/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/:/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/:/usr/lib/gcc/x86_64-w64-mingw32/:/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/:/usr/lib/gcc/x86_64-w64-mingw32/:/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/:/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/../../../../x86_64-w64-mingw32/lib/
COLLECT_GCC_OPTIONS='-v' '-mwindows' '-shared' '-L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/bin/' '-L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/lib/' '-L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/bin/' '-L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib/' '-L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/bin/' '-L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/lib/' '-o' 'egnaroc.dll' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/collect2 -plugin /usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/lto-wrapper -plugin-opt=-fresolution=/tmp/ccNDveRD.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lgdi32 -plugin-opt=-pass-through=-lcomdlg32 -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -m i386pep --subsystem windows --shared -Bdynamic -e DllMainCRTStartup --enable-auto-image-base -o egnaroc.dll /usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/../../../../x86_64-w64-mingw32/lib/dllcrt2.o /usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/crtbegin.o -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/lib/ -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib/ -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/bin/ -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/lib/ -L/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32 -L/usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/../../../../x86_64-w64-mingw32/lib obj/physics.o obj/egnaroc.o obj/ui.o obj/entity.o obj/threader.o obj/event.o obj/asset.o obj/network.o obj/graphics.o obj/engine.o obj/audio.o obj/ui_style.o obj/ui_slider.o obj/ui_container.o obj/nuklear.o obj/ui_toast.o obj/ui_line.o obj/ui_rectangle.o obj/ui_text.o obj/ui_option.o obj/ui_button.o obj/ui_listbox.o obj/ui_dialog.o obj/ui_textbox.o obj/ui_spinner.o obj/ui_browser.o obj/renderable.o obj/texture.o obj/sound.o obj/music.o obj/language.o obj/config.o obj/shader.o obj/animation.o obj/font.o obj/effect.o obj/material.o obj/cmesh.o obj/terrain.o obj/image.o obj/skeleton.o obj/mouse.o obj/dragdrop.o obj/keyboard.o obj/joystick.o obj/instance_object.o obj/landscape.o obj/animated_object.o obj/light.o obj/physics_object.o obj/particles.o obj/camera.o obj/static_object.o obj/list.o obj/dict.o obj/vertex_list.o obj/int_list.o obj/randf.o obj/trigger.o obj/vertex_hashtable.o obj/spline.o obj/renderer.o obj/sky.o obj/SDL_local.o -lmingw32 -lopengl32 -lSDL2main -lSDL2 -lSDL2_mixer -lSDL2_net -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lgdi32 -lcomdlg32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt /usr/lib/gcc/x86_64-w64-mingw32/8.3-win32/crtend.o
/usr/bin/x86_64-w64-mingw32-ld: obj/texture.o:texture.c:(.text+0xc17): неопределённая ссылка на «__imp_glTexImage3D»
/usr/bin/x86_64-w64-mingw32-ld: obj/texture.o:texture.c:(.text+0x19fa): неопределённая ссылка на «__imp_glCompressedTexImage2D»
/usr/bin/x86_64-w64-mingw32-ld: obj/texture.o:texture.c:(.text+0x1ff4): неопределённая ссылка на «__imp_glTexImage3D»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x134b): неопределённая ссылка на «__imp_glActiveTexture»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x19e8): неопределённая ссылка на «__imp_glActiveTexture»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x1ae8): неопределённая ссылка на «__imp_glActiveTexture»
/usr/bin/x86_64-w64-mingw32-ld: obj/shader.o:shader.c:(.text+0x1bc8): неопределённая ссылка на «__imp_glActiveTexture»
collect2: error: ld returned 1 exit status
make: *** [Makefile:101: egnaroc.dll] Ошибка 1
dron@gnu:~/egnaroc$
libopengl32
это же просто заглушка так?
Окай, иду сюда cd /usr/x86_64-w64-mingw32/lib/
и ищу функции
dron@gnu:/usr/x86_64-w64-mingw32/lib$ nm ./*.a | grep glTexImage
0000000000000000 T glTexImage2D
0000000000000000 I __imp_glTexImage2D
0000000000000000 T glTexImage1D
0000000000000000 I __imp_glTexImage1D
dron@gnu:/usr/x86_64-w64-mingw32/lib$ nm ./* | grep glActiveTexture
dron@gnu:/usr/x86_64-w64-mingw32/lib$ nm ./* | grep glCompressedTexImage2D
dron@gnu:/usr/x86_64-w64-mingw32/lib$
Эмм, окай нету ничего и понятное дело откуда ошибки, хотя с другой стороны я же определяю расширения через SDL_GL_GetProcAddress
и нужных функций по дефолту может просто не быть.
Иду в место где у меня определяются gl функции. Там я экранирую оперделение именно их
потому что они по дефолту определены в SDL/SDL_opengl.h
и если убрать экранирование определения функций то уже сборка валится из за переопределения функций, но приведу то как идёт загрузка расширений
sdl_local.h
typedef void (APIENTRY * GLACTIVETEXTUREFN)( GLenum texture );
typedef void (APIENTRY * GLCOMPRESSEDTEXIMAGE2DFN)(GLenum target, GLint level, GLenum format, GLsizei width, GLsizei height, GLint border, GLsizei imagesize, const GLvoid* data);
typedef void (APIENTRY * GLTEXIMAGE3DFN)(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data);
#ifndef __MINGW32__
#ifndef __unix__
extern GLACTIVETEXTUREFN glActiveTexture;
extern GLCOMPRESSEDTEXIMAGE2DFN glCompressedTexImage2D;
extern GLTEXIMAGE3DFN glTexImage3D;
#endif
#endif
sdl_local.c
#ifndef __MINGW32__
#ifndef __unix__
GLACTIVETEXTUREFN glActiveTexture = NULL;
GLCOMPRESSEDTEXIMAGE2DFN glCompressedTexImage2D = NULL;
GLTEXIMAGE3DFN glTexImage3D = NULL;
#endif
#endif
#define SDL_GL_LoadExtension(type, name) \
name = (type)SDL_GL_GetProcAddress(#name); \
if (name == NULL) { \
fprintf(stderr, "Failed to load function '%s', looking for function '%s'...\n", #name, #name"EXT"); \
name = (type)SDL_GL_GetProcAddress(#name"EXT"); \
} \
if (name == NULL) { \
fprintf(stderr, "Failed to load function '%s', looking for function '%s'...\n", #name"EXT", #name"ARB"); \
name = (type)SDL_GL_GetProcAddress(#name"ARB"); \
} \
if (name == NULL) { fprintf(stderr, "Completely failed to load OpenGL extension function '%s'. Use of this function will crash\n", #name); }
#ifndef __MINGW32__
#ifndef __unix__
SDL_GL_LoadExtension(GLACTIVETEXTUREFN, glActiveTexture);
SDL_GL_LoadExtension(GLCOMPRESSEDTEXIMAGE2DFN, glCompressedTexImage2D);
SDL_GL_LoadExtension(GLTEXIMAGE3DFN, glTexImage3D);
#endif
#endif
Для Windows cобираю на Debian testing, mingw системный, SDL библиотеки из официальных ссылок. Никакой отсебятины лишней.
Сама сборка идёт вот так Makefile
SRC = $(wildcard src/*.c) $(wildcard src/*/*.c)
OBJ = $(addprefix obj/,$(notdir $(SRC:.c=.o)))
CFLAGS = -I ./include -std=gnu99 -Wextra -Wall -Werror -Wno-unused -Wno-unused-parameter -O3
LFLAGS = -lSDL2 -lSDL2_mixer -lSDL2_net -lm -shared
PLATFORM = $(shell uname)
###########################################
ifeq ($(findstring Linux,$(PLATFORM)),Linux)
DYNAMIC = libegnaroc.so
STATIC = libegnaroc.a
CFLAGS += -fPIC
LFLAGS += -lGL
ifeq ($(findstring Windows,$(TARGET)),Windows)
CC = x86_64-w64-mingw32-gcc -v
AR = x86_64-w64-mingw32-gcc-ar
DYNAMIC = egnaroc.dll
STATIC = libegnaroc.a
# CFLAGS += -Dmain=SDL_main
LFLAGS = -lmingw32 -lopengl32 -lSDL2main -lSDL2 -mwindows -lSDL2_mixer -lSDL2_net -shared
LFLAGS += -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/bin/
LFLAGS += -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/lib/
CFLAGS += -I./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/include/
CFLAGS += -I./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/x86_64-w64-mingw32/include/SDL2/ -Dmain=SDL_main
LFLAGS += -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/bin/
LFLAGS += -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib/
CFLAGS += -I./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/x86_64-w64-mingw32/include/
LFLAGS += -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/bin/
LFLAGS += -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/lib/
CFLAGS += -I./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/x86_64-w64-mingw32/include/
ifeq ($(findstring i686,$(ARCH)),i686)
CC = i686-w64-mingw32-gcc
AR = i686-w64-mingw32-gcc-ar
DYNAMIC = egnaroc.dll
STATIC = libegnaroc.a
CFLAGS += -Dmain=SDL_main
LFLAGS = -lmingw32 -lopengl32 -lSDL2main -lSDL2 -mwindows -lSDL2_mixer -lSDL2_net -shared
LFLAGS += -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/i686-w64-mingw32/bin/
LFLAGS += -L./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/i686-w64-mingw32/lib/
CFLAGS += -I./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/i686-w64-mingw32/include/
CFLAGS += -I./depends/windows/SDL2-devel-2.0.10-mingw/SDL2-2.0.10/i686-w64-mingw32/include/SDL2/
LFLAGS += -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/i686-w64-mingw32/bin/
LFLAGS += -L./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/i686-w64-mingw32/lib/
CFLAGS += -I./depends/windows/SDL2_mixer-devel-2.0.4-mingw/SDL2_mixer-2.0.4/i686-w64-mingw32/include/
LFLAGS += -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/i686-w64-mingw32/bin/
LFLAGS += -L./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/i686-w64-mingw32/lib/
CFLAGS += -I./depends/windows/SDL2_net-devel-2.0.1-mingw/SDL2_net-2.0.1/i686-w64-mingw32/include/
endif
endif
endif
#############################################
###TODO: NEED TEST BUILD
ifeq ($(findstring Darwin,$(PLATFORM)),Darwin)
DYNAMIC = libegnaroc.so
STATIC = libegnaroc.a
CFLAGS += -fPIC
# LFLAGS += -lGL
LFLAGS += -framework OpenGL
endif
#############################################
###TODO: NEED TEST BUILD
ifeq ($(findstring MINGW,$(PLATFORM)),MINGW)
DYNAMIC = egnaroc.dll
STATIC = libegnaroc.a
LFLAGS = -lmingw32 -lopengl32 -lSDL2main -lSDL2 -lSDL2_mixer -lSDL2_net -shared -g
endif
#############################################
###TODO: NEED TEST BUILD
ifeq ($(findstring CYGWIN,$(PLATFORM)),CYGWIN)
DYNAMIC = egnaroc.dll
STATIC = libegnaroc.a
LFLAGS = -lmingw32 -lopengl32 -lSDL2main -lSDL2 -lSDL2_mixer -lSDL2_net -shared -g
endif
all:$(STATIC) $(DYNAMIC)
static:$(STATIC)
dynamic:$(DYNAMIC)
$(DYNAMIC): $(OBJ)
$(CC) $(OBJ) $(LFLAGS) -o $@
$(STATIC): $(OBJ)
$(AR) rcs $@ $(OBJ)
obj/%.o: src/%.c | obj
$(CC) $< -c $(CFLAGS) -o $@
obj/%.o: src/*/%.c | obj
$(CC) $< -c $(CFLAGS) -o $@
И как быть? И да я пробовал прилинковать glew и прочий мусор, всё одножренственно. И ещё раз да я хочу грузить расширения через SDL_GL_GetProcAddress, а не через утилитарные библиотеки.
Короче я изнежился тем что в Linux всё тупо работает из коробки и у меня прям растеряшки ^.^ а может просто лапки я хз :D
И да я гуглил проблему, перечислять всё не буду но первые 50 ссылок в гугле я видал, читал и пробовал, нихрена непонятно.
Тут дело не в том что не работает, туту дело в том что я непонимаю что я делаю не так. По идее на этапе сборки должно быть ровно похер на то что есть ли у меня где то функции во вне или нет. Но… короче, вот =)
UDP
Для себя корче я временно (пока не понял кто виноват в подобном поведении mingw или sdl2) скопировал SDL_opengl.h и изменил его добавив ко всем опеределениям
#if !defined(__MINGW32__)
GLAPI APIENTRY blabla bla
#endif
а в нужных местах переключаю заголовки
#if defined(__MINGW32__)
#include "SDL2/SDL_local_opengl.h"
#else
#include "SDL2/SDL_opengl.h"
#endif
На форуме SDL ещё с 2016 года висит подобный вопрос, но никто не ответил, я фигею. https://discourse.libsdl.org/t/glactivetexture-declaration/22001
Я библиотеку собрал, под вайном запустил и всплакнул, вылезли всякие fixme из mingw-w64, и артефакты странные, придётся накатить венду и проверить ещё там, благо осталась лицензионка на разделе ноута (если живая ещё хехе) Всем спасибо за советы