Check-in [e956c9bbda]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:now build haiku undroidwish with jsmpeg and imgjp2
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e956c9bbdaf0d871995757c86f451142f7ea43e4
User & Date: chw 2019-09-12 10:08:52
Context
2019-09-13
04:05
add tk upstream changes check-in: d39c4fd1ed user: chw tags: trunk
2019-09-12
10:09
merge with trunk check-in: 1426863e72 user: chw tags: wtf-8-experiment
10:08
now build haiku undroidwish with jsmpeg and imgjp2 check-in: e956c9bbda user: chw tags: trunk
09:36
add selected tcl upstream changes check-in: 755ff795c0 user: chw tags: trunk
Changes

Changes to jni/sdl2tk/sdl/SdlTkInt.c.

5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
....
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
	    last_sc = (void *) new_sc;
	    SdlTkSetSWCursor(new_sc);
	}
	return;
    }
    hPtr = Tcl_FindHashEntry(&SdlTkX.sdlcursors, INT2PTR(shape));
    if (hPtr == NULL) {
#ifndef __HAIKU__
	if (SdlTkX.is_framebuffer) {
	    const unsigned char *data, *mask;
	    int x, y;

	    data = SdlTkGetSystemCursorData(shape);
	    if (data != NULL) {
		/* Hot spot */
................................................................................
		}
		sc = SDL_CreateCursor(d, m, 64, 64, x, y);
		if (sc != NULL) {
		    goto madeCursor;
		}
	    }
	}
#endif
	sc = SDL_CreateSystemCursor(shape);
madeCursor:
	if (sc != NULL) {
	    int isNew;

	    hPtr = Tcl_CreateHashEntry(&SdlTkX.sdlcursors,
				       INT2PTR(shape), &isNew);







<







 







<







5324
5325
5326
5327
5328
5329
5330

5331
5332
5333
5334
5335
5336
5337
....
5355
5356
5357
5358
5359
5360
5361

5362
5363
5364
5365
5366
5367
5368
	    last_sc = (void *) new_sc;
	    SdlTkSetSWCursor(new_sc);
	}
	return;
    }
    hPtr = Tcl_FindHashEntry(&SdlTkX.sdlcursors, INT2PTR(shape));
    if (hPtr == NULL) {

	if (SdlTkX.is_framebuffer) {
	    const unsigned char *data, *mask;
	    int x, y;

	    data = SdlTkGetSystemCursorData(shape);
	    if (data != NULL) {
		/* Hot spot */
................................................................................
		}
		sc = SDL_CreateCursor(d, m, 64, 64, x, y);
		if (sc != NULL) {
		    goto madeCursor;
		}
	    }
	}

	sc = SDL_CreateSystemCursor(shape);
madeCursor:
	if (sc != NULL) {
	    int isNew;

	    hPtr = Tcl_CreateHashEntry(&SdlTkX.sdlcursors,
				       INT2PTR(shape), &isNew);

Changes to jni/sdl2tk/sdl/SdlTkX.c.

6093
6094
6095
6096
6097
6098
6099






6100
6101
6102
6103
6104
6105
6106
	}
    }
#endif

#ifdef __HAIKU__
    if (!SdlTkX.arg_nogl) {
	SdlTkX.arg_swcursor = 1;






    }
#endif
    if (SdlTkX.arg_swcursor) {
	SDL_ShowCursor(0);
    }

    memset(&rendinfo, 0, sizeof (rendinfo));







>
>
>
>
>
>







6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
	}
    }
#endif

#ifdef __HAIKU__
    if (!SdlTkX.arg_nogl) {
	SdlTkX.arg_swcursor = 1;
    } else {
	char *p = getenv("SDL_VIDEODRIVER");

	if ((p != NULL) && (strcmp(p, "jsmpeg") == 0)) {
	    SdlTkX.arg_swcursor = 1;
	}
    }
#endif
    if (SdlTkX.arg_swcursor) {
	SDL_ShowCursor(0);
    }

    memset(&rendinfo, 0, sizeof (rendinfo));

jni/tcl/library/tzdata/America/Indiana/Tell_City became executable.

Changes to undroid/build-undroidwish-haiku.sh.

90
91
92
93
94
95
96
97

98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
...
143
144
145
146
147
148
149






150
151
152
153
154
155
156
...
255
256
257
258
259
260
261




















262
263
264
265
266
267
268
...
534
535
536
537
538
539
540









































541
542
543
544
545
546
547
548
549

550
551
552
553
554
555
556
557
....
1251
1252
1253
1254
1255
1256
1257


































1258
1259
1260
1261
1262
1263
1264

1265
1266
1267
1268
1269
1270
1271
....
1382
1383
1384
1385
1386
1387
1388

1389
1390
1391
1392
1393
1394
1395
else
  CC="$CC -DTCL_UTF_MAX=6"
  CXX="$CXX -fno-exceptions -fno-rtti -DTCL_UTF_MAX=6"
fi
NM=nm
export STRIP AR RANLIB CC CXX NM

SUBDIRS="tcl zlib curl tcludp tdom tclvfs tclkit trofs tbcload tls"

SUBDIRS="${SUBDIRS} Memchan TclCurl freetype SDL2 sdl2tk blt jpeg-turbo"
SUBDIRS="${SUBDIRS} 3dcanvas tkimg trf tktable tktreectrl tkpath itk tkhtml"
SUBDIRS="${SUBDIRS} tclx libdmtx ZBar zint"
SUBDIRS="${SUBDIRS} tkvnc tksvg VecTcl tclral tclepeg"
# libusb+tcluvc have stability problems
# SUBDIRS="${SUBDIRS} tcluvc"
SUBDIRS="${SUBDIRS} xotcl nsf vu rl_json mpexpr tclcsv tkzinc"
SUBDIRS="${SUBDIRS} libffi ffidl tcl-lmdb DiffUtilTcl"
SUBDIRS="${SUBDIRS} tclparser tclcompiler snap7 libmodbus topcua parse_args"
SUBDIRS="${SUBDIRS} tcl-fuse Tix"

ACTION="$1"
if test -z "$ACTION" ; then
  ACTION=build
fi

clean_build_stamps() {
................................................................................
        ;;
      mpexpr)
        rm -f ${i}/unix/build-stamp
        ;;
      snap7)
        rm -f ${i}/build/haiku/build-stamp
        ;;






      *)
        rm -f ${i}/build-stamp
        ;;
     esac
  done
}

................................................................................
        ) || true
        ;;
      snap7)
        (
          exec >> build.log 2>&1
          make -C snap7/build/haiku -f haiku.mk clean || true
        ) || true




















        ;;
      *)
        (
          exec >> build.log 2>&1
          make -C $i ${ACTION} || true
        ) || true
        ;;
................................................................................
  perl -ni -e 'print unless /t42_driver/' objs/ftmodule.h
  perl -ni -e 'print unless /winfnt_driver/' objs/ftmodule.h
  make || exit 1
  make install || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail










































echo -n "build SDL2 (static, pic) ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  CC="$CC -fPIC -DSDL_BAPP_MIMETYPE=\\\"application/x-vnd.undroidwish\\\""
  CXX="$CXX -fPIC -DSDL_BAPP_MIMETYPE=\\\"application/x-vnd.undroidwish\\\""
  cd SDL2
  test -e build-stamp && echo >&3 "already done" && exit 0

  ./configure --prefix=${PFX_HERE} --enable-video-opengl \
    --disable-video-vulkan --disable-shared --disable-rpath || exit 1
  make || exit 1
  make install || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail

................................................................................
  rm ${HERE}/sdl2tk/sdl/tkConfig.sh
  make || exit 1
  make install-binaries install-libraries DESTDIR=${HERE} || exit 1
  cp -rp demos ${PFX_HERE}/lib/Tix*
  touch build-stamp
  echo >&3 "done"
) || fail



































echo -n "strip binaries ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  set -x
  $STRIP ${PFX_HERE}/bin/tclsh* ${PFX_HERE}/bin/sdl2wish* ${PFX_HERE}/lib/*/*.so

  # fixup paths in installation tree
  perl -pi -e "s@${PFX_HERE}@${PFX}@g" ${PFX_HERE}/bin/*-config
  perl -pi -e "s@${HERE}/tcl/unix@${PFX}/lib@g" ${PFX_HERE}/bin/*-config
  perl -pi -e "s@${PFX_HERE}@${PFX}@g" ${PFX_HERE}/lib/*.sh
  set +x
  touch .fixup-stamp
  echo >&3 "done"
................................................................................
  cp -rp ${PFX_HERE}/lib/DiffUtil* assets
  cp -rp ${PFX_HERE}/lib/parser* assets
  cp -rp ${PFX_HERE}/lib/tclcompiler* assets
  cp -rp ${PFX_HERE}/lib/topcua* assets
  cp -rp ${PFX_HERE}/lib/parse_args* assets
  cp -rp ${PFX_HERE}/lib/fuse* assets
  cp -rp ${PFX_HERE}/lib/Tix* assets

  # add shortcuts providing builtin:widget, builtin:tksqlite, etc.
  (
    cd assets
    echo > widget \
      'source [file dirname [info script]]/'$(echo sdl2tk*)'/demos/widget'
    echo > tksqlite \
      'source [file dirname [info script]]/'$(echo tksqlite*)'/tksqlite.tcl'







|
>









|







 







>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>









>
|







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






|
>







 







>







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
...
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
...
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
....
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
....
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
else
  CC="$CC -DTCL_UTF_MAX=6"
  CXX="$CXX -fno-exceptions -fno-rtti -DTCL_UTF_MAX=6"
fi
NM=nm
export STRIP AR RANLIB CC CXX NM

SUBDIRS="tcl zlib curl tcludp tdom tclvfs tclkit trofs tbcload"
SUBDIRS="${SUBDIRS} tls libwebsockets"
SUBDIRS="${SUBDIRS} Memchan TclCurl freetype SDL2 sdl2tk blt jpeg-turbo"
SUBDIRS="${SUBDIRS} 3dcanvas tkimg trf tktable tktreectrl tkpath itk tkhtml"
SUBDIRS="${SUBDIRS} tclx libdmtx ZBar zint"
SUBDIRS="${SUBDIRS} tkvnc tksvg VecTcl tclral tclepeg"
# libusb+tcluvc have stability problems
# SUBDIRS="${SUBDIRS} tcluvc"
SUBDIRS="${SUBDIRS} xotcl nsf vu rl_json mpexpr tclcsv tkzinc"
SUBDIRS="${SUBDIRS} libffi ffidl tcl-lmdb DiffUtilTcl"
SUBDIRS="${SUBDIRS} tclparser tclcompiler snap7 libmodbus topcua parse_args"
SUBDIRS="${SUBDIRS} tcl-fuse Tix openjpeg imgjp2"

ACTION="$1"
if test -z "$ACTION" ; then
  ACTION=build
fi

clean_build_stamps() {
................................................................................
        ;;
      mpexpr)
        rm -f ${i}/unix/build-stamp
        ;;
      snap7)
        rm -f ${i}/build/haiku/build-stamp
        ;;
      libwebsockets)
        rm -f ${i}/build/build-stamp
	;;
      openjpeg)
        rm -f ${i}/build/build-stamp
	;;
      *)
        rm -f ${i}/build-stamp
        ;;
     esac
  done
}

................................................................................
        ) || true
        ;;
      snap7)
        (
          exec >> build.log 2>&1
          make -C snap7/build/haiku -f haiku.mk clean || true
        ) || true
        ;;
      libwebsockets)
        (
          exec >> build.log 2>&1
          if test "$ACTION" = "distclean" ; then
            rm -rf libwebsockets/build
          else
            make -C libwebsockets/build ${ACTION} || true
          fi
        ) || true
        ;;
      openjpeg)
        (
          exec >> build.log 2>&1
          if test "$ACTION" = "distclean" ; then
            rm -rf openjpeg/build
          else
            make -C openjpeg/build ${ACTION} || true
          fi
        ) || true
        ;;
      *)
        (
          exec >> build.log 2>&1
          make -C $i ${ACTION} || true
        ) || true
        ;;
................................................................................
  perl -ni -e 'print unless /t42_driver/' objs/ftmodule.h
  perl -ni -e 'print unless /winfnt_driver/' objs/ftmodule.h
  make || exit 1
  make install || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail

echo -n "build libwebsockets (static, pic) ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  CC="$CC -fPIC"
  CXX="$CXX -fPIC"
  mkdir -p libwebsockets/build
  cd libwebsockets/build
  test -e build-stamp && echo >&3 "already done" && exit 0
  cmake .. -DCMAKE_INSTALL_PREFIX=${PFX_HERE}/extra -DLWS_WITHOUT_TESTAPPS=ON \
    -DLWS_IPV6=OFF -DLWS_WITH_SHARED=OFF -DLWS_WITH_SSL=OFF || exit 1
  make VERBOSE=1 COLOR=0 || exit 1
  make VERBOSE=1 COLOR=0 install || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail

echo -n "prep ffmpeg compat headers ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  test -r ${PFX_HERE}/extra/lib/pkgconfig/libavutil.pc && \
    echo >&3 "already done" && exit 0
  mkdir -p ${PFX_HERE}/extra/include
  mkdir -p ${PFX_HERE}/extra/lib/pkgconfig
  cp -rp ${AWDIR}/undroid/compat/ffmpeg/libavutil ${PFX_HERE}/extra/include
  cp -rp ${AWDIR}/undroid/compat/ffmpeg/libavcodec ${PFX_HERE}/extra/include
  cp -rp ${AWDIR}/undroid/compat/ffmpeg/libswscale ${PFX_HERE}/extra/include
  sed -e 's!@INCLUDE@!'"${PFX_HERE}/extra/include"'!g' \
    < ${AWDIR}/undroid/compat/ffmpeg/pkgconfig/libavutil.pc.in \
    > ${PFX_HERE}/extra/lib/pkgconfig/libavutil.pc
  sed -e 's!@INCLUDE@!'"${PFX_HERE}/extra/include"'!g' \
    < ${AWDIR}/undroid/compat/ffmpeg/pkgconfig/libavcodec.pc.in \
    > ${PFX_HERE}/extra/lib/pkgconfig/libavcodec.pc
  sed -e 's!@INCLUDE@!'"${PFX_HERE}/extra/include"'!g' \
    < ${AWDIR}/undroid/compat/ffmpeg/pkgconfig/libswscale.pc.in \
    > ${PFX_HERE}/extra/lib/pkgconfig/libswscale.pc
  touch .prep-ffmpeg
  echo >&3 "done"
)

echo -n "build SDL2 (static, pic) ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  CC="$CC -fPIC -DSDL_BAPP_MIMETYPE=\\\"application/x-vnd.undroidwish\\\""
  CXX="$CXX -fPIC -DSDL_BAPP_MIMETYPE=\\\"application/x-vnd.undroidwish\\\""
  cd SDL2
  test -e build-stamp && echo >&3 "already done" && exit 0
  PKG_CONFIG_PATH="${PFX_HERE}/extra/lib/pkgconfig" ./configure \
    --prefix=${PFX_HERE} --enable-video-opengl --enable-video-jsmpeg \
    --disable-video-vulkan --disable-shared --disable-rpath || exit 1
  make || exit 1
  make install || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail

................................................................................
  rm ${HERE}/sdl2tk/sdl/tkConfig.sh
  make || exit 1
  make install-binaries install-libraries DESTDIR=${HERE} || exit 1
  cp -rp demos ${PFX_HERE}/lib/Tix*
  touch build-stamp
  echo >&3 "done"
) || fail

echo -n "build openjpeg (static, pic) ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  mkdir -p openjpeg/build
  cd openjpeg/build
  test -e build-stamp && echo >&3 "already done" && exit 0
  cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
    -DCMAKE_INSTALL_PREFIX=${PFX_HERE}/extra -DBUILD_SHARED_LIBS:bool=off \
    -DBUILD_PKGCONFIG_FILES=on -DOPJ_USE_THREAD:bool=off || exit 1
  make VERBOSE=1 COLOR=0 openjp2/fast || exit 1
  make VERBOSE=1 COLOR=0 opj_compress/fast || exit 1
  make VERBOSE=1 COLOR=0 opj_decompress/fast || exit 1
  make VERBOSE=1 COLOR=0 opj_dump/fast || exit 1
  make VERBOSE=1 COLOR=0 install/fast || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail

echo -n "build imgjp2 ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  cd imgjp2
  test -e build-stamp && echo >&3 "already done" && exit 0
  PKG_CONFIG_PATH=${PFX_HERE}/extra/lib/pkgconfig DESTDIR=${HERE} \
    ./configure --prefix=${PFX} --with-tcl=${HERE}/tcl/unix \
      --with-tk=${HERE}/sdl2tk/sdl --enable-threads || exit 1
  make || exit 1
  make install-binaries install-libraries DESTDIR=${HERE} || exit 1
  touch build-stamp
  echo >&3 "done"
) || fail

echo -n "strip binaries ... "
(
  exec 3>&1
  exec >> build.log 2>&1
  set -x
  $STRIP ${PFX_HERE}/bin/tclsh* ${PFX_HERE}/bin/sdl2wish* \
    ${PFX_HERE}/lib/*/*.so
  # fixup paths in installation tree
  perl -pi -e "s@${PFX_HERE}@${PFX}@g" ${PFX_HERE}/bin/*-config
  perl -pi -e "s@${HERE}/tcl/unix@${PFX}/lib@g" ${PFX_HERE}/bin/*-config
  perl -pi -e "s@${PFX_HERE}@${PFX}@g" ${PFX_HERE}/lib/*.sh
  set +x
  touch .fixup-stamp
  echo >&3 "done"
................................................................................
  cp -rp ${PFX_HERE}/lib/DiffUtil* assets
  cp -rp ${PFX_HERE}/lib/parser* assets
  cp -rp ${PFX_HERE}/lib/tclcompiler* assets
  cp -rp ${PFX_HERE}/lib/topcua* assets
  cp -rp ${PFX_HERE}/lib/parse_args* assets
  cp -rp ${PFX_HERE}/lib/fuse* assets
  cp -rp ${PFX_HERE}/lib/Tix* assets
  cp -rp ${PFX_HERE}/lib/imgjp2* assets
  # add shortcuts providing builtin:widget, builtin:tksqlite, etc.
  (
    cd assets
    echo > widget \
      'source [file dirname [info script]]/'$(echo sdl2tk*)'/demos/widget'
    echo > tksqlite \
      'source [file dirname [info script]]/'$(echo tksqlite*)'/tksqlite.tcl'