linux packaging almost ready
parent
f39bbd880e
commit
369af51feb
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
g++ -Wno-write-strings -std=gnu++0x 4coder_custom.cpp -shared -o 4coder_custom.so -fPIC
|
||||||
|
|
154
linux_4ed.cpp
154
linux_4ed.cpp
|
@ -1197,7 +1197,7 @@ static void gl_log(
|
||||||
GLsizei length,
|
GLsizei length,
|
||||||
const GLchar* message,
|
const GLchar* message,
|
||||||
const void* userParam
|
const void* userParam
|
||||||
){
|
){
|
||||||
printf("GL DEBUG: %s\n", message);
|
printf("GL DEBUG: %s\n", message);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1227,15 +1227,15 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int context_attribs[] =
|
int context_attribs[] =
|
||||||
{
|
{
|
||||||
GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
|
GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
|
||||||
GLX_CONTEXT_MINOR_VERSION_ARB, 3,
|
GLX_CONTEXT_MINOR_VERSION_ARB, 3,
|
||||||
GLX_CONTEXT_PROFILE_MASK_ARB , GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
|
GLX_CONTEXT_PROFILE_MASK_ARB , GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
|
||||||
#if FRED_INTERNAL
|
#if FRED_INTERNAL
|
||||||
GLX_CONTEXT_FLAGS_ARB , GLX_CONTEXT_DEBUG_BIT_ARB,
|
GLX_CONTEXT_FLAGS_ARB , GLX_CONTEXT_DEBUG_BIT_ARB,
|
||||||
#endif
|
#endif
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
printf("Attribs: %d %d %d %d %d\n",
|
printf("Attribs: %d %d %d %d %d\n",
|
||||||
context_attribs[0],
|
context_attribs[0],
|
||||||
|
@ -1324,7 +1324,7 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
|
||||||
//TODO(inso): enable vsync if available. this should probably be optional
|
//TODO(inso): enable vsync if available. this should probably be optional
|
||||||
if(strstr(glxExts, "GLX_EXT_swap_control ")){
|
if(strstr(glxExts, "GLX_EXT_swap_control ")){
|
||||||
PFNGLXSWAPINTERVALEXTPROC glx_swap_interval_ext =
|
PFNGLXSWAPINTERVALEXTPROC glx_swap_interval_ext =
|
||||||
(PFNGLXSWAPINTERVALEXTPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalEXT");
|
(PFNGLXSWAPINTERVALEXTPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalEXT");
|
||||||
|
|
||||||
if(glx_swap_interval_ext){
|
if(glx_swap_interval_ext){
|
||||||
glx_swap_interval_ext(XDisplay, XWindow, 1);
|
glx_swap_interval_ext(XDisplay, XWindow, 1);
|
||||||
|
@ -1336,10 +1336,10 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
|
||||||
}
|
}
|
||||||
} else if(strstr(glxExts, "GLX_MESA_swap_control ")){
|
} else if(strstr(glxExts, "GLX_MESA_swap_control ")){
|
||||||
PFNGLXSWAPINTERVALMESAPROC glx_swap_interval_mesa =
|
PFNGLXSWAPINTERVALMESAPROC glx_swap_interval_mesa =
|
||||||
(PFNGLXSWAPINTERVALMESAPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalMESA");
|
(PFNGLXSWAPINTERVALMESAPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalMESA");
|
||||||
|
|
||||||
PFNGLXGETSWAPINTERVALMESAPROC glx_get_swap_interval_mesa =
|
PFNGLXGETSWAPINTERVALMESAPROC glx_get_swap_interval_mesa =
|
||||||
(PFNGLXGETSWAPINTERVALMESAPROC) glXGetProcAddressARB((const GLubyte*)"glXGetSwapIntervalMESA");
|
(PFNGLXGETSWAPINTERVALMESAPROC) glXGetProcAddressARB((const GLubyte*)"glXGetSwapIntervalMESA");
|
||||||
|
|
||||||
if(glx_swap_interval_mesa){
|
if(glx_swap_interval_mesa){
|
||||||
glx_swap_interval_mesa(1);
|
glx_swap_interval_mesa(1);
|
||||||
|
@ -1354,7 +1354,7 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
|
||||||
}
|
}
|
||||||
} else if(strstr(glxExts, "GLX_SGI_swap_control ")){
|
} else if(strstr(glxExts, "GLX_SGI_swap_control ")){
|
||||||
PFNGLXSWAPINTERVALSGIPROC glx_swap_interval_sgi =
|
PFNGLXSWAPINTERVALSGIPROC glx_swap_interval_sgi =
|
||||||
(PFNGLXSWAPINTERVALSGIPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalSGI");
|
(PFNGLXSWAPINTERVALSGIPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalSGI");
|
||||||
|
|
||||||
if(glx_swap_interval_sgi){
|
if(glx_swap_interval_sgi){
|
||||||
glx_swap_interval_sgi(1);
|
glx_swap_interval_sgi(1);
|
||||||
|
@ -1417,22 +1417,22 @@ ChooseGLXConfig(Display *XDisplay, int XScreenIndex)
|
||||||
glx_config_result Result = {0};
|
glx_config_result Result = {0};
|
||||||
|
|
||||||
int DesiredAttributes[] =
|
int DesiredAttributes[] =
|
||||||
{
|
{
|
||||||
GLX_X_RENDERABLE , True,
|
GLX_X_RENDERABLE , True,
|
||||||
GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
|
GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
|
||||||
GLX_RENDER_TYPE , GLX_RGBA_BIT,
|
GLX_RENDER_TYPE , GLX_RGBA_BIT,
|
||||||
GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR,
|
GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR,
|
||||||
GLX_RED_SIZE , 8,
|
GLX_RED_SIZE , 8,
|
||||||
GLX_GREEN_SIZE , 8,
|
GLX_GREEN_SIZE , 8,
|
||||||
GLX_BLUE_SIZE , 8,
|
GLX_BLUE_SIZE , 8,
|
||||||
GLX_ALPHA_SIZE , 8,
|
GLX_ALPHA_SIZE , 8,
|
||||||
GLX_DEPTH_SIZE , 24,
|
GLX_DEPTH_SIZE , 24,
|
||||||
GLX_STENCIL_SIZE , 8,
|
GLX_STENCIL_SIZE , 8,
|
||||||
GLX_DOUBLEBUFFER , True,
|
GLX_DOUBLEBUFFER , True,
|
||||||
//GLX_SAMPLE_BUFFERS , 1,
|
//GLX_SAMPLE_BUFFERS , 1,
|
||||||
//GLX_SAMPLES , 4,
|
//GLX_SAMPLES , 4,
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
int ConfigCount;
|
int ConfigCount;
|
||||||
|
@ -1447,47 +1447,47 @@ ChooseGLXConfig(Display *XDisplay, int XScreenIndex)
|
||||||
{for(int ConfigIndex = 0;
|
{for(int ConfigIndex = 0;
|
||||||
ConfigIndex < ConfigCount;
|
ConfigIndex < ConfigCount;
|
||||||
++ConfigIndex)
|
++ConfigIndex)
|
||||||
{
|
{
|
||||||
GLXFBConfig &Config = Configs[ConfigIndex];
|
GLXFBConfig &Config = Configs[ConfigIndex];
|
||||||
XVisualInfo *VisualInfo = glXGetVisualFromFBConfig(XDisplay, Config);
|
XVisualInfo *VisualInfo = glXGetVisualFromFBConfig(XDisplay, Config);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
printf(" Option %d:\n", ConfigIndex);
|
printf(" Option %d:\n", ConfigIndex);
|
||||||
printf(" Depth: %d\n", VisualInfo->depth);
|
printf(" Depth: %d\n", VisualInfo->depth);
|
||||||
printf(" Bits per channel: %d\n", VisualInfo->bits_per_rgb);
|
printf(" Bits per channel: %d\n", VisualInfo->bits_per_rgb);
|
||||||
printf(" Mask: R%06x G%06x B%06x\n",
|
printf(" Mask: R%06x G%06x B%06x\n",
|
||||||
(uint32)VisualInfo->red_mask,
|
(uint32)VisualInfo->red_mask,
|
||||||
(uint32)VisualInfo->green_mask,
|
(uint32)VisualInfo->green_mask,
|
||||||
(uint32)VisualInfo->blue_mask);
|
(uint32)VisualInfo->blue_mask);
|
||||||
printf(" Class: %d\n", VisualInfo->c_class);
|
printf(" Class: %d\n", VisualInfo->c_class);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
{for(int ValueIndex = 0;
|
{for(int ValueIndex = 0;
|
||||||
ValueIndex < GLXValueCount;
|
ValueIndex < GLXValueCount;
|
||||||
++ValueIndex)
|
++ValueIndex)
|
||||||
{
|
{
|
||||||
glx_value_info &ValueInfo = GLXValues[ValueIndex];
|
glx_value_info &ValueInfo = GLXValues[ValueIndex];
|
||||||
int Value;
|
int Value;
|
||||||
glXGetFBConfigAttrib(XDisplay, Config, ValueInfo.ID, &Value);
|
glXGetFBConfigAttrib(XDisplay, Config, ValueInfo.ID, &Value);
|
||||||
if(DiffValues[ValueIndex] != Value)
|
if(DiffValues[ValueIndex] != Value)
|
||||||
|
{
|
||||||
|
printf(" %s: %d\n", ValueInfo.Name, Value);
|
||||||
|
DiffValues[ValueIndex] = Value;
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// TODO(casey): How the hell are you supposed to pick a config here??
|
||||||
|
if(ConfigIndex == 0)
|
||||||
{
|
{
|
||||||
printf(" %s: %d\n", ValueInfo.Name, Value);
|
Result.Found = true;
|
||||||
DiffValues[ValueIndex] = Value;
|
Result.BestConfig = Config;
|
||||||
|
Result.BestInfo = *VisualInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XFree(VisualInfo);
|
||||||
}}
|
}}
|
||||||
#endif
|
|
||||||
|
|
||||||
// TODO(casey): How the hell are you supposed to pick a config here??
|
|
||||||
if(ConfigIndex == 0)
|
|
||||||
{
|
|
||||||
Result.Found = true;
|
|
||||||
Result.BestConfig = Config;
|
|
||||||
Result.BestInfo = *VisualInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
XFree(VisualInfo);
|
|
||||||
}}
|
|
||||||
|
|
||||||
XFree(Configs);
|
XFree(Configs);
|
||||||
}
|
}
|
||||||
|
@ -1550,10 +1550,10 @@ InitializeXInput(Display *dpy, Window XWindow)
|
||||||
{for(int32x DeviceIndex = 0;
|
{for(int32x DeviceIndex = 0;
|
||||||
DeviceIndex < DeviceCount;
|
DeviceIndex < DeviceCount;
|
||||||
++DeviceIndex)
|
++DeviceIndex)
|
||||||
{
|
{
|
||||||
XIDeviceInfo *Device = DeviceInfo + DeviceIndex;
|
XIDeviceInfo *Device = DeviceInfo + DeviceIndex;
|
||||||
printf("Device %d: %s\n", Device->deviceid, Device->name);
|
printf("Device %d: %s\n", Device->deviceid, Device->name);
|
||||||
}}
|
}}
|
||||||
XIFreeDeviceInfo(DeviceInfo);
|
XIFreeDeviceInfo(DeviceInfo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1615,7 +1615,7 @@ InitializeXInput(Display *dpy, Window XWindow)
|
||||||
MappingNotify |
|
MappingNotify |
|
||||||
ExposureMask |
|
ExposureMask |
|
||||||
VisibilityChangeMask
|
VisibilityChangeMask
|
||||||
);
|
);
|
||||||
|
|
||||||
result.input_method = XOpenIM(dpy, 0, 0, 0);
|
result.input_method = XOpenIM(dpy, 0, 0, 0);
|
||||||
if (!result.input_method){
|
if (!result.input_method){
|
||||||
|
@ -1710,7 +1710,7 @@ LinuxMaximizeWindow(Display* d, Window w, b32 maximize){
|
||||||
0,
|
0,
|
||||||
SubstructureNotifyMask | SubstructureRedirectMask,
|
SubstructureNotifyMask | SubstructureRedirectMask,
|
||||||
&e
|
&e
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -1824,8 +1824,24 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (linuxvars.custom){
|
if (linuxvars.custom){
|
||||||
linuxvars.custom_api.get_bindings = (Get_Binding_Data_Function*)
|
linuxvars.custom_api.get_alpha_4coder_version = (_Get_Version_Function*)
|
||||||
dlsym(linuxvars.custom, "get_bindings");
|
dlsym(linuxvars.custom, "get_alpha_4coder_version");
|
||||||
|
|
||||||
|
if (linuxvars.custom_api.get_alpha_4coder_version == 0 ||
|
||||||
|
linuxvars.custom_api.get_alpha_4coder_version(MAJOR, MINOR, PATCH) == 0){
|
||||||
|
printf("failed to use 4coder_custom.so: version mismatch\n");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
linuxvars.custom_api.get_bindings = (Get_Binding_Data_Function*)
|
||||||
|
dlsym(linuxvars.custom, "get_bindings");
|
||||||
|
|
||||||
|
if (linuxvars.custom_api.get_bindings == 0){
|
||||||
|
printf("failed to use 4coder_custom.so: get_bindings not exported\n");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
printf("successfully loaded 4coder_custom.so\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
64
package.sh
64
package.sh
|
@ -15,8 +15,10 @@
|
||||||
TEMPLATE_DIR="$HOME/Desktop/4coder/release_template/"
|
TEMPLATE_DIR="$HOME/Desktop/4coder/release_template/"
|
||||||
CODE_DIR="$HOME/Desktop/4coder"
|
CODE_DIR="$HOME/Desktop/4coder"
|
||||||
TMP_DIR="/tmp/4coder"
|
TMP_DIR="/tmp/4coder"
|
||||||
OUT_ZIP="$HOME/Desktop/4coder-linux.zip"
|
OUT_ZIP="$HOME/Desktop/4coder-linux-64.zip"
|
||||||
OUT_ZIP_SUPER="$HOME/Desktop/4coder-linux-super.zip"
|
OUT_ZIP_32="$HOME/Desktop/4coder-linux-32.zip"
|
||||||
|
OUT_ZIP_SUPER="$HOME/Desktop/4coder-linux-super-64.zip"
|
||||||
|
OUT_ZIP_SUPER_32="$HOME/Desktop/4coder-linux-super-32.zip"
|
||||||
|
|
||||||
echo "template: $TEMPLATE_DIR"
|
echo "template: $TEMPLATE_DIR"
|
||||||
echo "base: $CODE_DIR"
|
echo "base: $CODE_DIR"
|
||||||
|
@ -25,40 +27,42 @@ echo "out: $OUT_ZIP"
|
||||||
|
|
||||||
rm -rf "$OUT_ZIP"
|
rm -rf "$OUT_ZIP"
|
||||||
rm -rf "$OUT_ZIP_SUPER"
|
rm -rf "$OUT_ZIP_SUPER"
|
||||||
|
rm -rf "$OUT_ZIP_32"
|
||||||
|
rm -rf "$OUT_ZIP_SUPER_32"
|
||||||
|
|
||||||
mkdir -p "$TMP_DIR"
|
mkdir -p "$TMP_DIR"
|
||||||
mkdir -p "$TMP_DIR/alpha"
|
|
||||||
mkdir -p "$TMP_DIR/super"
|
|
||||||
|
|
||||||
cat << EOF > "$TMP_DIR/readme.txt"
|
|
||||||
This is a linux 4coder release.
|
|
||||||
Brought to you by Mr4thDimention and insofaras.
|
|
||||||
|
|
||||||
Enjoy!
|
|
||||||
EOF
|
|
||||||
|
|
||||||
pushd "$CODE_DIR"
|
pushd "$CODE_DIR"
|
||||||
|
|
||||||
echo "Alpha User"
|
echo "Alpha User"
|
||||||
|
|
||||||
|
# ALPHA-32
|
||||||
make clean
|
make clean
|
||||||
make release32
|
make release32
|
||||||
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/alpha/32"
|
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/alpha"
|
||||||
cp ./4ed ./4ed_app.so "$TMP_DIR/alpha/32/"
|
cp ./4ed ./4ed_app.so "$TMP_DIR/alpha/"
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
|
pushd "$TMP_DIR"
|
||||||
|
zip -r "$OUT_ZIP_32" "$(basename alpha)"
|
||||||
|
popd
|
||||||
|
rm -rf "$TMP_DIR/alpha"
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
|
||||||
|
# ALPHA-64
|
||||||
make clean
|
make clean
|
||||||
make release
|
make release
|
||||||
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/alpha/64"
|
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/alpha"
|
||||||
cp ./4ed ./4ed_app.so "$TMP_DIR/alpha/64/"
|
cp ./4ed ./4ed_app.so "$TMP_DIR/alpha/"
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
cp "$TMP_DIR/readme.txt" "$TMP_DIR/alpha/readme.txt"
|
|
||||||
pushd "$TMP_DIR"
|
pushd "$TMP_DIR"
|
||||||
zip -r "$OUT_ZIP" "$(basename alpha)"
|
zip -r "$OUT_ZIP" "$(basename alpha)"
|
||||||
popd
|
popd
|
||||||
|
rm -rf "$TMP_DIR/alpha"
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
|
@ -66,24 +70,34 @@ echo " "
|
||||||
|
|
||||||
echo "Super User"
|
echo "Super User"
|
||||||
|
|
||||||
|
# SUPER-32
|
||||||
make clean
|
make clean
|
||||||
make release32
|
make release32_super
|
||||||
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/super/32"
|
cp ./4ed ./4ed_app.so ./code/4coder_*.h ./code/4coder_*.cpp "$TMP_DIR/super/"
|
||||||
cp ./4ed ./4ed_app.so ./code/4coder_*.h ./code/4coder_*.cpp "$TMP_DIR/super/32/"
|
cp ./code/buildsuper.sh "$TMP_DIR/super/"
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
make clean
|
pushd "$TMP_DIR"
|
||||||
make release
|
zip -r "$OUT_ZIP_SUPER_32" "$(basename super)"
|
||||||
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/super/64"
|
popd
|
||||||
cp ./4ed ./4ed_app.so ./code/4coder_*.h ./code/4coder_*.cpp "$TMP_DIR/super/64/"
|
rm -rf "$TMP_DIR/super"
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
|
||||||
|
# SUPER-64
|
||||||
|
make clean
|
||||||
|
make release_super
|
||||||
|
cp -r "${TEMPLATE_DIR}" "$TMP_DIR/super/"
|
||||||
|
cp ./4ed ./4ed_app.so ./code/4coder_*.h ./code/4coder_*.cpp "$TMP_DIR/super/"
|
||||||
|
cp ./code/buildsuper.sh "$TMP_DIR/super/"
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
cp "$TMP_DIR/readme.txt" "$TMP_DIR/super/readme.txt"
|
|
||||||
pushd "$TMP_DIR"
|
pushd "$TMP_DIR"
|
||||||
zip -r "$OUT_ZIP_SUPER" "$(basename super)"
|
zip -r "$OUT_ZIP_SUPER" "$(basename super)"
|
||||||
popd
|
popd
|
||||||
|
rm -rf "$TMP_DIR/super"
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
|
@ -95,7 +109,7 @@ rm -rf "$TMP_DIR"
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
echo "Created linux 4coder package: $OUT_ZIP"
|
echo "Created linux 4coder packages"
|
||||||
|
|
||||||
exit
|
exit
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue