From fb6fd61cd9552e754b7878806eac41878ed4604d Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 20 Mar 2019 01:17:46 +0300 Subject: [PATCH] public: initial moving some common code into static public library, that can be linked to any engine part --- common/mathlib.h | 95 --------------------------- engine/wscript | 4 +- {engine/common => public}/crtlib.c | 0 {engine/common => public}/crtlib.h | 0 {engine/common => public}/mathlib.c | 0 {engine/common => public}/mathlib.h | 0 {engine/common => public}/matrixlib.c | 0 public/wscript | 38 +++++++++++ ref_gl/wscript | 5 +- wscript | 2 +- 10 files changed, 43 insertions(+), 101 deletions(-) delete mode 100644 common/mathlib.h rename {engine/common => public}/crtlib.c (100%) rename {engine/common => public}/crtlib.h (100%) rename {engine/common => public}/mathlib.c (100%) rename {engine/common => public}/mathlib.h (100%) rename {engine/common => public}/matrixlib.c (100%) create mode 100644 public/wscript diff --git a/common/mathlib.h b/common/mathlib.h deleted file mode 100644 index fadb97fb..00000000 --- a/common/mathlib.h +++ /dev/null @@ -1,95 +0,0 @@ -/*** -* -* Copyright (c) 1996-2002, Valve LLC. All rights reserved. -* -* This product contains software technology licensed from Id -* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. -* All Rights Reserved. -* -* Use, distribution, and modification of this source code and/or resulting -* object code is restricted to non-commercial enhancements to products from -* Valve LLC. All other use, distribution, or modification is prohibited -* without written permission from Valve LLC. -* -****/ -// mathlib.h - -#include - -typedef float vec_t; -typedef vec_t vec2_t[2]; -typedef vec_t vec3_t[3]; -typedef vec_t vec4_t[4]; // x,y,z,w - -#ifndef M_PI -#define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h -#endif - -struct mplane_s; - -extern vec3_t vec3_origin; -extern int nanmask; - -#define IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask) - -#ifndef VECTOR_H - #define DotProduct(x,y) ((x)[0]*(y)[0]+(x)[1]*(y)[1]+(x)[2]*(y)[2]) -#endif - -#define VectorSubtract(a,b,c) {(c)[0]=(a)[0]-(b)[0];(c)[1]=(a)[1]-(b)[1];(c)[2]=(a)[2]-(b)[2];} -#define VectorAdd(a,b,c) {(c)[0]=(a)[0]+(b)[0];(c)[1]=(a)[1]+(b)[1];(c)[2]=(a)[2]+(b)[2];} -#define VectorCopy(a,b) {(b)[0]=(a)[0];(b)[1]=(a)[1];(b)[2]=(a)[2];} -#define VectorClear(a) {(a)[0]=0.0;(a)[1]=0.0;(a)[2]=0.0;} - -void VectorMA (const vec3_t veca, float scale, const vec3_t vecb, vec3_t vecc); - -vec_t _DotProduct (vec3_t v1, vec3_t v2); -void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out); -void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out); -void _VectorCopy (vec3_t in, vec3_t out); - -int VectorCompare (const vec3_t v1, const vec3_t v2); -float Length (const vec3_t v); -void CrossProduct (const vec3_t v1, const vec3_t v2, vec3_t cross); -float VectorNormalize (vec3_t v); // returns vector length -void VectorInverse (vec3_t v); -void VectorScale (const vec3_t in, vec_t scale, vec3_t out); - -void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]); -void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]); - -void AngleVectors (const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up); -void AngleVectorsTranspose (const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up); -#define AngleIVectors AngleVectorsTranspose - -void AngleMatrix (const vec3_t angles, float (*matrix)[4] ); -void AngleIMatrix (const vec3_t angles, float (*matrix)[4] ); -void VectorTransform (const vec3_t in1, float in2[3][4], vec3_t out); - -void NormalizeAngles( vec3_t angles ); -void InterpolateAngles( vec3_t start, vec3_t end, vec3_t output, float frac ); -float AngleBetweenVectors( const vec3_t v1, const vec3_t v2 ); - -void VectorMatrix( vec3_t forward, vec3_t right, vec3_t up); -void VectorAngles( const vec3_t forward, vec3_t angles ); - -int InvertMatrix( const float * m, float *out ); - -int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct mplane_s *plane); -float anglemod(float a); - -#define BOX_ON_PLANE_SIDE(emins, emaxs, p) \ - (((p)->type < 3)? \ - ( \ - ((p)->dist <= (emins)[(p)->type])? \ - 1 \ - : \ - ( \ - ((p)->dist >= (emaxs)[(p)->type])?\ - 2 \ - : \ - 3 \ - ) \ - ) \ - : \ - BoxOnPlaneSide( (emins), (emaxs), (p))) diff --git a/engine/wscript b/engine/wscript index 213a88ef..3e71004d 100644 --- a/engine/wscript +++ b/engine/wscript @@ -56,7 +56,7 @@ def build(bld): bld.load_envs() bld.env = bld.all_envs[get_subproject_name(bld)] - libs = [] + libs = [ 'public' ] source = bld.path.ant_glob([ 'common/*.c', 'common/imagelib/*.c', @@ -93,7 +93,7 @@ def build(bld): if bld.env.DEST_OS == 'linux': libs.append('RT') - includes = ['common', 'server', 'client', 'client/vgui', '.', '../common', '../pm_shared' ] + includes = ['common', 'server', 'client', 'client/vgui', '.', '../common', '../public', '../pm_shared' ] if bld.env.SINGLE_BINARY: bld( diff --git a/engine/common/crtlib.c b/public/crtlib.c similarity index 100% rename from engine/common/crtlib.c rename to public/crtlib.c diff --git a/engine/common/crtlib.h b/public/crtlib.h similarity index 100% rename from engine/common/crtlib.h rename to public/crtlib.h diff --git a/engine/common/mathlib.c b/public/mathlib.c similarity index 100% rename from engine/common/mathlib.c rename to public/mathlib.c diff --git a/engine/common/mathlib.h b/public/mathlib.h similarity index 100% rename from engine/common/mathlib.h rename to public/mathlib.h diff --git a/engine/common/matrixlib.c b/public/matrixlib.c similarity index 100% rename from engine/common/matrixlib.c rename to public/matrixlib.c diff --git a/public/wscript b/public/wscript new file mode 100644 index 00000000..d66e943a --- /dev/null +++ b/public/wscript @@ -0,0 +1,38 @@ +#! /usr/bin/env python +# encoding: utf-8 +# mittorn, 2018 + +from waflib import Logs +import os +from fwgslib import get_subproject_name + +top = '.' + +def options(opt): + # stub + return + +def configure(conf): + # stub + return + +def build(bld): + bld.load_envs() + name = get_subproject_name(bld) + bld.env = bld.all_envs[name] + + libs = [ 'M' ] + + source = bld.path.ant_glob(['*.c']) + + includes = [ '.', '../common', '../engine' ] + + bld.stlib( + source = source, + target = name, + features = 'c', + includes = includes, + use = libs, + install_path = bld.env.LIBDIR, + subsystem = bld.env.MSVC_SUBSYSTEM + ) diff --git a/ref_gl/wscript b/ref_gl/wscript index 8bed8fa4..1843250f 100644 --- a/ref_gl/wscript +++ b/ref_gl/wscript @@ -30,18 +30,17 @@ def build(bld): name = get_subproject_name(bld) bld.env = bld.all_envs[name] - libs = [ 'M' ] + libs = [ 'M', 'public' ] source = bld.path.ant_glob(['*.c']) - source += [ '../engine/common/mathlib.c', '../engine/common/crtlib.c', '../engine/common/matrixlib.c' ] - includes = ['.', '../engine', '../engine/common', '../engine/server', '../engine/client', '../common', + '../public', '../pm_shared' ] bld.shlib( diff --git a/wscript b/wscript index f4f4f8fd..c5a1f589 100644 --- a/wscript +++ b/wscript @@ -13,7 +13,7 @@ import fwgslib VERSION = '0.99' APPNAME = 'xash3d-fwgs' -SUBDIRS = [ 'engine', 'game_launch', 'vgui_support', 'ref_gl' ] +SUBDIRS = [ 'public', 'engine', 'game_launch', 'vgui_support', 'ref_gl' ] top = '.' def options(opt):