From 2dd3bf5ddb9b74855a83e8a52ab14d263cc94f04 Mon Sep 17 00:00:00 2001 From: CleverMouse Date: Fri, 4 Feb 2011 17:55:54 +0000 Subject: [PATCH] Makefile: autobuild media/ac97snd git-svn-id: svn://kolibrios.org@1843 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/eng/Makefile | 36 ++++++++++- data/eng/media/ac97snd | Bin 26203 -> 0 bytes data/rus/Makefile | 36 ++++++++++- data/rus/media/ac97snd | Bin 26203 -> 0 bytes .../develop/sdk/trunk/sound/src/sndpan.asm | 44 ------------- programs/media/ac97snd/ac97snd/ac97wav.c | 2 +- programs/media/ac97snd/ac97snd/crt.c | 61 ++++++++++++++---- programs/media/ac97snd/ufmod.obj | Bin 0 -> 8451 bytes 8 files changed, 121 insertions(+), 58 deletions(-) delete mode 100644 data/eng/media/ac97snd delete mode 100644 data/rus/media/ac97snd delete mode 100644 programs/develop/sdk/trunk/sound/src/sndpan.asm create mode 100644 programs/media/ac97snd/ufmod.obj diff --git a/data/eng/Makefile b/data/eng/Makefile index 9932715497..2368f55f79 100644 --- a/data/eng/Makefile +++ b/data/eng/Makefile @@ -435,8 +435,42 @@ shell: .obj.shell/start.o .obj.shell/shell.o .obj.shell/kolibri.o .obj.shell/std .obj.shell: mkdir -p .obj.shell +# Rules for sdk/sound, used by media/ac97snd +SOUNDDIR=$(PROGS)/develop/sdk/trunk/sound/src +SOUND_OBJECTS:=$(patsubst $(SOUNDDIR)/%.asm,.sdk/%.obj,$(wildcard $(SOUNDDIR)/*.asm)) +SOUND_INC_FILES:=$(wildcard $(SOUNDDIR)/*.inc) +.sdk/sound.lib: $(SOUND_OBJECTS) + win32-link /lib /out:$@ $^ +$(SOUND_OBJECTS): .sdk/%.obj: $(SOUNDDIR)/%.asm $(SOUND_INC_FILES) | .sdk + fasm $< $@ +.sdk: + mkdir -p .sdk # Rules for media/ac97snd -# Not compilable from svn sources, using preloaded binary +AC97DIR=$(PROGS)/media/ac97snd +media/ac97snd: .obj.ac97snd/ac97snd.exe + $(msvc_final) +.obj.ac97snd/ac97snd.exe: .obj.ac97snd/ac97wav.obj .obj.ac97snd/crt.obj .obj.ac97snd/k_lib.obj \ + .obj.ac97snd/mpg.lib .sdk/sound.lib $(AC97DIR)/ufmod.obj + $(msvc_link) +.obj.ac97snd/ac97wav.obj: $(AC97DIR)/ac97snd/ac97wav.c \ + $(AC97DIR)/kolibri.h $(AC97DIR)/ac97snd/ac97wav.h $(AC97DIR)/mpg/mpg123.h \ + $(AC97DIR)/sound.h $(AC97DIR)/ufmod-codec.h Makefile.msvc | .obj.ac97snd + $(msvc_compile) +.obj.ac97snd/crt.obj: $(AC97DIR)/ac97snd/crt.c $(AC97DIR)/ac97snd/crt.h Makefile.msvc | .obj.ac97snd + $(msvc_compile) +.obj.ac97snd/k_lib.obj: $(AC97DIR)/ac97snd/k_lib.asm $(AC97DIR)/ac97snd/proc32.inc | .obj.ac97snd + fasm $< $@ +AC97SND_MPG_C_FILES:=$(wildcard $(AC97DIR)/mpg/*.c) +AC97SND_MPG_H_FILES:=$(wildcard $(AC97DIR)/mpg/*.h) +AC97SND_MPG_C_OBJECTS:=$(patsubst $(AC97DIR)/mpg/%.c,.obj.ac97snd/%.o,$(AC97SND_MPG_C_FILES)) +.obj.ac97snd/mpg.lib: $(AC97SND_MPG_C_OBJECTS) .obj.ac97snd/pow.obj + win32-link /lib /ltcg /out:$@ $^ +$(AC97SND_MPG_C_OBJECTS): .obj.ac97snd/%.o: $(AC97DIR)/mpg/%.c $(AC97SND_MPG_H_FILES) Makefile.msvc | .obj.ac97snd + $(msvc_compile) +.obj.ac97snd/pow.obj: $(AC97DIR)/mpg/pow.asm $(AC97DIR)/mpg/proc32.inc | .obj.ac97snd + fasm $< $@ +.obj.ac97snd: + mkdir -p .obj.ac97snd # Rules for atikms.dll # Use Makefile from $(REPOSITORY)/drivers/ddk and $(REPOSITORY)/drivers/video/drm/radeon diff --git a/data/eng/media/ac97snd b/data/eng/media/ac97snd deleted file mode 100644 index 708ecd6d5f32e7613dec4046e958ac210ab9fb55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26203 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 KLF?85000R;i{LN- diff --git a/data/rus/Makefile b/data/rus/Makefile index 7e2ba54b1a..a0531e732c 100644 --- a/data/rus/Makefile +++ b/data/rus/Makefile @@ -437,8 +437,42 @@ shell: .obj.shell/start.o .obj.shell/shell.o .obj.shell/kolibri.o .obj.shell/std .obj.shell: mkdir -p .obj.shell +# Rules for sdk/sound, used by media/ac97snd +SOUNDDIR=$(PROGS)/develop/sdk/trunk/sound/src +SOUND_OBJECTS:=$(patsubst $(SOUNDDIR)/%.asm,.sdk/%.obj,$(wildcard $(SOUNDDIR)/*.asm)) +SOUND_INC_FILES:=$(wildcard $(SOUNDDIR)/*.inc) +.sdk/sound.lib: $(SOUND_OBJECTS) + win32-link /lib /out:$@ $^ +$(SOUND_OBJECTS): .sdk/%.obj: $(SOUNDDIR)/%.asm $(SOUND_INC_FILES) | .sdk + fasm $< $@ +.sdk: + mkdir -p .sdk # Rules for media/ac97snd -# Not compilable from svn sources, using preloaded binary +AC97DIR=$(PROGS)/media/ac97snd +media/ac97snd: .obj.ac97snd/ac97snd.exe + $(msvc_final) +.obj.ac97snd/ac97snd.exe: .obj.ac97snd/ac97wav.obj .obj.ac97snd/crt.obj .obj.ac97snd/k_lib.obj \ + .obj.ac97snd/mpg.lib .sdk/sound.lib $(AC97DIR)/ufmod.obj + $(msvc_link) +.obj.ac97snd/ac97wav.obj: $(AC97DIR)/ac97snd/ac97wav.c \ + $(AC97DIR)/kolibri.h $(AC97DIR)/ac97snd/ac97wav.h $(AC97DIR)/mpg/mpg123.h \ + $(AC97DIR)/sound.h $(AC97DIR)/ufmod-codec.h Makefile.msvc | .obj.ac97snd + $(msvc_compile) +.obj.ac97snd/crt.obj: $(AC97DIR)/ac97snd/crt.c $(AC97DIR)/ac97snd/crt.h Makefile.msvc | .obj.ac97snd + $(msvc_compile) +.obj.ac97snd/k_lib.obj: $(AC97DIR)/ac97snd/k_lib.asm $(AC97DIR)/ac97snd/proc32.inc | .obj.ac97snd + fasm $< $@ +AC97SND_MPG_C_FILES:=$(wildcard $(AC97DIR)/mpg/*.c) +AC97SND_MPG_H_FILES:=$(wildcard $(AC97DIR)/mpg/*.h) +AC97SND_MPG_C_OBJECTS:=$(patsubst $(AC97DIR)/mpg/%.c,.obj.ac97snd/%.o,$(AC97SND_MPG_C_FILES)) +.obj.ac97snd/mpg.lib: $(AC97SND_MPG_C_OBJECTS) .obj.ac97snd/pow.obj + win32-link /lib /ltcg /out:$@ $^ +$(AC97SND_MPG_C_OBJECTS): .obj.ac97snd/%.o: $(AC97DIR)/mpg/%.c $(AC97SND_MPG_H_FILES) Makefile.msvc | .obj.ac97snd + $(msvc_compile) +.obj.ac97snd/pow.obj: $(AC97DIR)/mpg/pow.asm $(AC97DIR)/mpg/proc32.inc | .obj.ac97snd + fasm $< $@ +.obj.ac97snd: + mkdir -p .obj.ac97snd # Rules for atikms.dll # Use Makefile from $(REPOSITORY)/drivers/ddk and $(REPOSITORY)/drivers/video/drm/radeon diff --git a/data/rus/media/ac97snd b/data/rus/media/ac97snd deleted file mode 100644 index 708ecd6d5f32e7613dec4046e958ac210ab9fb55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26203 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 KLF?85000R;i{LN- diff --git a/programs/develop/sdk/trunk/sound/src/sndpan.asm b/programs/develop/sdk/trunk/sound/src/sndpan.asm deleted file mode 100644 index f84e0594ba..0000000000 --- a/programs/develop/sdk/trunk/sound/src/sndpan.asm +++ /dev/null @@ -1,44 +0,0 @@ -format MS COFF - -include "snd.inc" -include "proc32.inc" - -section '.text' align 16 code readable executable - -public _SetPan@8 -;public _GetPan@4 - -extrn hSound - -align 4 -proc _SetPan@8 stdcall, str:dword, pan:dword - locals - handle dd ? - io_code dd ? - input dd ? - inp_size dd ? - output dd ? - out_size dd ? - endl - - push ebx - push ecx - mov eax, [hSound] - lea ebx, [str] - xor ecx, ecx - - mov [handle], eax - mov [io_code], SND_SETPAN - mov [input], ebx - mov [inp_size], 8 - mov [output], ecx - mov [out_size], ecx - - mov eax, 68 - mov ebx, 17 - lea ecx, [handle] - int 0x40 - pop ecx - pop ebx - ret -endp diff --git a/programs/media/ac97snd/ac97snd/ac97wav.c b/programs/media/ac97snd/ac97snd/ac97wav.c index ffe27e31b9..697ac41f56 100644 --- a/programs/media/ac97snd/ac97snd/ac97wav.c +++ b/programs/media/ac97snd/ac97snd/ac97wav.c @@ -1182,7 +1182,7 @@ void uint2str(unsigned int value, char *string) ///********* -void *memmove ( void * dst, void * src, unsigned int count) /* uFMOD integration */ +void *__cdecl memmove ( void * dst, const void * src, unsigned int count) /* uFMOD integration */ { void *ret; ret = dst; diff --git a/programs/media/ac97snd/ac97snd/crt.c b/programs/media/ac97snd/ac97snd/crt.c index 24000393e3..b1890ed03a 100644 --- a/programs/media/ac97snd/ac97snd/crt.c +++ b/programs/media/ac97snd/ac97snd/crt.c @@ -2,20 +2,49 @@ #define atexitBufferSize 32 +#ifdef AUTOBUILD +char kosExePath[1024]; +char exeStack[16384]; +char params[1024]; +// must be alphabetically first in the image +#pragma data_seg(".1seg") +struct +{ + char header[8]; + int headerver; + void* entry; + void* i_end; + void* memsize; + void* stack; + void* params; + void* icon; +} __MENUET_APP_header = { + {'M', 'E', 'N', 'U', 'E', 'T', '0', '1'}, + 1, + &crtStartUp, + 0, // filled by doexe2.asm + 0, // filled by doexe2.asm + exeStack + sizeof(exeStack), + params, + kosExePath +}; +#pragma data_seg() +#endif + char pureCallMessage[] = "PURE function call!"; -char *__argv[2]; -int __argc; +//char *__argv[2]; +//int __argc; void (__cdecl *atExitList[atexitBufferSize])(); int atExitFnNum = 0; int main(int argc, char *argv[]); void exit() -{ int i; +{ /*int i; for ( i = atExitFnNum - 1; i >= 0; i-- ) - atExitList[i](); + atExitList[i]();*/ __asm { @@ -24,7 +53,7 @@ void exit() }; }; -int __cdecl atexit( void (__cdecl *func )( void )) +/*int __cdecl atexit( void (__cdecl *func )( void )) { // if ( atExitFnNum < atexitBufferSize ) @@ -37,7 +66,7 @@ int __cdecl atexit( void (__cdecl *func )( void )) { return 1; } -} +}*/ int __cdecl _purecall() { @@ -48,26 +77,36 @@ int __cdecl _purecall() #pragma section(".CRT$XCA",long,read,write) #pragma section(".CRT$XCZ",long,read,write) typedef void (__cdecl *_PVFV)(void); -__declspec(allocate(".CRT$XCA")) _PVFV __xc_a[1] = { 0 }; -__declspec(allocate(".CRT$XCZ")) _PVFV __xc_z[1] = { 0 }; +//__declspec(allocate(".CRT$XCA")) _PVFV __xc_a[1] = { 0 }; +//__declspec(allocate(".CRT$XCZ")) _PVFV __xc_z[1] = { 0 }; // #pragma comment(linker, "/merge:.CRT=.rdata") // void crtStartUp() {_PVFV *pbegin; + char* __argv[2]; + +#ifdef AUTOBUILD + __MENUET_APP_header.header; +#endif _asm {fninit}; - for ( pbegin = __xc_a; pbegin < __xc_z; pbegin++ ) + /*for ( pbegin = __xc_a; pbegin < __xc_z; pbegin++ ) { // if ( *pbegin != 0 ) (**pbegin)(); } - __argc = 2; + __argc = 2;*/ +#ifdef AUTOBUILD + __argv[0] = kosExePath; + __argv[1] = params; +#else __argv[0] = *((char **)0x20); __argv[1] = *((char **)0x1C); - main(__argc, __argv); +#endif + main(/*__argc*/2, __argv); exit(); } diff --git a/programs/media/ac97snd/ufmod.obj b/programs/media/ac97snd/ufmod.obj new file mode 100644 index 0000000000000000000000000000000000000000..1116721662fe875feaf333481b475dbc7f0b8259 GIT binary patch literal 8451 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