mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
GL entrypoint resolution is now done manually. This has a couple immediate benefits, such as not having to retrieve hundreds of functions pointers that we'll never use. It's also nice to have an exact overview of all the entrypoints used by mkxp. This change allows mkxp to run fine with core contexts, not sure how relevant that is going to be in the future. What's noteworthy is that _all_ entrypoints, even the ones core in 1.1 and guaranteed to be in every libGL, are resolved dynamically. This has the added benefit of not having to link directly against libGL anymore, which also cleans up the output of `ldd` quite a bit (SDL2 loads most system deps dynamically at runtime). GL headers are still required at build time.
282 lines
5.6 KiB
Prolog
282 lines
5.6 KiB
Prolog
|
|
|
|
TEMPLATE = app
|
|
QT =
|
|
TARGET = mkxp
|
|
DEPENDPATH += src shader assets
|
|
INCLUDEPATH += . src
|
|
|
|
CONFIG(release, debug|release): DEFINES += NDEBUG
|
|
|
|
isEmpty(BINDING) {
|
|
BINDING = MRI
|
|
}
|
|
|
|
contains(BINDING, MRI) {
|
|
contains(_HAVE_BINDING, YES) {
|
|
error("Only one binding may be selected")
|
|
}
|
|
_HAVE_BINDING = YES
|
|
|
|
CONFIG += BINDING_MRI
|
|
}
|
|
|
|
contains(BINDING, MRUBY) {
|
|
contains(_HAVE_BINDING, YES) {
|
|
error("Only one binding may be selected")
|
|
}
|
|
_HAVE_BINDING = YES
|
|
|
|
CONFIG += BINDING_MRUBY
|
|
}
|
|
|
|
contains(BINDING, NULL) {
|
|
contains(_HAVE_BINDING, YES) {
|
|
error("Only one binding may be selected")
|
|
}
|
|
_HAVE_BINDING = YES
|
|
|
|
CONFIG += BINDING_NULL
|
|
}
|
|
|
|
RGSS2 {
|
|
DEFINES += RGSS2
|
|
}
|
|
|
|
# Requires RGSS2
|
|
RGSS3 {
|
|
DEFINES += RGSS3
|
|
}
|
|
|
|
unix {
|
|
CONFIG += link_pkgconfig
|
|
PKGCONFIG += sigc++-2.0 pixman-1 zlib physfs \
|
|
sdl2 SDL2_image SDL2_ttf SDL_sound openal
|
|
|
|
RGSS2 {
|
|
PKGCONFIG += vorbisfile
|
|
}
|
|
|
|
# Deal with boost paths...
|
|
isEmpty(BOOST_I) {
|
|
BOOST_I = $$(BOOST_I)
|
|
}
|
|
isEmpty(BOOST_I) {}
|
|
else {
|
|
INCLUDEPATH += $$BOOST_I
|
|
}
|
|
|
|
isEmpty(BOOST_L) {
|
|
BOOST_L = $$(BOOST_L)
|
|
}
|
|
isEmpty(BOOST_L) {}
|
|
else {
|
|
LIBS += -L$$BOOST_L
|
|
}
|
|
|
|
isEmpty(BOOST_LIB_SUFFIX) {
|
|
BOOST_LIB_SUFFIX = $$(BOOST_LIB_SUFFIX)
|
|
}
|
|
|
|
LIBS += -lboost_program_options$$BOOST_LIB_SUFFIX
|
|
}
|
|
|
|
# Input
|
|
HEADERS += \
|
|
src/quadarray.h \
|
|
src/audio.h \
|
|
src/binding.h \
|
|
src/bitmap.h \
|
|
src/disposable.h \
|
|
src/etc.h \
|
|
src/etc-internal.h \
|
|
src/eventthread.h \
|
|
src/flashable.h \
|
|
src/font.h \
|
|
src/input.h \
|
|
src/plane.h \
|
|
src/scene.h \
|
|
src/sprite.h \
|
|
src/table.h \
|
|
src/texpool.h \
|
|
src/tilequad.h \
|
|
src/transform.h \
|
|
src/viewport.h \
|
|
src/window.h \
|
|
src/serializable.h \
|
|
src/shader.h \
|
|
src/glstate.h \
|
|
src/quad.h \
|
|
src/tilemap.h \
|
|
src/graphics.h \
|
|
src/debuglogger.h \
|
|
src/global-ibo.h \
|
|
src/exception.h \
|
|
src/filesystem.h \
|
|
src/serial-util.h \
|
|
src/intrulist.h \
|
|
src/binding.h \
|
|
src/gl-util.h \
|
|
src/util.h \
|
|
src/config.h \
|
|
src/tileatlas.h \
|
|
src/perftimer.h \
|
|
src/sharedstate.h \
|
|
src/al-util.h \
|
|
src/boost-hash.h \
|
|
src/debugwriter.h \
|
|
src/gl-fun.h
|
|
|
|
SOURCES += \
|
|
src/main.cpp \
|
|
src/audio.cpp \
|
|
src/bitmap.cpp \
|
|
src/eventthread.cpp \
|
|
src/filesystem.cpp \
|
|
src/font.cpp \
|
|
src/input.cpp \
|
|
src/plane.cpp \
|
|
src/scene.cpp \
|
|
src/sprite.cpp \
|
|
src/table.cpp \
|
|
src/tilequad.cpp \
|
|
src/viewport.cpp \
|
|
src/window.cpp \
|
|
src/texpool.cpp \
|
|
src/shader.cpp \
|
|
src/glstate.cpp \
|
|
src/tilemap.cpp \
|
|
src/autotiles.cpp \
|
|
src/graphics.cpp \
|
|
src/debuglogger.cpp \
|
|
src/etc.cpp \
|
|
src/config.cpp \
|
|
src/tileatlas.cpp \
|
|
src/perftimer.cpp \
|
|
src/sharedstate.cpp \
|
|
src/gl-fun.cpp
|
|
|
|
EMBED = \
|
|
shader/transSimple.frag \
|
|
shader/trans.frag \
|
|
shader/hue.frag \
|
|
shader/sprite.frag \
|
|
shader/plane.frag \
|
|
shader/bitmapBlit.frag \
|
|
shader/simple.frag \
|
|
shader/simpleColor.frag \
|
|
shader/simpleAlpha.frag \
|
|
shader/flashMap.frag \
|
|
shader/simple.vert \
|
|
shader/simpleColor.vert \
|
|
shader/sprite.vert \
|
|
assets/liberation.ttf
|
|
|
|
RGSS2 {
|
|
EMBED += \
|
|
shader/blur.frag \
|
|
shader/blurH.vert \
|
|
shader/blurV.vert \
|
|
shader/simpleMatrix.vert
|
|
}
|
|
|
|
defineReplace(xxdOutput) {
|
|
return($$basename(1).xxd)
|
|
}
|
|
|
|
# xxd
|
|
xxd.output_function = xxdOutput
|
|
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
|
|
xxd.depends = $$EMBED
|
|
xxd.input = EMBED
|
|
xxd.variable_out = HEADERS
|
|
|
|
QMAKE_EXTRA_COMPILERS += xxd
|
|
|
|
|
|
BINDING_NULL {
|
|
SOURCES += binding-null/binding-null.cpp
|
|
}
|
|
|
|
BINDING_MRUBY {
|
|
LIBS += mruby/build/host/lib/libmruby.a
|
|
INCLUDEPATH += mruby/include
|
|
DEPENDPATH += mruby/include
|
|
DEFINES += BINDING_MRUBY
|
|
|
|
HEADERS += \
|
|
binding-mruby/binding-util.h \
|
|
binding-mruby/disposable-binding.h \
|
|
binding-mruby/flashable-binding.h \
|
|
binding-mruby/binding-types.h \
|
|
binding-mruby/sceneelement-binding.h \
|
|
binding-mruby/viewportelement-binding.h \
|
|
binding-mruby/serializable-binding.h \
|
|
binding-mruby/mrb-ext/file.h \
|
|
binding-mruby/mrb-ext/rwmem.h \
|
|
binding-mruby/mrb-ext/marshal.h
|
|
|
|
SOURCES += \
|
|
binding-mruby/binding-mruby.cpp \
|
|
binding-mruby/binding-util.cpp \
|
|
binding-mruby/window-binding.cpp \
|
|
binding-mruby/bitmap-binding.cpp \
|
|
binding-mruby/sprite-binding.cpp \
|
|
binding-mruby/font-binding.cpp \
|
|
binding-mruby/viewport-binding.cpp \
|
|
binding-mruby/plane-binding.cpp \
|
|
binding-mruby/audio-binding.cpp \
|
|
binding-mruby/tilemap-binding.cpp \
|
|
binding-mruby/etc-binding.cpp \
|
|
binding-mruby/graphics-binding.cpp \
|
|
binding-mruby/input-binding.cpp \
|
|
binding-mruby/table-binding.cpp \
|
|
binding-mruby/module_rpg.c \
|
|
binding-mruby/mrb-ext/file.cpp \
|
|
binding-mruby/mrb-ext/marshal.cpp \
|
|
binding-mruby/mrb-ext/rwmem.cpp \
|
|
binding-mruby/mrb-ext/kernel.cpp \
|
|
binding-mruby/mrb-ext/time.cpp
|
|
}
|
|
|
|
BINDING_MRI {
|
|
PKGCONFIG += ruby-2.1
|
|
DEFINES += BINDING_MRI
|
|
|
|
# EMBED2 = binding-mri/module_rpg.rb
|
|
# xxdp.output = ${QMAKE_FILE_NAME}.xxd
|
|
# xxdp.commands = xxd+/xxd+ ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_OUT} --string
|
|
# xxdp.depends = $$EMBED2
|
|
# xxdp.input = EMBED2
|
|
# xxdp.variable_out = HEADERS
|
|
# QMAKE_EXTRA_COMPILERS += xxdp
|
|
|
|
HEADERS += \
|
|
binding-mri/binding-util.h \
|
|
binding-mri/binding-types.h \
|
|
binding-mri/serializable-binding.h \
|
|
binding-mri/disposable-binding.h \
|
|
binding-mri/sceneelement-binding.h \
|
|
binding-mri/viewportelement-binding.h \
|
|
binding-mri/flashable-binding.h
|
|
|
|
SOURCES += \
|
|
binding-mri/binding-mri.cpp \
|
|
binding-mri/binding-util.cpp \
|
|
binding-mri/table-binding.cpp \
|
|
binding-mri/etc-binding.cpp \
|
|
binding-mri/bitmap-binding.cpp \
|
|
binding-mri/font-binding.cpp \
|
|
binding-mri/graphics-binding.cpp \
|
|
binding-mri/input-binding.cpp \
|
|
binding-mri/sprite-binding.cpp \
|
|
binding-mri/viewport-binding.cpp \
|
|
binding-mri/plane-binding.cpp \
|
|
binding-mri/window-binding.cpp \
|
|
binding-mri/tilemap-binding.cpp \
|
|
binding-mri/audio-binding.cpp \
|
|
binding-mri/module_rpg.cpp \
|
|
binding-mri/filesystem-binding.cpp
|
|
}
|
|
|
|
OTHER_FILES += $$EMBED
|