From 836a4ec7b1c8ad2793f899cf7b4a114e14314951 Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Sat, 8 Jan 2022 22:35:02 +0300 Subject: [PATCH] updates to os/2 build --- Makefile.os2 | 160 +++++++++++++++++++++++++++------- build-scripts/os2-buildbot.sh | 5 +- test/Makefile.os2 | 21 +---- 3 files changed, 130 insertions(+), 56 deletions(-) diff --git a/Makefile.os2 b/Makefile.os2 index 7f79dca56..856bec8cc 100644 --- a/Makefile.os2 +++ b/Makefile.os2 @@ -21,26 +21,29 @@ INCPATH = -I"$(%WATCOM)/h/os2" -I"$(%WATCOM)/h" INCPATH+= -Iinclude LIBM = SDL2libm.lib +TLIB = SDL2test.lib LIBS = mmpm2.lib $(LIBM) CFLAGS = -bt=os2 -d0 -q -bm -5s -fp5 -fpi87 -sg -oteanbmier -ei # max warnings: CFLAGS+= -wx # newer OpenWatcom versions enable W303 by default CFLAGS+= -wcd=303 +# the include paths : +CFLAGS+= $(INCPATH) +CFLAGS_STATIC=$(CFLAGS) # building dll: -CFLAGS+= -bd +CFLAGS_DLL =$(CFLAGS) +CFLAGS_DLL+= -bd # iconv: LIBICONV_LIB=iconv2.lib !ifeq LIBICONV 1 -CFLAGS+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 +CFLAGS_DLL+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 LIBS+= $(ICONVLIB) !else LIBS+= libuls.lib libconv.lib !endif -# the include paths : -CFLAGS+= $(INCPATH) # building SDL itself (for DECLSPEC): -CFLAGS+= -DBUILD_SDL +CFLAGS_DLL+= -DBUILD_SDL # Debug options: # - debug messages from OS/2 related code to stdout: @@ -48,10 +51,6 @@ CFLAGS+= -DBUILD_SDL # - debug messages from OS/2 code via SDL_LogDebug(): #CFLAGS+= -DOS2DEBUG=2 -MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c & - k_cos.c k_rem_pio2.c k_sin.c k_tan.c & - s_atan.c s_copysign.c s_cos.c s_fabs.c s_floor.c s_scalbn.c s_sin.c s_tan.c - SRCS = SDL.c SDL_assert.c SDL_error.c SDL_log.c SDL_dataqueue.c SDL_hints.c SRCS+= SDL_getenv.c SDL_iconv.c SDL_malloc.c SDL_qsort.c SDL_stdlib.c SDL_string.c SDL_strtokr.c SDL_crc32.c SRCS+= SDL_cpuinfo.c SDL_atomic.c SDL_spinlock.c SDL_thread.c SDL_timer.c @@ -92,7 +91,6 @@ SRCS+= SDL_os2video.c SDL_os2util.c SDL_os2dive.c SDL_os2vman.c & SRCS+= SDL_dynapi.c OBJS = $(SRCS:.c=.obj) -MOBJS= $(MSRCS:.c=.obj) .extensions: .extensions: .lib .dll .obj .c .asm @@ -103,9 +101,12 @@ MOBJS= $(MSRCS:.c=.obj) .c: ./src/core/os2/geniconv; .c: ./src/locale/;./src/locale/unix;./src/misc;./src/misc/dummy;./src/joystick/hidapi;./src/hidapi -all: $(DLLFILE) $(LIBFILE) .symbolic +all: $(DLLFILE) $(LIBFILE) $(TLIB) .symbolic -$(DLLFILE): $(OBJS) $(LIBM) $(LIBICONV_LIB) $(LNKFILE) +build_dll: .symbolic + @echo * Compiling dll objects + +$(DLLFILE): build_dll $(OBJS) $(LIBM) $(LIBICONV_LIB) $(LNKFILE) @echo * Linking: $@ wlink @$(LNKFILE) @@ -114,40 +115,132 @@ $(LIBFILE): $(DLLFILE) wlib -q -b -n -c -pa -s -t -zld -ii -io $* $(DLLFILE) .c.obj: - wcc386 $(CFLAGS) -fo=$^@ $< + wcc386 $(CFLAGS_DLL) -fo=$^@ $< SDL_syscond.obj: "src/thread/generic/SDL_syscond.c" - wcc386 $(CFLAGS) -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -fo=$^@ $< SDL_cpuinfo.obj: SDL_cpuinfo.c - wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $< SDL_wave.obj: SDL_wave.c - wcc386 $(CFLAGS) -wcd=124 -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -wcd=124 -fo=$^@ $< SDL_blendfillrect.obj: SDL_blendfillrect.c - wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $< SDL_blendline.obj: SDL_blendline.c - wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $< SDL_blendpoint.obj: SDL_blendpoint.c - wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $< SDL_RLEaccel.obj: SDL_RLEaccel.c - wcc386 $(CFLAGS) -wcd=201 -fo=$^@ $< - + wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $< # c99 mode needed because of structs with flexible array members in libusb.h SDL_hidapi.obj: SDL_hidapi.c - wcc386 $(CFLAGS) -za99 -fo=$^@ $< - -.c: ./src/libm; -$(LIBM): $(MOBJS) - wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(MOBJS) + wcc386 $(CFLAGS_DLL) -za99 -fo=$^@ $< $(LIBICONV_LIB): "src/core/os2/iconv2.lbc" + @echo * Creating: $@ wlib -q -b -n -c -pa -s -t -zld -ii -io $@ @$< +# SDL2libm +MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c & + k_cos.c k_rem_pio2.c k_sin.c k_tan.c & + s_atan.c s_copysign.c s_cos.c s_fabs.c s_floor.c s_scalbn.c s_sin.c s_tan.c +MOBJS= $(MSRCS:.c=.obj) + +.c: ./src/libm; +e_atan2.obj: e_atan2.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_exp.obj: e_exp.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_fmod.obj: e_fmod.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_log10.obj: e_log10.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_log.obj: e_log.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_pow.obj: e_pow.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_rem_pio2.obj: e_rem_pio2.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +e_sqrt.obj: e_sqrt.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +k_cos.obj: k_cos.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +k_rem_pio2.obj: k_rem_pio2.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +k_sin.obj: k_sin.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +k_tan.obj: k_tan.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_atan.obj: s_atan.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_copysign.obj: s_copysign.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_cos.obj: s_cos.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_fabs.obj: s_fabs.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_floor.obj: s_floor.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_scalbn.obj: s_scalbn.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_sin.obj: s_sin.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +s_tan.obj: s_tan.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< + +build_libm: .symbolic + @echo * Compiling libm objects +$(LIBM): build_libm $(MOBJS) + @echo * Creating: $@ + wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(MOBJS) + +# SDL2test +TSRCS = SDL_test_assert.c SDL_test_common.c SDL_test_compare.c & + SDL_test_crc32.c SDL_test_font.c SDL_test_fuzzer.c SDL_test_harness.c & + SDL_test_imageBlit.c SDL_test_imageBlitBlend.c SDL_test_imageFace.c & + SDL_test_imagePrimitives.c SDL_test_imagePrimitivesBlend.c & + SDL_test_log.c SDL_test_md5.c SDL_test_random.c SDL_test_memory.c +TOBJS= $(TSRCS:.c=.obj) + +.c: ./src/test; +SDL_test_assert.obj: SDL_test_assert.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_common.obj: SDL_test_common.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_compare.obj: SDL_test_compare.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_crc32.obj: SDL_test_crc32.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_font.obj: SDL_test_font.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_fuzzer.obj: SDL_test_fuzzer.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_harness.obj: SDL_test_harness.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_imageBlit.obj: SDL_test_imageBlit.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_imageBlitBlend.obj: SDL_test_imageBlitBlend.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_imageFace.obj: SDL_test_imageFace.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_imagePrimitives.obj: SDL_test_imagePrimitives.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_imagePrimitivesBlend.obj: SDL_test_imagePrimitivesBlend.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_log.obj: SDL_test_log.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_md5.obj: SDL_test_md5.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_random.obj: SDL_test_random.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< +SDL_test_memory.obj: SDL_test_memory.c + wcc386 $(CFLAGS_STATIC) -fo=$^@ $< + +build_tlib: .symbolic + @echo * Compiling testlib objects +$(TLIB): build_tlib $(TOBJS) + @echo * Creating: $@ + wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(TOBJS) + $(LNKFILE): @echo * Creating linker file: $@ @%create $@ @@ -165,7 +258,7 @@ $(LNKFILE): @%append $@ OPTION SHOWDEAD clean: .SYMBOLIC - @ echo * Clean: $(LIBNAME) + @echo * Clean: $(LIBNAME) @if exist *.obj rm *.obj @if exist *.err rm *.err @if exist $(LNKFILE) rm $(LNKFILE) @@ -177,3 +270,4 @@ distclean: .SYMBOLIC clean @if exist $(LIBHOME)/*.map rm $(LIBHOME)/*.map @if exist $(LIBFILE) rm $(LIBFILE) @if exist $(DLLFILE) rm $(DLLFILE) + @if exist $(TLIB) rm $(TLIB) diff --git a/build-scripts/os2-buildbot.sh b/build-scripts/os2-buildbot.sh index e0a53c8d0..ff4b5f64b 100755 --- a/build-scripts/os2-buildbot.sh +++ b/build-scripts/os2-buildbot.sh @@ -12,7 +12,6 @@ if [ -z "$WATCOM" ]; then echo "This is often something like '/usr/local/share/watcom'" 1>&2 exit 1 fi - export PATH="$WATCOM/binl:$PATH" ZIPFILE="$1" @@ -31,8 +30,8 @@ rm -f $ZIPFILE wmake -f Makefile.os2 rm -rf $ZIPDIR mkdir -p $ZIPDIR -chmod a+r SDL2.lib SDL2.dll -mv SDL2.lib SDL2.dll $ZIPDIR/ +chmod 644 SDL2.dll SDL2.lib SDL2test.lib +mv SDL2.dll SDL2.lib SDL2test.lib $ZIPDIR/ cp -R include $ZIPDIR/ zip -9r "buildbot/$ZIPFILE" $ZIPDIR diff --git a/test/Makefile.os2 b/test/Makefile.os2 index dd2dbaddc..e238af4be 100644 --- a/test/Makefile.os2 +++ b/test/Makefile.os2 @@ -7,7 +7,7 @@ CFLAGS = $(INCPATH) -bt=os2 -d0 -q -bm -5s -fp5 -fpi87 -sg -oteanbmier -ei CFLAGS+= -wx -wcd=303 LIBPATH = .. -LIBS = SDL2.lib $(TESTLIB) +LIBS = SDL2.lib SDL2test.lib #CFLAGS+= -DHAVE_SDL_TTF #TTFLIBS = SDL2ttf.lib @@ -29,14 +29,6 @@ TARGETS = testatomic.exe testdisplayinfo.exe testbounds.exe testdraw2.exe & testsurround.exe testyuv.exe testgl2.exe testvulkan.exe testnative.exe & testautomation.exe -# SDL2test.lib sources (../src/test) -CSRCS = SDL_test_assert.c SDL_test_common.c SDL_test_compare.c & - SDL_test_crc32.c SDL_test_font.c SDL_test_fuzzer.c SDL_test_harness.c & - SDL_test_imageBlit.c SDL_test_imageBlitBlend.c SDL_test_imageFace.c & - SDL_test_imagePrimitives.c SDL_test_imagePrimitivesBlend.c & - SDL_test_log.c SDL_test_md5.c SDL_test_random.c SDL_test_memory.c -TESTLIB = SDL2test.lib - # testautomation sources TASRCS = testautomation.c testautomation_audio.c testautomation_clipboard.c & testautomation_events.c testautomation_hints.c & @@ -56,11 +48,7 @@ all: $(TARGETS) .c: ../src/test -$(TESTLIB): $(COBJS) - wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(COBJS) - .obj.exe: - @%make $(TESTLIB) wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS)} op q op el file {$<} name $@ .c.obj: @@ -68,29 +56,22 @@ $(TESTLIB): $(COBJS) # specials testautomation.exe: $(TAOBJS) - @%make $(TESTLIB) wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS)} op q op el file {$<} name $@ testnative.exe: testnative.obj testnativeos2.obj - @%make $(TESTLIB) wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS)} op q op el file {$<} name $@ testoverlay2.exe: testoverlay2.obj testyuv_cvt.obj - @%make $(TESTLIB) wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS)} op q op el file {$<} name $@ testyuv.exe: testyuv.obj testyuv_cvt.obj - @%make $(TESTLIB) wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS)} op q op el file {$<} name $@ testime.exe: testime.obj - @%make $(TESTLIB) wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS) $(TTFLIBS)} op q op el file {$<} name $@ clean: .SYMBOLIC @if exist *.obj rm *.obj @if exist *.err rm *.err - distclean: .SYMBOLIC clean @if exist *.exe rm *.exe - @if exist $(TESTLIB) rm $(TESTLIB)