Compare commits

...

9 Commits

Author SHA1 Message Date
432eff3e10 Added GitHub Actions workflow for building Launch5j.
Some checks failed
CI/CD / Build Launch5j (x64, MINGW64, x86_64) (push) Has been cancelled
CI/CD / Build Launch5j (x86, MINGW32, i686) (push) Has been cancelled
CI/CD / Generate Docs (push) Has been cancelled
CI/CD / Build Example (push) Has been cancelled
CI/CD / Generate Release Package (push) Has been cancelled
2024-10-01 16:11:55 +02:00
0a36344f49 Bump version. 2024-09-29 18:10:59 +02:00
02931280d0 Added runtime option for *not* setting the current working directory to the executable directory. 2024-09-29 16:23:11 +02:00
9d27eb5a98 Limit the Java heap size to 1024 MB when 32-Bit JVM was detected. 2023-03-28 22:14:45 +02:00
2d5b01092b Allow options 'ID_STR_HEAPMIN' and 'ID_STR_HEAPMAX' to be set independently. 2023-03-26 20:50:13 +02:00
656d4145c1 Added configuration options to set the minimum/maximum JVM heap size as percentage of the total physical memory. 2023-03-26 18:28:19 +02:00
735a0839ee Added detection of Eclipse Adoptium JRE/JDK (supersedes AdoptOpenJDK). 2023-03-26 16:19:00 +02:00
548787d7b2 Fixed build with latest version of MSYS2/Mingw-w64. 2023-03-26 15:52:00 +02:00
60916768ac Improved generation of the manifest + small tweak to Makefile generator code. 2020-10-06 13:14:30 +02:00
14 changed files with 577 additions and 316 deletions

113
.github/workflows/build-l5j.yml vendored Normal file
View File

@ -0,0 +1,113 @@
name: "CI/CD"
on:
push:
branches: ['**']
pull_request:
release:
types: [published]
jobs:
build:
name: Build Launch5j
runs-on: windows-2019
strategy:
matrix:
include:
- flavor: "x86"
msystem: "MINGW32"
toolchain: "i686"
- flavor: "x64"
msystem: "MINGW64"
toolchain: "x86_64"
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
update: true
install: mingw-w64-${{ matrix.toolchain }}-toolchain base-devel git
- uses: actions/checkout@v4
- shell: msys2 {0}
run: make -B
- uses: actions/upload-artifact@v4
with:
name: launch5j-bin-${{ matrix.flavor }}
path: bin/*.exe
example:
name: Build Example
needs: build
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-java@v4
with:
java-version: "8"
distribution: "temurin"
architecture: x64
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: launch5j-bin-x86
path: bin
- run: |
ant -noinput -buildfile src/example/build.xml
mkdir -p /var/tmp/launch5j-example
cp -f bin/launch5j_x86_wrapped_registry.exe /var/tmp/launch5j-example/example.exe
dd if=src/example/dist/example.jar of=/var/tmp/launch5j-example/example.exe oflag=append conv=notrunc
- uses: actions/upload-artifact@v4
with:
name: launch5j-example
path: /var/tmp/launch5j-example/*
docs:
name: Generate Docs
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: docker://pandoc/core:2.9
with:
args: >-
-f markdown-implicit_figures -t html5
--standalone --ascii --toc --toc-depth=2
--css="etc/css/gh-pandoc.css"
-o "./README.html" "./README.yaml" "./README.md"
- uses: actions/upload-artifact@v4
with:
name: launch5j-doc
path: |
LICENSE.txt
README.html
etc/img/*.png
etc/css/*.css
release:
name: Generate Release Package
needs: [build, example, docs]
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v4
with:
name: launch5j-doc
- uses: actions/download-artifact@v4
with:
name: launch5j-bin-x86
- uses: actions/download-artifact@v4
with:
name: launch5j-bin-x64
path: x64
- uses: actions/download-artifact@v4
with:
name: launch5j-example
path: example
- run: |
mkdir -p /var/tmp/launch5j-release
tar -czvf /var/tmp/launch5j-release/launch5j-bin.$(date +"%Y-%m-%d").tar.gz *
- uses: actions/upload-artifact@v4
with:
name: launch5j-release
path: /var/tmp/launch5j-release/*
- if: ${{ github.event_name == 'release' }}
uses: Roang-zero1/github-upload-release-artifacts-action@v2
with:
args: /var/tmp/launch5j-release/
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,4 +1,4 @@
Copyright 2020 LoRd_MuldeR <mulder2@gmx.de>
Copyright 2024 LoRd_MuldeR <mulder2@gmx.de>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

391
Makefile
View File

@ -62,10 +62,11 @@ manifests: initialize
.PHONY: resources
resources: manifests
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -o obj/common-console.$(CPU_ARCH).o res/common.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -o obj/common-windows.$(CPU_ARCH).o res/common.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/common.$(CPU_ARCH).o res/common.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/manifest-console.$(CPU_ARCH).o res/manifest-console.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/manifest-windows.$(CPU_ARCH).o res/manifest-windows.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/registry.$(CPU_ARCH).o res/registry.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc
.PHONY: clean
clean: initialize
@ -77,338 +78,338 @@ clean: initialize
# Binaries
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.PHONY: l5j_3408C391
l5j_3408C391: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH).exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_B855
launch5j_B855: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH).exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH).exe
endif
.PHONY: l5j_7136B6DC
l5j_7136B6DC: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_A2FE
launch5j_A2FE: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_noenc.exe
endif
.PHONY: l5j_A9CBE2BD
l5j_A9CBE2BD: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_D99E
launch5j_D99E: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nosplash.exe
endif
.PHONY: l5j_2FFF81A3
l5j_2FFF81A3: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_6DCE
launch5j_6DCE: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe
endif
.PHONY: l5j_37E2DD90
l5j_37E2DD90: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_9E54
launch5j_9E54: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait.exe
endif
.PHONY: l5j_2FF174B2
l5j_2FF174B2: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_1CDC
launch5j_1CDC: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe
endif
.PHONY: l5j_A5086989
l5j_A5086989: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_459A
launch5j_459A: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe
endif
.PHONY: l5j_57CF673B
l5j_57CF673B: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_AA99
launch5j_AA99: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe
endif
.PHONY: l5j_D9F32FAB
l5j_D9F32FAB: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_2F4C
launch5j_2F4C: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry.exe
endif
.PHONY: l5j_1DB1893C
l5j_1DB1893C: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_1A0D
launch5j_1A0D: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_noenc.exe
endif
.PHONY: l5j_CF357B5F
l5j_CF357B5F: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_9AA2
launch5j_9AA2: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe
endif
.PHONY: l5j_F29626A2
l5j_F29626A2: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_7178
launch5j_7178: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe
endif
.PHONY: l5j_EED289B0
l5j_EED289B0: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_A25D
launch5j_A25D: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait.exe
endif
.PHONY: l5j_42987161
l5j_42987161: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_20DF
launch5j_20DF: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe
endif
.PHONY: l5j_00EE138C
l5j_00EE138C: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_8568
launch5j_8568: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe
endif
.PHONY: l5j_58538121
l5j_58538121: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_2BCA
launch5j_2BCA: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe
endif
.PHONY: l5j_C02E308A
l5j_C02E308A: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_7B70
launch5j_7B70: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped.exe
endif
.PHONY: l5j_E23ED2F0
l5j_E23ED2F0: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_91AC
launch5j_91AC: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe
endif
.PHONY: l5j_82A3B0B4
l5j_82A3B0B4: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_FA0C
launch5j_FA0C: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe
endif
.PHONY: l5j_4529DCBD
l5j_4529DCBD: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_2559
launch5j_2559: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe
endif
.PHONY: l5j_30FFBD22
l5j_30FFBD22: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_2EFE
launch5j_2EFE: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe
endif
.PHONY: l5j_8F60BF3F
l5j_8F60BF3F: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_8F9C
launch5j_8F9C: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe
endif
.PHONY: l5j_81396422
l5j_81396422: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_3478
launch5j_3478: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe
endif
.PHONY: l5j_08580B94
l5j_08580B94: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_4F5B
launch5j_4F5B: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe
endif
.PHONY: l5j_ED6E61AB
l5j_ED6E61AB: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_2A1E
launch5j_2A1E: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe
endif
.PHONY: l5j_9A3A029E
l5j_9A3A029E: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_FE04
launch5j_FE04: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe
endif
.PHONY: l5j_E9BFEAD2
l5j_E9BFEAD2: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_2BCE
launch5j_2BCE: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe
endif
.PHONY: l5j_6693C2C3
l5j_6693C2C3: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_9D63
launch5j_9D63: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe
endif
.PHONY: l5j_F367C257
l5j_F367C257: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_F5D7
launch5j_F5D7: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe
endif
.PHONY: l5j_A0ECB342
l5j_A0ECB342: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_33A4
launch5j_33A4: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe
endif
.PHONY: l5j_B40D57DA
l5j_B40D57DA: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_D3FD
launch5j_D3FD: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe
endif
.PHONY: l5j_7C40A82A
l5j_7C40A82A: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe src/head.c obj/common-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
.PHONY: launch5j_D36F
launch5j_D36F: resources
$(CC) $(CFLAGS) -mwindows -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-windows.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o -lcomctl32
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe
endif
.PHONY: l5j_50BA8B12
l5j_50BA8B12: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_F945
launch5j_F945: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui.exe
endif
.PHONY: l5j_49A8C2A3
l5j_49A8C2A3: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_4745
launch5j_4745: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_noenc.exe
endif
.PHONY: l5j_FE360AA8
l5j_FE360AA8: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_nowait.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_01E0
launch5j_01E0: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_nowait.exe
endif
.PHONY: l5j_B1DC1479
l5j_B1DC1479: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_nowait_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_78AA
launch5j_78AA: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_nowait_noenc.exe
endif
.PHONY: l5j_3945741E
l5j_3945741E: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_registry.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_B8C6
launch5j_B8C6: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_registry.exe
endif
.PHONY: l5j_3D82C154
l5j_3D82C154: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_registry_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_3848
launch5j_3848: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_registry_noenc.exe
endif
.PHONY: l5j_D5C53DAC
l5j_D5C53DAC: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_registry_nowait.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_778B
launch5j_778B: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_registry_nowait.exe
endif
.PHONY: l5j_5A1AA93B
l5j_5A1AA93B: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_registry_nowait_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_627C
launch5j_627C: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_registry_nowait_noenc.exe
endif
.PHONY: l5j_18F10B52
l5j_18F10B52: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_66EE
launch5j_66EE: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped.exe
endif
.PHONY: l5j_823D747D
l5j_823D747D: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_9FFA
launch5j_9FFA: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_noenc.exe
endif
.PHONY: l5j_07336CFC
l5j_07336CFC: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_nowait.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_7C79
launch5j_7C79: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_nowait.exe
endif
.PHONY: l5j_1173C153
l5j_1173C153: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_nowait_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o
.PHONY: launch5j_2928
launch5j_2928: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_nowait_noenc.exe
endif
.PHONY: l5j_95FF26D5
l5j_95FF26D5: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_8EFD
launch5j_8EFD: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry.exe
endif
.PHONY: l5j_3E68DF63
l5j_3E68DF63: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_59FE
launch5j_59FE: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_noenc.exe
endif
.PHONY: l5j_A857258D
l5j_A857258D: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_nowait.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_C25B
launch5j_C25B: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_nowait.exe
endif
.PHONY: l5j_487016A6
l5j_487016A6: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_nowait_noenc.exe src/head.c obj/common-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
.PHONY: launch5j_DAFA
launch5j_DAFA: resources
$(CC) $(CFLAGS) -mconsole -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/manifest-console.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o
ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nogui_wrapped_registry_nowait_noenc.exe
endif
@ -419,52 +420,52 @@ endif
.PHONY: all
all: \
l5j_3408C391 \
l5j_7136B6DC \
l5j_A9CBE2BD \
l5j_2FFF81A3 \
l5j_37E2DD90 \
l5j_2FF174B2 \
l5j_A5086989 \
l5j_57CF673B \
l5j_D9F32FAB \
l5j_1DB1893C \
l5j_CF357B5F \
l5j_F29626A2 \
l5j_EED289B0 \
l5j_42987161 \
l5j_00EE138C \
l5j_58538121 \
l5j_C02E308A \
l5j_E23ED2F0 \
l5j_82A3B0B4 \
l5j_4529DCBD \
l5j_30FFBD22 \
l5j_8F60BF3F \
l5j_81396422 \
l5j_08580B94 \
l5j_ED6E61AB \
l5j_9A3A029E \
l5j_E9BFEAD2 \
l5j_6693C2C3 \
l5j_F367C257 \
l5j_A0ECB342 \
l5j_B40D57DA \
l5j_7C40A82A \
l5j_50BA8B12 \
l5j_49A8C2A3 \
l5j_FE360AA8 \
l5j_B1DC1479 \
l5j_3945741E \
l5j_3D82C154 \
l5j_D5C53DAC \
l5j_5A1AA93B \
l5j_18F10B52 \
l5j_823D747D \
l5j_07336CFC \
l5j_1173C153 \
l5j_95FF26D5 \
l5j_3E68DF63 \
l5j_A857258D \
l5j_487016A6
launch5j_B855 \
launch5j_A2FE \
launch5j_D99E \
launch5j_6DCE \
launch5j_9E54 \
launch5j_1CDC \
launch5j_459A \
launch5j_AA99 \
launch5j_2F4C \
launch5j_1A0D \
launch5j_9AA2 \
launch5j_7178 \
launch5j_A25D \
launch5j_20DF \
launch5j_8568 \
launch5j_2BCA \
launch5j_7B70 \
launch5j_91AC \
launch5j_FA0C \
launch5j_2559 \
launch5j_2EFE \
launch5j_8F9C \
launch5j_3478 \
launch5j_4F5B \
launch5j_2A1E \
launch5j_FE04 \
launch5j_2BCE \
launch5j_9D63 \
launch5j_F5D7 \
launch5j_33A4 \
launch5j_D3FD \
launch5j_D36F \
launch5j_F945 \
launch5j_4745 \
launch5j_01E0 \
launch5j_78AA \
launch5j_B8C6 \
launch5j_3848 \
launch5j_778B \
launch5j_627C \
launch5j_66EE \
launch5j_9FFA \
launch5j_7C79 \
launch5j_2928 \
launch5j_8EFD \
launch5j_59FE \
launch5j_C25B \
launch5j_DAFA

View File

@ -74,7 +74,7 @@ Launch5j executables come in a number of variants, allowing you to pick the most
At this time, the following Java distributions can be detected from the registry:
- [Oracle JDK (JavaSoft)](https://www.oracle.com/java/technologies/javase-downloads.html)
- [AdoptOpenJDK](https://adoptopenjdk.net/)
- [Eclipse Adoptium](https://adoptium.net/)
- [Liberica OpenJDK](https://bell-sw.com/)
- [Zulu OpenJDK](https://www.azul.com/downloads/zulu-community/)
@ -109,24 +109,24 @@ It is ***not*** necessary to re-build the executable files for that purpose. Ins
Some options can be configured via the launcher executable's [STRINGTABLE](https://docs.microsoft.com/en-us/windows/win32/menurc/stringtable-resource) resource:
* **`ID_STR_HEADING` (#1)**
* **`ID_STR_HEADING` (0x1)**
Specifies a custom application title that will be used, e.g., as the heading of message boxes.
* **`ID_STR_JVMARGS` (#2)**
* **`ID_STR_JVMARGS` (0x2)**
Specifies *additional* options JVM options to be passed, such as `-Xmx2g` or `-Dproperty=value`.
See here for a list of available options:
<https://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html>
* **`ID_STR_CMDARGS` (#3)**
* **`ID_STR_CMDARGS` (0x3)**
Specifies *additional* fixed command-line parameters to be passed to the Java application.
* **`ID_STR_JREPATH` (#4)**
* **`ID_STR_JREPATH` (0x4)**
Specifies the path to the Java runtime (`javaw.exe`) relative to the launcher executable location.
If not specified, then the *default* runtime path `runtime\\bin\\javaw.exe` is assumed.
(This option does **not** apply to the “registry” variant of Launch5j)
* **`ID_STR_MUTEXID` (#5)**
* **`ID_STR_MUTEXID` (0x5)**
Specifies the application ID to be used when creating the [*single-instance*](http://www.bcbjournal.org/articles/vol3/9911/Single-instance_applications.htm) mutex.
The ID **must** be at least 5 characters in length and **should** be a *unique* string for each application!
If not specified, then **no** mutex will be created and thus *multiple* instances will be allowed.
@ -135,7 +135,24 @@ Some options can be configured via the launcher executable's [STRINGTABLE](https
(This option does **not** apply to the “nowait” variant of Launch5j)
* **`ID_STR_JAVAMIN` (#6)**
* **`ID_STR_HEAPMIN` (0x6)**
Specifies the the ***minimum*** Java heap size (i.e. JVM option `-Xms`), as percentage of the total physical memory.
This value must be an integral value in the `1` to `100` range.
(If `ID_STR_HEAPMAX` is specified too, then this value **must** be less than or equal to `ID_STR_HEAPMAX`).
* **`ID_STR_HEAPMAX` (0x7)**
Specifies the the ***maximum*** Java heap size (i.e. JVM option `-Xmx`), as percentage of the total physical memory.
This value must be an integral value in the `1` to `100` range.
(If `ID_STR_HEAPMIN` is specified too, then this value **must** be greater than or equal to `ID_STR_HEAPMIN`).
* **`ID_STR_NSETCWD` (0x8)**
If set to a non-zero value, do ***not*** change the current working directory.
(By default, the current working directory is set to the directory where the executable file is located)
* **`ID_STR_JAVAMIN` (0x9)**
Specifies the ***minimum*** supported JRE version, in the **`w.x.y.z`** format (e.g. `11.0.0.0`).
This values is *inclusive*, i.e. the specified JRE version or any newer JRE version will be accepted.
If not specified, then the *default* minimum supported JRE version `8.0.0.0` applies.
@ -144,7 +161,7 @@ Some options can be configured via the launcher executable's [STRINGTABLE](https
(This option only applies to the “registry” variant of Launch5j)
* **`ID_STR_JAVAMAX` (#7)**
* **`ID_STR_JAVAMAX` (0xA)**
Specifies the ***maximum*** supported JRE version, in the **`w.x.y.z`** format (e.g. `12.0.0.0`).
This values is *exclusive*, i.e. only JRE versions *older* than the specified JRE version will be accepted.
If not specified, then there is **no** upper limit on the supported JRE version.
@ -153,15 +170,15 @@ Some options can be configured via the launcher executable's [STRINGTABLE](https
(This option only applies to the “registry” variant of Launch5j)
* **`ID_STR_BITNESS` (#8)**
* **`ID_STR_BITNESS` (0xB)**
Specifies the required ***bitness*** of the JRE. This can be either **`32`** (x86, aka i586) or **`64`** (x86-64).
If not specified, then 32-Bit *and* 64-Bit JREs are accepted, with a preference to 64-Bit.
(This option only applies to the “registry” variant of Launch5j)
* **`ID_STR_JAVAURL` (#9)**
* **`ID_STR_JAVAURL` (0xC)**
The Java download URL that will ne suggested, if **no** suitable JRE could be detected on the machine.
If not specified, wes suggest downloading OpenJDK as provided by the [AdoptOpenJDK](https://adoptopenjdk.net/) project.
If not specified, wes suggest downloading OpenJDK, as provided by the [Eclipse Adoptium](https://adoptium.net/) project.
*Hint:* The URL must begin with a `http://` or `https://` prefix; otherwise the URL will be ignored!
@ -284,7 +301,7 @@ This project is partly inspired by the “Launch4j” project, even though it ha
This work has been released under the MIT license:
Copyright 2020 LoRd_MuldeR <mulder2@gmx.de>
Copyright 2024 LoRd_MuldeR <mulder2@gmx.de>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@ -65,7 +65,7 @@ for %%m in (32,64) do (
echo Build %%m-Bit
echo ========================================================================
echo.
call "%MSYS2_DIR%\msys2_shell.cmd" -mingw%%m -no-start -defterm -where "%~dp0" -c "make -B -j8"
call "%MSYS2_DIR%\msys2_shell.cmd" -mingw%%m -no-start -defterm -where "%~dp0" -c "make -B"
if not "!ERRORLEVEL!"=="0" goto:BuildHasFailed
echo.
)

View File

@ -11,15 +11,10 @@
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates application support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates application support for Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!--The ID below indicates application support for Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>

View File

@ -11,15 +11,10 @@
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates application support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates application support for Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!--The ID below indicates application support for Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>

View File

@ -17,14 +17,6 @@
#include "../src/resource.h"
#ifndef L5J_CPU_ARCH
#error L5J_CPU_ARCH is not defined!
#endif
#ifndef L5J_ENABLE_GUI
#error L5J_ENABLE_GUI is not defined!
#endif
/////////////////////////////////////////////////////////////////////////////
// Neutral resources
/////////////////////////////////////////////////////////////////////////////
@ -50,6 +42,9 @@ BEGIN
ID_STR_CMDARGS L"?" /*additional command-line args*/
ID_STR_JREPATH L"?" /*relative path to JRE*/
ID_STR_MUTEXID L"?" /*single instance mutex ID*/
ID_STR_HEAPMIN L"?" /*min. heap size, in percent of phys. memory*/
ID_STR_HEAPMAX L"?" /*max. heap size, in percent of phys. memory*/
ID_STR_NSETCWD L"?" /*do not set current working directory*/
END
/////////////////////////////////////////////////////////////////////////////
@ -94,19 +89,3 @@ BEGIN
VALUE "Translation", 0x0, 1200
END
END
/////////////////////////////////////////////////////////////////////////////
// Manifest
/////////////////////////////////////////////////////////////////////////////
#if L5J_ENABLE_GUI
#define MANIFEST_SUFFIX windows
#else
#define MANIFEST_SUFFIX console
#endif
#define L5J_MANIFEST_GLUE1(V,W,X,Y,Z) #V #W #X #Y #Z
#define L5J_MANIFEST_GLUE2(V,W,X,Y,Z) L5J_MANIFEST_GLUE1(V,W,X,Y,Z)
#define L5J_MANIFEST_STR L5J_MANIFEST_GLUE2(../tmp/assets/manifest-,MANIFEST_SUFFIX,.,L5J_CPU_ARCH,.xml)
1 RT_MANIFEST L5J_MANIFEST_STR

33
res/manifest-console.rc Normal file
View File

@ -0,0 +1,33 @@
/************************************************************/
/* Launch5j, by LoRd_MuldeR <MuldeR2@GMX.de> */
/* Java JAR wrapper for creating Windows native executables */
/* https://github.com/lordmulder/ */
/* */
/* This work has been released under the MIT license. */
/* Please see LICENSE.TXT for details! */
/* */
/* ACKNOWLEDGEMENT */
/* This project is partly inspired by the Launch4j project: */
/* https://sourceforge.net/p/launch4j/ */
/************************************************************/
#define APSTUDIO_READONLY_SYMBOLS
#include "WinResrc.h"
#undef APSTUDIO_READONLY_SYMBOLS
#include "../src/resource.h"
#ifndef L5J_CPU_ARCH
#error L5J_CPU_ARCH is not defined!
#endif
/////////////////////////////////////////////////////////////////////////////
// Manifest
/////////////////////////////////////////////////////////////////////////////
#define L5J_MANIFEST_GLUE1(X) #X
#define L5J_MANIFEST_GLUE2(X,Y,Z) L5J_MANIFEST_GLUE1(X.Y.Z)
#define L5J_MANIFEST_GLUE3(X,Y,Z) L5J_MANIFEST_GLUE2(X,Y,Z)
#define L5J_MANIFEST_STR L5J_MANIFEST_GLUE3(../tmp/assets/manifest-console,L5J_CPU_ARCH,xml)
1 RT_MANIFEST L5J_MANIFEST_STR

33
res/manifest-windows.rc Normal file
View File

@ -0,0 +1,33 @@
/************************************************************/
/* Launch5j, by LoRd_MuldeR <MuldeR2@GMX.de> */
/* Java JAR wrapper for creating Windows native executables */
/* https://github.com/lordmulder/ */
/* */
/* This work has been released under the MIT license. */
/* Please see LICENSE.TXT for details! */
/* */
/* ACKNOWLEDGEMENT */
/* This project is partly inspired by the Launch4j project: */
/* https://sourceforge.net/p/launch4j/ */
/************************************************************/
#define APSTUDIO_READONLY_SYMBOLS
#include "WinResrc.h"
#undef APSTUDIO_READONLY_SYMBOLS
#include "../src/resource.h"
#ifndef L5J_CPU_ARCH
#error L5J_CPU_ARCH is not defined!
#endif
/////////////////////////////////////////////////////////////////////////////
// Manifest
/////////////////////////////////////////////////////////////////////////////
#define L5J_MANIFEST_GLUE1(X) #X
#define L5J_MANIFEST_GLUE2(X,Y,Z) L5J_MANIFEST_GLUE1(X.Y.Z)
#define L5J_MANIFEST_GLUE3(X,Y,Z) L5J_MANIFEST_GLUE2(X,Y,Z)
#define L5J_MANIFEST_STR L5J_MANIFEST_GLUE3(../tmp/assets/manifest-windows,L5J_CPU_ARCH,xml)
1 RT_MANIFEST L5J_MANIFEST_STR

View File

@ -22,6 +22,7 @@
#include <errno.h>
#include <direct.h>
#include <fcntl.h>
#include <mbctype.h>
// Win32 API
#include <Windows.h>
@ -60,10 +61,11 @@
#endif
// Const
static const wchar_t *const JRE_DOWNLOAD_LINK_DEFAULT = L"https://adoptopenjdk.net/";
static const wchar_t *const JRE_DOWNLOAD_LINK_DEFAULT = L"https://adoptium.net/";
static const wchar_t *const JRE_RELATIVE_PATH_DEFAULT = L"runtime\\bin";
static const wchar_t *const JRE_EXECUTABLE_NAME = L5J_ENABLE_GUI ? L"javaw.exe" : L"java.exe";
static const size_t MIN_MUTEXID_LENGTH = 5U;
static const size_t BYTES_PER_MEGABYTE = 1024U * 1024U;
static const DWORD SPLASH_SCREEN_TIMEOUT = 30000U;
// Check platform
@ -71,13 +73,29 @@ static const DWORD SPLASH_SCREEN_TIMEOUT = 30000U;
#error Unknown target platform!
#endif
// Boolean value
/* ======================================================================== */
/* Miscellaneous */
/* ======================================================================== */
#define BOOLIFY(X) ((X) ? TRUE : FALSE)
#define PERCENT(X) (bound_value(1U, (X), 100U) / 100.0)
static DWORD bound_value(const DWORD min_value, const DWORD value, const DWORD max_value)
{
return max(min_value, min(max_value, value));
}
static ULONGLONG div_ceil(const ULONGLONG value, const ULONGLONG divisor)
{
return (!(value % divisor)) ? (value / divisor) : ((value / divisor) + 1ULL);
}
/* ======================================================================== */
/* String routines */
/* ======================================================================== */
static const wchar_t SPACE_CHAR = L'\x20';
#define XSTR(S) STR(S)
#define STR(S) #S
@ -145,13 +163,11 @@ static wchar_t *wcsndup (const wchar_t *const str, const size_t n)
return result;
}
static const wchar_t *skip_leading_spaces(const wchar_t *const str)
static const wchar_t *skip_leading_spaces(const wchar_t *str)
{
if (NOT_EMPTY(str))
{
const wchar_t *result;
for (result = str; (*result) && iswspace(*result); ++result);
return result;
for (; (*str) && (*str <= SPACE_CHAR); ++str);
}
return str;
}
@ -322,6 +338,18 @@ static BOOL running_on_64bit(void)
#endif
}
static ULONGLONG get_physical_memory_size()
{
MEMORYSTATUSEX memory_status;
SecureZeroMemory(&memory_status, sizeof(MEMORYSTATUSEX));
memory_status.dwLength = sizeof(MEMORYSTATUSEX);
if (GlobalMemoryStatusEx(&memory_status))
{
return memory_status.ullTotalPhys;
}
return 0L;
}
/* ======================================================================== */
/* File name routines */
/* ======================================================================== */
@ -520,7 +548,7 @@ static DWORD load_uint32(const HINSTANCE hinstance, const UINT id, const DWORD f
{
DWORD value = fallback;
const wchar_t *const str = load_string(hinstance, id);
if(NOT_EMPTY(str))
if(AVAILABLE(str))
{
value = wcstoul(str, NULL, 10);
}
@ -941,7 +969,7 @@ static BOOL detect_java_runtime_scan_javasoft(const wchar_t *const key_name, con
return TRUE;
}
static BOOL detect_java_runtime_scan_adoptjdk(const wchar_t *const key_name, const ULONG_PTR user_data)
static BOOL detect_java_runtime_scan_adoptium(const wchar_t *const key_name, const ULONG_PTR user_data)
{
static const wchar_t *const JVM_NATURE[] = { L"hotspot", L"openj9", NULL };
@ -1016,20 +1044,22 @@ static BOOL detect_java_runtime_scan_liberica(const wchar_t *const key_name, con
return TRUE;
}
static const wchar_t *detect_java_runtime(const DWORD required_bitness, const ULONGLONG required_ver_min, const ULONGLONG required_ver_max)
static const wchar_t *detect_java_runtime(const DWORD required_bitness, const ULONGLONG required_ver_min, const ULONGLONG required_ver_max, DWORD *const bitness_out, ULONGLONG *const version_out)
{
typedef struct { UINT mode; const wchar_t *path; } reg_key_t;
static const reg_key_t REG_KEYS[] =
{
{ 1U, L"SOFTWARE\\JavaSoft\\Java Runtime Environment" }, { 1U, L"SOFTWARE\\JavaSoft\\JRE" }, { 2U, L"SOFTWARE\\AdoptOpenJDK\\JRE" },
{ 1U, L"SOFTWARE\\JavaSoft\\Java Development Kit" }, { 1U, L"SOFTWARE\\JavaSoft\\JDK" }, { 2U, L"SOFTWARE\\AdoptOpenJDK\\JDK" },
{ 1U, L"SOFTWARE\\Eclipse Adoptium\\JRE" }, { 1U, L"SOFTWARE\\AdoptOpenJDK\\JRE" },
{ 1U, L"SOFTWARE\\Eclipse Adoptium\\JDK" }, { 1U, L"SOFTWARE\\AdoptOpenJDK\\JDK" },
{ 2U, L"SOFTWARE\\JavaSoft\\Java Runtime Environment" }, { 2U, L"SOFTWARE\\JavaSoft\\JRE" },
{ 2U, L"SOFTWARE\\JavaSoft\\Java Development Kit" }, { 2U, L"SOFTWARE\\JavaSoft\\JDK" },
{ 3U, L"SOFTWARE\\BellSoft\\Liberica" },
{ 3U, L"SOFTWARE\\Azul Systems\\Zulu" }, { 0U, NULL }
};
const wchar_t *runtime_path = NULL;
DWORD bitness = 0U;
ULONGLONG version = 0U;
*bitness_out = 0U;
*version_out = 0U;
for (UINT i = running_on_64bit() ? 0U : 1U; i < 2U; ++i)
{
@ -1040,15 +1070,15 @@ static const wchar_t *detect_java_runtime(const DWORD required_bitness, const UL
{
{ required_bitness, required_ver_min, required_ver_max },
{ HKEY_LOCAL_MACHINE, REG_KEYS[j].path, reg_view_64bit },
{ bitness, version, NULL }
{ *bitness_out, *version_out, NULL }
};
switch(REG_KEYS[j].mode)
{
case 1U:
reg_enum_subkeys(HKEY_LOCAL_MACHINE, REG_KEYS[j].path, reg_view_64bit, detect_java_runtime_scan_javasoft, (ULONG_PTR)&search_state);
reg_enum_subkeys(HKEY_LOCAL_MACHINE, REG_KEYS[j].path, reg_view_64bit, detect_java_runtime_scan_adoptium, (ULONG_PTR)&search_state);
break;
case 2U:
reg_enum_subkeys(HKEY_LOCAL_MACHINE, REG_KEYS[j].path, reg_view_64bit, detect_java_runtime_scan_adoptjdk, (ULONG_PTR)&search_state);
reg_enum_subkeys(HKEY_LOCAL_MACHINE, REG_KEYS[j].path, reg_view_64bit, detect_java_runtime_scan_javasoft, (ULONG_PTR)&search_state);
break;
case 3U:
reg_enum_subkeys(HKEY_LOCAL_MACHINE, REG_KEYS[j].path, reg_view_64bit, detect_java_runtime_scan_liberica, (ULONG_PTR)&search_state);
@ -1056,14 +1086,14 @@ static const wchar_t *detect_java_runtime(const DWORD required_bitness, const UL
}
if(search_state.result.runtime_path)
{
bitness = search_state.result.bitness;
version = search_state.result.version;
*bitness_out = search_state.result.bitness;
*version_out = search_state.result.version;
SET_STRING(runtime_path, search_state.result.runtime_path);
}
}
}
if (((required_bitness == 0U) || (bitness == required_bitness)) && (version >= required_ver_min) && (version < required_ver_max) && runtime_path)
if (((required_bitness == 0U) || (*bitness_out == required_bitness)) && (*version_out >= required_ver_min) && (*version_out < required_ver_max) && runtime_path)
{
return runtime_path;
}
@ -1104,6 +1134,25 @@ static const wchar_t *get_java_full_path(const wchar_t *const jre_base_path, con
/* Command-line */
/* ======================================================================== */
static const wchar_t *get_commandline_args(const wchar_t *cmd_line)
{
BOOL double_quote = FALSE;
if (NOT_EMPTY(cmd_line))
{
cmd_line = skip_leading_spaces(cmd_line);
for (; (*cmd_line) && ((*cmd_line > SPACE_CHAR) || double_quote); ++cmd_line)
{
if (*cmd_line == L'"') double_quote = (!double_quote);
if (_ismbblead(*cmd_line) && cmd_line[1U]) ++cmd_line;
}
return skip_leading_spaces(cmd_line);
}
else
{
return L""; /*no args*/
}
}
static wchar_t *encode_commandline_args(const int argc, const LPWSTR *const argv)
{
if (!(argv && (argc > 0)))
@ -1179,6 +1228,29 @@ static const wchar_t *encode_commandline_str(const wchar_t *const command_line)
return encoded;
}
const wchar_t *create_heap_size_parameters(const DWORD jvm_heap_percent_min, const DWORD jvm_heap_percent_max, const wchar_t *const jvm_extra_args, const DWORD heap_size_limit)
{
const ULONGLONG physical_memory_size = get_physical_memory_size();
if (physical_memory_size > 33554432ULL)
{
const DWORD heap_size_mbytes_min = jvm_heap_percent_min ? bound_value(16U, (DWORD)div_ceil((ULONGLONG)(PERCENT(jvm_heap_percent_min) * physical_memory_size), BYTES_PER_MEGABYTE), heap_size_limit) : 0U;
const DWORD heap_size_mbytes_max = jvm_heap_percent_max ? bound_value(16U, (DWORD)div_ceil((ULONGLONG)(PERCENT(jvm_heap_percent_max) * physical_memory_size), BYTES_PER_MEGABYTE), heap_size_limit) : 0U;
if ((heap_size_mbytes_min > 0U) && (heap_size_mbytes_max >= heap_size_mbytes_min))
{
return AVAILABLE(jvm_extra_args)
? aswprintf(L"-Xms%um -Xmx%um %s", heap_size_mbytes_min, heap_size_mbytes_max, jvm_extra_args)
: aswprintf(L"-Xms%um -Xmx%um", heap_size_mbytes_min, heap_size_mbytes_max);
}
else if ((heap_size_mbytes_min > 0U) || (heap_size_mbytes_max > 0U))
{
return AVAILABLE(jvm_extra_args)
? aswprintf(L"-Xm%c%um %s", (heap_size_mbytes_max > 0U) ? L'x' : L's', (heap_size_mbytes_max > 0U) ? heap_size_mbytes_max : heap_size_mbytes_min, jvm_extra_args)
: aswprintf(L"-Xm%c%um", (heap_size_mbytes_max > 0U) ? L'x' : L's', (heap_size_mbytes_max > 0U) ? heap_size_mbytes_max : heap_size_mbytes_min);
}
}
return NULL;
}
static const wchar_t *build_commandline(const DWORD pid, const wchar_t *const java_runtime_path, const wchar_t *const jar_file_path, const wchar_t *const jvm_extra_args, const wchar_t *const cmd_extra_args, const wchar_t *const cmd_input_args)
{
const wchar_t *command_line;
@ -1357,7 +1429,7 @@ static const wchar_t *describe_system_error(const DWORD error_code)
#if L5J_ENABLE_GUI
#define show_message(HWND, FLAGS, TITLE, TEXT) MessageBoxW((HWND), (TEXT), (TITLE), (FLAGS))
#else
#define show_message(HWND, FLAGS, TITLE, TEXT) ({ __ms_fwprintf(stderr, L"%s\n", (TEXT)); fflush(stderr); IDCANCEL; })
#define show_message(HWND, FLAGS, TITLE, TEXT) ({ __ms_fwprintf(stderr, L"[%s]\n\n%s\n", (TITLE), (TEXT)); fflush(stderr); IDCANCEL; })
#endif
static int show_message_format(HWND hwnd, const DWORD flags, const wchar_t *const title, const wchar_t *const format, ...)
@ -1477,7 +1549,7 @@ static BOOL initialize_mutex(HANDLE *const handle, const wchar_t *const mutex_na
const ULONGLONG hash_0 = hash_code(0x6CAD7ECA, (const BYTE*)mutex_name, name_length);
const ULONGLONG hash_1 = hash_code(0xE2503816, (const BYTE*)mutex_name, name_length);
const wchar_t *const mutex_uuid = aswprintf(L"l5j.%016I64X%016I64X", hash_0, hash_1);
const wchar_t *const mutex_uuid = aswprintf(L"l5j.%016I64x%016I64x", hash_0, hash_1);
if (!mutex_uuid)
{
return TRUE; /*better safe than sorry*/
@ -1540,10 +1612,10 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
const wchar_t *app_heading = NULL, *mutex_name = NULL, *executable_path = NULL, *executable_directory = NULL, *jarfile_path = NULL,
*java_runtime_path = NULL, *jre_relative_path = NULL, *jvm_extra_args = NULL, *cmd_extra_args = NULL, *command_line = NULL;
HANDLE mutex_handle = NULL;
DWORD java_required_bitness = 0U;
ULONGLONG java_required_ver_min = 0ULL, java_required_ver_max = 0ULL;
DWORD java_required_bitness = 0U, jvm_heap_percent_min = 0U, jvm_heap_percent_max = 0U, jvm_bitness = 0U;
ULONGLONG java_required_ver_min = 0ULL, java_required_ver_max = 0ULL, jvm_version = 0ULL;
HGDIOBJ splash_image = NULL;
BOOL have_screen_created = FALSE;
BOOL have_screen_created = FALSE, set_current_directory_enabled = TRUE;
PROCESS_INFORMATION process_info;
STARTUPINFOW startup_info;
@ -1621,7 +1693,7 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
}
// Set the current directory
if (_wcsicmp(executable_directory, L".") != 0)
if (set_current_directory_enabled = (!BOOLIFY(load_uint32(hinstance, ID_STR_NSETCWD, 0U))))
{
set_current_directory(executable_directory);
}
@ -1647,7 +1719,7 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
java_required_ver_min = load_java_version(hinstance, ID_STR_JAVAMIN, (8ull << 48));
java_required_ver_max = load_java_version(hinstance, ID_STR_JAVAMAX, MAXULONGLONG);
java_required_bitness = load_java_bitness(hinstance, ID_STR_BITNESS);
if (!(java_runtime_path = detect_java_runtime(java_required_bitness, java_required_ver_min, java_required_ver_max)))
if (!(java_runtime_path = detect_java_runtime(java_required_bitness, java_required_ver_min, java_required_ver_max, &jvm_bitness, &jvm_version)))
{
show_message(hwnd, MB_ICONERROR | MB_TOPMOST, APP_HEADING, L"Java Runtime Environment (JRE) could not be found!");
show_jre_download_notice(hinstance, hwnd, APP_HEADING, java_required_bitness, java_required_ver_min);
@ -1660,7 +1732,7 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
show_message(hwnd, MB_ICONERROR | MB_TOPMOST, APP_HEADING, L"The path of the Java runtime could not be determined!");
goto cleanup;
}
if (!BOOLIFY(file_is_executable(java_runtime_path)))
if (!BOOLIFY(jvm_bitness = file_is_executable(java_runtime_path)))
{
show_message_format(hwnd, MB_ICONERROR | MB_TOPMOST, APP_HEADING, L"The Java runtime could not be found or is invalid:\n\n%s\n\n\nRe-installing the application may fix the problem!", java_runtime_path);
goto cleanup;
@ -1671,6 +1743,19 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
jvm_extra_args = load_string(hinstance, ID_STR_JVMARGS);
cmd_extra_args = load_string(hinstance, ID_STR_CMDARGS);
// Set minimum/maximum Java heap size
jvm_heap_percent_min = bound_value(0U, load_uint32(hinstance, ID_STR_HEAPMIN, 0U), 100U);
jvm_heap_percent_max = bound_value(0U, load_uint32(hinstance, ID_STR_HEAPMAX, 0U), 100U);
if ((jvm_heap_percent_min > 0U) || (jvm_heap_percent_max > 0U))
{
const wchar_t *const jvm_heap_size_args = create_heap_size_parameters(jvm_heap_percent_min, jvm_heap_percent_max, jvm_extra_args, (jvm_bitness && (jvm_bitness < 64U)) ? 1024U : MAXDWORD);
if (jvm_heap_size_args)
{
free((void*)jvm_extra_args);
jvm_extra_args = jvm_heap_size_args;
}
}
// Make sure command-line was created
command_line = build_commandline(pid, java_runtime_path, jarfile_path, jvm_extra_args, cmd_extra_args, cmd_line_args);
if (!command_line)
@ -1685,7 +1770,7 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
#endif
// Now actually start the process!
if (!CreateProcessW(NULL, (LPWSTR)command_line, NULL, NULL, FALSE, 0U, NULL, executable_directory, &startup_info, &process_info))
if (!CreateProcessW(NULL, (LPWSTR)command_line, NULL, NULL, FALSE, 0U, NULL, set_current_directory_enabled ? executable_directory : NULL, &startup_info, &process_info))
{
const wchar_t *const error_text = describe_system_error(GetLastError());
if (error_text)
@ -1759,7 +1844,9 @@ cleanup:
/* Entry points */
/* ======================================================================== */
#define THE_NUMBER_OF_THE_BEAST 666
extern IMAGE_DOS_HEADER __ImageBase;
extern LPWSTR _wcmdln;
#define UNHANDELED_EXCEPTION_ERROR 666
static LONG WINAPI unhandeled_exception(EXCEPTION_POINTERS *ExceptionInfo)
{
@ -1770,22 +1857,23 @@ static LONG WINAPI unhandeled_exception(EXCEPTION_POINTERS *ExceptionInfo)
DWORD chars_written;
WriteConsoleW(GetStdHandle(STD_ERROR_HANDLE), ERROR_MESSAGE, lstrlenW(ERROR_MESSAGE), &chars_written, NULL);
#endif
TerminateProcess(GetCurrentProcess(), THE_NUMBER_OF_THE_BEAST);
TerminateProcess(GetCurrentProcess(), UNHANDELED_EXCEPTION_ERROR);
return EXCEPTION_EXECUTE_HANDLER;
}
#if L5J_ENABLE_GUI
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
#ifdef NDEBUG
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
SetUnhandledExceptionFilter(unhandeled_exception);
#endif
return launch5j_main(hInstance, pCmdLine);
return launch5j_main(hInstance, get_commandline_args(_wcmdln));
}
#else
extern HINSTANCE __mingw_winmain_hInstance;
extern LPWSTR __mingw_winmain_lpCmdLine;
#else /*L5J_ENABLE_GUI*/
int wmain(int argc, wchar_t **argv, wchar_t **envp)
{
#ifdef NDEBUG
@ -1793,6 +1881,7 @@ int wmain(int argc, wchar_t **argv, wchar_t **envp)
SetUnhandledExceptionFilter(unhandeled_exception);
#endif
_setmode(_fileno(stderr), _O_U8TEXT);
return launch5j_main(__mingw_winmain_hInstance, __mingw_winmain_lpCmdLine);
return launch5j_main((HINSTANCE) &__ImageBase, get_commandline_args(_wcmdln));
}
#endif
#endif /*L5J_ENABLE_GUI*/

View File

@ -62,10 +62,11 @@ manifests: initialize
.PHONY: resources
resources: manifests
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=0 -o obj/common-console.$(CPU_ARCH).o res/common.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -DL5J_ENABLE_GUI=1 -o obj/common-windows.$(CPU_ARCH).o res/common.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/common.$(CPU_ARCH).o res/common.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/manifest-console.$(CPU_ARCH).o res/manifest-console.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/manifest-windows.$(CPU_ARCH).o res/manifest-windows.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/registry.$(CPU_ARCH).o res/registry.rc
windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc
.PHONY: clean
clean: initialize

View File

@ -21,9 +21,8 @@ import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.regex.Pattern;
/*
@ -31,16 +30,23 @@ import java.util.regex.Pattern;
*/
public class Generator {
private final static String EMPTY = "";
private final static Pattern RTRIM = Pattern.compile("\\s+$");
private static final String EMPTY = "";
private static final Pattern RTRIM = Pattern.compile("\\s+$");
private static final MessageDigest SHA256;
static {
try {
SHA256 = MessageDigest.getInstance("SHA-256");
} catch (final NoSuchAlgorithmException e) {
throw new Error(e);
}
}
public static void main(String[] args) throws IOException {
final List<String> targets = new ArrayList<String>();
final String salt = Instant.now().toString();
final PrintStream out = new PrintStream(System.out, true, StandardCharsets.UTF_8.name());
outputTemplate(out, "header");
final LinkedHashSet<String> targets = new LinkedHashSet<String>();
for (int enableGui = 1; enableGui > -1; --enableGui) {
for (int wrapped = 0; wrapped < 2; ++wrapped) {
for (int registry = 0; registry < 2; ++registry) {
@ -50,7 +56,7 @@ public class Generator {
continue;
}
for (int encArgs = 1; encArgs > -1; --encArgs) {
out.println(generateCommand(targets, salt, enableGui, wrapped, registry, stayAlive, enableSplash, encArgs));
out.println(generateCommand(targets, enableGui, wrapped, registry, stayAlive, enableSplash, encArgs));
}
}
}
@ -99,10 +105,12 @@ public class Generator {
out.println();
}
private static String generateCommand(final List<String> targets, final String salt, final int enableGui, final int wrapped, final int registry, final int stayAlive, final int enableSplash, final int encArgs) {
private static String generateCommand(final Set<String> targets, final int enableGui, final int wrapped, final int registry, final int stayAlive, final int enableSplash, final int encArgs) {
final String nameSuffix = generateNameSuffix(enableGui, wrapped, registry, stayAlive, enableSplash, encArgs);
final String targetName = "l5j_" + hash(nameSuffix, salt);
targets.add(targetName);
final String targetName = "launch5j_" + hash(nameSuffix);
if(!targets.add(targetName)) {
throw new Error("Hash collision detected!");
}
final String exeType = (enableGui > 0) ? "windows" : "console";
final StringBuilder cmdLine = new StringBuilder();
cmdLine.append(String.format(".PHONY: %s\n", targetName));
@ -118,7 +126,8 @@ public class Generator {
"-DL5J_ENCODE_ARGS=%d " +
"-o bin/launch5j_$(CPU_ARCH)%s.exe " +
"src/head.c " +
"obj/common-%s.$(CPU_ARCH).o",
"obj/common.$(CPU_ARCH).o " +
"obj/manifest-%s.$(CPU_ARCH).o",
exeType,
enableGui,
wrapped,
@ -174,15 +183,8 @@ public class Generator {
builder.append(string);
}
private static String hash(final String str, final String salt) {
final MessageDigest digest;
try {
digest = MessageDigest.getInstance("SHA-256");
} catch (final NoSuchAlgorithmException e) {
throw new Error(e);
}
digest.update(salt.getBytes(StandardCharsets.UTF_8));
final byte[] hash = digest.digest(str.getBytes(StandardCharsets.UTF_8));
return String.format("%02X%02X%02X%02X", hash[31], hash[30], hash[29], hash[28]);
private static String hash(final String str) {
final byte[] hash = SHA256.digest(str.getBytes(StandardCharsets.UTF_8));
return String.format("%02X%02X", hash[30], hash[31]);
}
}

View File

@ -21,8 +21,8 @@
// VERSION
#define L5J_VERSION_MAJOR 0
#define L5J_VERSION_MINOR 7
#define L5J_VERSION_PATCH 0
#define L5J_VERSION_MINOR 8
#define L5J_VERSION_PATCH 1
// ICON
#define ID_ICON_MAIN 1
@ -31,14 +31,17 @@
#define ID_BITMAP_SPLASH 1
// STRINGS
#define ID_STR_HEADING 1
#define ID_STR_JVMARGS 2
#define ID_STR_CMDARGS 3
#define ID_STR_JREPATH 4
#define ID_STR_MUTEXID 5
#define ID_STR_JAVAMIN 6
#define ID_STR_JAVAMAX 7
#define ID_STR_BITNESS 8
#define ID_STR_JAVAURL 9
#define ID_STR_HEADING 0x1
#define ID_STR_JVMARGS 0x2
#define ID_STR_CMDARGS 0x3
#define ID_STR_JREPATH 0x4
#define ID_STR_MUTEXID 0x5
#define ID_STR_HEAPMIN 0x6
#define ID_STR_HEAPMAX 0x7
#define ID_STR_NSETCWD 0x8
#define ID_STR_JAVAMIN 0x9
#define ID_STR_JAVAMAX 0xA
#define ID_STR_BITNESS 0xB
#define ID_STR_JAVAURL 0xC
#endif